v0.20.6: one press, sixteen hundred songs
A single Right-arrow press skipped 1,676 tracks in 81 s and hard-froze the desktop. On Wayland key repeat is generated by the client until the compositor delivers the release, and the key filter treated every repeat as a new press. Each skip sent gnome-shell an MPRIS Metadata whose xesam:artist was a plain Python list, which marshals as "av" instead of "as". gnome-shell logged an error for every one (50k/min) and reloaded the cover, and that load is what kept it from ever delivering the release. Space/Left/Right now act once per press and swallow the repeats. xesam:artist goes out through mpris.string_array, which build_properties_changed now shares for invalidated_properties. The new test round-trips the signal into GDBus, which is what gnome-shell validates with, and fails 'av' == 'as' against the old code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,25 @@
|
||||
## Done
|
||||
|
||||
### Round 56 (2026-09-17) — one press, sixteen hundred songs (v0.20.6)
|
||||
|
||||
One Right-arrow press skipped 1,676 tracks in 81 s and hard-froze GNOME badly
|
||||
enough to need SysRq (incident log `~/claude-diag/logs/issue-log-2026-09-17.md`).
|
||||
It was a feedback loop, and both halves were ours.
|
||||
|
||||
- [x] **Transport keys act once per press.** On Wayland key repeat is
|
||||
generated by the *client* until the compositor delivers the release, and
|
||||
`MainWindow.eventFilter` treated every repeat as a new press. Space, Left
|
||||
and Right now swallow auto-repeats (swallow, not pass through, so a held
|
||||
Right doesn't walk the table cursor instead).
|
||||
- [x] **`xesam:artist` goes out as `as`.** A plain `[str]` inside `Metadata`
|
||||
marshals as `av`; gnome-shell logged an error for it (32k–50k/min during
|
||||
the incident) and reloaded the cover per track change. That load is what
|
||||
kept it from delivering the key release, so the repeats never stopped.
|
||||
`mpris.string_array` builds the typed array, shared with
|
||||
`build_properties_changed`'s `invalidated_properties` (Round 17's same
|
||||
pitfall). The test round-trips the signal into GDBus, which is what
|
||||
gnome-shell validates with, and fails `'av' == 'as'` on the old code.
|
||||
|
||||
### Round 55 (2026-09-14) — the song that wasn't there (v0.20.4, andTunes 0.2.2)
|
||||
|
||||
trav couldn't play the first track of his playlist: shuffle off gave him song
|
||||
|
||||
Reference in New Issue
Block a user