Route application filesystem I/O through FileOperations - #13630
Open
franknoirot wants to merge 5 commits into
Open
Route application filesystem I/O through FileOperations#13630franknoirot wants to merge 5 commits into
franknoirot wants to merge 5 commits into
Conversation
This was referenced Sep 3, 2026
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 3, 2026 21:01
a5b665f to
2ccd56b
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 3, 2026 21:17
2ccd56b to
c7af7ab
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 13:00
c7af7ab to
e24de5d
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 13:29
e24de5d to
f8ffdc1
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 13:53
f8ffdc1 to
075ee10
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 14:08
075ee10 to
4b95c1b
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 14:28
4b95c1b to
5ee81b1
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 14:30
5ee81b1 to
fb78232
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 14:32
fb78232 to
d893ebe
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 15:01
d893ebe to
cf9131a
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 17:25
925e66d to
8b7a65d
Compare
franknoirot
commented
Sep 4, 2026
| await expect( | ||
| page.getByTestId('file-tree-item').getByText(sampleOne.folderName) | ||
| ).toBeVisible() | ||
| await scene.settled() |
Contributor
Author
There was a problem hiding this comment.
Drive-by deflake cop-out. The race is with navigation which I'll be addressing very soon.
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 23:09
8b7a65d to
d553ad9
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 23:27
d553ad9 to
36e5322
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 23:29
36e5322 to
09d5573
Compare
franknoirot
force-pushed
the
codex/file-operations-cutover
branch
from
September 4, 2026 23:37
09d5573 to
565b07e
Compare
franknoirot
commented
Sep 5, 2026
franknoirot
left a comment
Contributor
Author
There was a problem hiding this comment.
I'll do some more self-review on Tuesday.
Comment on lines
+184
to
+186
| public get fileOperations(): FileOperationsRegistryService { | ||
| return this.registry.get(fileOperationsService) | ||
| } |
Contributor
Author
There was a problem hiding this comment.
I think eventually I'd like the whole app to not use helpers like this, but rather just drop functionality if the fileOperations extension is not available. But we have to get basically everything into the registry system for that to work.
franknoirot
marked this pull request as ready for review
September 5, 2026 00:59
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.
Closes #12350 by routing application-facing filesystem reads and mutations through the
FileOperationscoordination service introduced in #13628. This is the one-step production cutover: production application code no longer calls its filesystem-operation methods directly, which is why the PR's so many files (sorry!). In the next PR in the stack we introduce a pair of ESLint rules so that no new calls can ever be reintroduced.FileOperationsat registry-aware composition roots and passes it explicitly into registry-agnostic modules such asdesktop.ts; those modules do not reach into the registry themselves.fsZdsI/O lint rule across productionsrcand keeps the lower-levelFileSystemadapter inaccessible to application consumers.This does not delete
systemIOActor: it still owns workflow concerns such as navigation and editor/project state. It does makeFileOperationsthe single application-facing filesystem boundary, so removing those remaining workflow responsibilities can happen independently.How to test
This is an important one to test! This is where the rubber hits the road. Exercise project and file workflows on both desktop and web: create, rename, move, duplicate, publish, and delete projects; create/edit/move/delete nested files and directories; export a project or screenshot; restart and confirm settings/keybindings persist. Behavior should remain unchanged while overlapping operations are coordinated by the shared service.