Embed Atelier as FlashType's workspace shell#269
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
flashtype-website | 3ba51fd | Commit Preview URL Branch Preview URL |
Jul 14 2026, 07:27 AM |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e7ead13578
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const openFilePaths = | ||
| openFilePathsByWindowId.get(window.id) ?? | ||
| options.openFilePaths ?? | ||
| options.pendingOpenFilePaths ?? | ||
| []; | ||
| workspace.ephemeral === true ? (workspace.openFilePaths ?? []) : []; | ||
| const workspaceEntry = workspaceToSessionEntry(workspace, openFilePaths); |
There was a problem hiding this comment.
Preserve opened files when saving ephemeral sessions
For ordinary folders opened as ephemeral workspaces, workspace.openFilePaths is initialized to [] and is no longer updated after the user opens documents because the setOpenFilePaths IPC path was removed. Since the external Lix state for these workspaces lives in a temporary directory that is disposed when the window closes, this rewrites workspace-session.json with an empty openFilePaths list and relaunching the app cannot restore the previously open files, falling back to the recent-file behavior instead.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit dd4fc37. Configure here.
This comment has been minimized.
This comment has been minimized.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_6543fdee-ff8b-4ae8-933c-3f8a5453df14) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_06e8c846-c417-4f64-948f-8b6dce792cce) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_eb112eb2-92db-4668-9691-3d180b6c9a99) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_e6f2dc47-d6b4-42aa-929a-aebed35159d1) |
This comment has been minimized.
This comment has been minimized.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_718a018c-dcf6-417a-b4d3-92274e6cc8ef) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_a670c638-f3be-4eb3-8eb0-46bdbd788d65) |
This comment has been minimized.
This comment has been minimized.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_f43ecf44-b93a-43ea-bac4-e4dee1a3390d) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_806171f7-f0bd-4fbc-a534-74dfef9564c8) |
This comment has been minimized.
This comment has been minimized.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_aabd038f-092a-4c44-a526-a70ac45eb82d) |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_b42aace6-a1b2-4600-92db-83c2e7bdc4f5) |

Summary
origin/maincreateAtelier()and<Atelier instance={atelier} />{ manifest, entry }Why
Atelier now owns reusable workspace UI and document/diff commands. FlashType remains the Electron-local product layer: it owns filesystem access, native workspace lifecycle, agent terminals, telemetry, and agent-turn file capture.
The public boundary is intentionally small: hosts query workspace data through
atelier.lixand useatelier.documentsoratelier.diffonly for UI actions.External write handling
For ephemeral folders, FlashType records a Markdown metadata baseline when an agent turn starts, imports that baseline before the start commit, then imports changed, new, and deleted Markdown paths before the stop commit. This preserves lazy repository loading while recording modified, added, and deleted changes in the turn range.
Validation
pnpm run buildpnpm run typecheckpnpm test— 66 files, 527 passed, 2 skippedFLASHTYPE_E2E_RENDERER_PORT=4201 FLASHTYPE_HEADLESS=1 pnpm exec playwright test e2e/agent-review.spec.tsNote
High Risk
Large architectural swap of the workspace UI, Lix open/close/session semantics, and agent external-write import path—areas that affect data sync, reviews, and packaged native binaries.
Overview
Replaces FlashType’s workspace shell with Atelier while keeping FlashType-owned Files, History, Claude, and Codex as Atelier host extensions (
atelier_*/flashtype_*view keys). UI state and reviews move toatelier_ui_stateand Atelier’s per-change Keep change / Undo change flows.Dependency and build shift: the
lixgit submodule is removed in favor ofsubmodule/atelierand a pinned@lix-js/sdknpm release. CI/macOS workflows drop Rust/Lix native compile, caching, andwasm-bindgen; dev/build usepnpm run build:atelierinstead ofbuild:lix. Packaged apps expect@lix-js/sdk-darwin-arm64for the native module.Electron/Lix lifecycle: storage uses
LocalFilesystemwith leased ephemeral.lixdirs,lix:openreturnssessionId, andrunWithLixClosedblocks reopen during workspace transitions. Agent-turn file capture baselines Markdown metadata at turn start and imports only changed paths at stop so Codex/Claude edits (open, unopened, or new files) surface as reviewable diffs. Session persistence usessetSessionOpenFilePathsfor transient workspaces; dock title tracking for the active file is removed.Tests/docs: e2e and Playwright defaults align with Atelier selectors and renderer port 4174;
NEXT_RELEASE.mdtargets 0.9.0 with user-facing changelog entries.Reviewed by Cursor Bugbot for commit 3ba51fd. Bugbot is set up for automated code reviews on this repo. Configure here.