v0.12.0
Fixes
codori service restart failed before doing any work when run from a normal home directory:
EPERM: operation not permitted, scandir '/Users/you/.Trash'
Root detection fell through to a recursive scan of the current directory, and one macOS TCC-protected directory aborted the whole command. The scan was also unbounded: measured on a real home directory it read 462,191 directories in about 94 seconds just to propose a default root.
restart,start,stop,status, anduninstallnow resolve their target from the recorded install under~/.codori/services/<installId>/service.json. They work from any directory and no longer scan the filesystem. Pass--rootonly when several services are registered; Codori lists the candidates instead of guessing.- A stale
~/.codori/last-root.jsonno longer causes a spuriousSERVICE_NOT_INSTALLEDwhen exactly one install exists. - Directory scanning skips unavailable directories (
EPERM,EACCES,ENOENT,ENOTDIR) but still surfaces real I/O failures, so the project inventory cannot silently come back partial or empty. - Fixed test isolation that let the suite overwrite the developer's real
~/.codori/last-root.jsonwith a fixture path, which could leave a registered service serving a directory that does not exist.
Breaking changes
The CLI now has two jobs: run the server, and manage the background service. These commands read and mutated local runtime state instead of talking to the running server, so the CLI could start a workspace the server did not know it owned:
codori listcodori statuscodori start <projectId>codori stop <projectId>--json(only these commands emitted JSON)
The dashboard already performs the same operations over the HTTP API. Each removed invocation now exits with a specific reason naming the replacement rather than printing generic help. For machine-readable output, query the server directly:
curl http://127.0.0.1:4310/api/projects
curl -X POST http://127.0.0.1:4310/api/projects/<projectId>/start
curl -X POST http://127.0.0.1:4310/api/projects/<projectId>/stopcodori start, codori serve, and every codori service <verb> are unchanged.