Skip to content

v0.12.0

Choose a tag to compare

@comfuture comfuture released this 03 Aug 08:05

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, and uninstall now 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 --root only when several services are registered; Codori lists the candidates instead of guessing.
  • A stale ~/.codori/last-root.json no longer causes a spurious SERVICE_NOT_INSTALLED when 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.json with 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 list
  • codori status
  • codori 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>/stop

codori start, codori serve, and every codori service <verb> are unchanged.

Closes #116 via #117.