aboutsummaryrefslogtreecommitdiffstats
path: root/docs/cli-design.md (follow)
Commit message (Collapse)AuthorAge
* docs(cli): record the fork gap the design turned upuser2026-08-12
| | | | | | Runtime new-tab dropped purposes until 5873374; the design depends on it, so the dependency is written down rather than assumed. Also notes the single-line KDL terminator trap, which cost a debugging round.
* docs: agree the sl0ppi CLI designuser2026-08-12
One root dir = one sl0ppij session, one project = one tab, panes from the project's .sl0ppi/layout.kdl fragment. Verified against the fork before designing on top of it, rather than assuming: - `action new-tab --layout|--layout-string --name --cwd` exists and returns the new tab id - `tab name= purpose=` is reported by `action list-tabs --json` - purposes accept [A-Za-z0-9_.:/-] up to 64 chars, so "project:foo.a1b2c3" survives the sanitiser verbatim - layout-declared purposes outrank in-band ones and survive resurrection, so tab identity cannot be spoofed from inside a pane and is stable across a session restart - `start_suspended` exists, which is what keeps `up` on a twelve-project root from becoming twelve running servers Load-bearing property: `up` diffs discovered projects against list-tabs and creates only what is missing, so running it repeatedly is a no-op. First thing the tests will assert. Entry point fails open: any error warns and execs plain sl0ppij with the original args. Today's incident is the argument -- when the environment breaks, the terminal is what you debug it with, so the orchestrator must never stand between the user and their multiplexer. Also records two problems found while designing: tab overflow (twelve projects vs a status bar showing ~six, so `open` wants to be a picker) and that the shipped `pir` needs python3 + fzf, neither of which is in the tarball.