switchroom 0.21.11 → 0.21.12
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/dist/cli/switchroom.js
CHANGED
|
@@ -2120,7 +2120,7 @@ var init_esm = __esm(() => {
|
|
|
2120
2120
|
});
|
|
2121
2121
|
|
|
2122
2122
|
// src/build-info.ts
|
|
2123
|
-
var VERSION = "0.21.
|
|
2123
|
+
var VERSION = "0.21.12", COMMIT_SHA = "66041822", COMMIT_DATE = "2026-08-14T20:57:00Z";
|
|
2124
2124
|
|
|
2125
2125
|
// src/cli/resolve-version.ts
|
|
2126
2126
|
import { existsSync, readFileSync } from "node:fs";
|
|
@@ -21565,7 +21565,7 @@ function allocateAgentUid(name) {
|
|
|
21565
21565
|
}
|
|
21566
21566
|
|
|
21567
21567
|
// src/build-info.ts
|
|
21568
|
-
var VERSION = "0.21.
|
|
21568
|
+
var VERSION = "0.21.12";
|
|
21569
21569
|
|
|
21570
21570
|
// src/setup/hindsight-recall-passthrough.ts
|
|
21571
21571
|
var HINDSIGHT_RECALL_TAG_WEIGHT_SEED = Object.freeze({ sidechain: 0.8 });
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "switchroom",
|
|
3
3
|
"//version": "NOT the release version — source of truth is the git tag, resolved by scripts/build.mjs:resolveVersion() (see CLAUDE.md > Standard release process). This field is stale by design and only the Layer-4 dev/non-tag fallback for build.mjs + src/cli/resolve-version.ts; do NOT bump it expecting a release to pick it up. npm-pack tarball naming needs a real version — do that as an UNCOMMITTED pack-time bump (see release step 6), never a committed one.",
|
|
4
|
-
"version": "0.21.
|
|
4
|
+
"version": "0.21.12",
|
|
5
5
|
"description": "Run Claude Code 24/7 on your Claude Pro/Max subscription over Telegram. Open-source alternative to OpenClaw and NanoClaw — no API keys.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"lint:claude-cli-lockstep": "node scripts/check-claude-cli-lockstep.mjs",
|
|
58
58
|
"lint:changelog-entry": "node scripts/check-changelog-entry.mjs",
|
|
59
59
|
"changelog:generate": "node scripts/gen-changelog-entry.mjs",
|
|
60
|
+
"changelog:cut": "node scripts/cut-changelog-release.mjs",
|
|
60
61
|
"lint:agent-attribution-trailers": "node scripts/check-agent-attribution-trailers.mjs",
|
|
61
62
|
"lint:hostd-template-guard": "bun scripts/check-hostd-template-guard.ts",
|
|
62
63
|
"lint:bench-baseline-anonymised": "node scripts/check-bench-baseline-anonymised.mjs",
|
|
@@ -83,6 +84,7 @@
|
|
|
83
84
|
"@types/bun": "^1.3.11",
|
|
84
85
|
"@types/node": "^22.0.0",
|
|
85
86
|
"@vitest/coverage-v8": "3.2.4",
|
|
87
|
+
"commonmark": "0.31.2",
|
|
86
88
|
"typescript": "^5.7.0",
|
|
87
89
|
"vitest": "^3.2.4"
|
|
88
90
|
},
|
|
@@ -139,17 +139,21 @@ is not a rebuttal.
|
|
|
139
139
|
`AWAITING_CHECKS` means a required workflow is not listening for
|
|
140
140
|
`merge_group`; `.github/MERGE-QUEUE.md` owns that failure mode and the
|
|
141
141
|
invariants that prevent it.
|
|
142
|
-
- **Stage the
|
|
143
|
-
changes shippable code must add a
|
|
142
|
+
- **Stage the changelog note author-side, before `gh pr create`.** A PR that
|
|
143
|
+
changes shippable code must add a NEW `changelog.d/` fragment file (#4469's
|
|
144
144
|
`check-changelog-entry.mjs`, part of `npm run lint`, enforces it). Don't
|
|
145
|
-
hand-
|
|
146
|
-
|
|
147
|
-
(idempotently — a second run is a no-op)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
145
|
+
hand-edit `CHANGELOG.md`: run `bun run changelog:generate` in the repo — it
|
|
146
|
+
derives a per-PR fragment (`changelog.d/<pr>-<slug>.<type>.md`) from your
|
|
147
|
+
conventional-commit title (idempotently — a second run is a no-op) and
|
|
148
|
+
respects the escape hatches. Then commit the fragment so it lands in your
|
|
149
|
+
own push. Fragment files are per-PR, so they never conflict with another
|
|
150
|
+
in-flight PR — editing the shared `## Unreleased` section does, which is
|
|
151
|
+
exactly the conflict class fragments replace (see `changelog.d/README.md`).
|
|
152
|
+
It runs AUTHOR-side, not in CI, because a CI commit-back with the default
|
|
153
|
+
`GITHUB_TOKEN` cannot re-trigger the required checks and would wedge the PR
|
|
154
|
+
(`.github/MERGE-QUEUE.md` § "Author-side changelog generation"). Opt a
|
|
155
|
+
docs/chore/test PR out with the `no-changelog` label or a `[skip changelog]`
|
|
156
|
+
token on its own line.
|
|
153
157
|
- **A test that wouldn't fail on the bug it guards is not a test.** Assert the
|
|
154
158
|
observable outcome, not that the code path executed.
|
|
155
159
|
- **Prefer a deterministic mechanism over prompt discipline.** If a check, a
|
|
@@ -22,14 +22,20 @@ Cut a release of `switchroom/switchroom` and get it live on the fleet. This is a
|
|
|
22
22
|
1. `git fetch origin`, confirm `main` is at the commit you want released.
|
|
23
23
|
2. `gh pr list --state open` — confirm no PR meant for this release is still open. Ask the operator if unsure.
|
|
24
24
|
3. Confirm CI on `main` is green (`gh run list --branch main --limit 3`).
|
|
25
|
-
4. Read
|
|
25
|
+
4. Read the staged notes — they live in TWO places, both **continuously maintained** as PRs merge and both enforced by `scripts/check-changelog-entry.mjs` (part of `npm run lint`): the `changelog.d/` **fragment files** (the primary path — every shippable PR adds its own `<pr>-<slug>.<type>.md`; see `changelog.d/README.md`) and any legacy/hand-staged entries under `## Unreleased` in `CHANGELOG.md`. Together they should already read as a near-complete draft — you assemble and tidy, you do NOT author from scratch. **Nothing staged at release time (no fragments AND an empty `## Unreleased`) is an ANOMALY, not the normal state** — `bun run changelog:cut` refuses to cut it: it means either there genuinely is nothing to release, OR the enforcement was bypassed (`no-changelog` labels / `[skip changelog]` tokens on their own line on PRs that should have staged notes). Before assuming the former, cross-check against `git log <last-tag>..origin/main` — if real shippable work landed but nothing is staged, investigate and reconstruct rather than shipping a hollow release (this is exactly the v0.20.12 failure mode the enforcement exists to prevent).
|
|
26
26
|
5. Pick the next version: read the latest tag (`git tag --list 'v*' --sort=-v:refname | head -1`) and bump the patch (or minor if the operator asks). Confirm with the operator which.
|
|
27
27
|
|
|
28
|
-
## Step 1 —
|
|
28
|
+
## Step 1 — Assemble the changelog (the release commit is CHANGELOG + fragment deletions only)
|
|
29
29
|
|
|
30
|
-
- The
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
- The notes are staged continuously (see pre-flight 4), so this step is **one command + a review**, not authorship:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
bun run changelog:cut -- --version vX.Y.Z --summary "<one-line summary>"
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`scripts/cut-changelog-release.mjs` folds every `changelog.d/` fragment (plus anything hand-staged under `## Unreleased`) into a new `## vX.Y.Z — <summary>` section grouped by category, **re-seeds a fresh empty `## Unreleased` block** (header + convention comment) below `# Changelog`, and **deletes the consumed fragment files**. Use `--dry-run` first to preview the assembled section. It FAILS LOUDLY on a double cut or an empty cut — if it refuses for "nothing to release", STOP and resolve the anomaly (pre-flight 4); do not invent a release note.
|
|
37
|
+
- Read through the assembled section and lightly edit for grouping/summary before committing.
|
|
38
|
+
- The release commit touches **CHANGELOG.md and the deleted `changelog.d/` fragments only**. Do NOT bump `package.json` (placeholder discipline). (A CHANGELOG + fragment-deletion PR changes no shippable code, so `check-changelog-entry.mjs` passes it without a staged note of its own — deleting fragments never counts as staging one.)
|
|
33
39
|
- Branch protection blocks direct push to `main`, so: create a `release/vX.Y.Z` branch, push it, open a `chore: release vX.Y.Z` PR (base `main`), arm auto-merge (squash, delete-branch) on green CI.
|
|
34
40
|
|
|
35
41
|
## Step 2 — Create the DRAFT release on a PINNED SHA, then push the tag
|
|
@@ -105739,10 +105739,10 @@ function startOutboxSweep(deps) {
|
|
|
105739
105739
|
}
|
|
105740
105740
|
|
|
105741
105741
|
// ../src/build-info.ts
|
|
105742
|
-
var VERSION2 = "0.21.
|
|
105743
|
-
var COMMIT_SHA = "
|
|
105744
|
-
var COMMIT_DATE = "2026-08-
|
|
105745
|
-
var LATEST_PR =
|
|
105742
|
+
var VERSION2 = "0.21.12";
|
|
105743
|
+
var COMMIT_SHA = "66041822";
|
|
105744
|
+
var COMMIT_DATE = "2026-08-14T20:57:00Z";
|
|
105745
|
+
var LATEST_PR = 4717;
|
|
105746
105746
|
var COMMITS_AHEAD_OF_TAG = 0;
|
|
105747
105747
|
|
|
105748
105748
|
// gateway/boot-version.ts
|