Skip to content

feat(workflows): browse, author, and save workflows in one editor - #30

Draft
Igloczek wants to merge 15 commits into
mainfrom
workflows/25-library-editor
Draft

Igloczek wants to merge 15 commits into
mainfrom
workflows/25-library-editor

Conversation

@Igloczek

@Igloczek Igloczek commented Oct 8, 2026 •

Copy link
Copy Markdown

Summary

Workflows had no client library or authoring surface. This adds the environment/project-bound library and one editor for creating, cloning, repairing and saving canonical definitions. Agent and End steps are editable; existing later-ticket nodes retain their meanings and remain read-only at this layer.

Workflows library → palette / flow / inspector + Routes
                 → canonical YAML import/export and staged repair
                 → authorized save with revision/fingerprint checks

Refs #25 and parent #3. Layer 1/5 of #30 → #31 → #34 → #35 → #36, based on origin/main fc7f811de94ed0d65bc56bf3f5e6a4b4449fa5b7. The remaining layers are being restacked and revalidated.

Evidence

  • Before: no workflow library/editor on main.
    After: library, responsive editor, keyboard authoring, canonical YAML and recoverable drafts verified by the primary agent in the native T3 Browser against isolated worktree state. Uploaded before/after images and Save/Reload recordings identify their tested heads; still captures are 640×400.
  • Proposed local head b0e5a7f596c796b3fcb6ac5233ea1af287af69aa: 92 focused tests across five files pass, including 50 editor behavior cases. The complete authenticated WorkflowAuthoring.integration.test.tsx walkthrough passes. Workflow/web package typechecks, changed-file formatting and lint pass (nine existing Editor warnings). The independent background-read reproduction passes unchanged. Earlier focused backend authoring/redaction/catalog checks and prepared server typecheck passed; the core/plugin RPC handler split is preserved.
  • Real client: four viewport widths, light/dark themes, palette/graph/Routes/inspector, validation focus, save/reopen, conflict/compare and keyboard sheets. Pending Save freezes mutation; delayed manual Reload preserves newer edits. Authenticated tailnet HTTPS authoring, hard-reload recovery and reopening passed. Current-head HTTPS reconnect evidence: releasing a real older read response after Save retains the saved revision and empty recovery; the next edit uses the current baseline and saves successfully. Own fixtures and instrumentation were removed.
  • Independent GPT-6-Astra/Gilfoyle R14: APPROVED — b0e5a7f596c796b3fcb6ac5233ea1af287af69aa, with no unresolved material findings. Independently passed 105 tests and all three original race reproductions. Root also approves this head. The remote stack is being updated to the reviewed commit.

The existing generic page integration fixture has a confirmed parent failure at registry/provider setup and is not claimed passing. The current authoring walkthrough is passing. Node 26.8.1 differs from the declared Node 24 engine; Bun 1.4.3 and pnpm 11.10.0 were used. This evidence does not establish T3 Connect relay/tunnel, hosted production builds, cross-device behavior or a live provider run. The canonical schema has no description field; Compare presents two YAML panes.

Merge Danger

Door: two-way

The UI is reversible. Explicit save/repair/delete actions write environment-local workflow files; revision/content checks preserve concurrent edits and failed-request drafts.

Blast Radius: workflows

Includes the required generic host design, discovery, page-state, permission and draft/navigation seams. Contracts and services remain authoritative; core stores and navigation contain no workflow domain branches.

Implementation by Claude Opus 5.5 (Claude Code) and OpenAI GPT-6.1-Sol (Codex); integration, orchestration and primary client verification by GPT-6.1-Sol through Codex in T3 Code. Independent review by GPT-6-Astra through Codex using Gilfoyle; earlier reviews used Claude Opus 5.5 through Claude Code.

@Igloczek
Igloczek added this pull request to stack #32 October 9, 2026 01:02
@Igloczek
Igloczek force-pushed the workflows/25-library-editor branch from fd28b30 to 5e79aeb Compare October 10, 2026 07:16
@Igloczek
Igloczek marked this pull request as ready for review October 10, 2026 13:07
@Igloczek
Igloczek force-pushed the workflows/25-library-editor branch from 5e79aeb to 06a02a1 Compare October 10, 2026 13:17
Igloczek and others added 15 commits October 11, 2026 11:34
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>
@Igloczek
Igloczek force-pushed the workflows/25-library-editor branch from 1b77c2a to 0c795d7 Compare October 11, 2026 10:13
@Igloczek
Igloczek marked this pull request as draft October 11, 2026 12:29
@Igloczek

Copy link
Copy Markdown
Author

UI evidence for #25, captured by the primary agent in the native T3 Browser against isolated development state.

Before: origin/main fc7f811de9, without the Workflows library/editor.

Before: main

After: the workflow library on the proposed authoring layer. Native still captures are 640×400.

After: workflow library

Pending Save verification (4450d43e9b): inputs, palette and keyboard removal stay frozen until the actual backend request settles.

iglo-pr30-save-freeze-4450d43e9b.mp4

Delayed Reload verification (9a920ce2a4): typing remains available; releasing the actual read request preserves the newer displayed and recovered draft. A later unsuperseded Reload succeeds.

iglo-pr30-reload-guard-9a920ce2a4.mp4

These 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.

@Igloczek

Copy link
Copy Markdown
Author

Primary client verification on proposed head b0e5a7f596c796b3fcb6ac5233ea1af287af69aa (#25). Over the authenticated HTTPS connection to isolated development state, I held the real reconnect read response for revision 1, saved revision 2, then released the original unmodified response. The editor retained Saved revision 2, disabled Save, and no false conflict or recovery draft. A subsequent edit recovered against revision 2 and saved as revision 3. The owned fixture and temporary browser instrumentation were removed.

Saved revision 2 after the older reconnect read response

Focused checks: 92 tests across 5 files passed; the full authenticated authoring walkthrough passed; the independent reproduction passed unchanged; workflow/web typechecks and changed-file formatting/lint passed (9 existing Editor warnings). Independent GPT-6-Astra/Gilfoyle R14 review is pending. This is local proposed-head evidence; the remote stack has not yet been updated. It establishes authenticated tailnet HTTPS behavior, without claiming T3 Connect relay/tunnel or hosted production coverage.

Primary verification and upload: GPT-6.1-Sol / Codex harness in T3 Code.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant