diff --git a/README.md b/README.md index c922395..f0340e0 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ npm test # unit tests (node:test + tsx) ## Configure -Per-key settings: base URL (default `http://localhost:9292`), optional API key, and the model / GPU / metric to watch. The model and GPU dropdowns are populated live from the instance. +Per-key settings: base URL (default `http://localhost:9292`), optional API key, and the model / GPU / metric to watch. The model and GPU dropdowns are populated live from the instance. Each action instance is independent, so you can place several In-Flight Monitor keys (one per model) and several GPU Graph keys (one per GPU × metric) on the same profile. All keys share a single connection to the configured llama-swap instance, which is re-established automatically if you change the base URL or API key on any key. ## Marketplace diff --git a/docs/superpowers/plans/2026-08-14-llama-watch.md b/docs/superpowers/plans/2026-08-14-llama-watch.md index 037d986..b3ec159 100644 --- a/docs/superpowers/plans/2026-08-14-llama-watch.md +++ b/docs/superpowers/plans/2026-08-14-llama-watch.md @@ -1804,6 +1804,8 @@ export class GpuGraph extends SingletonAction { - [ ] **Step 3: Verify it typechecks** +> **Post-implementation note (approved final-review fix):** the final shipped actions key all per-key state on `ev.action.id` in a `Map` (per `stateFor(action)`), because a `SingletonAction` instance is shared by every key of that UUID — the instance-field version above clobbered state across multiple keys. See commit `ccbf74c`. The runtime's `ensureConnections` also rebuilds the shared feed/poller when a key's base URL or API key changes. The logic described here (states, pulse lifecycle, render-on-change, press-to-open) is unchanged; only state ownership moved from instance fields to per-key Map entries. + Run: `npm run build` Expected: build succeeds.