Skip to content

Development

comfuture edited this page Aug 10, 2026 · 1 revision

Development

Workspace checks

pnpm lint
pnpm typecheck
pnpm test

Development servers

Run the client UI in development:

pnpm --filter @codori/client dev

Run the immersive WebXR UI in development:

pnpm dev:webxr

The production WebXR build uses /xr/ as its asset base.

Run the client alone against a remote Codori server:

CODORI_SERVER_BASE=https://my-codori-host.your-tailnet.ts.net \
CODORI_SERVER_WS_BASE=wss://my-codori-host.your-tailnet.ts.net \
pnpm --filter @codori/client dev

Run a local Codori server with the freshly built dashboard and WebXR bundles:

pnpm run:local

This rebuilds the dashboard, WebXR application, and server first, then serves Codori on http://127.0.0.1:4310 with the repository parent directory as the project root. The dashboard is available at / and the immersive entry at /xr/.

Build the workspace:

pnpm build

Protocol bindings

Regenerate the app-server protocol bindings with the Codex version pinned by the server package:

pnpm generate:codex-types

The script includes experimental protocol bindings because Codori uses collaborationMode/list.

Monorepo structure

This repository is a pnpm workspace with four published packages:

  • @codori/cli: the installable codori command, a thin launcher over @codori/server
  • @codori/server: project discovery, runtime management, CLI, REST API, WebSocket proxy, and bundled static UI serving
  • @codori/client: Nuxt + Nuxt UI dashboard for project browsing and Codex chat
  • @codori/webxr: Vite + Three.js immersive workspace served under /xr/

@codori/server owns all CLI behavior and output. The @codori/cli package only provides the binary, so the installed command and npx @codori/server cannot drift apart. @codori/server still ships its own codori-server binary, which is what npx @codori/server runs.

See docs/prd.md for the detailed product specification.

Release

Codori publishes @codori/client, @codori/webxr, @codori/server, and @codori/cli from GitHub Actions when a GitHub release is published.

Trusted publishing setup is required once per package on npm:

  1. Open the npm package settings for @codori/client.
  2. Add a Trusted Publisher for GitHub Actions.
  3. Set the GitHub owner to comfuture, repository to codori, and workflow filename to publish-release.yml.
  4. Repeat the same setup for @codori/webxr, @codori/server, and @codori/cli.

The workflow uses npm trusted publishing with GitHub OIDC, so no long-lived npm automation token is required once that relationship is configured.

Release flow:

  1. Bump the workspace and package versions together.
  2. Push the commit to GitHub.
  3. Create and publish a GitHub release with the matching tag, for example v0.0.5.
  4. GitHub Actions runs .github/workflows/publish-release.yml and publishes all four npm packages.

The release workflow checks that the Git tag matches the workspace version and skips packages that were already published, so rerunning the workflow is safe after partial failures. codori is packed last because it depends on @codori/server at the same version.

Clone this wiki locally