Bump to v3.1.1: tray tooltip 'starting up' could get stuck after first launch

Bug: if v3.1 installed via auto-update on a profile with StartMinimised
on, the tray icon's hover tooltip got stuck at the initial "RemSound -
starting up" string. The snapshot tick was running and SetTooltip was
being called every second with the live state, but Windows shell kept
showing the original cached text on hover. The fix-by-workaround was a
hide-then-re-show cycle which forced the shell to rebuild the icon
registration with the latest NotifyIcon.Text.

Root cause: NotifyIcon.Text values set BEFORE the icon's first
NIM_ADD (i.e. while Visible=false) become the shell's "initial"
tooltip when the icon eventually appears. Subsequent NIM_MODIFY calls
from text changes DO propagate, but the shell tends to keep showing
the original text on hover - presumably a tooltip-cache eviction
quirk. In the resume-after-update-with-StartMinimised flow, the
window briefly shows then BeginInvokes a Minimize that flips
Visible=true before the snapshot timer has had a chance to fire, so
the shell registers with the stale "starting up" string.

Fix: drop the hard-coded "starting up" initial text from the
controller ctor entirely. The controller now takes a Func<string>
buildTooltip callback from MainForm and calls it in Minimize() right
before flipping Visible=true, so the shell's NIM_ADD sees current
live state instead of a stale string. The 1 Hz snapshot tick keeps
working for ongoing live updates while the icon is visible.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-05-28 14:43:06 +01:00
co-authored by Claude Opus 4.7
parent 752c12b579
commit aa099eb555
5 changed files with 67 additions and 62 deletions
+27
View File
@@ -20,6 +20,33 @@ internal sealed class AboutDialog : Form
/// updates" path.</summary>
private const string ReleaseNotes =
"""
RemSound v3.1.1
Hot-fix for a small but annoying bug with the system
tray tooltip after v3.1 first installed itself.
What was happening: if the v3.1 auto-update fired
while RemSound was set to start minimised to the tray,
the tray icon's hover text could get stuck saying
"RemSound — starting up" indefinitely, instead of
switching to the live "X peers, sending, receiving"
summary after a second or so. Showing the main window
and then minimising it again was the workaround.
What was actually going wrong: Windows registers a
tray icon's tooltip with the shell at the moment the
icon becomes visible. RemSound was setting an initial
"starting up" string at construction time, and the
shell tended to keep showing that on hover even after
the live state had been computed and pushed through.
The workaround (hide then re-show the icon) cleared
the shell's cache. The fix is to compute the right
live tooltip text once, just before the icon becomes
visible for the first time, so the shell registers
the icon with correct text from the start.
Everything else in v3.1 is unchanged.
RemSound v3.1
Two big rounds of work on audio cues and the system