Skip to content

feat(studio): add reorderable center tabs for workspace apps - #396

Open
kiendle wants to merge 4 commits into
mainfrom
kien-ship-it/tab-interface
Open

kiendle wants to merge 4 commits into
mainfrom
kien-ship-it/tab-interface

Conversation

@kiendle

@kiendle kiendle commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add VS Code-style center tabs for Studio apps: open/select, close, drag reorder, keyboard reorder/navigation, overflow, and an empty-workspace state. Keep open panes mounted so switching preserves local state.
  • Route Studio launchers into the tab host; embed Artifacts, Coding sessions, Settings, and the real Distribution app while retaining standalone routes. Preserve main's saved-chat History integration and reopen Chat when resuming a conversation.
  • Prevent hidden Mindmap panes from consuming keyboard/paste input; update registry checks, workspace docs, and changelog.

Related

No linked issue.

Checklist

  • Repository lint and workspace typecheck pass in CI (pnpm lint + pnpm typecheck, equivalent to pnpm check).
  • Full web suite passes in CI: 272 suites / 2,974 tests passed; 1 suite / 1 test skipped.
  • Changeset: not applicable; no packages/core/ changes.
  • Environment documentation: not applicable; no new committed environment variables.
  • UI changes exercised in a browser (not just a green build)
  • Docs updated for changed behavior

Testing

  • Final revision 9504bbc9: complete CI workflow and both Docker jobs passed. Includes full lint/typecheck, web and package tests, migration/schema checks, Compose ingestion/query smoke, and application/package builds.

  • Post-review browser checks verified Mindmap presentation and tab-strip keyboard ownership; editor/undo retention across previews; input isolation beneath previews and reactivation after closing them; repeated Settings navigation with actions preserved; and imported continuations creating/reopening a separate saved chat without changing the previous chat. Import readiness is covered by a regression that waits for host source refresh.

  • pnpm --filter @launchstack/web exec next typegen && pnpm --filter @launchstack/web typecheck — passed. Route types were regenerated after merging main.

  • Targeted ESLint and Prettier on the merged integration files — passed; ESLint emits the existing root pages-directory configuration notice.

  • pnpm --filter @launchstack/web test --runInBand __tests__/studio/registry.test.ts __tests__/lib/workspace-history.test.ts __tests__/server/history.test.ts __tests__/api/workspace/sessions.route.test.ts src/app/employer/documents/_workspace/__tests__/HistoryRail.test.tsx src/app/employer/documents/_workspace/__tests__/SourceRail.tabs.test.tsx src/app/employer/documents/_workspace/__tests__/AddSourceModal.create.test.tsx src/app/employer/documents/_mindmap/__tests__/editor.test.tsx — 8 suites, 93 tests passed. Existing jsdom canvas/React act warnings remain.

  • Browser verification against the real local application and isolated PostgreSQL database: Distribution opens without leaving the workspace; drafts survive tab switching; keyboard reordering works; closing Chat then resuming History reopens it; two saved sessions restore independently; Settings switching retains the transcript; New Chat clears the saved-session URL; standalone Distribution still renders.

  • Earlier tab-feature browser checks also covered drag reorder, duplicate prevention, active/inactive/middle-click close, close-all/reopen, light/dark appearance, embedded Artifact navigation, and inactive Mindmap keyboard/paste isolation.

  • git diff --check origin/main...HEAD — passed.

Notes for reviewers

  • Diff against current main is limited to the tab feature and required app integration, tests, docs, and changelog. No authentication, database schema/migration, credentials, or environment-file changes.
  • Main is merged into the branch. Its History/Distribution work is not being reintroduced as unrelated PR changes; this diff adapts those features to center tabs.
  • Open-tab layout is scoped to the mounted workspace, not persisted across reloads. Inactive panes remain mounted until closed.
  • Live QA did not exercise AI generation or background pipelines because the isolated local environment has no provider keys or configured workers.

Remaining external check

Vercel – launch-stack still fails, including on main. The final revision’s deployment belongs to timothy-lins-projects-92e35308; the available account can access only kiens-projects-656209eb, so its logs/configuration cannot be inspected. Repository deployment is Docker-based. No checks were bypassed and no unrelated deployment settings were changed. GitHub reports the PR mergeable but UNSTABLE because this external status remains red.

@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
launch-stack Error Error Sep 16, 2026 6:35am UTC
1 Skipped Deployment
Project Deployment Actions Updated
pdr-ai-v2 Ignored Ignored Sep 16, 2026 6:35am UTC

@kiendle

kiendle commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator Author

Pushed be7e28f6 after a focused correctness review:

  • Mindmap presentation now owns its navigation keys; inactive editors and the entire workspace tab strip keep separate keyboard ownership.
  • Opening another source preview no longer unmounts the retained Mindmap editor or loses its undo history.
  • Repeated Settings deep links reselect their target, without removing actions when already on that section.
  • Session imports await workspace source refresh before exposing Open/Continue.
  • Imported continuations start a separate saved chat and preserve continuation context instead of appending to the previously open chat.

Verification: application typecheck passed; 58 affected tests plus the new import-readiness regression passed. Browser checks reproduced the presentation failure before the fix, then verified slide navigation, active-editor tab-strip input, Mindmap/undo retention across previews, repeated Settings navigation/actions, and a continued transcript creating/reopening a separate stored session while the original chat remained unchanged. Temporary local QA data removed.

The previous commit's complete CI and Docker workflows passed. Monitoring both workflows again for this commit.

External check caveat: Vercel – launch-stack also fails on main. Its deployment belongs to timothy-lins-projects-92e35308, while the available Vercel account can access only kiens-projects-656209eb; deployment logs are inaccessible. No unrelated deployment configuration or check-bypass changes have been made.

@kiendle

kiendle commented Sep 16, 2026

Copy link
Copy Markdown
Collaborator Author

Follow-up 9504bbc9 closes the final review edge case: when a source preview covers the retained Mindmap editor, keyboard/clipboard input is suspended without unmounting it. Reproduced Ctrl+Z mutating the covered map before the fix; verified undo and paste are ignored behind the preview, and normal Undo resumes after closing it. The aria-hidden regression failed before the fix and passes now; all 12 editor tests, typecheck, and targeted lint passed. Temporary QA fixtures removed.

Final verification complete on 9504bbc9: CI passed all jobs; Docker passed both jobs. Full web tests: 272 suites / 2,974 tests passed, with 1 suite / 1 test skipped. No inline review comments or submitted change requests remain. PR description/checklist updated; PR left open and unmerged.

Only Vercel – launch-stack remains red. It also fails on main, and its owning Vercel team is inaccessible to the available account. No bypass or unrelated deployment changes were made. GitHub reports MERGEABLE / UNSTABLE, not all-green.

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