fix(app): unread sessions show a bold title when stopped, not an overloaded status dot - #1374
Open
chphch wants to merge 1 commit into
Open
fix(app): unread sessions show a bold title when stopped, not an overloaded status dot#1374chphch wants to merge 1 commit into
chphch wants to merge 1 commit into
Conversation
chphch
force-pushed
the
fix/session-list-unread-dot-collision
branch
2 times, most recently
from
July 26, 2026 11:30
4cc6b86 to
04c1021
Compare
This was referenced Jul 26, 2026
chphch
force-pushed
the
fix/session-list-unread-dot-collision
branch
2 times, most recently
from
August 23, 2026 03:41
d6ae159 to
cc8e93f
Compare
Contributor
Author
|
Rebased onto current One import fix was needed for
|
chphch
force-pushed
the
fix/session-list-unread-dot-collision
branch
2 times, most recently
from
August 25, 2026 07:55
9692453 to
c6c9770
Compare
…loaded status dot The status dot doubles as an unread marker: an unread session repaints it the same blue the running/thinking state uses, so a finished session reads as if it were still working. Show unread as a bold session title instead — and only once the agent has stopped, so a re-activated session does not flip to unread mid-turn. Behind the `expUnreadBoldTitle` setting, off by default: with it off the existing blue-dot behavior is untouched. A session waiting on the user (permission_required / input_required) keeps its orange pulsing dot either way — that state outranks unread. Rebased onto current main; the three original commits are squashed so the gate and the behavior it gates land together.
chphch
force-pushed
the
fix/session-list-unread-dot-collision
branch
from
August 25, 2026 13:49
c6c9770 to
0958fd3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The session-list status dot is overloaded: a session with unread results is forced to a solid blue dot — the same color as the "thinking" (running) state, differing only by a pulse — so a finished, idle session looks like it is still running until you open it (which clears the unread flag).
This decouples the two signals. The status dot always reflects true liveness (disconnected / thinking / waiting / permission), and unread is shown instead as a bold title — but only once the agent has stopped, never while it is still running, so a re-activated session never reads as unread mid-turn. Blue goes back to meaning exactly one thing: running. Applies to both the session list rows and the compact active-sessions group.
Gated behind an experimental
expUnreadBoldTitlesetting, off by default. With it off the upstream presentation is preserved exactly (blue status dot + "unread" text, default title weight). Users opt in from Settings → Features.The bold is applied via the SemiBold font family (read titles are Regular) rather than a numeric
fontWeight, because the web build setsfont-synthesis: noneand bundles no Bold(700) IBM Plex Sans face — afontWeight: 700override would render identically to the regular title on web.Proof
Captured locally on web — standalone
happy-server(PGlite) + Expo web, driven headlessly with Playwright. The row's computedfont-familyflips Regular → SemiBold at the exact moment the turn stops and the session becomes unread; it stays Regular the whole time the agent is running.Note the leading status dot stays a true-liveness indicator across the transition (blue "thinking" while running → neutral once idle), and the old trailing blue accent dot is gone — unread is conveyed entirely by the title weight.
Verification
pnpm typecheckclean; app suite green.