Skip to content

XERK-125: show the repo on the Sessions-tab session card#310

Merged
xerhab merged 1 commit into
mainfrom
XERK-125
Jul 25, 2026
Merged

XERK-125: show the repo on the Sessions-tab session card#310
xerhab merged 1 commit into
mainfrom
XERK-125

Conversation

@xerhab

@xerhab xerhab commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

What

The Android Sessions-tab session card's meta row read host · branch. It now reads repo · host · branch.

The repo is the one fact that tells several open sessions apart, and it was the only session row in the app missing it — the queued card (id · repo · device), the ended row (id · repo · device) and the web's own active card (id · repo · device) all lead with it.

How

  • core/Sessions.kt → new sessionRepoLabel(session) (pure, JVM-tested, per the parity convention of putting logic in core/ and keeping the composable a thin renderer):
    • a normal session → its repo name;
    • a repos-root session → "repos root" in words, rather than the agent's (root) wire sentinel — the same thing the Dashboard card and the web session header already say;
    • nothing reported (older agent / partial closed record) → "?", as the queued and ended rows do, so the row can never lose a separator to a blank.
  • ui/SessionsScreen.ktSessionListCard: repo leads the row; a root session drops the branch, since it has no worktree and the row would otherwise read repos root · host · detached, asserting a HEAD it was never given (again matching the Dashboard card). The row became a FlowRow so a long repo or branch wraps rather than ellipsising away everything after it on a narrow phone.
  • android/PARITY.md: gap recorded as closed.

Scope kept to the ticket: the web card also carries the session id and the ticket key, which Android's live card still omits — not touched here.

Verification

  • gradle testDebugUnitTest — green, including the new SessionsTest case covering all four sessionRepoLabel branches (named repo / root by flag / root by (root) sentinel / nothing reported).
  • gradle assembleDebug — green.
  • Not exercised on a device: this agent image is the android-build tier — no emulator, no system image, no KVM — and the project has no Robolectric/Compose-JVM test harness, so the rendered card was not viewed running. The layout change is confined to the meta RowFlowRow swap shown in the diff; the string logic behind it is what the unit test covers.

The Android Sessions list card's meta row read "host · branch", leaving out
the one fact that tells several open sessions apart — which repo each works.
Both of Android's other session rows (queued, ended) and the web's own active
card already lead with it.

The row now reads "repo · host · branch", through a new core/Sessions.kt
`sessionRepoLabel`: a repos-root session says "repos root" rather than the
agent's "(root)" wire sentinel, and a record with no repo at all reads "?"
like the queued and ended rows do. A root session also drops the branch it has
no worktree to have — otherwise the row asserts a "detached" HEAD it was never
given — matching the Dashboard's session card.

The row became a FlowRow so a long repo or branch wraps instead of ellipsising
away the parts after it on a narrow phone.
@xerhab
xerhab merged commit b455858 into main Jul 25, 2026
1 check passed
@xerhab
xerhab deleted the XERK-125 branch July 25, 2026 18:53
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