diff --git a/.changeset/persist-queue-identity.md b/.changeset/persist-queue-identity.md deleted file mode 100644 index 48be3ef40..000000000 --- a/.changeset/persist-queue-identity.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@pgflow/core': minor -'@pgflow/dsl': minor -'@pgflow/client': minor -'@pgflow/edge-worker': minor -'pgflow': minor ---- - -Persist physical queue identity on steps and tasks. A queued task's message identity is now `(queue_name, message_id)`, not `message_id` alone, preparing pgflow for private per-step queues while keeping one-flow/one-queue behavior. - -`pgflow.steps` and `pgflow.step_tasks` gain a canonical lowercase `queue_name` (snapshot at task creation), `(queue_name, message_id)` is unique per queue, and two flows can no longer share a normalized default queue. **Breaking:** `pgflow.start_tasks()` now requires the `queue_name` argument - the queue's canonical identity, `lower(flow_slug)` today - and the released three-argument form and the NULL default are gone, and `startTasks()` on `IPgflowClient`/`PgflowSqlClient` requires the queue argument as well. pgflow's own workers poll and claim through that canonical name; custom callers must pass it explicitly. There is no mixed-version rolling upgrade: stop and drain workers, pause producers and definition/maintenance/recovery writers, apply the transactional migration through Supabase's migration runner against the production database (`--linked` or `--db-url`, not the local default), replace the optional `prune_data_older_than()` helper, then deploy matching packages and workers together, restoring the exact worker `enabled` states recorded before the window (see the 0.17.0 upgrade guide). Message ids are exact decimal strings at the JavaScript boundary. Existing mixed-case queue names keep working through their original pgmq spelling - PGMQ's public message API normalizes names, so no message or queue migration is needed. diff --git a/.changeset/private-step-queues.md b/.changeset/private-step-queues.md deleted file mode 100644 index 1b787e989..000000000 --- a/.changeset/private-step-queues.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -'@pgflow/core': minor -'@pgflow/dsl': minor -'@pgflow/edge-worker': minor ---- - -Add private per-step queues. Wrap a flow with `withStepQueues()` and start one `EdgeWorker` per selected `stepSlug`; pgflow derives, validates, persists, and verifies each route before dispatching work. - -Flow and step slugs now reject leading or trailing underscores and `__`. Flow slugs are case-insensitively unique, and step slugs are case-insensitively unique within a flow. - -**Breaking:** `Flow.stepOrder` is now `readonly` and frozen at construction, so mutating it (for example `push()` or `reverse()`) can no longer change a flow's shape — startup shape extraction and checked route indices must never diverge. diff --git a/.changeset/remove-stale-relics.md b/.changeset/remove-stale-relics.md deleted file mode 100644 index a845151cc..000000000 --- a/.changeset/remove-stale-relics.md +++ /dev/null @@ -1,2 +0,0 @@ ---- ---- diff --git a/pkgs/cli/CHANGELOG.md b/pkgs/cli/CHANGELOG.md index f5ad67a8b..01a06cee1 100644 --- a/pkgs/cli/CHANGELOG.md +++ b/pkgs/cli/CHANGELOG.md @@ -1,5 +1,19 @@ # pgflow +## 0.17.0 + +### Minor Changes + +- 01147fe: Persist physical queue identity on steps and tasks. A queued task's message identity is now `(queue_name, message_id)`, not `message_id` alone, preparing pgflow for private per-step queues while keeping one-flow/one-queue behavior. + + `pgflow.steps` and `pgflow.step_tasks` gain a canonical lowercase `queue_name` (snapshot at task creation), `(queue_name, message_id)` is unique per queue, and two flows can no longer share a normalized default queue. **Breaking:** `pgflow.start_tasks()` now requires the `queue_name` argument - the queue's canonical identity, `lower(flow_slug)` today - and the released three-argument form and the NULL default are gone, and `startTasks()` on `IPgflowClient`/`PgflowSqlClient` requires the queue argument as well. pgflow's own workers poll and claim through that canonical name; custom callers must pass it explicitly. There is no mixed-version rolling upgrade: stop and drain workers, pause producers and definition/maintenance/recovery writers, apply the transactional migration through Supabase's migration runner against the production database (`--linked` or `--db-url`, not the local default), replace the optional `prune_data_older_than()` helper, then deploy matching packages and workers together, restoring the exact worker `enabled` states recorded before the window (see the 0.17.0 upgrade guide). Message ids are exact decimal strings at the JavaScript boundary. Existing mixed-case queue names keep working through their original pgmq spelling - PGMQ's public message API normalizes names, so no message or queue migration is needed. + +### Patch Changes + +- Updated dependencies [01147fe] +- Updated dependencies [57447fe] + - @pgflow/core@0.17.0 + ## 0.16.0 ### Minor Changes diff --git a/pkgs/cli/package.json b/pkgs/cli/package.json index 88b4341e4..801ac0934 100644 --- a/pkgs/cli/package.json +++ b/pkgs/cli/package.json @@ -1,6 +1,6 @@ { "name": "pgflow", - "version": "0.16.0", + "version": "0.17.0", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/pkgs/client/CHANGELOG.md b/pkgs/client/CHANGELOG.md index 704d58bc8..ab7be5acd 100644 --- a/pkgs/client/CHANGELOG.md +++ b/pkgs/client/CHANGELOG.md @@ -1,5 +1,20 @@ # @pgflow/client +## 0.17.0 + +### Minor Changes + +- 01147fe: Persist physical queue identity on steps and tasks. A queued task's message identity is now `(queue_name, message_id)`, not `message_id` alone, preparing pgflow for private per-step queues while keeping one-flow/one-queue behavior. + + `pgflow.steps` and `pgflow.step_tasks` gain a canonical lowercase `queue_name` (snapshot at task creation), `(queue_name, message_id)` is unique per queue, and two flows can no longer share a normalized default queue. **Breaking:** `pgflow.start_tasks()` now requires the `queue_name` argument - the queue's canonical identity, `lower(flow_slug)` today - and the released three-argument form and the NULL default are gone, and `startTasks()` on `IPgflowClient`/`PgflowSqlClient` requires the queue argument as well. pgflow's own workers poll and claim through that canonical name; custom callers must pass it explicitly. There is no mixed-version rolling upgrade: stop and drain workers, pause producers and definition/maintenance/recovery writers, apply the transactional migration through Supabase's migration runner against the production database (`--linked` or `--db-url`, not the local default), replace the optional `prune_data_older_than()` helper, then deploy matching packages and workers together, restoring the exact worker `enabled` states recorded before the window (see the 0.17.0 upgrade guide). Message ids are exact decimal strings at the JavaScript boundary. Existing mixed-case queue names keep working through their original pgmq spelling - PGMQ's public message API normalizes names, so no message or queue migration is needed. + +### Patch Changes + +- Updated dependencies [01147fe] +- Updated dependencies [57447fe] + - @pgflow/core@0.17.0 + - @pgflow/dsl@0.17.0 + ## 0.16.0 ### Minor Changes diff --git a/pkgs/client/package.json b/pkgs/client/package.json index 91c45a62a..c8a28af07 100644 --- a/pkgs/client/package.json +++ b/pkgs/client/package.json @@ -1,6 +1,6 @@ { "name": "@pgflow/client", - "version": "0.16.0", + "version": "0.17.0", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/pkgs/core/CHANGELOG.md b/pkgs/core/CHANGELOG.md index 505392e54..c56ff9b84 100644 --- a/pkgs/core/CHANGELOG.md +++ b/pkgs/core/CHANGELOG.md @@ -1,5 +1,25 @@ # @pgflow/core +## 0.17.0 + +### Minor Changes + +- 01147fe: Persist physical queue identity on steps and tasks. A queued task's message identity is now `(queue_name, message_id)`, not `message_id` alone, preparing pgflow for private per-step queues while keeping one-flow/one-queue behavior. + + `pgflow.steps` and `pgflow.step_tasks` gain a canonical lowercase `queue_name` (snapshot at task creation), `(queue_name, message_id)` is unique per queue, and two flows can no longer share a normalized default queue. **Breaking:** `pgflow.start_tasks()` now requires the `queue_name` argument - the queue's canonical identity, `lower(flow_slug)` today - and the released three-argument form and the NULL default are gone, and `startTasks()` on `IPgflowClient`/`PgflowSqlClient` requires the queue argument as well. pgflow's own workers poll and claim through that canonical name; custom callers must pass it explicitly. There is no mixed-version rolling upgrade: stop and drain workers, pause producers and definition/maintenance/recovery writers, apply the transactional migration through Supabase's migration runner against the production database (`--linked` or `--db-url`, not the local default), replace the optional `prune_data_older_than()` helper, then deploy matching packages and workers together, restoring the exact worker `enabled` states recorded before the window (see the 0.17.0 upgrade guide). Message ids are exact decimal strings at the JavaScript boundary. Existing mixed-case queue names keep working through their original pgmq spelling - PGMQ's public message API normalizes names, so no message or queue migration is needed. + +- 57447fe: Add private per-step queues. Wrap a flow with `withStepQueues()` and start one `EdgeWorker` per selected `stepSlug`; pgflow derives, validates, persists, and verifies each route before dispatching work. + + Flow and step slugs now reject leading or trailing underscores and `__`. Flow slugs are case-insensitively unique, and step slugs are case-insensitively unique within a flow. + + **Breaking:** `Flow.stepOrder` is now `readonly` and frozen at construction, so mutating it (for example `push()` or `reverse()`) can no longer change a flow's shape — startup shape extraction and checked route indices must never diverge. + +### Patch Changes + +- Updated dependencies [01147fe] +- Updated dependencies [57447fe] + - @pgflow/dsl@0.17.0 + ## 0.16.0 ### Minor Changes diff --git a/pkgs/core/package.json b/pkgs/core/package.json index 211c5e491..22b5e16cb 100644 --- a/pkgs/core/package.json +++ b/pkgs/core/package.json @@ -1,6 +1,6 @@ { "name": "@pgflow/core", - "version": "0.16.0", + "version": "0.17.0", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/pkgs/dsl/CHANGELOG.md b/pkgs/dsl/CHANGELOG.md index 221c4491d..e21193f50 100644 --- a/pkgs/dsl/CHANGELOG.md +++ b/pkgs/dsl/CHANGELOG.md @@ -1,5 +1,19 @@ # @pgflow/dsl +## 0.17.0 + +### Minor Changes + +- 01147fe: Persist physical queue identity on steps and tasks. A queued task's message identity is now `(queue_name, message_id)`, not `message_id` alone, preparing pgflow for private per-step queues while keeping one-flow/one-queue behavior. + + `pgflow.steps` and `pgflow.step_tasks` gain a canonical lowercase `queue_name` (snapshot at task creation), `(queue_name, message_id)` is unique per queue, and two flows can no longer share a normalized default queue. **Breaking:** `pgflow.start_tasks()` now requires the `queue_name` argument - the queue's canonical identity, `lower(flow_slug)` today - and the released three-argument form and the NULL default are gone, and `startTasks()` on `IPgflowClient`/`PgflowSqlClient` requires the queue argument as well. pgflow's own workers poll and claim through that canonical name; custom callers must pass it explicitly. There is no mixed-version rolling upgrade: stop and drain workers, pause producers and definition/maintenance/recovery writers, apply the transactional migration through Supabase's migration runner against the production database (`--linked` or `--db-url`, not the local default), replace the optional `prune_data_older_than()` helper, then deploy matching packages and workers together, restoring the exact worker `enabled` states recorded before the window (see the 0.17.0 upgrade guide). Message ids are exact decimal strings at the JavaScript boundary. Existing mixed-case queue names keep working through their original pgmq spelling - PGMQ's public message API normalizes names, so no message or queue migration is needed. + +- 57447fe: Add private per-step queues. Wrap a flow with `withStepQueues()` and start one `EdgeWorker` per selected `stepSlug`; pgflow derives, validates, persists, and verifies each route before dispatching work. + + Flow and step slugs now reject leading or trailing underscores and `__`. Flow slugs are case-insensitively unique, and step slugs are case-insensitively unique within a flow. + + **Breaking:** `Flow.stepOrder` is now `readonly` and frozen at construction, so mutating it (for example `push()` or `reverse()`) can no longer change a flow's shape — startup shape extraction and checked route indices must never diverge. + ## 0.16.0 ### Minor Changes diff --git a/pkgs/dsl/package.json b/pkgs/dsl/package.json index 72fd48ddd..d878da33b 100644 --- a/pkgs/dsl/package.json +++ b/pkgs/dsl/package.json @@ -1,6 +1,6 @@ { "name": "@pgflow/dsl", - "version": "0.16.0", + "version": "0.17.0", "license": "Apache-2.0", "repository": { "type": "git", diff --git a/pkgs/edge-worker/CHANGELOG.md b/pkgs/edge-worker/CHANGELOG.md index aafec0a8d..23daf6562 100644 --- a/pkgs/edge-worker/CHANGELOG.md +++ b/pkgs/edge-worker/CHANGELOG.md @@ -1,5 +1,26 @@ # @pgflow/edge-worker +## 0.17.0 + +### Minor Changes + +- 01147fe: Persist physical queue identity on steps and tasks. A queued task's message identity is now `(queue_name, message_id)`, not `message_id` alone, preparing pgflow for private per-step queues while keeping one-flow/one-queue behavior. + + `pgflow.steps` and `pgflow.step_tasks` gain a canonical lowercase `queue_name` (snapshot at task creation), `(queue_name, message_id)` is unique per queue, and two flows can no longer share a normalized default queue. **Breaking:** `pgflow.start_tasks()` now requires the `queue_name` argument - the queue's canonical identity, `lower(flow_slug)` today - and the released three-argument form and the NULL default are gone, and `startTasks()` on `IPgflowClient`/`PgflowSqlClient` requires the queue argument as well. pgflow's own workers poll and claim through that canonical name; custom callers must pass it explicitly. There is no mixed-version rolling upgrade: stop and drain workers, pause producers and definition/maintenance/recovery writers, apply the transactional migration through Supabase's migration runner against the production database (`--linked` or `--db-url`, not the local default), replace the optional `prune_data_older_than()` helper, then deploy matching packages and workers together, restoring the exact worker `enabled` states recorded before the window (see the 0.17.0 upgrade guide). Message ids are exact decimal strings at the JavaScript boundary. Existing mixed-case queue names keep working through their original pgmq spelling - PGMQ's public message API normalizes names, so no message or queue migration is needed. + +- 57447fe: Add private per-step queues. Wrap a flow with `withStepQueues()` and start one `EdgeWorker` per selected `stepSlug`; pgflow derives, validates, persists, and verifies each route before dispatching work. + + Flow and step slugs now reject leading or trailing underscores and `__`. Flow slugs are case-insensitively unique, and step slugs are case-insensitively unique within a flow. + + **Breaking:** `Flow.stepOrder` is now `readonly` and frozen at construction, so mutating it (for example `push()` or `reverse()`) can no longer change a flow's shape — startup shape extraction and checked route indices must never diverge. + +### Patch Changes + +- Updated dependencies [01147fe] +- Updated dependencies [57447fe] + - @pgflow/core@0.17.0 + - @pgflow/dsl@0.17.0 + ## 0.16.0 ### Minor Changes diff --git a/pkgs/edge-worker/jsr.json b/pkgs/edge-worker/jsr.json index 28f947053..385e00f6f 100644 --- a/pkgs/edge-worker/jsr.json +++ b/pkgs/edge-worker/jsr.json @@ -1,6 +1,6 @@ { "name": "@pgflow/edge-worker", - "version": "0.16.0", + "version": "0.17.0", "license": "Apache-2.0", "exports": { ".": "./src/index.ts", @@ -10,8 +10,8 @@ "@henrygd/queue": "jsr:@henrygd/queue@^1.0.7", "@std/crypto": "jsr:@std/crypto@^1.0.5", "postgres": "jsr:@oscar6echo/postgres@3.4.5-d", - "@pgflow/core": "npm:@pgflow/core@0.16.0", - "@pgflow/dsl": "npm:@pgflow/dsl@0.16.0" + "@pgflow/core": "npm:@pgflow/core@0.17.0", + "@pgflow/dsl": "npm:@pgflow/dsl@0.17.0" }, "publish": { "include": [ diff --git a/pkgs/edge-worker/package.json b/pkgs/edge-worker/package.json index c86a5aa34..fdfa3d230 100644 --- a/pkgs/edge-worker/package.json +++ b/pkgs/edge-worker/package.json @@ -1,6 +1,6 @@ { "name": "@pgflow/edge-worker", - "version": "0.16.0", + "version": "0.17.0", "license": "Apache-2.0", "repository": { "type": "git",