-
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