Session read and unread state
Understand unread session badges, Mark as unread, Mark as read, keeping a session in Needs attention, and what happens when the session is already open.
Happier tracks whether each session has transcript activity you have not viewed yet.
Unread state is intentionally simple:
- if a session has committed transcript activity after your last viewed position, it is unread
- if your last viewed position is current, it is read
- empty sessions do not show manual read-state actions
This state drives unread badges, unread session filtering, and the Mark as unread / Mark as read actions in the app.
Where to find the actions
You can change a session's read state from the same places you manage other session actions:
- the session row ... menu in the session list
- the session row long-press/context menu on mobile
- the session header action menu
- the Session info screen quick actions
When the session is currently read, Happier shows Mark as unread.
When the session is currently unread, Happier shows Mark as read.
What Mark as unread does
Use Mark as unread when the session still holds activity you have not actually taken in.
For example:
- you opened a session by accident and want it to count as new again
- you skimmed the last turn and want to read it properly later
When you mark a session unread, Happier moves your read position to just before the latest committed transcript activity. The transcript does not change, and no message is created or deleted.
Marking a session unread is not a good way to keep a session in front of you after you have read it, because opening it again clears the unread state and the session drops back down the list. Use Keep in Needs attention for that.
What Mark as read does
Use Mark as read when the session no longer needs unread attention.
Happier moves your read position to the latest committed transcript activity. The unread badge clears for that session unless newer activity arrives afterwards.
Keeping a session in Needs attention
Read state tracks whether you have seen a session yet. It is a poor fit for a session you have already read and still want near the top, because reading it is exactly what clears the signal.
Keep in Needs attention covers that case directly. A session you keep stays in the attention area of the session list whatever its read state, until you remove it.
- Keep in Needs attention holds the session there after you read it.
- Remove from Needs attention lets it move back down the list again.
You will find it with the other session actions, alongside Mark as unread. Session-list multi-select offers the same choice for several sessions at once.
A kept session shows Kept in attention as its status line, so it stays distinguishable from a session that is in the attention area because it is unread, ready, or waiting on you. Kept sessions also sort after those, so a session that genuinely needs you still comes first.
Your choice is stored per session on the server, so it follows you across devices and browser windows for the same account.
Turning the attention area on
The attention area itself comes from Settings → Session → Sessions needing attention, which is Leave in normal position by default. Set it to Group at top or Move to top of current group first; until then nothing is promoted and keeping a session has nothing to hold it in.
Choosing the default
Settings → Session → Keep sessions in Needs attention decides what happens to sessions you have not made a choice about:
- off (the default): sessions leave the attention area as soon as they no longer need you, and you keep the ones you care about one at a time
- on: every session stays in the attention area until you remove it, which turns the area into a list you clear by hand
A per-session choice always wins over the default, in both directions: a session you removed stays out of the attention area even when the default is on.
When the session is already open
Opening a session normally marks it read because viewing the transcript is treated as read intent.
Manual Mark as unread is different. If you mark the session unread while you are already inside it, Happier keeps it unread for that current view instead of immediately marking it read again.
That means this flow works as expected:
- Open a session.
- Choose Mark as unread from the header or list action.
- Stay on that session.
- The session remains unread until you explicitly mark it read, leave/reopen it, or another active view marks it read.
This avoids the common problem where marking the current item unread is instantly undone by the fact that it is still visible.
Closing and reopening a session
Closing the session view ends that viewing activation.
If you later reopen the same session directly, by deep link, notification, browser refresh, or from the session list, Happier treats that as a new viewing activation. If the session is visible and focused, it can be marked read again.
This is deliberate: reopening a session is a new read intent.
New activity after marking unread
Unread state is based on committed transcript activity.
If new transcript activity arrives after you marked a session unread, the session remains unread. Marking it read later advances to the newest committed transcript activity at that time.
Pending queued messages do not by themselves make a session unread. The unread badge is about transcript activity that has actually been committed to the session.
Multi-device and multi-window behavior
Read state belongs to the session on the server, so it syncs across your devices and browser windows for the same account.
If you mark a session unread on one device, other connected views receive that update. If another active device then opens or views the same session, that device may mark the session read again because read state is session-wide, not per-device or per-pane.
For split views, each visible pane has its own viewing activation, but the final read state is still global for the session. A different focused pane can legitimately mark the same session read.
Sessions where the action is hidden
Happier hides manual read-state actions when they would not make sense or when you do not have the right access:
- empty sessions
- archived sessions
- view-only shared sessions
Archived sessions do not contribute to the normal unread activity badge, so showing read-state actions there would be misleading.
For shared sessions, only people with edit/admin-style access can change the read state. View-only access can read the transcript but cannot change the session's read cursor.