@huseynsnmz/pi-board 0.15.3 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -4
- package/CONTRIBUTING.md +7 -0
- package/README.md +55 -419
- package/SECURITY.md +19 -0
- package/docs/how-it-works.md +31 -0
- package/docs/reference.md +277 -0
- package/package.json +5 -11
- package/src/commands/agent-board.ts +26 -2
- package/src/commands/attach-flow.ts +4 -0
- package/src/core/double-press.mjs +6 -2
- package/src/core/slash-commands.mjs +52 -0
- package/src/index.ts +1 -1
- package/src/runtime/service.mjs +12 -0
- package/src/ui/dashboard.ts +59 -25
- package/src/ui/pty-attach.ts +8 -3
- package/IMPLEMENTATION_PLAN.md +0 -920
- package/PRD.md +0 -484
- package/PROGRESS.md +0 -142
- package/VERIFY.md +0 -115
- package/docs/BATCH_SELECTION_READ_FLOW.md +0 -277
- package/docs/EXPLORATION.md +0 -187
- package/docs/PTY_ATTACH_IMPLEMENTATION_PLAN.md +0 -581
- package/docs/RELEASE.md +0 -148
- package/docs/superpowers/plans/2026-08-15-screenlog-gc.md +0 -704
- package/docs/superpowers/plans/2026-08-16-attach-double-cursor-jiggle-retry.md +0 -499
- package/docs/superpowers/plans/2026-08-21-attach-coldstart-jiggle-rearm.md +0 -797
- package/docs/superpowers/plans/2026-08-21-dashboard-keypress-lag.md +0 -366
- package/docs/superpowers/plans/2026-08-21-issue-14-needs-input-no-auto-done.md +0 -576
- package/docs/superpowers/plans/2026-08-22-jiggle-shrink-and-hold.md +0 -337
- package/docs/superpowers/plans/2026-08-22-launch-cwd-favorites.md +0 -916
- package/docs/superpowers/plans/2026-08-22-question-tool-grouping.md +0 -211
- package/docs/superpowers/plans/2026-08-22-rename-state-labels.md +0 -182
- package/docs/superpowers/plans/2026-08-22-stable-list-order.md +0 -51
- package/docs/superpowers/plans/2026-08-27-locks-acquirelock-spin.md +0 -614
- package/docs/superpowers/plans/2026-08-27-pty-runner-test-flaky.md +0 -32
- package/docs/superpowers/plans/2026-08-29-code-refs-badges.md +0 -223
- package/docs/superpowers/plans/2026-08-30-circular-navigation.md +0 -308
- package/docs/superpowers/plans/2026-08-30-post-exit-timing-fix.md +0 -37
- package/docs/superpowers/plans/2026-08-30-pty-attach-quality-debt.md +0 -311
- package/docs/superpowers/plans/2026-08-30-readme-v2.md +0 -294
- package/docs/superpowers/plans/2026-09-01-attach-detach-gate-cursor-anchor.md +0 -284
- package/docs/superpowers/plans/2026-09-02-attach-detach-editor-state.md +0 -722
- package/docs/superpowers/plans/2026-09-03-code-refs-pr-backlink-narrow.md +0 -551
- package/docs/superpowers/plans/2026-09-03-detach-gate-glyph-fallback.md +0 -146
- package/docs/superpowers/plans/2026-09-04-evidence-outputpreview.md +0 -209
- package/docs/superpowers/plans/2026-09-04-warm-host-reclaim.md +0 -796
- package/docs/superpowers/plans/2026-09-05-issue-13-drainnextfollowup-pty-probe.md +0 -114
- package/docs/superpowers/plans/2026-09-05-issue-38-windows-wezterm-ime-cursor.md +0 -73
- package/docs/superpowers/plans/2026-09-05-issue-39-truncate-codepoint-boundary.md +0 -143
- package/docs/superpowers/plans/2026-09-05-issue-61-mention-fallback-guards.md +0 -226
- package/docs/superpowers/plans/2026-09-05-issue-63-flaky-manual-completion.md +0 -87
- package/docs/superpowers/plans/2026-09-05-issue-64-changelog-release-helper.md +0 -53
- package/docs/superpowers/plans/2026-09-05-pty-host-stacking-sock-race.md +0 -731
- package/docs/superpowers/plans/2026-09-08-attach-ctrl-left-detach.md +0 -30
- package/docs/superpowers/plans/2026-09-08-dashboard-shrink-repaint.md +0 -68
- package/docs/superpowers/plans/2026-09-08-issue-11-attach-runtime-desync-heal.md +0 -917
- package/docs/superpowers/plans/2026-09-08-legacy-stale-host-recovery.md +0 -125
- package/docs/superpowers/plans/2026-09-08-spawn-async-error-swallow.md +0 -56
- package/docs/superpowers/plans/2026-09-08-stale-model-attach-guard.md +0 -96
- package/docs/superpowers/plans/2026-09-09-claimpid-blocks-replace.md +0 -267
- package/docs/superpowers/plans/2026-09-09-harden-runner-architecture.md +0 -603
- package/docs/superpowers/plans/2026-09-09-single-writer-completion.md +0 -252
- package/docs/superpowers/plans/2026-09-10-reader-consistency.md +0 -115
- package/docs/superpowers/plans/2026-09-14-attach-cursor-dectcem-gate.md +0 -469
- package/docs/superpowers/plans/2026-09-14-attach-snapshot.md +0 -92
- package/docs/superpowers/plans/2026-09-14-host-meta-orphan-lock.md +0 -771
- package/docs/superpowers/plans/2026-09-14-issue-106-terminal-frame-cognition.md +0 -299
- package/docs/superpowers/plans/2026-09-14-issue-113-foreground-preview-race.md +0 -609
- package/docs/superpowers/plans/2026-09-14-terminal-model.md +0 -145
- package/docs/superpowers/plans/2026-09-15-coordinator-pipe-root-normalize.md +0 -224
- package/docs/superpowers/plans/2026-09-15-lease-publish-eprem-reclaim.md +0 -341
- package/docs/superpowers/plans/2026-09-18-detach-anchor-reporter-endpoint.md +0 -875
- package/docs/superpowers/plans/2026-09-20-control-lifecycle.md +0 -116
- package/docs/superpowers/plans/2026-09-20-issue-121-perf-gate-out-of-coverage.md +0 -517
- package/docs/superpowers/plans/2026-09-23-a5-mid-stream-assertion.md +0 -25
- package/docs/superpowers/plans/2026-09-23-cwd-browse-tab-drill.md +0 -393
- package/docs/superpowers/plans/2026-09-23-terminal-query-forwarding.md +0 -51
- package/docs/superpowers/plans/2026-09-23-unconditional-detach-key.md +0 -58
- package/docs/superpowers/plans/2026-09-24-control-reconcile-flake.md +0 -698
- package/docs/superpowers/plans/2026-09-24-probe-attached-clients.md +0 -605
- package/docs/superpowers/plans/2026-09-29-issue-145-holding-semantic-state.md +0 -1183
- package/docs/superpowers/plans/2026-09-29-issue-145-user-verification.md +0 -66
- package/docs/superpowers/plans/2026-09-30-board-delete-key-x-y-confirm.md +0 -649
- package/docs/superpowers/plans/2026-09-30-issue-153-runner-stop-boot-window.md +0 -618
- package/docs/superpowers/plans/2026-09-30-issue-95-test-discipline.md +0 -555
- package/docs/superpowers/plans/2026-09-30-publish-dispatch-tag-check.md +0 -259
- package/docs/superpowers/plans/2026-10-06-attach-settle-scheme-delivery.md +0 -751
- package/docs/superpowers/plans/2026-10-09-issue-167-attach-middle-paste.md +0 -509
- package/docs/superpowers/plans/2026-10-09-issue-169-fullscreen-mouse-ownership.md +0 -346
- package/docs/superpowers/plans/2026-10-10-attach-delete-in-place.md +0 -832
- package/docs/superpowers/plans/2026-10-10-issue-174-selection-mirror-paste-source.md +0 -510
- package/docs/superpowers/plans/2026-10-14-issue-170-attach-reply-guard.md +0 -771
- package/docs/superpowers/plans/2026-10-14-issue-178-accept-registration-race.md +0 -1257
- package/docs/superpowers/plans/2026-10-14-issue-184-snapshot-window-contract.md +0 -657
- package/docs/superpowers/plans/2026-10-14-issue-185-attach-wheel-alt-screen.md +0 -47
- package/docs/superpowers/plans/2026-10-14-issue-187-motionless-drag.md +0 -931
- package/docs/superpowers/plans/2026-10-14-issue-189-mixed-input-segments.md +0 -823
- package/docs/superpowers/plans/2026-10-15-issue-188-x10-mouse-release.md +0 -526
- package/docs/superpowers/plans/2026-10-16-issue-198-attach-wheel-forward-fallback.md +0 -32
- package/docs/superpowers/plans/2026-10-18-attach-wheel-replay-pseudo-scrollback.md +0 -437
- package/docs/superpowers/plans/2026-10-19-issue-213-reply-guard-csi-key.md +0 -257
- package/docs/superpowers/plans/2026-10-19-issue-214-attach-forward-alt-modifier.md +0 -202
- package/docs/superpowers/plans/2026-10-21-issue-221-ask-user-question.md +0 -198
- package/docs/superpowers/plans/2026-10-23-issue-222-attach-ready.md +0 -290
- package/docs/superpowers/plans/2026-10-23-issue-225-monotonic-foreground-state.md +0 -450
- package/docs/superpowers/plans/2026-10-23-issue-229-vim-jkl.md +0 -449
- package/docs/superpowers/plans/2026-10-23-issue-232-attach-bg-only-cells.md +0 -153
- package/docs/superpowers/plans/2026-10-23-lease-heartbeat-staleness.md +0 -537
- package/docs/superpowers/plans/2026-10-23-selected-row-highlight.md +0 -405
- package/docs/superpowers/plans/2026-10-24-issue-217-windows-pid-reuse-stopping.md +0 -367
- package/docs/superpowers/plans/2026-10-24-issue-230-warm-host-background-runs.md +0 -806
- package/docs/superpowers/plans/2026-10-24-issue-238-windows-process-identity-token.md +0 -490
- package/docs/superpowers/plans/2026-10-24-issue-241-coordinator-root-exit.md +0 -461
- package/docs/superpowers/plans/2026-10-25-issue-239-coordinator-replacement-identity.md +0 -504
- package/docs/superpowers/plans/2026-10-26-issue-245-key-hints-doc-sync.md +0 -244
- package/docs/superpowers/plans/2026-10-27-issue-172-fullscreen-selection-clear.md +0 -344
- package/docs/superpowers/plans/2026-10-27-issue-252-select-key-hints.md +0 -209
- package/docs/superpowers/plans/2026-10-28-issue-255-coordinator-endpoint-zombie.md +0 -442
- package/docs/superpowers/plans/2026-10-28-issue-257-legacy-pty-runner-endpoint-cleanup.md +0 -256
- package/docs/superpowers/plans/2026-11-03-cwd-favorites-full-pool.md +0 -266
- package/docs/superpowers/specs/2026-08-15-screenlog-gc-design.md +0 -105
- package/docs/superpowers/specs/2026-08-16-attach-double-cursor-jiggle-retry-design.md +0 -142
- package/docs/superpowers/specs/2026-08-21-attach-coldstart-jiggle-rearm-design.md +0 -110
- package/docs/superpowers/specs/2026-08-21-dashboard-keypress-lag-design.md +0 -59
- package/docs/superpowers/specs/2026-08-21-issue-14-needs-input-no-auto-done-design.md +0 -109
- package/docs/superpowers/specs/2026-08-22-cwd-favorites-design.md +0 -131
- package/docs/superpowers/specs/2026-08-22-jiggle-shrink-and-hold-design.md +0 -111
- package/docs/superpowers/specs/2026-08-22-question-tool-grouping-design.md +0 -114
- package/docs/superpowers/specs/2026-08-22-rename-state-labels-design.md +0 -80
- package/docs/superpowers/specs/2026-08-27-locks-acquirelock-spin-design.md +0 -97
- package/docs/superpowers/specs/2026-08-27-pty-runner-test-flaky-design.md +0 -35
- package/docs/superpowers/specs/2026-08-29-code-refs-badges-design.md +0 -128
- package/docs/superpowers/specs/2026-08-30-circular-navigation-design.md +0 -47
- package/docs/superpowers/specs/2026-08-30-eprm-atomicwrite-race-design.md +0 -77
- package/docs/superpowers/specs/2026-08-30-post-exit-timing-fix-design.md +0 -80
- package/docs/superpowers/specs/2026-08-30-pty-attach-quality-debt-design.md +0 -105
- package/docs/superpowers/specs/2026-08-30-readme-v2-design.md +0 -115
- package/docs/superpowers/specs/2026-09-01-attach-detach-gate-cursor-anchor-design.md +0 -78
- package/docs/superpowers/specs/2026-09-02-attach-detach-editor-state-design.md +0 -120
- package/docs/superpowers/specs/2026-09-03-code-refs-pr-backlink-narrow-design.md +0 -92
- package/docs/superpowers/specs/2026-09-03-detach-gate-glyph-fallback-design.md +0 -99
- package/docs/superpowers/specs/2026-09-04-evidence-outputpreview-design.md +0 -50
- package/docs/superpowers/specs/2026-09-04-warm-host-reclaim-design.md +0 -106
- package/docs/superpowers/specs/2026-09-05-issue-13-drainnextfollowup-pty-probe-design.md +0 -64
- package/docs/superpowers/specs/2026-09-05-issue-38-windows-wezterm-ime-design.md +0 -48
- package/docs/superpowers/specs/2026-09-05-issue-39-truncate-codepoint-boundary-design.md +0 -64
- package/docs/superpowers/specs/2026-09-05-issue-61-mention-fallback-design.md +0 -71
- package/docs/superpowers/specs/2026-09-05-issue-63-flaky-manual-completion-design.md +0 -49
- package/docs/superpowers/specs/2026-09-05-issue-64-changelog-helper-design.md +0 -76
- package/docs/superpowers/specs/2026-09-05-pty-host-stacking-sock-race-design.md +0 -510
- package/docs/superpowers/specs/2026-09-07-issue-11-attach-runtime-desync-heal-design.md +0 -130
- package/docs/superpowers/specs/2026-09-08-attach-ctrl-left-detach-design.md +0 -58
- package/docs/superpowers/specs/2026-09-08-dashboard-shrink-repaint-design.md +0 -52
- package/docs/superpowers/specs/2026-09-08-legacy-stale-host-recovery-design.md +0 -87
- package/docs/superpowers/specs/2026-09-08-spawn-async-error-swallow-design.md +0 -56
- package/docs/superpowers/specs/2026-09-08-stale-model-attach-guard-design.md +0 -79
- package/docs/superpowers/specs/2026-09-09-claimpid-blocks-replace-design.md +0 -147
- package/docs/superpowers/specs/2026-09-09-harden-runner-architecture-design.md +0 -304
- package/docs/superpowers/specs/2026-09-14-attach-cursor-dectcem-gate-design.md +0 -114
- package/docs/superpowers/specs/2026-09-14-host-meta-orphan-lock-design.md +0 -120
- package/docs/superpowers/specs/2026-09-14-issue-106-terminal-frame-cognition-design.md +0 -146
- package/docs/superpowers/specs/2026-09-14-issue-113-foreground-preview-race-design.md +0 -116
- package/docs/superpowers/specs/2026-09-15-coordinator-pipe-root-normalize-design.md +0 -84
- package/docs/superpowers/specs/2026-09-15-lease-publish-eprem-reclaim-design.md +0 -92
- package/docs/superpowers/specs/2026-09-18-detach-anchor-reporter-endpoint-design.md +0 -123
- package/docs/superpowers/specs/2026-09-20-issue-121-perf-gate-out-of-coverage-design.md +0 -204
- package/docs/superpowers/specs/2026-09-23-a5-mid-stream-assertion-design.md +0 -43
- package/docs/superpowers/specs/2026-09-23-cwd-browse-tab-drill-design.md +0 -95
- package/docs/superpowers/specs/2026-09-23-terminal-query-forwarding-design.md +0 -63
- package/docs/superpowers/specs/2026-09-23-unconditional-detach-key-design.md +0 -57
- package/docs/superpowers/specs/2026-09-24-control-reconcile-flake-design.md +0 -98
- package/docs/superpowers/specs/2026-09-24-probe-attached-clients-design.md +0 -190
- package/docs/superpowers/specs/2026-09-29-issue-145-holding-semantic-state-design.md +0 -394
- package/docs/superpowers/specs/2026-09-30-board-delete-key-x-y-confirm-design.md +0 -86
- package/docs/superpowers/specs/2026-09-30-issue-153-runner-stop-boot-window-design.md +0 -75
- package/docs/superpowers/specs/2026-09-30-issue-95-test-discipline-design.md +0 -226
- package/docs/superpowers/specs/2026-09-30-publish-dispatch-tag-check-design.md +0 -129
- package/docs/superpowers/specs/2026-10-06-attach-settle-scheme-delivery-design.md +0 -196
- package/docs/superpowers/specs/2026-10-09-issue-167-attach-middle-paste-design.md +0 -125
- package/docs/superpowers/specs/2026-10-09-issue-169-fullscreen-mouse-ownership-design.md +0 -130
- package/docs/superpowers/specs/2026-10-10-attach-delete-in-place-design.md +0 -224
- package/docs/superpowers/specs/2026-10-10-issue-174-selection-mirror-paste-source-design.md +0 -154
- package/docs/superpowers/specs/2026-10-14-issue-170-attach-reply-guard-design.md +0 -195
- package/docs/superpowers/specs/2026-10-14-issue-178-accept-registration-race-design.md +0 -287
- package/docs/superpowers/specs/2026-10-14-issue-184-snapshot-window-contract-design.md +0 -288
- package/docs/superpowers/specs/2026-10-14-issue-185-attach-wheel-alt-screen-design.md +0 -126
- package/docs/superpowers/specs/2026-10-14-issue-187-motionless-drag-design.md +0 -269
- package/docs/superpowers/specs/2026-10-14-issue-189-mixed-input-segments-design.md +0 -369
- package/docs/superpowers/specs/2026-10-15-issue-188-x10-mouse-release-design.md +0 -252
- package/docs/superpowers/specs/2026-10-16-issue-198-attach-wheel-forward-fallback-design.md +0 -67
- package/docs/superpowers/specs/2026-10-18-attach-wheel-replay-pseudo-scrollback-design.md +0 -250
- package/docs/superpowers/specs/2026-10-19-issue-213-reply-guard-csi-key-design.md +0 -165
- package/docs/superpowers/specs/2026-10-19-issue-214-attach-forward-alt-modifier-design.md +0 -131
- package/docs/superpowers/specs/2026-10-20-issue-221-ask-user-question-design.md +0 -270
- package/docs/superpowers/specs/2026-10-22-issue-225-monotonic-foreground-state-design.md +0 -225
- package/docs/superpowers/specs/2026-10-23-issue-222-attach-ready-design.md +0 -204
- package/docs/superpowers/specs/2026-10-23-issue-229-vim-jkl-design.md +0 -90
- package/docs/superpowers/specs/2026-10-23-issue-232-attach-bg-only-cells-design.md +0 -146
- package/docs/superpowers/specs/2026-10-23-lease-heartbeat-staleness-design.md +0 -271
- package/docs/superpowers/specs/2026-10-23-selected-row-highlight-design.md +0 -191
- package/docs/superpowers/specs/2026-10-24-issue-217-windows-pid-reuse-stopping-design.md +0 -334
- package/docs/superpowers/specs/2026-10-24-issue-230-warm-host-background-runs-design.md +0 -283
- package/docs/superpowers/specs/2026-10-24-issue-238-windows-process-identity-token-design.md +0 -286
- package/docs/superpowers/specs/2026-10-24-issue-241-coordinator-root-exit-design.md +0 -381
- package/docs/superpowers/specs/2026-10-25-issue-239-coordinator-replacement-identity-design.md +0 -331
- package/docs/superpowers/specs/2026-10-26-issue-245-key-hints-doc-sync-design.md +0 -72
- package/docs/superpowers/specs/2026-10-27-issue-172-fullscreen-selection-clear-design.md +0 -248
- package/docs/superpowers/specs/2026-10-27-issue-252-select-key-hints-design.md +0 -95
- package/docs/superpowers/specs/2026-10-28-issue-255-coordinator-endpoint-zombie-design.md +0 -380
- package/docs/superpowers/specs/2026-10-28-issue-257-legacy-pty-runner-endpoint-cleanup-design.md +0 -197
- package/docs/superpowers/specs/2026-11-03-cwd-favorites-full-pool-design.md +0 -106
- package/scripts/budget-audit.mjs +0 -135
- package/scripts/release.mjs +0 -446
- package/scripts/release_helper.mjs +0 -309
- package/scripts/run-perf-gate.mjs +0 -40
- package/scripts/run-tests.mjs +0 -375
package/docs/RELEASE.md
DELETED
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# Release process
|
|
2
|
-
|
|
3
|
-
Releases are driven by `scripts/release.mjs` and published by CI when a GitHub
|
|
4
|
-
Release is created. Four commands and one merge:
|
|
5
|
-
|
|
6
|
-
```
|
|
7
|
-
precheck → prepare <bump> → open-pr <version> → merge (merge commit!)
|
|
8
|
-
→ finish <version> → .github/workflows/publish.yml publishes to npm
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
`main` is protected, so a release lands as a pull request — but the npm publish
|
|
12
|
-
is not tied to that PR: it is tied to the GitHub Release, which is created only
|
|
13
|
-
after the PR is merged and the tag is confirmed to be on `main`.
|
|
14
|
-
|
|
15
|
-
## One-time setup: the npm trusted publisher
|
|
16
|
-
|
|
17
|
-
`publish.yml` publishes with **trusted publishing** (OIDC), so no `NPM_TOKEN`
|
|
18
|
-
secret is stored in the repository. npm has to be told which workflow may
|
|
19
|
-
publish the package — this is a one-time, per-package web step:
|
|
20
|
-
|
|
21
|
-
1. Open <https://www.npmjs.com/package/@zhuxixi/pi-agent-board> and sign in as
|
|
22
|
-
the package owner.
|
|
23
|
-
2. Go to **Settings** → **Trusted Publisher** → **GitHub Actions**.
|
|
24
|
-
3. Fill in: organization `zhuxixi`, repository `pi-agent-board`, workflow
|
|
25
|
-
filename `publish.yml`, environment left empty.
|
|
26
|
-
4. Save.
|
|
27
|
-
|
|
28
|
-
Until this is configured, the CI publish step fails with an authentication
|
|
29
|
-
error. Publishing locally (the pre-2026-09 flow, see "Local publish fallback"
|
|
30
|
-
below) still works, because the npm account keeps its normal credentials.
|
|
31
|
-
|
|
32
|
-
## Commands
|
|
33
|
-
|
|
34
|
-
### `node scripts/release.mjs precheck`
|
|
35
|
-
|
|
36
|
-
Read-only gate. Run it before anything else; it fails closed when the tree is
|
|
37
|
-
dirty, `main` is not in sync with `origin/main`, a `release/*` PR is still open,
|
|
38
|
-
the last tag is not an ancestor of `origin/main` (an orphan tag from a past
|
|
39
|
-
squash merge), or there is nothing functional to release.
|
|
40
|
-
|
|
41
|
-
### `node scripts/release.mjs prepare <patch|minor|major|X.Y.Z> [--dry-run]`
|
|
42
|
-
|
|
43
|
-
Runs the gate, then:
|
|
44
|
-
|
|
45
|
-
1. renders the new CHANGELOG section from the conventional commits since the
|
|
46
|
-
last `v*` tag,
|
|
47
|
-
2. commits it as `docs(changelog): add <version> section`,
|
|
48
|
-
3. runs `npm version <bump>` — one commit plus the annotated `v<version>` tag,
|
|
49
|
-
4. switches to `release/v<version>`.
|
|
50
|
-
|
|
51
|
-
Nothing leaves the machine. `--dry-run` prints the section and the plan without
|
|
52
|
-
writing anything; review the preview before running it for real. Pick the bump
|
|
53
|
-
the same way as before: features are a `minor`, fixes alone are a `patch`.
|
|
54
|
-
|
|
55
|
-
### `node scripts/release.mjs open-pr <version> [--dry-run]`
|
|
56
|
-
|
|
57
|
-
Pushes the release branch and the tag, then opens the PR with the CHANGELOG
|
|
58
|
-
section as its body. The tag is pushed separately because tags are not covered
|
|
59
|
-
by the branch protection rule.
|
|
60
|
-
|
|
61
|
-
### Merge the PR with a merge commit
|
|
62
|
-
|
|
63
|
-
**Do not squash the release PR.** `npm version` created the tag on a commit that
|
|
64
|
-
only exists on the release branch; a merge commit brings that commit into
|
|
65
|
-
`main`, a squash does not, and the tag becomes unreachable from `main`
|
|
66
|
-
(`git describe` then misreads the changelog range of the next release). Use the
|
|
67
|
-
**Merge pull request** button, or `gh pr merge --merge`.
|
|
68
|
-
|
|
69
|
-
### `node scripts/release.mjs finish <version> [--dry-run] [--sync-main]`
|
|
70
|
-
|
|
71
|
-
Run it after the merge. It fetches, verifies that `v<version>` is an ancestor of
|
|
72
|
-
`origin/main`, re-checks the CHANGELOG against any functional PR merged after the
|
|
73
|
-
bump, and then creates the GitHub Release with the CHANGELOG section as its
|
|
74
|
-
notes. That release is the publish trigger. `--sync-main` also resets a clean
|
|
75
|
-
local `main` to `origin/main`, dropping the local copy of the two release
|
|
76
|
-
commits (they are content-equal to what the merge brought in).
|
|
77
|
-
|
|
78
|
-
To publish without the orchestration, the underlying commands are
|
|
79
|
-
`gh release create v<version> --title v<version> --notes-file <notes>` where the
|
|
80
|
-
notes are `node scripts/release.mjs notes <version>`.
|
|
81
|
-
|
|
82
|
-
## What CI does
|
|
83
|
-
|
|
84
|
-
`.github/workflows/publish.yml` runs on `release: published`, checks out the
|
|
85
|
-
tag, and:
|
|
86
|
-
|
|
87
|
-
1. asserts npm is at least 11.5.1 (trusted publishing needs it; Node 24 ships
|
|
88
|
-
a newer one),
|
|
89
|
-
2. asserts the tag equals `package.json`'s version,
|
|
90
|
-
3. runs `npm run typecheck` and `npm test`,
|
|
91
|
-
4. skips the publish when that version is already on npm, and otherwise
|
|
92
|
-
5. runs `npm publish --provenance --access public`.
|
|
93
|
-
|
|
94
|
-
Provenance means npm records which repository, workflow, and commit built the
|
|
95
|
-
tarball, and shows it on the package page.
|
|
96
|
-
|
|
97
|
-
## Recovering from a broken release
|
|
98
|
-
|
|
99
|
-
**Orphan tag** (`finish` refuses with "not an ancestor of origin/main"). The
|
|
100
|
-
release PR was squash-merged. Re-point the tag at the content-equivalent commit
|
|
101
|
-
on `main`, then retry:
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
git fetch origin
|
|
105
|
-
git tag -f v0.9.0 <sha on origin/main with the same content>
|
|
106
|
-
git push origin v0.9.0 --force
|
|
107
|
-
node scripts/release.mjs finish 0.9.0 --sync-main
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
**CHANGELOG drift** (`finish` refuses with missing PR numbers, or
|
|
111
|
-
`node scripts/release_helper.mjs verify` exits 1). A functional PR merged after
|
|
112
|
-
the changelog section was generated. Add the missing entries to the top section
|
|
113
|
-
in a `docs(changelog)` PR, merge it, then retry — the release notes are read
|
|
114
|
-
again at that point, so the fix is picked up.
|
|
115
|
-
|
|
116
|
-
**The publish failed** (npm outage, trusted publisher not configured yet).
|
|
117
|
-
Re-run the same tag without recreating the release: Actions → **Publish to
|
|
118
|
-
npm** → **Run workflow** → enter the tag.
|
|
119
|
-
|
|
120
|
-
**`npm view <package>` returns 404 right after a successful publish.** That is
|
|
121
|
-
the registry's view index lagging, not a failed publish. Compare endpoints: the
|
|
122
|
-
tarball, `/<package>/latest`, and `/-/package/<package>/dist-tags` answer
|
|
123
|
-
immediately while the root document 404s for a few minutes. Wait; re-publishing
|
|
124
|
-
the same version is rejected with a 403 and is never the fix.
|
|
125
|
-
|
|
126
|
-
**Local publish fallback.** When the trusted publisher is not configured and a
|
|
127
|
-
release cannot wait:
|
|
128
|
-
|
|
129
|
-
```bash
|
|
130
|
-
npm run verify
|
|
131
|
-
npm publish --registry=https://registry.npmjs.org --access public
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
The registry must be passed explicitly: this machine defaults to
|
|
135
|
-
`registry.npmmirror.com`. This path skips provenance and the CI checks, so
|
|
136
|
-
prefer fixing the CI path.
|
|
137
|
-
|
|
138
|
-
## CHANGELOG conventions
|
|
139
|
-
|
|
140
|
-
`scripts/release_helper.mjs` renders the section from conventional commits in
|
|
141
|
-
the range `<last v* tag>..HEAD`. `feat`/`fix`/`perf` become Features / Fixes /
|
|
142
|
-
Performance, everything else (including `test` and `docs`) lands under Changes,
|
|
143
|
-
merges and `npm version` squash subjects are skipped, and `docs(changelog):`
|
|
144
|
-
subjects are ignored so changelog fixes do not feed back into the verify check.
|
|
145
|
-
|
|
146
|
-
Every entry carries the PR number parsed from the trailing `(#N)`. `verify`
|
|
147
|
-
fails when a functional commit's PR is missing from the top section — that is
|
|
148
|
-
what keeps a late merge from shipping without release notes.
|