Skip to content

Commit b82a6e6

Browse files
committed
docs(showcase): add dashboard update SOPs
1 parent 887e96b commit b82a6e6

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

showcase/README.md

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,47 @@ Column ordering lives in `shell-dashboard/src/lib/sort-order.ts` — internal to
154154
- Dockerfile, `entrypoint.sh`, and build context (`shared_python/`, `shared_typescript/`) are shared between local and Railway.
155155
- `.github/workflows/showcase_deploy.yml` builds each image on push to `main` and pushes it to Railway. Per-PR deploys are opt-in via `gh workflow run showcase_deploy.yml -r <branch> -f service=<slug>`.
156156
- The only real differences at runtime are env var values and the URL. If something works locally in Docker, it works on Railway (and vice versa).
157+
158+
## Updating the Dashboard
159+
160+
The dashboard at [showcase.copilotkit.ai](https://showcase.copilotkit.ai) reads two data sources:
161+
162+
1. **Static `catalog.json`** — generated at build time by `pnpm generate-registry`. Contains the full 38-feature x 17-integration cell matrix with status (`wired` / `stub` / `unshipped`), parity tiers, and feature categories. Changes require a generator run + commit.
163+
2. **Live PocketBase probe results** — streamed via SSE. Probes discover demo routes automatically and update the dashboard in real time. No manual intervention needed for probe data.
164+
165+
Key invariants:
166+
167+
- **Parity tiers are never manually set.** They are computed by comparing each integration's wired feature set against the reference integration's.
168+
- **The reference integration is auto-detected** as the integration with the most wired features (ties broken alphabetically). No `reference: true` flag exists.
169+
- **`catalog.json` is gitignored** — the generator emits it into the shell apps' `src/data/` directories, which are already in `.gitignore`.
170+
- **The `stub` status** means: feature declared in manifest, demo entry exists, but no `route` field. Today only `langgraph-python/cli-start` qualifies.
171+
172+
### SOP 1: Wire a new demo on an existing integration
173+
174+
1. Edit `showcase/packages/<slug>/manifest.yaml` — add the feature to `features[]` and a corresponding `demos[]` entry with a `route`.
175+
2. Run `pnpm generate-registry` — updates `registry.json` AND `catalog.json`. The cell flips from `unshipped` to `wired`. Parity tiers auto-recompute.
176+
3. Commit the manifest + both generated files. PR, merge.
177+
4. CI rebuilds the package image + dashboard image. Railway auto-deploys both.
178+
5. Ops probes discover the new demo route and begin probing. Dashboard updates live via PocketBase SSE — no further action needed.
179+
180+
### SOP 2: Code fix on an existing demo (no manifest change)
181+
182+
1. Edit code under `showcase/packages/<slug>/src/...`.
183+
2. PR, merge. No generator run needed (manifest unchanged).
184+
3. CI rebuilds the package image. Railway auto-deploys.
185+
4. Probes re-probe on the next tick. If the fix turns a red cell green, the dashboard updates live. Zero manual steps beyond the normal PR workflow.
186+
187+
### SOP 3: Add a brand-new integration
188+
189+
1. Create `showcase/packages/<new-slug>/manifest.yaml` with `features[]` + `demos[]`.
190+
2. Add `{"slug": "<new-slug>", "name": "<Display Name>"}` to `showcase/shared/packages.json`.
191+
3. Provision a Railway service (manual: `railway service create` or Dashboard UI).
192+
4. Run `pnpm generate-registry` — catalog gains 38 new cells (mostly `unshipped`, some `wired`). Parity tier computed automatically.
193+
5. Commit, PR, merge. CI + Railway deploy. Probes discover the new service automatically via the Railway discovery filter.
194+
195+
### SOP 4: Reference migration (move the reference integration)
196+
197+
1. No manual flag needed — the generator auto-detects the reference as the integration with the most wired features (ties broken alphabetically).
198+
2. If you want a *different* integration to be reference, wire more features on it until it leads the count.
199+
3. Run `pnpm generate-registry` — all parity tiers recompute automatically.
200+
4. Commit, PR, merge.

0 commit comments

Comments
 (0)