From 97593593f295839af00902214cdbdc0777cc2131 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Sun, 12 Jul 2026 22:24:37 +0200 Subject: [PATCH] docs(work): close walking-skeleton story 09 (editor package) --- docs/work/_system/_state.json | 11 +++-------- .../walking-skeleton/09-editor-package/_story.md | 11 +++++++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/docs/work/_system/_state.json b/docs/work/_system/_state.json index dbc68a1..41952e3 100644 --- a/docs/work/_system/_state.json +++ b/docs/work/_system/_state.json @@ -1,5 +1,5 @@ { - "updated_at": "2026-07-12T19:47:48.805Z", + "updated_at": "2026-07-12T20:24:38.709Z", "epics": { "platform-retrofit": { "status": "done", @@ -201,10 +201,10 @@ ] }, "09-editor-package": { - "status": "todo", + "status": "done", "title": "editor package — React Flow board, iframe frame node, canvas-protocol client", "ac_total": 3, - "ac_completed": 0, + "ac_completed": 3, "depends_on": [ "02-core-runner-protocol" ], @@ -251,11 +251,6 @@ "story": "07-runner-lifecycle-events-and-realtime", "title": "runner lifecycle — status events, scan event, realtime channel" }, - { - "epic": "walking-skeleton", - "story": "09-editor-package", - "title": "editor package — React Flow board, iframe frame node, canvas-protocol client" - }, { "epic": "walking-skeleton", "story": "10-web-next-wiring", diff --git a/docs/work/epics/walking-skeleton/09-editor-package/_story.md b/docs/work/epics/walking-skeleton/09-editor-package/_story.md index 3aded02..4f512a1 100644 --- a/docs/work/epics/walking-skeleton/09-editor-package/_story.md +++ b/docs/work/epics/walking-skeleton/09-editor-package/_story.md @@ -3,11 +3,12 @@ id: 09-editor-package epic: walking-skeleton title: editor package — React Flow board, iframe frame node, canvas-protocol client type: technical-story -status: todo +status: done feature: editor depends-on: [02-core-runner-protocol] blocks: [10-web-next-wiring] created: 2026-07-12T10:24:14Z +updated: 2026-07-12T20:24:38.419Z --- ## Goal @@ -44,6 +45,8 @@ The editor ↔ iframe canvas seam across the origin boundary is the third risk t ## Tasks -- [ ] Scaffold `packages/editor` (`@repo/editor`) as a green package shell using `pnpm turbo gen core-package` output as the baseline shape (adapted for a non-core package): tsconfig `rootDir: "."`, vitest config with `@` alias, conformance ESLint rules active; React 19; React Flow + zustand wired against the pre-approved `platform-retrofit` traces. -- [ ] Add the canvas-protocol client (pinned `targetOrigin` both directions; `runtime.ready`, geometry reports, click-target selection round-trip) unit-tested against a scripted agent double + the minimal zustand store holding registry + selection only. -- [ ] Add the React Flow board shell + one iframe frame node hosting the adapter origin + editor-side selection overlay rendered from agent-reported geometry; the frame renders a single Element (discovered component, default props) requested via `render-frame`; pan/zoom stays editor-side (< 16 ms/frame, no protocol round-trip on drag); stories + component tests for board/frame/overlay. +- [x] Scaffold `packages/editor` (`@repo/editor`) as a green package shell using `pnpm turbo gen core-package` output as the baseline shape (adapted for a non-core package): tsconfig `rootDir: "."`, vitest config with `@` alias, conformance ESLint rules active; React 19; React Flow + zustand wired against the pre-approved `platform-retrofit` traces. +- [x] Add the canvas-protocol client (pinned `targetOrigin` both directions; `runtime.ready`, geometry reports, click-target selection round-trip) unit-tested against a scripted agent double + the minimal zustand store holding registry + selection only. +- [x] Add the React Flow board shell + one iframe frame node hosting the adapter origin + editor-side selection overlay rendered from agent-reported geometry; the frame renders a single Element (discovered component, default props) requested via `render-frame`; pan/zoom stays editor-side (< 16 ms/frame, no protocol round-trip on drag); stories + component tests for board/frame/overlay. + +_Landed: c42eca5 + c2f56ac + 9495023, reviewer-approved on all nine checks — targetOrigin pinned both directions with constructor validation, empty-useCases manifest verified legitimate against all four conformance rules, zero protocol traffic on pan/zoom proven by real postMessage spies. 70 tests, ~99% coverage._