Skip to content

feat(app): group Codex child sessions and resize sidebar#463

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/session-tree-resizable-sidebar
Open

feat(app): group Codex child sessions and resize sidebar#463
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/session-tree-resizable-sidebar

Conversation

@AmagiDDmxh

@AmagiDDmxh AmagiDDmxh commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • group Codex child sessions under their parent session in the desktop library instead of showing subagent runs as unrelated duplicate rows
  • add a persistent, resizable desktop sidebar with pointer, keyboard, and reset interactions
  • store Codex parent-session lineage in SQLite and reindex existing Codex sessions so the tree is populated for existing libraries

Why

Codex records subagent work as separate session files and links each child to its parent through parent_thread_id. Spool previously discarded that relationship, so parent and child sessions appeared as independent entries with similar titles and timestamps. This made the library look as if it contained duplicate sessions.

Preserving the lineage lets the desktop app present those records as a tree while keeping every child session individually accessible. The sidebar resize control also brings the desktop shell in line with the dimensions and behavior documented in DESIGN.md.

Implementation

  • add nullable parent_session_uuid storage and an index in schema migration v16
  • parse parent_thread_id in the shared session-kit Codex parser and propagate it through core session models and sync writes
  • bump the Codex index version to codex-v7-parent-session-tree so existing records are refreshed
  • page by root sessions, then load their descendants with a recursive CTE so children do not consume root pagination slots
  • build cycle-safe session forests in the renderer and render nested rows with expand/collapse controls
  • keep tree context in library, virtualized, and share-editor session lists
  • add a 200-360 px sidebar resize separator, persist the selected width, support arrow/Home/End keys, and reset to 240 px on double-click
  • update localized accessibility labels and the desktop layout guidance in DESIGN.md

Verification

  • pnpm exec vp run --no-cache -r build
  • pnpm typecheck
  • pnpm exec vp check
  • focused core parser, migration, query, and project-session tests: 40 passed
  • renderer session-tree and resize-handle tests: 3 passed
  • Electron E2E coverage for tree interaction and sidebar resize persistence: 2 passed

Known upstream test issue

The full pnpm test run reaches an existing failure in packages/session-view/src/build-output.test.ts. That test invokes pnpm exec vite build, but the current Vite+ workspace does not expose a vite binary (Command "vite" not found). The package's normal vp build path succeeds, including in the full no-cache build above.

@AmagiDDmxh
AmagiDDmxh force-pushed the feat/session-tree-resizable-sidebar branch from ae2ed0a to 9dd13d5 Compare July 18, 2026 18:49
@AmagiDDmxh AmagiDDmxh changed the title Feat/session tree resizable sidebar feat(app): group Codex child sessions and resize sidebar Jul 18, 2026
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