[codex] Add Windows ReFS COW storage support#35
Draft
adamziel wants to merge 2 commits into
Draft
Conversation
Contributor
Author
|
@JanJakes I pushed the Windows click-through setup path and updated the PR description. The new workflow builds/signs the Windows installer, runs packaged install smoke on a Windows runner, and fails tagged Windows releases if signing secrets are missing. |
Contributor
|
Is this one outdated and superseded by #36? |
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.
What it does
Adds the Windows-native COW path and turns it into a click-through setup flow.
On Windows, ForkPress can now use ReFS block cloning through
FSCTL_DUPLICATE_EXTENTS_TO_FILEwhen the site lives on clone-capable ReFS/Dev Drive storage. The release path now buildsForkPressSetup.exe; a fresh Windows user should be able to:ForkPressSetup.exe.The installer creates protected program files under
%ProgramFiles%\ForkPress, creates a protected VHDX at%ProgramData%\ForkPress\Storage\forkpress-dev-drive.vhdx, mounts it at%USERPROFILE%\ForkPressDevDrive, initializes%USERPROFILE%\ForkPressDevDrive\Sites\My ForkPress Site, and creates shortcuts.Refs #34 and #6.
Rationale
The Windows path should not ask people to install WSL, Docker, FUSE, WinFsp, Dokany, or a developer storage stack. ReFS block cloning gives ForkPress ordinary Windows paths while still sharing unchanged file contents across branches.
The storage setup is deliberately fail-closed on Windows: if the project directory cannot block-clone,
forkpress inittells the user to runForkPressSetup.exeinstead of silently creating a huge full-copy site on NTFS.Implementation
FSCTL_DUPLICATE_EXTENTS_TO_FILE, including ReFS alignment/chunk handling and normal copy for the unaligned tail.bin/php.exeplus the Windows PHP DLL tree.php.ini, buildsforkpress.exe, packages a zip, and buildsForkPressSetup.exewith Inno Setup.forkpress.exeplusForkPressSetup.exewhenWINDOWS_CODESIGN_CERT_BASE64andWINDOWS_CODESIGN_PASSWORDare configured.Testing instructions
Local checks run on this branch:
FORKPRESS_RUNTIME_BUNDLE=/dev/null cargo test --workspace FORKPRESS_RUNTIME_BUNDLE=/dev/null cargo check -p forkpress-cli --target x86_64-pc-windows-msvc npx --yes prettier --check .github/workflows/ci.yml .github/workflows/release.yml actionlint .github/workflows/ci.yml .github/workflows/release.yml git diff --checkThe Windows release workflow also smoke-tests the packaged artifact on
windows-latestby extracting the zip, running packagedforkpress.exe --version, running packagedinstall.ps1against a CI ReFS VHDX, confirming an initialized site exists, and runningforkpress storage statusagainst that installed site.Manual release validation should still include one real fresh Windows 11 x64 laptop click-through of the signed
ForkPressSetup.exe, mainly to verify SmartScreen/reboot/shortcut behavior outside GitHub Actions.