Repository navigation
Conversation
fd28b30 to
5e79aeb
Compare
5e79aeb to
06a02a1
Compare
Adds the workflow plugin's library and single graph editor: target-bound catalog paging/search with invalid-entry repair, Agent/End authoring with a Route list and inspector, protected-value preserving canonical read/save/export/import, structured validation problems, and bounded local drafts with a navigation guard. Generic host facilities (page-link state, draft storage, navigation guard, discovery/design interfaces) are verified through the plugin fixture. Refs #25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Distinct ID-collision conflicts with unused clone IDs, recoverable new drafts listed in the library, cached skill discovery while authoring, bounded draft storage, environment-keyed retained catalogs, redacted search, validation-unavailable and missing-draft states, and lazy workflow pages. Refs #25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Flush pending drafts on pagehide, label failed or unsupported plugin catalogs instead of reconnecting forever, write drafts before evicting, retry failed page chunks, and avoid clone IDs taken by invalid files. Refs #25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tailwind's scanner does not expand a wildcard directory after ../, so the plugin-* @source matched nothing and plugin-only utilities such as the workflow editor's desktop grid were never generated. List each compiled plugin package explicitly. Refs #25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Treat unknown plugin support during reconnect as reconciling, explain a missing page by connection state before blaming the client build, and keep draft index writes within the same bounded eviction path. Refs #25 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The maintainer rejected the first editor after seeing it in a browser: the flow was a numbered list padded with prose, and the pages did not look like part of T3 Code. Workflow pages now use the host's page header, breadcrumb, card groups, menus and empty states. Plugin navigation renders as native sidebar icon buttons and opens in the current project. The editor shows the workflow as a React Flow graph (dagre layout) with labelled route edges, repeat back edges and dashed At-limit edges, alongside compact Routes and YAML views. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Lay the graph out only when its structure changes, match plugin navigation on route params, keep project load errors retryable, and keep the editor title readable at narrow widths. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main's no-outset-state-indicators rule rejects rings an ancestor can clip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Browser pass fixes: the graph fits on load and after edits, panels become sheets below 1280px, the unsaved guard and new-workflow forms are dialogs, schema errors land on their fields, steps can be removed from the inspector, loops route around boxes, truncated labels get tooltips, and problems name steps instead of ids. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n one step Lanes follow definition order, selecting a group highlights only the group, reviewer boxes carry their own problem counts, the parallel subtitle fits, and breadcrumb focus rings get room around the text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…only overlays Refit only when steps change or the canvas resizes, let edge-label tooltips open, always offer title tooltips, clear a stale import error when the dialog closes, and stub overlays in the integration test instead of rendering them in place in product code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1b77c2a to
0c795d7
Compare
|
UI evidence for #25, captured by the primary agent in the native T3 Browser against isolated development state. Before: origin/main After: the workflow library on the proposed authoring layer. Native still captures are 640×400. Pending Save verification ( iglo-pr30-save-freeze-4450d43e9b.mp4Delayed Reload verification ( iglo-pr30-reload-guard-9a920ce2a4.mp4These are local proposed-head checks; they do not claim remote/tunnel coverage or approval of the current remote head. Temporary browser instrumentation was removed and the primary agent’s fixtures were deleted. Independent review confirmed the product race fixes; the remaining authoring walkthrough test-fixture correction is in progress. Primary verification and evidence upload: GPT-6.1-Sol, Codex harness in T3 Code. |


