Repository navigation
feat(cloud-folder): a cloud folder in the container, host mode (cloud-folder 1.0.0, devcontainer-cli 1.12.0) - #82
Merged
Conversation
…-folder 1.0.0, devcontainer-cli 1.12.0) cloud-folder-feature, step 1 of the decided proposal (docs/proposals/cloud-folder.md, ADR 0031): - New Feature cloud-folder 1.0.0: host mode; mountPoint is linked at build time to the launcher's fixed mount /mnt/cloud-folder-host; cloud-folder:status fails when the folder is missing, not mounted or unwritable. - devcontainer-cli 1.12.0: the launcher (bash and PowerShell) bind-mounts DCF_HOST_CLOUD_FOLDER at /mnt/cloud-folder-host when set; the bootstrap template maps it in containerEnv. - Registered in the README, CI matrices and the global test (17 Features). - Records: the proposal, ADR 0031, backlog and ledger since #80. Co-Authored-By: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid> Signed-off-by: devhost agent <devhost-agent@noreply.invalid>
6 of 8 tasks
nabil-becker
added a commit
that referenced
this pull request
Oct 27, 2026
## What Step 2 of the cloud-folder Feature (`cloud-folder-feature`): `sync` mode. rclone 1.75.2 pinned and checksum-verified; the Feature's own volume for the rclone config (mode 600) and sync state; `cloud-folder:login`, `cloud-folder:sync` (bisync), a timer started from `postStartCommand`, `status` for sync mode and a `shutdown-check` that refuses a stop while a sync runs or local changes are unsynced. `host` mode installs no rclone. Also corrects ADR 0031 and the proposal (bisync's default keeps both versions of a conflict; `sharepoint` is a choice inside rclone's `onedrive` backend), and the records since #82. ## Why Unprivileged sync is what works on a cluster that refuses FUSE and needs no Windows host. Step 3 (`mount`, `auto`, FUSE on request) follows. ## Checklist New Feature? Follow "Adding a Feature" in [CONTRIBUTING.md](../CONTRIBUTING.md#adding-a-feature) first (CI matrices, `test/_global`, README row). - [x] Every commit is signed off (`Signed-off-by:`, DCO) - automatic after `task repo:setup` - [x] `version` bumped in `src/<id>/devcontainer-feature.json` (semver): 1.1.0 - [x] Downloads remain checksum-verified; nothing unverified is piped into a shell (pinned sha256 for 1.75.2, `SHA256SUMS` for other versions) - [x] `install.sh` is idempotent and does not assume a `remoteUser` - [ ] Tests updated (`test/<id>/test.sh`, `scenarios.json`) and `task test FEATURE=<id>` passes: unit tests pass (83 + 136); the Docker scenarios (`pinned_version`, `host_only`, `sync_local`) have not run (no daemon in the devhost), CI is their first run - [x] `taskfile.yml` present and registered via `installTaskfile` (new Features) - [ ] `task lint` passes: every step passes on tracked files; locally the PowerShell step also scans the git-ignored `material.ignore/` (`psscriptanalyzer-tracked-files`) - [x] `NOTES.md` updated if behaviour or options changed, and `task docs` run so `src/<id>/README.md` is current By hand after the release: a real sign-in, a file each way, and a stop mid-sync. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: devhost agent <devhost-agent@noreply.invalid> Co-authored-by: devhost agent <devhost-agent@noreply.invalid> Co-authored-by: Claude Opus 5.5 <claude-opus-5-5@noreply.invalid>
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
Step 1 of the cloud-folder Feature (
cloud-folder-feature): the newcloud-folderFeature 1.0.0 withhostmode andcloud-folder:status, and devcontainer-cli 1.12.0, whose launcher bind-mountsDCF_HOST_CLOUD_FOLDERat the fixed path/mnt/cloud-folder-host; the Feature links itsmountPointthere at build time, so a consumer sets the path once. Also the proposal (docs/proposals/cloud-folder.md, decided), ADR 0031 and the records since #80.Why
A consuming repository needs one folder in the container for material that must never go in git, without a hand-written host bind mount and, later (
sync,mount), without a Windows host at all. Steps 2 (sync,login) and 3 (mount,auto, FUSE on request) follow.Checklist
New Feature? Follow "Adding a Feature" in CONTRIBUTING.md first (CI matrices,
test/_global, README row).Signed-off-by:, DCO) - automatic aftertask repo:setupversionbumped insrc/<id>/devcontainer-feature.json(semver)install.shis idempotent and does not assume aremoteUsertest/<id>/test.sh,scenarios.json) andtask test FEATURE=<id>passes: updated; the Docker scenarios have not run (no daemon in the devhost), CI is their first runtaskfile.ymlpresent and registered viainstallTaskfile(new Features)task lintpasses: every step passes on the tracked files; locally the PowerShell step also scans the git-ignoredmaterial.ignore/(psscriptanalyzer-tracked-files)NOTES.mdupdated if behaviour or options changed, andtask docsrun sosrc/<id>/README.mdis current🤖 Generated with Claude Code