Skip to content

[fix] Session tabs on /m stay put, follow renames and revisions, and close cleanly - #6887

Merged
ashrafchowdury merged 23 commits into
release/v0.118.4from
fix/session-tab-rail-by-id
Sep 17, 2026
Merged

ashrafchowdury merged 23 commits into
release/v0.118.4from
fix/session-tab-rail-by-id

Conversation

@ashrafchowdury

Copy link
Copy Markdown
Contributor

Context

A batch of session bugs on /m, most of them filed against the playground's tab rail and the chat around it. The biggest one: tabs on the rail vanished and came back as you worked, because the rail derived which sessions were open from the sidebar's capped, grouped list instead of from its own open set. Around it sit the smaller reports: the browser title not following the session, an archived session staying pinned, the active tab with no menu and no close, a stale revision after a save or a tab switch, Enter sending on a phone, and Home always opening on the newest agent instead of the one you last used.

Stacked on #6868 (feat/mobile-activity-timeline), which owns the transcript this touches.

Changes

Tab rail fetches its open tabs by id (#6842, and the blink). New useSessionTabRows in @agenta/sessions asks the server for exactly the ids in the device's open set. The sidebar list no longer decides what the rail shows, so a session leaving the sidebar's top 12, or moving into its "waiting" group, no longer drops its tab. A session opened before its row lands still gets a chip, and that chip now carries the tab verbs (Close, Close others, Close to the right) instead of no menu at all (#6379). Every chip is select-none, so repeated clicks stop painting the label.

Active tab is a real tab (#6841, #6755). The ✕ shows on the active chip; closing it routes to the nearest surviving neighbour; the last tab cannot be closed.

Cache invalidation that never reached /m (#6860, #6753, #6754).

  • The session-stream query the title reads is now invalidated on session-changed, so the browser tab title follows a rename.
  • The agent's latest-revision query moves under the ["workflows", "latestRevision"] prefix that invalidateAgentCommittedRevisionCache already clears, and the chat now reads data-committed-revision parts, so a config save, an agent self-commit, or a workflow-changed watch event all land in the workspace's version pill.

Pins (#6854). Archiving or deleting a session drops its pin (unpinSessionAtom).

Composer (#6377). submitOnEnter follows useHardwareKeyboard: on a touch-only device Enter inserts a newline and the send button sends. Landing on a session, or switching to one, focuses the composer unless you are already typing somewhere else.

Home remembers the agent (#6741). The agent a chat was last started with is stored per project on the device; HomeFocus binds it before falling back to the roster head, and skips it if the agent is no longer listed.

Visual, all on /m:

  • Session history popover reads like the sidebar rows (compact density, selected row as fill, pin beside the name on hover, time at the right, "Waiting for your input").
  • Tab strip: 4px chips, a hairline divider in every gap including before +, min-w-20, no label fade while renaming, the scroll fade Home's list uses. Same fade on the transcript, only at clipped edges; the jump-to-latest pill is gone.
  • Status dots: running is the success green, alive is ink, no 50% pulse.
  • Skeletons for the chat and the rail drawn on the real turn geometry from the shared SkeletonBlock.
  • The user's own turn renders through the markdown pipeline like the desktop bubble, so a typed hi_name no longer shows as hi\_name (the composer's export escapes it).
  • The send glyph is ink on the dark theme's yellow, not white.

Tests

  • New unit suites: useSessionTabRows, unlistedTabMenu, scrollEdgeMask, session-invalidate, sessionPins, agentLatestRevisionCache, useProjectWatch, committedRevisionIds, ChatComposer.touchEnter, lastStartedAgent, plus the palette drill-in and mid-sentence cases. All of @agenta/sessions-ui, @agenta/sessions, @agenta/chat and @agenta/mobile pass.
  • Every change was checked live on /m in the browser pane; the revision fix was exercised with a real config save and a tab switch.
  • Not in this PR: the composer still sends the escaped markdown to the agent (teach\_me). Display-only fix here, by request.

What to QA

  • Open an agent on /m with more than 12 sessions, open a few tabs, then let one run until it asks for input. Its tab stays on the rail throughout.
  • Right-click the active tab. The menu opens; Close lands you on the neighbour. Press +, right-click the new "New session" chip: Close / Close others / Close to the right are there.
  • Rename a session from the rail. The browser tab title updates without a reload.
  • Pin a session, archive it. It is gone from the pinned group.
  • Save a config change in the pane, switch to another tab and back. The version pill shows the new version, and version history lists it.
  • On a phone (or DevTools touch emulation), press Enter in the composer. A newline, not a send.
  • Home: start a chat with an agent that is not first in the list, come back to Home. That agent is preselected.
  • Regression: the desktop playground's tab strip and session sidebar are untouched in behaviour; give the rename and context menu a pass there.

@vercel

vercel Bot commented Sep 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
agenta-documentation Ready Ready Preview Sep 16, 2026 12:20pm UTC

Request Review

@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Advanced

Run ID: 0d849e8c-a6a9-4931-9882-729b2b4402a3

📥 Commits

Reviewing files that changed from the base of the PR and between 6419f28 and 4218969.

📒 Files selected for processing (115)
  • web/mobile/src/components/ContentRail.tsx
  • web/mobile/src/features/chat/AnswerReveal.tsx
  • web/mobile/src/features/chat/AssistantMarkdown.tsx
  • web/mobile/src/features/chat/ChatScreen.tsx
  • web/mobile/src/features/chat/LiveConversation.tsx
  • web/mobile/src/features/chat/PendingTurn.tsx
  • web/mobile/src/features/chat/RunErrorCallout.tsx
  • web/mobile/src/features/chat/RunErrorDetails.tsx
  • web/mobile/src/features/chat/SessionHistoryMenu.tsx
  • web/mobile/src/features/chat/ToolLine.tsx
  • web/mobile/src/features/chat/TranscriptTurns.tsx
  • web/mobile/src/features/chat/TurnRow.tsx
  • web/mobile/src/features/chat/TurnStatusLine.tsx
  • web/mobile/src/features/chat/committedRevisionIds.ts
  • web/mobile/src/features/chat/markdownStream.ts
  • web/mobile/src/features/chat/runError.ts
  • web/mobile/src/features/chat/states/ChatStates.tsx
  • web/mobile/src/features/chat/turnRowClass.ts
  • web/mobile/src/features/chat/turnRuns.ts
  • web/mobile/src/features/chat/turnStatus.ts
  • web/mobile/src/features/chat/useAgentEntity.ts
  • web/mobile/src/features/chat/useReferenceToolDisplays.ts
  • web/mobile/src/features/chat/useTranscriptAutoScroll.ts
  • web/mobile/src/features/home/HomeScreen.tsx
  • web/mobile/src/features/home/lastStartedAgent.ts
  • web/mobile/src/features/home/useHomeHandoff.ts
  • web/mobile/src/styles/globals.css
  • web/mobile/tests/unit/agentLatestRevisionCache.test.ts
  • web/mobile/tests/unit/committedRevisionIds.test.ts
  • web/mobile/tests/unit/lastStartedAgent.test.ts
  • web/mobile/tests/unit/runError.test.ts
  • web/mobile/tests/unit/turnRuns.test.ts
  • web/oss/src/components/Layout/ProjectWatch.test.tsx
  • web/packages/agenta-chat/src/assets/conversationLayout.ts
  • web/packages/agenta-chat/src/assets/pendingSendEchoes.ts
  • web/packages/agenta-chat/src/assets/startupPhases.ts
  • web/packages/agenta-chat/src/clientTools/ClientToolPart.tsx
  • web/packages/agenta-chat/src/clientTools/meta.ts
  • web/packages/agenta-chat/src/components/ChatComposer.tsx
  • web/packages/agenta-chat/src/components/TurnFooter.tsx
  • web/packages/agenta-chat/src/components/TurnMetrics.tsx
  • web/packages/agenta-chat/src/components/activity/ActivityAnswersStep.tsx
  • web/packages/agenta-chat/src/components/activity/ActivityClientStep.tsx
  • web/packages/agenta-chat/src/components/activity/ActivityThoughtStep.tsx
  • web/packages/agenta-chat/src/components/activity/ActivityTimeline.tsx
  • web/packages/agenta-chat/src/components/activity/ActivityToolStep.tsx
  • web/packages/agenta-chat/src/components/activity/activityIcons.tsx
  • web/packages/agenta-chat/src/components/activity/index.ts
  • web/packages/agenta-chat/src/components/index.ts
  • web/packages/agenta-chat/src/hooks/index.ts
  • web/packages/agenta-chat/src/hooks/useAgentConversation.ts
  • web/packages/agenta-chat/src/hooks/useHeldFor.ts
  • web/packages/agenta-chat/src/hooks/useRevealed.ts
  • web/packages/agenta-chat/src/hooks/useServerSessionInputs.ts
  • web/packages/agenta-chat/src/hooks/useTurnClock.ts
  • web/packages/agenta-chat/src/model/activitySteps.ts
  • web/packages/agenta-chat/src/model/approvalPreview.ts
  • web/packages/agenta-chat/src/model/index.ts
  • web/packages/agenta-chat/src/model/livePreview.ts
  • web/packages/agenta-chat/src/skin/index.ts
  • web/packages/agenta-chat/src/skin/referenceTools.ts
  • web/packages/agenta-chat/src/skin/registry.ts
  • web/packages/agenta-chat/src/skin/types.ts
  • web/packages/agenta-chat/src/state/expandState.ts
  • web/packages/agenta-chat/src/state/turnClock.ts
  • web/packages/agenta-chat/src/transport/AgentChatTransport.ts
  • web/packages/agenta-chat/tests/unit/ChatComposer.touchEnter.test.tsx
  • web/packages/agenta-chat/tests/unit/TurnActivity.test.tsx
  • web/packages/agenta-chat/tests/unit/assets/pendingSendEchoes.test.ts
  • web/packages/agenta-chat/tests/unit/assets/scrollEdgeMask.test.ts
  • web/packages/agenta-chat/tests/unit/assets/startupPhases.test.ts
  • web/packages/agenta-chat/tests/unit/components/activityTimeline.test.tsx
  • web/packages/agenta-chat/tests/unit/hooks/readRunAdmission.test.ts
  • web/packages/agenta-chat/tests/unit/hooks/useSessionLivePreview.test.tsx
  • web/packages/agenta-chat/tests/unit/meta.test.ts
  • web/packages/agenta-chat/tests/unit/model/activitySteps.test.ts
  • web/packages/agenta-chat/tests/unit/model/livePreview.test.ts
  • web/packages/agenta-chat/tests/unit/skin/registry.test.ts
  • web/packages/agenta-chat/tests/unit/state/expandState.test.ts
  • web/packages/agenta-chat/tests/unit/state/turnClock.test.ts
  • web/packages/agenta-chat/tests/unit/transport/AgentChatTransport.test.ts
  • web/packages/agenta-entities/src/session/state/invalidate.ts
  • web/packages/agenta-entities/tests/unit/session-invalidate.test.ts
  • web/packages/agenta-entity-ui/src/agent/AgentIdentity.tsx
  • web/packages/agenta-entity-ui/src/agent/chrome.ts
  • web/packages/agenta-entity-ui/src/clientTools/ConnectToolWidget.tsx
  • web/packages/agenta-entity-ui/src/clientTools/SecretRequestWidget.tsx
  • web/packages/agenta-entity-ui/src/drive/chatFileRefs.tsx
  • web/packages/agenta-entity-ui/tests/unit/chatFileRefs.test.ts
  • web/packages/agenta-home-ui/src/HomeFocus.tsx
  • web/packages/agenta-home-ui/src/boundAgent.ts
  • web/packages/agenta-home-ui/src/index.ts
  • web/packages/agenta-sessions-ui/src/SessionCardList.tsx
  • web/packages/agenta-sessions-ui/src/SessionPinButton.tsx
  • web/packages/agenta-sessions-ui/src/SessionTab.tsx
  • web/packages/agenta-sessions-ui/src/SessionTabRail.tsx
  • web/packages/agenta-sessions-ui/src/SessionTabStrip.tsx
  • web/packages/agenta-sessions-ui/src/railTabMenu.tsx
  • web/packages/agenta-sessions-ui/src/useSessionActions.tsx
  • web/packages/agenta-sessions-ui/tests/unit/commitRenameCacheFailure.test.tsx
  • web/packages/agenta-sessions-ui/tests/unit/sessionRenameMenu.test.tsx
  • web/packages/agenta-sessions-ui/tests/unit/unlistedTabMenu.test.tsx
  • web/packages/agenta-sessions/src/row/sessionRowStatus.ts
  • web/packages/agenta-sessions/src/state/index.ts
  • web/packages/agenta-sessions/src/state/pins.ts
  • web/packages/agenta-sessions/src/state/useSessionCardList.ts
  • web/packages/agenta-sessions/src/state/useSessionTabRows.ts
  • web/packages/agenta-sessions/src/watch/useProjectWatch.ts
  • web/packages/agenta-sessions/tests/unit/sessionPins.test.ts
  • web/packages/agenta-sessions/tests/unit/useProjectWatch.test.ts
  • web/packages/agenta-sessions/tests/unit/useSessionTabRows.test.ts
  • web/packages/agenta-shared/src/clientTools/index.ts
  • web/packages/agenta-ui/src/components/presentational/chat/index.tsx
  • web/packages/agenta-ui/src/components/presentational/metrics/ExecutionMetricsDisplay.tsx
  • web/packages/agenta-ui/src/styles/surfaces.css
📝 Summary

Summary by CodeRabbit

  • New Features

    • Chat messages now render Markdown consistently, including users’ own messages.
    • Home chat remembers the last agent used per project and selects it when available.
    • Session tabs support compact layouts, active-session highlighting, reordering, closing actions, and improved handling of open sessions.
    • Touch keyboards insert a line break when pressing Enter; hardware keyboards can submit messages.
    • Loading states more closely match the conversation layout.
  • Improvements

    • Chat screens use smoother edge fades instead of jump-to-latest overlays.
    • Archived or deleted sessions are automatically unpinned.
    • Session status indicators, icons, spacing, and labels have been refined.

Walkthrough

Changes

Chat and navigation experience

Layer / File(s) Summary
Mobile chat integration
web/mobile/src/components/ContentRail.tsx, web/mobile/src/features/chat/*, web/mobile/tests/unit/*
Mobile chat now renders user text as markdown, tracks committed revisions, restores composer focus when appropriate, applies measured edge fades, and uses transcript-shaped loading placeholders.
Home agent selection
web/mobile/src/features/home/*, web/packages/agenta-home-ui/src/*
The last started agent is stored per project and used as the preferred valid agent during home composer binding.
Session tab rail and session actions
web/packages/agenta-sessions/src/*, web/packages/agenta-sessions-ui/src/*, web/packages/agenta-sessions-ui/tests/unit/*
Session tabs are fetched by open-tab IDs, compact rows and unlisted-tab menus are supported, and archived or deleted sessions are unpinned.
Shared chat and UI support
web/packages/agenta-chat/src/*, web/packages/agenta-chat/tests/unit/*, web/packages/agenta-entities/src/*, web/packages/agenta-entity-ui/src/*, web/mobile/src/styles/globals.css
Shared scroll masks and touch Enter behavior are added. Session-stream invalidation, agent icon styling, and composer color tokens are updated.

Priority: ➖ Normal

Estimated code review effort: 5 (Critical) | ~90 minutes

Merge Risk: 🔵 Low · up to 6419f

Navigation failures can affect the next agent selection, while tab loading can briefly duplicate or hide tabs. The mobile source layout also needs to be brought into the required structure before merge.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main mobile session-tab fixes, including tab persistence, rename and revision updates, and clean closing behavior.
Description check ✅ Passed The description directly explains the session-tab fixes and the related mobile chat, caching, pin, composer, agent-selection, visual, and test changes.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 60.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 47 files. (1 skipped: 1…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/session-tab-rail-by-id

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Railway Preview Environment

Status Destroyed (PR closed)

Updated at 2026-09-17T06:24:35.856Z

The transcript no longer floats a "Jump to latest" button; auto-scroll
still tracks the bottom, only the pill is gone.
@ashrafchowdury
ashrafchowdury force-pushed the feat/mobile-activity-timeline branch from aad395a to 6c8203c Compare September 16, 2026 12:16
@ashrafchowdury
ashrafchowdury added this pull request to stack #6889 September 16, 2026 12:16
The scroller wore a fixed top fade, so the first message read dimmed
while the transcript sat at its top. `scrollEdgeMask` / `clippedEdges`
(shared in @agenta/chat/assets, the Home list's 26/34px lengths) now
fade only the edges content is clipped at, read from the same measure
the auto-scroll already runs.
The transcript rail was 16px under the tab strip on both the live
conversation and the replay; it is 24px now.
The rail derived which chips exist from the sidebar's capped, grouped
list, so a session leaving that result for one fetch (a gate opening,
a pin, a newer session past the cap) blinked its tab out. Membership
is now the open set alone; rows come from a by-id query
(`useSessionTabRows`), and the card list only seeds a first visit.

Also on the strip: the active chip can be closed (the host routes to
the nearest survivor, from the rendered order), the last chip cannot,
and every gap carries a hairline — including before the + button —
with a wider gap, a stronger line, and a tighter chip radius.
`SessionCardList` gains a `compact` density — the nav rail's one-line
row: status glyph, title, pin on hover beside the name, time at the
right edge; no subtitle, no gate chip, sentence-case headings, and an
`activeRowId` fill for the session on screen. The history popover uses
it, wears the rail's Sessions glyph, and the waiting group is now
"Waiting for your input".
Chips may shrink to 80px; the rename editor paints edge to edge instead
of under the label fade; the strip's scroll fade uses the Home list's
lengths (26px in, 34px out).
Running wore the run-status mint, which the pulse dimmed to half and
read as washed out — it is the deep semantic green now. "Ready to
resume" wore an info-blue that read as a stray tint; it is ink, the
filled dot the nav rail paints. The tab chip's dot no longer pulses at
all: at 6px the fade registered as a colour, not as motion.
The title reads one `session-stream` query, and the project watch only
invalidated `session-list` keys — so when the agent named a session
after its first turn, the tab stayed "Agenta" until a reload. A session
change now reaches the per-session record too.
Nothing ever removed a pin, so an archived session kept leading every
list — a state the menu refuses to create (it will not pin an archived
row) but never left. Archive and delete now unpin; unarchive does not
re-pin.
The transcript placeholder mirrored a layout the transcript never had —
an avatar, bare lines where the user bubble sits — with a local pulse.
It is now the real anatomy on the real rail: the 34px bubble at the
right, the "Worked for" row, tool steps, prose at the 13/18px pitch,
pinned to the bottom, every bar the shared `SkeletonBlock` shimmer.

The tab strip's loading chips used the COMPOSITE `Skeleton` (title +
paragraph rows) squeezed into 28px; they are three round blocks at real
title widths. The history popover's compact list gets a placeholder on
its own 28px row geometry.
An unpinned session resolved "the agent's latest revision" through a
query keyed under this app's own name, which no commit path ever
cleared: the auto-save invalidates `["workflows", "latestRevision"]`,
the project watch cleared only the agents list, and the agent's own
commits (`data-committed-revision`) had no listener on /m at all. The
answer was a snapshot from whenever the page first asked — so a save
left the chip old, a new tab or a switch to an unpinned one landed on
v1 or whatever was cached, and the agent updating itself changed
nothing.

- The query now lives under `["workflows", "latestRevision", "mobile",
  …]`, so every existing invalidation reaches it.
- `workflow-changed` (and a reconnect) also clear the latest-revision
  caches.
- The live conversation reads `data-committed-revision` parts and pins,
  retargets and invalidates on each new one, as the desktop does.
- The session row binds by its `workflow` ref explicitly, not the first
  UUID, so a revision ref listed first cannot pin the turn that ran.
A new session from `+` or the shortcut, and a switch to an existing
one, put the caret in the composer once it can take input. Not while
the caret is already in another field: a self-commit remounts the
screen mid-edit in the config pane.
The composer already knew it had no hardware keyboard — it hid the
shortcut hints on that — but `submitOnEnter` stayed at its default, so
a phone's Enter sent the message with no way to make a newline. It now
follows the same test: Enter sends only where Shift/⌘ can be held; on
touch the send button sends and Enter inserts the paragraph.
The composer bound the head of a newest-first roster, so a workspace with two agents opened every visit on the one created last, whichever was in use (#6741). The start is what is remembered, per project, on this device; HomeFocus takes it as preferredAgentId and falls back past an agent no longer listed.
…select text

A session opened before its row landed rendered a chip with no context menu, so a right-click on it did nothing and the menu read as broken; repeated clicks on any chip painted its label (#6379). The rail's close verbs move to railTabMenu.tsx so the unlisted chip can offer them without a row view-model, and the chip is select-none, with a rename input keeping its own selection.
…le does

The composer's export is markdown with Lexical's escapes in it, so a literal render showed hi\_name for a typed hi_name. Through the same pipeline the assistant uses, minus the typewriter.
It was colorTextLightSolid — white on both fills. colorBgContainer is white on the light theme's ink and ink on the dark theme's yellow, the pairing Home's send already uses.
…own branch

markdownIcons lives on the files-pane branch, which this one does not sit on; CI's typecheck had no such name.
…lidator

useProjectWatch now calls invalidateAgentCommittedRevisionCache on a workflow change; the desktop suite's mock of @agenta/entities/workflow lacked it.

@coderabbitai coderabbitai 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.

Actionable comments posted: 5

🧹 Nitpick comments (1)
web/mobile/src/features/chat/AssistantMarkdown.tsx (1)

69-69: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Move UserMarkdown to its own file.

AssistantMarkdown.tsx exports both AssistantMarkdown and UserMarkdown. The mobile rules require one component per .tsx file, with a matching named export. No colocated-component exception applies. Move UserMarkdown and its required shared helpers to UserMarkdown.tsx, then update the TurnRow.tsx import.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Organization UI (inherited)

Review profile: CHILL

Plan: Advanced

Run ID: c84b489d-9afb-4d38-963c-b96494a01ab2

📥 Commits

Reviewing files that changed from the base of the PR and between 6c8203c and 6419f28.

📒 Files selected for processing (48)
  • web/mobile/src/components/ContentRail.tsx
  • web/mobile/src/features/chat/AssistantMarkdown.tsx
  • web/mobile/src/features/chat/ChatScreen.tsx
  • web/mobile/src/features/chat/LiveConversation.tsx
  • web/mobile/src/features/chat/SessionHistoryMenu.tsx
  • web/mobile/src/features/chat/TurnRow.tsx
  • web/mobile/src/features/chat/committedRevisionIds.ts
  • web/mobile/src/features/chat/states/ChatStates.tsx
  • web/mobile/src/features/chat/useAgentEntity.ts
  • web/mobile/src/features/chat/useTranscriptAutoScroll.ts
  • web/mobile/src/features/home/HomeScreen.tsx
  • web/mobile/src/features/home/lastStartedAgent.ts
  • web/mobile/src/features/home/useHomeHandoff.ts
  • web/mobile/src/styles/globals.css
  • web/mobile/tests/unit/agentLatestRevisionCache.test.ts
  • web/mobile/tests/unit/committedRevisionIds.test.ts
  • web/mobile/tests/unit/lastStartedAgent.test.ts
  • web/oss/src/components/Layout/ProjectWatch.test.tsx
  • web/packages/agenta-chat/src/assets/conversationLayout.ts
  • web/packages/agenta-chat/src/components/ChatComposer.tsx
  • web/packages/agenta-chat/tests/unit/ChatComposer.touchEnter.test.tsx
  • web/packages/agenta-chat/tests/unit/assets/scrollEdgeMask.test.ts
  • web/packages/agenta-entities/src/session/state/invalidate.ts
  • web/packages/agenta-entities/tests/unit/session-invalidate.test.ts
  • web/packages/agenta-entity-ui/src/agent/AgentIdentity.tsx
  • web/packages/agenta-entity-ui/src/agent/chrome.ts
  • web/packages/agenta-home-ui/src/HomeFocus.tsx
  • web/packages/agenta-home-ui/src/boundAgent.ts
  • web/packages/agenta-home-ui/src/index.ts
  • web/packages/agenta-sessions-ui/src/SessionCardList.tsx
  • web/packages/agenta-sessions-ui/src/SessionPinButton.tsx
  • web/packages/agenta-sessions-ui/src/SessionTab.tsx
  • web/packages/agenta-sessions-ui/src/SessionTabRail.tsx
  • web/packages/agenta-sessions-ui/src/SessionTabStrip.tsx
  • web/packages/agenta-sessions-ui/src/railTabMenu.tsx
  • web/packages/agenta-sessions-ui/src/useSessionActions.tsx
  • web/packages/agenta-sessions-ui/tests/unit/commitRenameCacheFailure.test.tsx
  • web/packages/agenta-sessions-ui/tests/unit/sessionRenameMenu.test.tsx
  • web/packages/agenta-sessions-ui/tests/unit/unlistedTabMenu.test.tsx
  • web/packages/agenta-sessions/src/row/sessionRowStatus.ts
  • web/packages/agenta-sessions/src/state/index.ts
  • web/packages/agenta-sessions/src/state/pins.ts
  • web/packages/agenta-sessions/src/state/useSessionCardList.ts
  • web/packages/agenta-sessions/src/state/useSessionTabRows.ts
  • web/packages/agenta-sessions/src/watch/useProjectWatch.ts
  • web/packages/agenta-sessions/tests/unit/sessionPins.test.ts
  • web/packages/agenta-sessions/tests/unit/useProjectWatch.test.ts
  • web/packages/agenta-sessions/tests/unit/useSessionTabRows.test.ts

Included review availability: Your plan provides up to 8 included reviews per hour; 6 remain after this review.

Comment thread web/mobile/src/features/chat/states/ChatStates.tsx
Comment thread web/mobile/src/features/home/useHomeHandoff.ts Outdated
Comment thread web/packages/agenta-sessions-ui/src/SessionTabRail.tsx
Comment thread web/packages/agenta-sessions-ui/src/SessionTabRail.tsx
Comment thread web/packages/agenta-sessions/src/state/useSessionTabRows.ts
@ashrafchowdury
ashrafchowdury removed this pull request from stack #6889 September 17, 2026 06:10
@ashrafchowdury
ashrafchowdury changed the base branch from feat/mobile-activity-timeline to release/v0.118.4 September 17, 2026 06:11
… draws a landed chip twice

Review: keepPreviousData held the previous set's pages while a new set loaded, so a tab closed a moment ago could leave useSessionTabRows. And the commit a row landed in drew its chip from both the rows and the unlisted state, one effect late. The rows filter at the hook; the rail derives what it renders synchronously.
…he task

Review: a start whose navigation was cancelled restored the draft but had already written the memory.
@ashrafchowdury
ashrafchowdury changed the base branch from release/v0.118.4 to main September 17, 2026 06:16
@ashrafchowdury

Copy link
Copy Markdown
Contributor Author

Re the nit on UserMarkdown in AssistantMarkdown.tsx: agreed in principle, but the helpers it needs (proseClassName, useDriveLinkResolver) are exported by #6876, which reshapes that file and is not in this stack. Splitting here would break the typecheck on this branch alone; will do the split once #6876 lands.

@ashrafchowdury
ashrafchowdury changed the base branch from main to release/v0.118.4 September 17, 2026 06:24
@ashrafchowdury
ashrafchowdury merged commit 14f5855 into release/v0.118.4 Sep 17, 2026
44 of 46 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