Closes #25 · Parent spec #3 · Stack layer 1/5 (base:
main)Problem
Workflows had a durable backend and plugin host but no client: no way to find, author, save, repair, or exchange workflow definitions from T3 Code.
Maintainer redesign (after browser review)
The maintainer reviewed the first version in a browser and rejected it. The flow was a numbered list padded with explanatory prose instead of a graph, and none of the pages looked like part of T3 Code. Commits
4133b84ffdanda0ee50612eredo the UI (1378313b15/fd28b30446before the rebase):@xyflow/react) with a top-to-bottom dagre layout. Steps are nodes, and every route is a labelled edge. A repeat route is a backward edge labelledrepeat ×N, and its At-limit destination is a dashedat limitedge. Parallel reviewers are sibling nodes between the fork and the join. A route to a missing step points at a dashed "missing" card. The graph lays out again only when the structure changes, not on every keystroke, and it refits when the canvas is resized. It is lazy-loaded with the editor page.Graph | Routes | YAMLswitch keeps the keyboard Route list and the canonical YAML available.[project ▾] / Workflows / {title}, one primary action and a…menu. The library uses settings-style card rows, and empty and error states use the app's components. Explanatory prose was removed.PageHeader/breadcrumb,ListGroup/ListRow,Menu,SegmentedControl,Alert,Empty,Icon, a fixed host icon set for navigation and actions, and therowbutton size.What this adds
Validation
Rebased onto
main(55df74e33b) on 2026-10-10.5e79aeb23aaddsscrollbar-gutter-bothto the centered plugin scrollers, whichmain's newrequire-centered-scroll-gutterlint rule requires. After the rebase,vp fmt --check,vp run lint, thet3...typecheck, the CI smoke tests andvp run --filter t3 buildall pass. Theplugin-workflowsandapps/web/src/pluginsunit tests pass 40/40. FiveWorkflowsMissingReportTimetests (expected 'running' to be 'launching') also fail on plainmain, so this PR doesn't cause them.Earlier runs (before the rebase):
WorkflowsAuthoring,WorkflowsAuthoringDiscovery,WorkflowsAuthoringRedaction,WorkflowsCatalog*,Workflows,WorkflowsValidation, … — all pass.WorkflowAuthoring.integration.test.tsxand fixturePluginPage.integration.test.tsx.plugin-workflows/src/web+apps/web/src/plugins22/22 after the redesign (includesflowGraph.test.ts); earlierapps/web/src/plugins13/13,plugin-host-adapter12/12.Independent review
Rounds 6–7 reviewed the redesign. Round 6 approved
1378313b15with four minor findings:decodeURIComponentcrash on malformed URLs;All four were fixed. Round 7 then gave APPROVED
fd28b304466fbd44771863a9295f53c8629606b7. The approved code is unchanged, nowa0ee50612eafter the rebase ontomain, plus the lint-only commit5e79aeb23a. One nit remains: a mouse focus on a step at the canvas edge also pans to it.Rounds 1–5 by a separate Claude Opus 5.5 reviewer: All BLOCKER/MAJOR findings were fixed: duplicate-ID dead end, unrecoverable new drafts, fresh provider refresh while typing, plugin Tailwind classes not compiled, and stale status labels. Those rounds approved
d80dcd1153(pre-redesign). Two non-material NITs remain (draft-index rollback edge case; wording of the "plugin missing from catalog" message).UI evidence (real browser, isolated dev state)
The redesign was checked in a real browser (agent-browser, isolated dev server) on the library, the editor graph, step selection, the narrow 390 px layout, dark mode and the sidebar entry from a thread. Before/after screenshots are being attached separately.
Earlier pass:
Verified in the T3 Browser panel against an isolated dev server and a scratch project:
.t3code/workflows/browser-check-flow.yamlThe pass found the desktop three-column layout collapsing. Cause: Tailwind
@sourceglobs don't expand plugin packages. Fixed in f02a23f and confirmed by compiling the CSS: the rule is emitted, 19 plugin files are scanned. Screenshots are being attached separately. The post-fix desktop screenshot is still pending because the preview host was unavailable.Limitations
@sourceline inapps/web/src/index.css.Implemented by Claude Opus 5.5 implementation agents and reviewed by an independent Claude Opus 5.5 agent (gilfoyle), orchestrated in Claude Code running in T3 Code.
🤖 Generated with Claude Code