Diagnosing the Ctrl+I save hang on the Debian machine (GUI thread blocks
past mutter's 5s check-alive):
- lintunes/perf.py: timed() context manager logging wall-clock ms at INFO
on lintunes.perf — instruments tag/artwork saves, file moves,
edit_track(s)_fields, the browser rebuild, smart recompute, and the
debounced JSON flush, so the slow machine can tell us which stage
eats the time (journalctl --user or a terminal run).
- tagging.write_tags: ONE parse + ONE save per edit. grouping/
compilation/bpm ride the main save via registered Easy keys
(GRP1/TCMP/TBPM on EasyID3, cpil on EasyMP4) instead of
_write_extra_tags re-parsing and re-saving the audio file.
- LibraryView: browser rebuilds coalesce through a 0ms single-shot
timer — an N-track Get Info edit rebuilds the genre/artist/album
cascade once instead of N times over the whole library.
Moving the writes off the GUI thread is deliberately deferred until the
Debian timings say which stage dominates.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>