Skip to content

fix: the session hint toast no longer sticks on screen - #114

Merged
lippdev merged 1 commit into
mainfrom
fix/session-hint-toast-sticks
Sep 30, 2026
Merged

lippdev merged 1 commit into
mainfrom
fix/session-hint-toast-sticks

Conversation

@lippdev

@lippdev lippdev commented Sep 30, 2026

Copy link
Copy Markdown
Owner

What

The toast that shows the menu shortcut a few seconds into a session was created with _ = new SessionHintWindow(...) and its close timer was a local. Nothing held either, so the GC could take the window and the timer before the timer fired: the toast then stayed on screen forever, only sometimes. The window now keeps itself in a static set until it closes and owns its timer; a failed Close is logged.

Verification

Built on Windows locally (Debug x64, 0 errors) and dotnet test passes (151). The GC-dependent behaviour cannot be unit tested: manual check added to docs/TESTING.md §1c (toast closes by itself in ~7 s, over several sessions).

Stacked on #113.

🤖 Generated with Claude Code

The toast that shows the menu shortcut a few seconds into a session was
created with `_ = new SessionHintWindow(...)` and its close timer was a local
variable. Nothing held either of them, so the garbage collector could take the
window and the timer before the timer fired, and the toast then stayed on
screen and never closed, only sometimes.

The window now keeps itself in a static set until it closes and owns its timer;
the timer stops itself when it fires and a failed Close goes to the log instead
of being swallowed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes The session hint toast now retains its window and timer until the toast closes, with changelog and manual-test documentation updated.

  • Toast lifecycle The window is held in a static set until Closed, and its dispatcher timer closes it after the configured duration.
  • Verification guidance The Portuguese manual checklist covers repeated sessions and the changelog entries describe the user-visible fix.

Pullfrog  | View workflow run | Using GPT Luna | 𝕏

@lippdev
lippdev changed the base branch from docs/unreleased-changelog to main September 30, 2026 21:13
@lippdev
lippdev merged commit ad58438 into main Sep 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant