feat(pi-atelier): ship Status Rail defaults, cp'd not symlinked
Adds pi-atelier.json (defaults for the pi-atelier extension) and an install/uninstall step for it, so the config survives a devbox volume wipe and applies to pi on the host too — ~/.pi/agent is a named volume in a container, which the extension's own config path alone does not outlive. cp-if-absent rather than a symlink, unlike keybindings.json/AGENTS.md: the extension rewrites this exact path when the user saves from its menu (src/config.ts writeJsonAtomic -> "<path>.<pid>.tmp" then rename). rename(2) REPLACES a symlink with a regular file instead of following it, so a link would detach on the first menu save and the repo copy would quietly stop applying. Verified empirically before choosing the idiom, not assumed. Drift is respected in both directions, matching the pi-env.zsh shape: install never clobbers an existing file (warns + prints a diff hint), uninstall removes it only while its content still matches the repo. All five paths exercised against an isolated HOME: fresh copy, idempotent re-run, drift-preserved install, drift-preserved uninstall, matched-content uninstall. Values chosen for this setup and validated against the extension's own validateConfig (no warnings, no coercion): - segments drop "brand" (decoration, and first in the drop order anyway) - density compact — the rail relayouts at 132/96/72/56 cols and these sessions run over plain SSH at unknown width - contextWarning/Danger 60/85, earlier than the 70/90 default because defaultModel is opus-5 at xhigh thinking with obsmem compaction behind it - showSidebarToolNames true — MCP/tool-heavy sessions, names beat "something is running" - completionNotifications false — deliverSystemNotification only spawns for darwin/win32 and returns undefined on linux, and a container has no desktop session to reach anyway Docs: file inventory + install/uninstall tables in README.md and AGENTS.md, including why the symlink idiom does not apply here.
This commit is contained in:
@@ -19,6 +19,7 @@ This file is for agents modifying the repo.
|
||||
install.sh # Idempotent installer (symlink + cp + probes)
|
||||
pi-env.zsh # Shell loader sourcing ~/.config/pi/.env (POSIX-compatible)
|
||||
keybindings.json # ~/.pi/agent/keybindings.json — mosh/tmux newline fix
|
||||
pi-atelier.json # ~/.pi/agent/pi-atelier.json (cp) — Status Rail defaults
|
||||
pi-global-AGENTS.md # ~/.pi/agent/AGENTS.md (symlink) — global agent instructions
|
||||
settings.example.json # Template for ~/.pi/agent/settings.json (copy + edit)
|
||||
README.md # User-facing quickstart + new-machine deploy recipe.
|
||||
@@ -37,6 +38,14 @@ LICENSE # MIT.
|
||||
typically part of a dotfiles backup (e.g. `myconfigs`'s
|
||||
`rsync_copy.sh`); a symlink into this repo's absolute path breaks
|
||||
when the backup is restored on another host.
|
||||
- `pi-atelier.json` → `cp` **if absent**. The pi-atelier extension
|
||||
rewrites this exact path when the user saves from its menu, using
|
||||
write-temp-then-`rename`. `rename(2)` replaces a symlink with a
|
||||
regular file instead of following it, so a symlink would detach
|
||||
silently on the first menu save and the repo copy would quietly stop
|
||||
applying. Verified, not assumed. Drift is respected in both
|
||||
directions: install won't clobber an existing file, uninstall only
|
||||
removes one whose content still matches the repo.
|
||||
- `settings.example.json` → **not installed**. pi rewrites
|
||||
`~/.pi/agent/settings.json` at runtime (`lastChangelogVersion` bumps
|
||||
on upgrade), so any symlink back to the repo would dirty the
|
||||
|
||||
Reference in New Issue
Block a user