Commit Graph

  • 06071c691e fix(editor): JsonTree renders scalar roots so bare-value items are visible main Claude 2026-08-31 11:32:02 +00:00
  • 6615c5f7d0 fix(python): fan out only on JSON-array output, not any IEnumerable Claude 2026-08-31 11:21:55 +00:00
  • e4e55ea01a fix(editor): strip {json, binary} wrapper on Load-from-execution pin Claude 2026-08-31 11:02:34 +00:00
  • 3fa541a032 fix(python): surface Python tracebacks in node error + dialog Output Claude 2026-08-31 10:47:34 +00:00
  • 9c164282a1 fix(editor): auto-save before Run so in-memory edits actually execute Claude 2026-08-31 08:49:09 +00:00
  • dc32b6def9 fix(editor): move bg color from textarea to overlay so highlighted text is visible Claude 2026-08-30 19:47:30 +00:00
  • ac2ccf3b64 docs: plan 6 wrap-up — status, invariants, followups re-numbered Claude 2026-08-30 14:50:49 +00:00
  • 6a820bb7fa test(e2e): smoke covers pinned_output persistence + pin icon Claude 2026-08-30 14:48:20 +00:00
  • afba598821 feat(editor): pin icon on canvas nodes with pinned data Claude 2026-08-30 14:45:29 +00:00
  • f7c038e43e feat(editor): NodeEditorDialog exposes PinnedDataSection per node category Claude 2026-08-30 14:39:20 +00:00
  • 432782aeb1 refactor(editor): PinnedDataSection — useId select, side-aware placeholder, exhaustive-deps docs Claude 2026-08-30 14:37:19 +00:00
  • 3842eca8cd feat(editor): PinnedDataSection — JSON editor + load-from-execution dropdown Claude 2026-08-30 14:32:32 +00:00
  • a8d2cbdab0 feat(editor): round-trip pinned_input and pinned_output through graphAdapter Claude 2026-08-30 14:25:48 +00:00
  • 16a5225ee3 feat(executor): node pinned_input overrides upstream byPort on manual runs Claude 2026-08-30 14:22:01 +00:00
  • e24bdb012b feat(executor): trigger pinned_output overrides triggerItems on manual runs Claude 2026-08-30 14:17:29 +00:00
  • 8a68b13a70 feat(executor): parse pinned_input/pinned_output on WorkflowNode + WrapPin helper Claude 2026-08-30 14:11:03 +00:00
  • 55cf372442 docs(plan): plan 6 — pinned node data implementation plan Claude 2026-08-30 14:06:28 +00:00
  • 8b48dd8bf8 docs(spec): pinned node data (n8n-style pin for manual test runs) Claude 2026-08-30 14:00:27 +00:00
  • 3e838ecf91 docs: plan 5 wrap-up — status, invariants, and re-numbered followups Claude 2026-08-30 11:52:30 +00:00
  • 80ac663989 test(e2e): smoke covers double-click dialog and label persistence Claude 2026-08-30 11:49:42 +00:00
  • 045cdb7b7e feat(editor): double-click opens node editor dialog; remove side panel Claude 2026-08-30 11:46:42 +00:00
  • abc71e481e fix(editor): NodeEditorDialog — correct bracket-form path wrapping + focus trap on open Claude 2026-08-30 11:43:51 +00:00
  • 2649e09da9 feat(editor): NodeEditorDialog — three-column N8N-style modal Claude 2026-08-30 11:36:37 +00:00
  • 1153e56cc5 feat(editor): findLatestIo helper for pulling a node's row out of an ExecutionDetail Claude 2026-08-30 11:30:05 +00:00
  • abf6332855 fix(forms): keep native password input for format:password; drop dead forwardRef Claude 2026-08-30 11:28:39 +00:00
  • df5a34ba33 feat(forms): SchemaForm renders every leaf as ExpressionField Claude 2026-08-30 11:23:21 +00:00
  • 6b0a25b0b0 fix(expr): ExpressionField — direct-DOM scroll sync + align overlay border-box with textarea Claude 2026-08-30 11:21:03 +00:00
  • c502bdef03 feat(expr): ExpressionField with token highlight overlay and live preview Claude 2026-08-30 11:16:57 +00:00
  • 38aa05bc96 refactor(expr): JsonTree — un-pickable trees still expand + drop dead clickable var Claude 2026-08-30 11:13:39 +00:00
  • 6fd517c630 fix(expr): restore visual quotes around string leaves in JsonTree Claude 2026-08-30 11:10:33 +00:00
  • 0afeed8ee7 feat(expr): JsonTree with click-to-emit-path leaves Claude 2026-08-30 11:08:52 +00:00
  • a131dbf198 fix(editor): restore build after toGraph signature change + client/backend numeric parity Claude 2026-08-30 11:06:09 +00:00
  • b1dae49171 feat(editor): coerce literal number/boolean strings to typed JSON on save Claude 2026-08-30 11:01:26 +00:00
  • 85e2339c1d refactor(executor): use action.ConfigSchema directly + dispose transient JsonDocuments Claude 2026-08-30 10:59:01 +00:00
  • 70f556aff5 feat(executor): coerce templated string leaves to schema-declared primitive types Claude 2026-08-30 10:54:26 +00:00
  • 72e31e8ea5 fix(expr): own-property-only lookup and Int32-bound array index in TemplateEngine port Claude 2026-08-30 10:49:14 +00:00
  • 3fde792c53 feat(expr): client-side TemplateEngine port with parity tests Claude 2026-08-30 10:44:28 +00:00
  • 1e5fd42619 docs(plan): plan 5 — node editor dialog implementation plan Claude 2026-08-30 10:41:28 +00:00
  • 744e19e813 docs(spec): node editor dialog (N8N-style, 3-column, expressions) Claude 2026-08-30 10:27:55 +00:00
  • c187300aa4 feat(editor): visible selection border on the selected node Claude 2026-08-30 09:54:50 +00:00
  • 46372e8e38 feat(executor): {input.foo} template interpolation on node config strings Claude 2026-08-29 18:44:03 +00:00
  • bc682d8c9f feat(webhook): GET support — query string → JSON body, HEAD safe no-op Claude 2026-08-29 07:51:27 +00:00
  • a06e9e0e84 feat(connections): Test button — opens the provider round-trip and reports back Claude 2026-08-29 07:41:19 +00:00
  • 1a1f519144 fix(webhook): GET on /wh/* returns 405 helper page instead of SPA fallback Claude 2026-08-28 20:16:07 +00:00
  • 5d04c0a2d4 feat(editor): visible feedback for Test run — status pill + View link Claude 2026-08-28 19:53:34 +00:00
  • c705f58531 feat(editor): show composed webhook URL + Copy button on Webhook nodes Claude 2026-08-28 19:52:38 +00:00
  • 8c2d630af5 fix(editor): Delete/Backspace key removes selected node + orphan edges Claude 2026-08-28 19:51:37 +00:00
  • cd5827cca7 chore: untrack plan-4-kickoff-prompt.md (user's local prompt notes, not repo content) Claude 2026-08-28 19:50:25 +00:00
  • 4b30d4a44e feat(connections): edit connections via PUT — backend + UI + blank-secret merge Claude 2026-08-28 19:50:08 +00:00
  • d12581ad12 docs: fix Plan-4 order — push to origin BEFORE triggering Coolify deploy Claude 2026-08-28 19:20:22 +00:00
  • bbb76b5920 docs: pin Plan-4 close-out head SHA Claude 2026-08-28 19:11:43 +00:00
  • d237cc06e4 docs: close out Plan 4 — live at core.tes.gd, clear Plan-4 follow-ups Claude 2026-08-28 19:11:33 +00:00
  • c41d0f9216 docs: add Plan 4 — Container + Coolify deploy Claude 2026-08-28 19:11:33 +00:00
  • b6943c0e69 chore: gitignore deploy.json before populating Claude 2026-08-28 19:07:03 +00:00
  • d82705d8ab feat(deploy): coolify docker-compose — expose:8080, /data volume, SERVICE_FQDN_APP_8080 Claude 2026-08-28 19:06:15 +00:00
  • a5d76e109f feat(docker): multi-stage Dockerfile — pnpm SPA build + dotnet publish + aspnet:9.0 runtime Claude 2026-08-28 19:03:27 +00:00
  • 32a2b2ee53 chore(docker): add .dockerignore excluding bin/obj/node_modules/wwwroot Claude 2026-08-28 18:57:44 +00:00
  • 6ffc59870c fix(auth): heal legacy plaintext admin.password_hash_source on boot Claude 2026-08-28 18:54:35 +00:00
  • 3d9df50f20 feat(api): honour X-Forwarded-Proto so Secure cookies flip on behind Traefik Claude 2026-08-28 18:48:30 +00:00
  • 7854cb02ec chore(frontend): exclude e2e/ from Vitest discovery Claude 2026-08-28 16:40:16 +00:00
  • 2a1b90c731 docs: close out Plan 3 — React SPA live Claude 2026-08-28 16:38:55 +00:00
  • 294bd57317 test(e2e): playwright smoke — login/create/edit/save happy path Claude 2026-08-28 16:37:26 +00:00
  • 03de45cf8e feat(api): serve SPA from wwwroot + SPA fallback for client-side routes Claude 2026-08-28 16:32:16 +00:00
  • 2f7f18008e feat(frontend): executions viewer — list + expandable per-node IO Claude 2026-08-28 16:29:24 +00:00
  • 64cf7fbed9 chore(frontend): vite dev proxy for /api and /wh Claude 2026-08-28 16:27:43 +00:00
  • 655bd17f55 feat(frontend): editor toolbar — Save / Test run / Activate / Deactivate Claude 2026-08-28 16:27:15 +00:00
  • 12c5fb1990 feat(frontend): editor — palette + drag-drop + config panel + selection Claude 2026-08-28 16:25:33 +00:00
  • d81b59896e test(frontend): satisfy HttpResponse.json JsonBodyType constraint Claude 2026-08-28 16:23:31 +00:00
  • 891ff6a722 feat(frontend): editor scaffold — graph adapter + React Flow canvas Claude 2026-08-28 16:21:33 +00:00
  • c9193dbf36 feat(frontend): connections page — schema-driven create + list + delete Claude 2026-08-28 16:17:56 +00:00
  • 03cb34d009 feat(frontend): SchemaForm — schema-driven form generator Claude 2026-08-28 16:15:59 +00:00
  • 942d001c1f feat(frontend): workflows list — create/activate/deactivate/delete Claude 2026-08-28 16:14:09 +00:00
  • 1f317564f5 feat(frontend): login page — POST /api/session + error UI Claude 2026-08-28 16:12:15 +00:00
  • e0a2447d23 feat(frontend): router shell + PrivateRoute + stub pages Claude 2026-08-28 16:10:51 +00:00
  • 2cf3c8759f feat(frontend): TanStack Query hooks + useSession/useLogin/useLogout Claude 2026-08-28 16:09:01 +00:00
  • e1632f1272 test(frontend): MSW server + renderWithProviders harness Claude 2026-08-28 16:07:14 +00:00
  • a28d34a48c feat(frontend): apiFetch — cookie-included fetch wrapper with typed errors Claude 2026-08-28 16:06:02 +00:00
  • a9b6ae6975 feat(frontend): API type surface for Plan 2 endpoints Claude 2026-08-28 16:04:03 +00:00
  • 5bfa7baad6 docs: add Plan 3 — React SPA plan Claude 2026-08-28 16:03:16 +00:00
  • e29a4f7763 chore(frontend): wire Tailwind v3 + brand palette Claude 2026-08-28 16:02:54 +00:00
  • c4c650e3d0 chore(frontend): scaffold Vite + React 18 + TypeScript under frontend/ Claude 2026-08-28 16:00:34 +00:00
  • bc56e9edf1 docs: close out Plan 2 — workflow engine live Claude 2026-08-28 15:39:36 +00:00
  • 6065f0c91e feat(api): DI-register 5 nodes + NATS provider; enable pending integration tests Claude 2026-08-28 15:35:43 +00:00
  • df64e9e512 feat(nodes): PythonTransformNode (IronPython 3) — items in, output out Claude 2026-08-28 15:22:49 +00:00
  • ebd06a6abc feat(nodes): WebResponseNode — resolves webhook TCS with configured payload; move WebhookRouter to Core Claude 2026-08-28 15:20:10 +00:00
  • 3d7910c5e7 feat(nodes): WebhookNode — registers (workflow,path) route and emits body items Claude 2026-08-28 15:16:51 +00:00
  • 001c60bf86 feat(nodes): NatsPublishNode — publishes each item as its JSON bytes Claude 2026-08-28 15:13:36 +00:00
  • b9a3926be2 feat(nodes): NatsHookNode — trigger emits one execution per message Claude 2026-08-28 15:11:49 +00:00
  • b9097b1812 feat(providers): NatsConnectionProvider (NATS.Net) Claude 2026-08-28 15:09:13 +00:00
  • 5137591b8a feat(engine): RetentionService — hourly executions sweep Claude 2026-08-28 15:07:58 +00:00
  • 0895dc5f8f feat(api): manual run + executions REST (list + detail with per-node ports) Claude 2026-08-28 15:05:54 +00:00
  • 850eb4a12c feat(engine): TriggerHost with activation/deactivation + startup abort sweep Claude 2026-08-28 15:03:35 +00:00
  • ff54b1f22d feat(api): POST /wh/{workflow-id}/{*path} endpoint Claude 2026-08-28 15:00:24 +00:00
  • c88d27294b feat(engine): WebhookRegistry — (workflowId, path) → invocation lookup Claude 2026-08-28 14:58:06 +00:00
  • eabd6f175d feat(engine): WebhookRouter (TCS + first-write-wins + timeout) Claude 2026-08-28 14:56:52 +00:00
  • 159102e27e feat(engine): Executor fan-out + failure propagation + status rollup Claude 2026-08-28 14:52:53 +00:00
  • 8c58b6574d feat(engine): Executor — linear happy-path (trigger → action → terminal) Claude 2026-08-28 14:49:47 +00:00
  • 8fd152d977 feat(engine): ConnectionInstanceRegistry with per-id caching + invalidate on delete Claude 2026-08-28 14:46:15 +00:00
  • 8f4196de51 feat(engine): concrete ExecutionContext + TriggerActivationSink Claude 2026-08-28 14:43:56 +00:00
  • 37fb16bc43 feat(persistence): executions + node_executions migrations and repositories Claude 2026-08-28 14:41:21 +00:00