Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .changeset/persist-queue-identity.md

This file was deleted.

11 changes: 0 additions & 11 deletions .changeset/private-step-queues.md

This file was deleted.

2 changes: 0 additions & 2 deletions .changeset/remove-stale-relics.md

This file was deleted.

14 changes: 14 additions & 0 deletions pkgs/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion pkgs/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "pgflow",
"version": "0.16.0",
"version": "0.17.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
Expand Down
15 changes: 15 additions & 0 deletions pkgs/client/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion pkgs/client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pgflow/client",
"version": "0.16.0",
"version": "0.17.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
Expand Down
20 changes: 20 additions & 0 deletions pkgs/core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion pkgs/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pgflow/core",
"version": "0.16.0",
"version": "0.17.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
Expand Down
14 changes: 14 additions & 0 deletions pkgs/dsl/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion pkgs/dsl/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pgflow/dsl",
"version": "0.16.0",
"version": "0.17.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
Expand Down
21 changes: 21 additions & 0 deletions pkgs/edge-worker/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions pkgs/edge-worker/jsr.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pgflow/edge-worker",
"version": "0.16.0",
"version": "0.17.0",
"license": "Apache-2.0",
"exports": {
".": "./src/index.ts",
Expand All @@ -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": [
Expand Down
2 changes: 1 addition & 1 deletion pkgs/edge-worker/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pgflow/edge-worker",
"version": "0.16.0",
"version": "0.17.0",
"license": "Apache-2.0",
"repository": {
"type": "git",
Expand Down
Loading