-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
[Feature]: Session grouping, unread state, and full session controls on web, iOS, and Android #100739
Copy link
Copy link
Closed
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.enhancementNew feature or requestNew feature or requestimpact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.maintainerMaintainer-authored PRMaintainer-authored PRmaturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.enhancementNew feature or requestNew feature or requestimpact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.impact:ux-frictionUser-facing flow adds avoidable confusion or support burden without fully blocking progress.User-facing flow adds avoidable confusion or support burden without fully blocking progress.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.maintainerMaintainer-authored PRMaintainer-authored PRmaturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Type
Fields
Priority
None yet
Summary
Bring the session list on web, iOS, and Android to parity with modern session managers: user-defined groups with sections, unread indicators with mark-as-unread, and a full per-session control menu (pin, rename, fork, move to group, archive, delete).
Problem to solve
Session management is uneven across clients today:
Proposed solution
Gateway (additive protocol, no version bump):
SessionEntrygainslastReadAt,markedUnreadAt,lastActivityAt(epoch ms).lastActivityAtis bumped in the canonical post-run store update; metadata patches do not bump it.unread(explicit mark, or activity after last read; never-read sessions stay read to avoid an all-unread explosion on upgrade), pluslastReadAt/lastActivityAt.sessions.patchgainsunread?: boolean(false = mark read, true = mark unread).sessions.creategainsfork?: boolean(withparentSessionKey) reusing the existing transcript-fork runtime.Clients (web sidebar + sessions page, iOS Command Center, Android SessionsScreen):
category(the existing org bucket = "group"), then Ungrouped.Alternatives considered
sessions.forkmethod: rejected —sessions.createalready owns creation with parent linkage; aforkflag is additive and keeps one creation path.categoryalready exists on the wire and insessions.patch; no new state needed.Impact
All operator clients (web, iOS, Android) get consistent session organization and triage; heavy multi-session users can tell at a glance which background sessions produced new output.
Evidence/examples
label,category,pinned,archivedviasessions.patch(packages/gateway-protocol/src/schema/sessions.ts), so most controls are pure client work.SessionEntry(src/config/sessions/types.ts) or row projection (src/gateway/session-utils.ts).apps/ios/Sources/Design/CommandCenterTab.swifthas no mutation calls; AndroidSessionsScreen.ktlikewise.Additional information
Implementation PR follows on branch
claude/friendly-germain-e9501b. "Open PR"/"Open in" from the desktop reference UI are not applicable to OpenClaw sessions and are out of scope.