Skip to content

feat: add flow import/export#1

Open
pablocaeg wants to merge 1 commit into
zernio-dev:mainfrom
pablocaeg:feat/flow-import-export
Open

feat: add flow import/export#1
pablocaeg wants to merge 1 commit into
zernio-dev:mainfrom
pablocaeg:feat/flow-import-export

Conversation

@pablocaeg

@pablocaeg pablocaeg commented May 19, 2026

Copy link
Copy Markdown

hey! Added flow import/export. You can export any flow as a JSON file from the flows list or from inside the editor, and import one back with the Import button. It uses the existing POST /api/v1/flows endpoint so no backend changes needed.

Screenshot 2026-05-19 at 13 01 20 Screenshot 2026-05-19 at 13 02 17 Screenshot 2026-05-19 at 13 10 35

Export flows as JSON from the flows list or the editor toolbar.
Import flows from JSON files using the existing POST /api/v1/flows endpoint.
@vercel

vercel Bot commented May 19, 2026

Copy link
Copy Markdown

@pablocaeg is attempting to deploy a commit to the Zernio Team on Vercel.

A member of the Team first needs to authorize it.

aleclezio referenced this pull request in aleclezio/zernflow Jun 11, 2026
… routes

Profile scoping (upstreamable set B — brief findings #1-#3):
- 00011: workspaces.zernio_profile_id/_name + partial UNIQUE (profile <->
  workspace 1:1) + global UNIQUE on active channels(late_account_id) — the
  same Zernio account can never fire flows in two workspaces
- lib/zernio-scope.ts: getBoundProfileId (throws ProfileUnboundError),
  412 PROFILE_UNBOUND response helper, accountProfileId normalizer
  (API returns string OR populated Profile object — both handled)
- connect: profiles[0] fallback DELETED; always the bound profile, 412 when
  unbound
- sync: listAccounts filtered by bound profileId + defensive post-filter with
  anomaly log; deactivation pass moved BEFORE inserts (plays nice with the
  new active-account uniqueness)
- test-key binding (never guess): bound -> key must see that profile else
  409 PROFILE_MISMATCH; unbound + 1 profile -> auto-bind; unbound + many ->
  422 PROFILE_CHOICE_REQUIRED with the list (key NOT saved), explicit
  profileId on retry; multi-profile key -> loud isolation warning
- settings UI: profile picker on 422, bound-profile + warning display

TDD: 10 integration tests red first (constraint violations, 412s, binding
matrix, defensive filter incl. populated-Profile variant). Suite: 41 passing.
Test infra: retry on Docker clock-skew ('JWT issued at future') in
createTestUser; per-test unique fixture ids (global uniqueness constraints).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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