Skip to content

[Bug]: “Thread settled” toast lingers too long and survives backgrounding indefinitely (nightly) #12881

Description

@spaansba
No description provided.

Activity

  1. changed the title [-][Bug]: “Thread completed” toast lingers too long and survives backgrounding indefinitely[/-] [+][Bug]: “Thread settled” toast lingers too long and survives backgrounding indefinitely (nightly)[/+] on Sep 21, 2026
  2. juliusmarminge commented on Sep 21, 2026

    @juliusmarminge
    Member

    Triage

    Confirmed against current main. This is a real web/desktop Undo toast lifetime bug, not the “Thread completed” system notification.

    #12848 (merged today) added a Thread settled Undo toast on nightly. That is the only "Thread settled" string in the client. The issue body is empty; the title is enough.

    What the code does

    settleThread in apps/web/src/hooks/useThreadActions.ts calls showUndoToast({ title: "Thread settled", … }).

    apps/web/src/hooks/showUndoToast.ts adds a Base UI toast with timeout: 5_000. Docs (docs/user/thread-sidebar.md) say unpin / settle / snooze / archive each show Undo for five seconds.

    Base UI (@base-ui/react@1.5.0) pauses that timer on window blur and hover. Backgrounding stops the clock. When you come back, the toast is still there. That is “survives backgrounding.” If Electron focus never reaches resumeTimers(), it stays until you dismiss it — “indefinitely.”

    We are also behind later Base UI timer fixes:

    • mui/base-ui#4438 (resume after focus) — already in 1.4.0 / 1.5.0; Electron focus can still miss it
    • mui/base-ui#4933 (1.6.0) — paused-timer bookkeeping
    • mui/base-ui#5261 (1.7.0) — remaining time reset toward the full 5s on each pause/resume

    T3’s own ThreadToastVisibleAutoDismiss (dismissAfterVisibleMs in apps/web/src/components/ui/toast.tsx) also pauses unless the document is visible and focused. The undo toast does not use it.

    Archive / unpin / snooze use the same helper, so they can linger the same way. Mobile does not show this toast.

    Not a duplicate

    Work Why it is not this
    #12500 / #12567 Linux system “Thread completed” click does not raise the window
    ThreadNotificationCoordinator In-app “Thread completed” only while focused; background uses Notification
    #54 Visible-time dismiss for thread-scoped toasts, not this undo helper

    No open PR for linger / duration / dismiss-on-background.

    Done when

    On web and desktop, after Settle:

    1. The toast is gone after ~5s of wall-clock time while focused (or a shorter documented duration).
    2. Backgrounding closes it, or remaining time keeps counting so it does not survive the whole time away.
    3. Archive / unpin / snooze follow the same rule unless product wants settle-only.
    4. Sidebar docs match if the five-second rule changes.

    Bumping Base UI to 1.7.x may help resume math. It does not by itself dismiss on background. Prefer a wall-clock timer or dismiss on visibilitychange / blur.

    Optional: OS (macOS / Windows / Linux) and whether this is desktop nightly vs browser. Not required to start.

    Accept.

  3. added
    acceptedfeature request accepted
    bugSomething is broken or behaving incorrectly.
    via-triageFiled through npx t3 triage
    on Sep 21, 2026
  4. juliusmarminge commented on Sep 22, 2026

    @juliusmarminge
    Member

    Fixed by #12972

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    acceptedfeature request acceptedbugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions