You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Throwaway volumes so local testing never touches the real per-project state.
9
+
# Passing DEVCUBE_VOLUME explicitly forces this single fixed home volume instead
10
+
# of the wrapper's per-project derivation, keeping local testing predictable.
9
11
test_volume:="hypercube-devcube-test"
10
12
test_wt_prefix:="devcube-wt-test"
11
13
@@ -80,6 +82,11 @@ test-build: build
80
82
# The entrypoint must pin $SHELL to fish so workmux drops new worktrees into
81
83
# fish (its default-shell fallback is /bin/sh otherwise).
82
84
podman run --rm {{local_image}} sh -c '[ "$SHELL" = "$(command -v fish)" ]'
85
+
# Baked config lives at the pristine path, NOT under /root (the home volume),
86
+
# so config updates ship with the image instead of going stale on the volume.
87
+
podman run --rm --entrypoint sh {{local_image}} -c 'for c in nvim fish zellij workmux; do test -d /usr/share/hypercube/config/$c || exit 1; done && ! test -e /root/.config/nvim'
88
+
# ...and the entrypoint syncs it into /root/.config on every start.
89
+
podman run --rm {{local_image}} sh -c 'test -d /root/.config/nvim && test -f /root/.config/fish/config.fish && test -d /root/.config/zellij && test -d /root/.config/workmux'
Copy file name to clipboardExpand all lines: dot_files/devcube/README.md
+14-9Lines changed: 14 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,8 +42,10 @@ Linux desktop, a remote box, and macOS — no distrobox required.
42
42
|`devc codex`| OpenAI Codex CLI, run directly |
43
43
|`devc agy`| Antigravity CLI, run directly |
44
44
45
-
All entry points share one home volume, so an AI login from any of them works in
46
-
all of them.
45
+
Within a project, all entry points share that project's home volume, so an AI
46
+
login from any of them works in all of them. The home volume is **per-project**
47
+
(derived from the launch path), so logins and state never leak between
48
+
workspaces — you log in once per project.
47
49
48
50
### Parallel agents
49
51
@@ -88,17 +90,20 @@ only what's needed. The mounts:
88
90
89
91
| Mounted in | Purpose |
90
92
|---|---|
91
-
|named volume `hypercube-devcube-home` → `/root`| plugin/mason updates, sessions, shada, **and AI-CLI auth** — seeded from the image on first run, persisted after |
93
+
|per-project volume `hypercube-devcube-home-<proj>-<hash>` → `/root`| plugin/mason updates, sessions, shada, **and AI-CLI auth** — seeded from the image on first run, persisted after; one per project so creds never leak between workspaces|
92
94
| current directory | the project you're editing |
|`~/.config/hypercube/nvim`|**your** plugin overrides, layered on top of the baked config |
95
97
|`~/.gitconfig` (ro) | commit identity |
96
98
|`$SSH_AUTH_SOCK` (Linux) | SSH agent for git/gh |
97
99
98
-
Everything else (the LazyVim config, plugins, AI CLIs, zellij/workmux/fish/
99
-
starship config) lives in the image. The container runs as `--user 0:0` so files
100
-
you edit are owned by your host user under rootless podman. Multiple sessions run
101
-
concurrently.
100
+
The AI CLIs and nvim plugins live in the image and seed onto the home volume on
101
+
first run. The **baked config** (LazyVim, zellij, workmux, fish, starship) is
102
+
image-owned: it's stored at a pristine path and synced into `/root/.config` by
103
+
the entrypoint on **every** start, so config updates ship with `podman pull` —
104
+
no volume reset needed (plugin *version* bumps still want `:Lazy update`). The
105
+
container runs as `--user 0:0` so files you edit are owned by your host user
106
+
under rootless podman. Multiple sessions run concurrently.
102
107
103
108
Clipboard uses **OSC 52** through the terminal, so yank/paste works locally
104
109
(Ghostty) and over SSH without forwarding a Wayland/pbcopy socket.
@@ -114,8 +119,8 @@ devc nvim file.rs # ...or just the editor
114
119
| Command | Description |
115
120
|---------|-------------|
116
121
|`ujust devcube-setup`| pull image + install the `devc` wrapper |
117
-
|`ujust devcube-upgrade`| pull the latest image + refresh the wrapper |
118
-
|`ujust devcube-reset`| drop the home volume to re-seed (clears plugin state + AI logins); optionally prune per-project worktree volumes |
122
+
|`ujust devcube-upgrade`| pull the latest image + refresh the wrapper (baked config refreshes itself on next launch) |
123
+
|`ujust devcube-reset`| drop all per-project home volumes to re-seed (clears plugin state + AI logins); optionally prune per-project worktree volumes |
119
124
|`ujust devcube-shell`| debug shell inside a throwaway container |
0 commit comments