Skip to content

refactor(nav): split the Sessions umbrella into Workspaces and Conversations - #91

Merged
ExtraToast merged 1 commit into
mainfrom
refactor/split-workspaces-and-conversations
Sep 17, 2026
Merged

ExtraToast merged 1 commit into
mainfrom
refactor/split-workspaces-and-conversations

Conversation

@ExtraToast

Copy link
Copy Markdown
Contributor

Summary

The UI half of JorisJonkers-dev/agents-api#68: "agents-ui's navigation splits the Sessions umbrella into Workspaces and Conversations, and unqualified 'session' disappears from the UI."

"Sessions" was one nav item hiding three unrelated things behind ?tab=: Repo-backed Workspaces, Scratch Workspaces, and the no-Workspace chat. It is now two top-level items — Workspaces (Repo-backed and Scratch, both Workspaces under the glossary) and Conversations. Workspaces gains a real list route; it only had a detail route before.

Bare "session" meaning an Agent Session is now "agent session" throughout the workspaces feature. New session, which actually created a Workspace, is now New workspace.

No API path, request shape or service call changed. chatSessionsService.ts still calls /chat-sessions exactly as before. The backend rename is a separate, currently blocked decision — see Notes.

Validation

  • pnpm lint — clean, --max-warnings 0
  • pnpm typecheck — clean
  • pnpm test — 59 files, 467 tests, all passed
  • pnpm verify — coverage, dependency-cruiser (192 modules, no violations) and build all clean
  • pnpm test:e2e60/60 across chromium, firefox, webkit and mobile-chromium

Notes

  • Old bookmarks keep working. /sessions, /sessions?tab=workspace|scratch|chat, /sessions?tab=workspace&new=1 and /sessions/workspace/:id all redirect, preserving the tab selection, the new=1 create flag and route params. Nothing redirected these before, so a hard cut would have 404'd every existing bookmark and history entry. Covered by unit tests on the pure mapping plus three Playwright tests that drive real browsers through the auth guard.
  • Two real bugs surfaced during the e2e run, both fixed: vue-router inherits the source query onto a redirect target that specifies none, so ?tab=chat leaked onto /conversations until the branch passed query: {} explicitly; and Playwright's getByRole('heading') substring-matches by default, so Workspaces also matched Repo-backed workspaces.
  • Workspaces keeps a Repo-backed/Scratch tab split rather than one merged list. The two kinds have materially different creation flows — a multi-step project/repo/branch wizard versus a single-field quick create — and the existing components already encapsulate that.
  • The sessions/ directory keeps its name. The glossary governs user-visible words, not module paths, and renaming it would touch imports, the feature key and CI paths for no user-facing gain. Its barrel now exports only the Conversation surface instead of mixing both.
  • Out of scope, reported not acted on: CredentialsPanel.vue uses "session" for the OAuth device-flow sign-in — a third meaning, unrelated to this split. And WorkspaceKind declares a 'CHAT' value that nothing constructs; it is dead modelling of exactly the ambiguity this ticket resolves, but removing it belongs with the backend change.

…sations

agents-api#68: navigation now shows top-level Workspaces (Scratch and
Repo-backed together, tabbed) and Conversations, and unqualified "session"
in user-facing copy becomes "Agent session" or "Conversation" depending on
meaning. /sessions, its ?tab= variants, and /sessions/workspace/:id redirect
to their new homes so existing bookmarks and history keep working.

Workspace/Scratch UI (WorkspaceTab, ScratchTab, CreateWorkspaceWizard) moved
from the sessions feature into workspaces, untangling the sessions barrel
down to Conversation-only exports. No API path, request shape, or service
call changes — chatSessionsService.ts still calls /chat-sessions as-is.
@ExtraToast ExtraToast added type: refactor Code structure change without intended behavior change. area: agents Agent runtime, agent APIs, tools, prompts, or UI. component: ui User interface component or frontend application. labels Sep 17, 2026
@ExtraToast ExtraToast self-assigned this Sep 17, 2026
@ExtraToast
ExtraToast merged commit d17d546 into main Sep 17, 2026
9 checks passed
@ExtraToast
ExtraToast deleted the refactor/split-workspaces-and-conversations branch September 17, 2026 05:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: agents Agent runtime, agent APIs, tools, prompts, or UI. component: ui User interface component or frontend application. type: refactor Code structure change without intended behavior change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant