Skip to content

feat: 1.0.0 features — GraphQL, WebSocket, Wait, Sub-flow, expression autocomplete + faker#41

Merged
moosebay merged 5 commits intomainfrom
backup/ws-feature-all-changes
Apr 23, 2026
Merged

feat: 1.0.0 features — GraphQL, WebSocket, Wait, Sub-flow, expression autocomplete + faker#41
moosebay merged 5 commits intomainfrom
backup/ws-feature-all-changes

Conversation

@moosebay
Copy link
Copy Markdown
Contributor

@moosebay moosebay commented Mar 6, 2026

Summary

Bundle of features targeting the 1.0.0 release (see .nx/version-plans/desktop-1.0.0.md):

  • New protocols and flow nodes: GraphQL (requests, delta overrides, CLI, YAML), WebSocket (connection + send nodes), Wait node, Sub-flow (Run Sub Flow + SubFlowTrigger + SubFlowReturn).
  • Flow engine: runner overhaul with improved node execution and error propagation, flow-level error field and node-ID mapping, copy/paste extended to GraphQL / WebSocket / sub-flow nodes.
  • Expression editor (final commit): inline autocomplete inside {{ }} for built-in functions (uuid(), ulid(), now()) with VS Code-style dot-chain completion on now() (.Unix(), .UnixMilli(), .UnixMicro(), .UnixNano()), plus a new faker namespace (faker.email(), faker.name(), faker.randomInt(min, max), 35 generators total) backed by github.com/go-faker/faker/v4.
  • Delta system: GraphQL delta with snapshot/override semantics for name, URL, query, variables, description, headers, and assertions.
  • Dep unblock: reverts better-auth 1.5.41.4.21 since 1.5.4 dropped the public runAdapterTest export that packages/auth's adapter tests rely on.

Test plan

  • Run task lint — passes cleanly (0 errors)
  • Run task test — full unit suite green
  • Spot-check the expression editor in the desktop app: typing {{ shows builtins; {{ now(). shows Unix()/UnixMilli()/etc.; {{ faker. shows all generators
  • Eval {{ faker.email() }} in a request URL/body and confirm it interpolates to a real email at send time
  • Sanity-check a GraphQL request (create, save, execute, view response history)
  • Sanity-check a WebSocket flow (connect + send node) and a Wait node in a flow
  • Run a sub-flow node end-to-end (parent flow invokes child, typed inputs/outputs flow through)
  • Copy/paste a flow containing GraphQL + WebSocket + sub-flow nodes and confirm the paste round-trip is clean

moosebay added 2 commits March 7, 2026 00:45
…updates

WebSocket Support:
- Add WebSocket Connection and Send flow nodes (client + server)
- Add WebSocket request page and API
- Add drag-and-drop from file tree to flow canvas for WebSocket items
- Add WS echo server integration test, migrate to coder/websocket

Wait Node:
- Add Wait flow node with configurable duration

Flow Runner Overhaul:
- Extract flow execution into flowexec/flowresult packages (~900 lines)
- Wire runner abstractions into strategies with shared helpers
- Fix CANCELED status not sent when stopping a flow

Bug Fixes:
- Fix WS Send node dropdown empty when no selection exists
- Fix @lezer/common override for CodeMirror highlight crash
- Fix sync insert handler idempotency, node event publisher types
- Fix wait node copy/paste, server panic on closed WS channel

Dependencies:
- Update all npm packages to latest (ESLint pinned to v9, syncpack to v13)
- Update Scoop dependencies (7zip, gcc, go, nodejs, etc.)
- Fix eslint-plugin-better-tailwindcss v4 config changes
- Fix @types/react FormEvent deprecation
- Fix matchRoute return type change
…ow node docs

- Add DeltaResetButton to GraphQL top-bar (name), query editor, and variables editor
- Replace inline URL with delta-aware GraphQLUrl component in top-bar
- Wire delta-aware delete and send in GraphQL top-bar
- Add onStay hooks to all route files (HTTP, GraphQL, WS, Flow, Credential) for tab creation
- Fix tab active state: use exact route matching to prevent parent highlighting on delta pages
- Add GraphQL delta to file system sidebar (FileKind enum, model, converters, migration, UI)
- Fix GraphQL header delta service: Create now passes delta fields, add UpdateDelta method
- Fix header delta RPC handler to call UpdateDelta instead of Update
- Add UpdateGraphQLHeaderDelta sqlc query
- Fix converter.go missing GraphQL/WebSocket/GraphQLDelta cases in ToAPIFileKind
- Add NEW_FLOW_NODE.md comprehensive checklist for adding new flow node types
@moosebay moosebay force-pushed the backup/ws-feature-all-changes branch from 12a30ab to 3d58fae Compare March 7, 2026 02:58
moosebay added 3 commits March 9, 2026 01:13
Add inline autocomplete in the {{ }} expression editor for built-in
functions (uuid(), uuid("v4"), uuid("v7"), ulid(), now()) with VS
Code-style dot-chain completion on now(): .Unix(), .UnixMilli(),
.UnixMicro(), .UnixNano().

Introduce a faker namespace backed by go-faker/faker/v4. Typing
"faker." opens a 35-entry method list for fake data generation
(name, email, phoneNumber, url, ipv4, ipv6, macAddress, username,
password, word, sentence, paragraph, date, timestamp, timezone,
ccNumber, currency, uuid, randomInt, ...).

Also revert better-auth 1.5.4 -> 1.4.21 since 1.5.4 dropped the
public runAdapterTest export that packages/auth's adapter tests
rely on, and fix an unnecessary bracket-notation assertion flagged
by the shared ESLint config.
@moosebay moosebay changed the title feat: WebSocket nodes, Wait node, and sync fixes feat: 1.0.0 features — GraphQL, WebSocket, Wait, Sub-flow, expression autocomplete + faker Apr 23, 2026
@moosebay moosebay merged commit a76d542 into main Apr 23, 2026
1 of 2 checks passed
moosebay added a commit that referenced this pull request Apr 24, 2026
Commit the working-tree state that was sitting unstaged at the 1.0.0
cut: reference API split into focused files (context, execution, flow
context, node schema, response, tree), WebSocket proxy + request panel
polish, run-sub-flow node updates, flow node.tsx rewrite, migrations
test expansion, subflow executor changes, and cross-cutting page
refactors across http / graphql / websocket / user / workspace
widgets.

Pure restore of in-progress 1.0.0 work that PR #41 didn't include
because the files were never staged.
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