Skip to content

chore: re-monorepo — move @vzn/run code under packages/run/#25

Merged
Exelord merged 2 commits into
mainfrom
claude/monorepo-carve-out
May 12, 2026
Merged

chore: re-monorepo — move @vzn/run code under packages/run/#25
Exelord merged 2 commits into
mainfrom
claude/monorepo-carve-out

Conversation

@Exelord
Copy link
Copy Markdown
Member

@Exelord Exelord commented May 12, 2026

Sets up the layout for @vzn/dashboard to live alongside @vzn/run as a separate package with its own build step (Vite + Solid + Tailwind landing in PR #26).

Changes

  • Root package.json is now a Bun workspaces manifest ("workspaces": ["packages/*"]) holding the shared dev tooling (oxlint, oxfmt, @types/bun).
  • packages/run/ owns the CLI / cache / orchestrator code, its own package.json, and its own tsconfig.json. All src/* moved verbatim — no code changes.
  • CI Test step runs bun test packages/*/src/ from the workspace root. Format + lint already run from root and cover every package.

Pivot context

In chat I confirmed:

  • Two packages: @vzn/run (CLI/cache) + @vzn/dashboard (analytics UI).
  • Dashboard stack: Vite + Solid.js + Tailwind.
  • CLI: vzn dashboard subcommand goes away. @vzn/dashboard ships its own bin. vzn run learns to point at VZN_DASHBOARD_URL if set.

This PR is the pure relocation step — zero behavior changes, 265/265 tests pass. The current src/dashboard.ts server and src/dashboard-ui/ static bundle stay in packages/run/ for now; PR #26 extracts them and rebuilds the UI as Solid components with Tailwind.


Generated by Claude Code

claude added 2 commits May 12, 2026 06:39
Bun-workspaces monorepo root. Sets up the layout for @vzn/dashboard
to live alongside @vzn/run as a separate package with its own build
step (Vite + Solid + Tailwind landing in PR #26).

Changes:
  - Root package.json is now a workspace manifest (\`workspaces:
    ["packages/*"]\`) holding shared dev deps (oxlint, oxfmt,
    @types/bun).
  - packages/run/ owns the CLI / cache / orchestrator code and its
    own package.json + tsconfig.json. All src/* moved verbatim.
  - CI Test step runs \`bun test packages/*/src/\` from the workspace
    root.
  - oxlint + oxfmt run from the root and cover every package.

Pure relocation: zero behavior changes, 265/265 tests pass.

Dashboard pivot context (decided in chat):
  - The current src/dashboard.ts server + src/dashboard-ui/ static
    bundle stay where they are for now (in packages/run/). PR #26
    extracts them into @vzn/dashboard, drops the \`vzn dashboard\`
    subcommand, and rebuilds the UI in Solid + Tailwind with a real
    component model.
Switching from "two packages" to "packages/ + apps/" convention
after re-checking direction with user: dashboard is an app
(consumes @vzn/run) rather than a published lib.

Workspace + CI Test step + root `test` script all glob both dirs;
CLAUDE.md updated to match.
@Exelord Exelord merged commit 25d697c into main May 12, 2026
1 check passed
Exelord pushed a commit that referenced this pull request May 16, 2026
We re-monorepo'd in 2026-05 (PR #25) only to host the dashboard UI's
Vite build alongside the runner; once the dashboard was deleted the
monorepo lost its reason to exist and we flattened back. This doc
audits the current shape, looks at four restructuring options, and
recommends staying flat — the seven src/ subdirs already form a clean
DAG and per-file module docs cover discoverability.

Concrete follow-ups proposed (not done here): codify the boundaries
as an oxlint no-restricted-imports rule (the code already respects
every edge), delete the untracked apps/ + packages/ debris dirs, and
note the decision in CLAUDE.md so the next agent doesn't re-litigate.
Exelord pushed a commit that referenced this pull request May 17, 2026
We re-monorepo'd in 2026-05 (PR #25) only to host the dashboard UI's
Vite build alongside the runner; once the dashboard was deleted the
monorepo lost its reason to exist and we flattened back. This doc
audits the current shape, looks at four restructuring options, and
recommends staying flat — the seven src/ subdirs already form a clean
DAG and per-file module docs cover discoverability.

Concrete follow-ups proposed (not done here): codify the boundaries
as an oxlint no-restricted-imports rule (the code already respects
every edge), delete the untracked apps/ + packages/ debris dirs, and
note the decision in CLAUDE.md so the next agent doesn't re-litigate.
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.

2 participants