|
| 1 | +# Plugin Studio Status |
| 2 | + |
| 3 | +Canonical internal implementation-status note for the current checked-in state of `plugin-studio`. |
| 4 | +Use this file as the source of truth for what is actually shipped in this branch. The public |
| 5 | +[`README.md`](README.md) is ahead of reality in a few places and is owned by issue `#20`. |
| 6 | + |
| 7 | +## Evidence Basis |
| 8 | + |
| 9 | +- Based on the checked-in code under `plugins/plugin-studio/`. |
| 10 | +- Backend reality verified with `node --test api/fs.test.js api/validation.test.js` in `plugins/plugin-studio/server` at the time this note was written. |
| 11 | +- This note describes implementation status, not intended roadmap scope. |
| 12 | + |
| 13 | +## Shipped Today |
| 14 | + |
| 15 | +### Runtime and backend |
| 16 | + |
| 17 | +- Plugin scaffold, manifest, commands, hook config, and launch scripts exist. |
| 18 | +- `scripts/start.sh` enforces `node >= 18` and launches `server/index.js`. |
| 19 | +- `server/index.js` serves `app/dist/`, probes for an available localhost port, writes a PID file, applies localhost-only CORS rules, and opens the browser. |
| 20 | +- `/api/` returns runtime status used by the frontend health poll. |
| 21 | +- `/api/fs/*` is implemented: tree, file read/write/create/delete, rename, and duplicate. |
| 22 | +- `/api/validate/*` is implemented for plugin, hook, agent, and health validation. |
| 23 | +- The validation engine is native to `plugin-studio`; it is not a runtime wrapper around `plugin-dev`. |
| 24 | + |
| 25 | +### Shell chrome that is real |
| 26 | + |
| 27 | +- The React/Vite app shell exists and loads from `app/dist/`. |
| 28 | +- The 4-panel workbench layout is implemented: header, left rail, editor/preview workspace, AI rail, validation rail, and status strip. |
| 29 | +- Tree rail mode cycling, workspace mode switching, command palette modal, toasts, runtime status polling, responsive bounds, resize handles, and layout persistence are implemented. |
| 30 | + |
| 31 | +## Placeholder or Demo-Only Today |
| 32 | + |
| 33 | +- The tree, open tabs, editor content, preview content, validation list, command-palette file results, and AI chat content are all hydrated from `app/src/lib/workbench-demo.ts` via `useWorkbenchDemoState.ts`. |
| 34 | +- The editor pane is `EditorPlaceholder`, not Monaco, and it does not read or write real files. |
| 35 | +- The preview pane is `PreviewPlaceholder`, not a renderer over real active-document content. |
| 36 | +- The validation rail UI is not wired to `/api/validate/*`; `RUN ALL` currently triggers demo toast behavior. |
| 37 | +- The AI rail is present as shell chrome, but its messages are canned local state; there is no `/api/ai/*` backend. |
| 38 | +- The settings affordances are placeholders: the header `SETTINGS` button does not open a real panel, and `--settings` is not implemented end to end. |
| 39 | +- `useServerStatus.ts` is the only frontend code currently calling live backend routes. |
| 40 | + |
| 41 | +## Issue Ownership Map |
| 42 | + |
| 43 | +| Issue | Missing capability owned by the issue | Current reality before that issue lands | |
| 44 | +| --- | --- | --- | |
| 45 | +| `#6` | Real plugin tree wired to `/api/fs/tree`, plus root validity/error states and scale handling | Tree rail UX/chrome is shipped, but `TreePlaceholder` still renders demo groups and demo files | |
| 46 | +| `#7` | Monaco editor plus real file load/save wiring through `/api/fs/file` | Editor surface is `EditorPlaceholder` with static demo lines and fixed cursor text | |
| 47 | +| `#8` | Real preview rendering for the active document | Preview surface is `PreviewPlaceholder` backed by canned preview blocks | |
| 48 | +| `#9` | Validation rail wired to `/api/validate/*`, with running/result states and navigation | Validation backend is shipped, but the rail still uses `DEMO_VALIDATION_ISSUES` | |
| 49 | +| `#10` | Truthful `/plugin-studio:open` behavior, path propagation, pre-flight/failure handling, launch UX | Command docs and launcher exist, but the server always opens the base URL; `[path]` and `--settings` are not wired through to the browser app | |
| 50 | +| `#11` | QA and integration coverage for shell behavior, runtime smoke paths, viewport matrix, and cross-platform checks | Backend unit tests exist and pass; there is no app smoke suite or documented viewport/integration matrix in the plugin | |
| 51 | +| `#12` | Real `/api/ai/*` REST API and request/response contracts | Only provider config preparation exists under `server/lib/ai/`; no AI routes are exposed | |
| 52 | +| `#13` | AI chat UI wired to the backend with pending/error states and editor-apply flow | The AI drawer is shell chrome only; chat replies come from local demo state | |
| 53 | +| `#18` | Multi-provider runtime abstraction and provider execution order | Provider constants/defaults exist, but there is no runtime implementation behind them | |
| 54 | +| `#19` | Real settings UI for provider/runtime configuration and health | `commands/settings.md` exists, but the UI/settings flow is not implemented | |
| 55 | +| `#20` | Public README/docs aligned to shipped reality, with screenshot/mockup and no overclaims | The current README still describes Monaco, live validation wiring, scaffolding, and `plugin-dev` dependency posture ahead of implementation | |
| 56 | + |
| 57 | +## Practical Read of the Current State |
| 58 | + |
| 59 | +- `plugin-studio` has real local runtime infrastructure and real backend foundations. |
| 60 | +- The user-facing workbench chrome is substantially built. |
| 61 | +- Most workbench content is still demo scaffolding until issues `#6`, `#7`, `#8`, `#9`, `#12`, `#13`, `#18`, and `#19` land. |
| 62 | +- Public-facing documentation should not be used as implementation truth until `#20` is complete. |
0 commit comments