feat!: adopt atelier's single central-tabs primitive#276
Merged
Conversation
Bumps submodule/atelier to 4396919 (central-panel-embedding): the central panel is now always browser-style tabs with a pinned home. FlashType configures no custom home, so the Files view becomes the pinned home tab — documents open as content tabs beside it and closing the last content tab lands back on Files. - drop filesViewMode: "sidebar" (derived by atelier now; a no-op) - closeFileViews closes by path via the new documents.close(path) so deleting a file also closes its background tab (the tree lives in the pinned home tab, so the doc view is rarely active during deletion) - drop the revisions wiring deleted upstream by atelier#59 (checkpoint removal): history view props, checkpointBranchId, atelier_history builtin id; local types keep the optional diff-viewer props compilable - e2e: ensureFilesViewOpenInLeftPanel -> ensureFilesHomeTabActive; the single-central-document invariant becomes "pinned Files home first, one active document content tab beside it"; tree interactions re-activate the home tab; the central empty state is gone (landing on the Files home instead); the two checkpoint-diff tests are skipped with pointers to atelier#59 - unit mocks: documents.close added, revisions removed, closeFileViews assertions carry filePath - pnpm-lock: additive update for new atelier deps BLOCKED on opral/atelier#60 — the submodule pointer targets the central-panel-embedding branch, so the submodule-branch validation in CI fails until it merges; bump to the merge commit afterwards. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
flashtype-website | fd05f72 | Commit Preview URL Branch Preview URL |
Jul 21 2026, 09:39 PM |
|
Found 1 test failure on Blacksmith runners: Failure
|
Atelier removed its checkpoint implementation upstream (opral/atelier#59, pulled in by the central-tabs submodule bump); FlashType mirrors that removal instead of keeping a dormant, half-working feature. Deleted: - src/extensions/history/ — the checkpoint UI (list, create, rename, switch, delete) and its registration - electron/checkpoint-name.mjs (+test), the terminal:generateCheckpointName IPC handler, preload method, and DesktopGenerateCheckpointName* types - src/shell/checkpoint-diff.ts (+test) and src/extension-runtime/checkpoint-diff.ts - e2e/branch-switcher.spec.ts — all four tests exercised checkpoint UI or checkpoint diffs (incl. the two previously skipped) Stripped checkpoint branches from the Files view (checkpoint-diff virtual tree, checkpointBranchId/checkpointDiff context, the "checkpoint-diff" entry source), the file tree (reviewStatuses map, "recreated" status styling), the legacy MarkdownView/CsvView (checkpoint-diff rendering; commit-snapshot/diff modes stay), the top bar (isReviewingCheckpoint badge), and editor-revision-state (checkpoint state keys). Kept: shared lix branch plumbing (createBranch/switchBranch/ syncDiskToLix, the lix_workspace_branch_id active-branch key) and the agent-review machinery — separate features that read them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Picks up the built-in strip UX parity (file-type glyphs, no active ring) and the central + removal. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Bumps submodule/atelier to c8c9a58 (central-panel-embedding tip): pinned home only when configured. FlashType passes no centralPanel.home, so the Files view lives in the left sidebar (open by default on fresh state), the central panel is tabs of documents only, and closing the last tab shows the central empty state again. Restores the e2e specs to their origin/main shape — the sidebar-Files assumptions (tree visible beside documents, "Start writing" empty state, in-place tab navigation) hold again under the tab model — minus the deleted checkpoint helper. The documents.close(path) deletion fix stays. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…les view Bumps submodule/atelier to 207d18e, which adds the host watched-files data source (createAtelier filesView options), and deletes FlashType's ~5,450-line files-extension fork — it existed to surface watcher-backed disk files for transient workspaces, which the bundled view now covers. - src/lib/atelier-files-view.ts relocates the transient-workspace machinery: watchEntries bridges setEphemeralWatchedDirectories (keyed to the tree's expanded directories) plus the onEphemeralWatchedFileTreeChanged subscription, and resolveFileForInteraction imports a watched path into lix before open/rename. Only ephemeral workspaces pass filesView. - Review overlays and deletion-closes-tab are native to the bundled view (it computes pending review paths itself and closes by path), so no host wiring remains. - Deletes src/extensions/files/*, the fork-only ExtensionContext/ WorkspaceContext/PanelSide types, and the dead src/queries.ts. - e2e: the bundled tree auto-reveals the active document's directory, so the grouped-transient-workspace test no longer clicks it (the click would collapse it); all other selectors held. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adding Files from a side panel focuses the left sidebar; closing the last removable side view leaves the empty state instead of collapsing the island. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The right panel's add-view menu no longer offers Files. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
atelier#60 merged; the pointer moves to the squash commit on main. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
samuelstroschein
marked this pull request as ready for review
July 21, 2026 21:38
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adopts atelier's new single central-panel primitive (opral/atelier#60): the central panel is now always browser-style tabs. Per the final API shape, hosts that configure no
centralPanel.home— FlashType — keep the Files view in the left sidebar (open by default on fresh state): documents open as central tabs, there is no pinned center tab, and closing the last tab shows the central empty state ("Start writing").Important
BLOCKED on opral/atelier#60 merging. The
submodule/atelierpointer targets commit207d18e8d84f4e1bf6c0ad8fdf5259840527a3c5on thecentral-panel-embeddingbranch. The CI step "Validate submodule branches" requires the pinned sha to be reachable from atelierorigin/main, so it will fail until atelier#60 merges. After the merge, bump the pointer to the merge commit and this PR becomes mergeable.The branch is based on the current
main(aba390a) —mainhas not moved since, so no rebase was needed; the file-picker/strip UX parity work came in atelier-side via the submodule bumps.Behavior changes (UI-visible)
createBranch/switchBranch/syncDiskToLixclient APIs, thelix_workspace_branch_idactive-branch key used by agent review and editors) stays.What changed
Central tabs adoption
submodule/atelier:c5d8a35→207d18e(central-panel-embeddingtip: always-tabs central panel; pinned home only when configured; Files sidebar-only; strip UX parity; host watched-files data source).src/main.tsx: droppedfilesViewMode: "sidebar"— the option is fully derived by atelier now.pnpm-lock.yaml: additive update for the new atelier deps (excalidraw, mermaid, etc.).Files tree consolidation
src/extensions/files/: view, file tree, tree builder, host extension, tests) plus the now-deadsrc/queries.tsand the fork-onlyExtensionContext/WorkspaceContext/PanelSidetypes. Atelier's bundled Files extension takes over (hosts that register no replacement get it by default). Net delta of the consolidation commit: +110 / −5,679 lines.reviewRangeSessionIdwiring was needed.closeFileViews → documents.close(path)itself, superseding the host-side fix from earlier in this PR.src/lib/atelier-files-view.tsvia atelier's newcreateAtelier({ filesView })options (207d18e):watchEntriesbridgesworkspace.setEphemeralWatchedDirectories({ownerId, paths: expandedDirectories})+ theonEphemeralWatchedFileTreeChangedsubscription, andresolveFileForInteractiondoes the lix lookup →importFilesystemPaths→ canonical-id import on first open/rename. Only ephemeral workspaces passfilesView.data-item-*attributes are a superset of the fork's).Checkpoint removal (mirrors atelier#59)
src/extensions/history/(the checkpoint UI),electron/checkpoint-name.mjs(+test, IPC handler, preload method, types),src/shell/checkpoint-diff.ts(+test),src/extension-runtime/checkpoint-diff.ts,e2e/branch-switcher.spec.ts(all four tests exercised checkpoint UI/diffs) and the history e2e helper.MarkdownView/CsvView(checkpoint-diff rendering; commit-snapshot/diff modes stay — they back agent-review rendering), the top bar (isReviewingCheckpointbadge),editor-revision-state(checkpoint state keys).createBranch/switchBranch/syncDiskToLix, thelix_workspace_branch_idactive-branch key) — agent review, the tip-tap editor, and workspace machinery read them; agent-review machinery (external-write-review*,agent-turn-review-range) is a separate feature and untouched.Verification
pnpm run typecheck— cleanpnpm run test— 461 passed, 1 skipped (fork + checkpoint tests deleted)pnpm run build(incl. atelier submodule build) — cleanpnpm run lint/prettier— only pre-existing findingsagent-review(review overlay renders on the bundled tree),files-click-tour2/2,workspace-switch,headless-launch,workspace-windows16/16 — including the transient-workspace tests that surface watched disk files through the newfilesViewbridgeAfter atelier#60 merges
cd submodule/atelier && git fetch origin main && git checkout <merge-commit>, commit the pointer bump; the submodule-branch validation then passes.🤖 Generated with Claude Code