Skip to content

feat: add local dashboard development flow - #197

Open
userAugustos wants to merge 12 commits into
mainfrom
feat/local-dev-flow
Open

userAugustos wants to merge 12 commits into
mainfrom
feat/local-dev-flow

Conversation

@userAugustos

@userAugustos userAugustos commented Sep 24, 2026 •

Copy link
Copy Markdown

Summary

  • add bun run canyonos:dev: builds the Core, API and web images from this checkout (canyonos-*:dev), creates packages/cli/.env if missing, runs uv sync, and opens a shell where canyonos is the workspace CLI using those images
  • add bun run dashboard:dev (scripts/dashboard-dev.ts): local Postgres/Mailpit through Compose, then the API and Vite in watch mode with local defaults (fixed-code auth, no deploy worker, workflow Redis on 127.0.0.1:6379); shell variables override them
  • document the CLI-to-host-dashboard development flow and its local quirks in DEV.md, linked from docs/CONTRIBUTING.md
  • canyonos -v prints the environment name (development/test) outside production; production output is unchanged

The earlier zero-GPU omission in the resource picker is gone: #198 made Core accept gpu: 0, so the picker's default is valid as written.

Test

  • bun run check
  • bun run test (CLI: 282 passed)
  • uv run pytest packages/cli/tests (282 passed)
  • before the merge with main: public canyonos deploy --serve false against the LLM-free Epigenomics workflow; request completed and the host dev API stored 15 spans across all six agent operations

Review Focus

  • canyonos:dev / dashboard:dev environment defaults and caller overrides

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 47 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: e64991b7-d144-4916-84ad-12b78bbdf1b2

📥 Commits

Reviewing files that changed from the base of the PR and between 4dc19b8 and ac46f39.

📒 Files selected for processing (11)
  • DEV.md
  • docs/CONTRIBUTING.md
  • package.json
  • packages/cli/.env.example
  • packages/cli/DEVELOPMENT.md
  • packages/cli/canyonos/init.py
  • packages/cli/cli.py
  • packages/cli/tests/test_cli_entry.py
  • scripts/canyonos-dev.ts
  • scripts/dashboard-dev.ts
  • turbo.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

userAugustos and others added 10 commits September 24, 2026 17:41
Builds the core, api and web :dev images, syncs the workspace venv, and opens a shell where `canyonos` is this checkout's CLI. The host hot-reload dashboard moves to `bun run dashboard:dev`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Resolve packages/cli/canyonos/resources.py and its tests to main's side.
#198 made Core accept `gpu: 0` (manifest schema `_integer(..., 0)`, the
deploy command's `_load_config`, and both runtimes already treat a falsy
gpu as "no GPU"), so this branch's `_omit_zero_gpu` workaround and its
tests are obsolete and are dropped with the merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
The hint still named canyonos_core/Dockerfile with the repo root as context, which no longer exists; the image is built by bun run canyonos:dev.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
The one-liner relied on POSIX ${VAR:-default} expansion, which Bun's own shell (bun run --shell=bun, the default on Windows) passes through literally, so the API got APP_ENV='${APP_ENV:-development}' and refused to start. The script applies the same defaults with the same empty-means-unset rule, next to canyonos:dev and canyonos:smoke.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
SHELL= made Bun.spawn fail on an empty executable name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
- dashboard:dev still reads .docker/.env when present (Compose loads the project directory's .env); it only does not require it.
- Its defaults override packages/api/.env and packages/web/.env, not just yield to the shell.
- The config lives at config/global_controller.yaml in a project without .car, e.g. examples/portfolio.
- A non-default workflow redis_port needs CANYONOS_REDIS_PORT.
- Link DEV.md and docs/CONTRIBUTING.md to each other instead of repeating setup.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
docs/ is built by MkDocs in strict mode (#217), where a relative link to a
file outside docs/ fails the build. Same form as the other out-of-tree links
in this file.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017CiY8b3FNgfXCPQLR4PtdV
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants