From 35f0f859297fac76050a98ce0693bdaa61ac906b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 22:48:57 +0000 Subject: [PATCH 1/3] Version Packages --- .tegami/audited-dependencies.md | 9 --------- .tegami/pangram-4-1-guidance.md | 9 --------- .tegami/publish-lock.yaml | 21 +++++++++++++-------- .tegami/youtube-audio-only.md | 9 --------- CHANGELOG.md | 14 ++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- npm/pangram-cli/CHANGELOG.md | 14 ++++++++++++++ npm/pangram-cli/package.json | 2 +- package-lock.json | 2 +- 10 files changed, 45 insertions(+), 39 deletions(-) delete mode 100644 .tegami/audited-dependencies.md delete mode 100644 .tegami/pangram-4-1-guidance.md delete mode 100644 .tegami/youtube-audio-only.md diff --git a/.tegami/audited-dependencies.md b/.tegami/audited-dependencies.md deleted file mode 100644 index 8a01de1..0000000 --- a/.tegami/audited-dependencies.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -packages: - "cargo:microck-pangram-cli": patch - "npm:@microck/pangram-cli": patch ---- - -## Security - -Update TLS, QUIC, and ZIP dependencies to patched releases while retaining signed-archive validation and the Rust 1.88 minimum. Update development test dependencies to remove reported npm advisories. diff --git a/.tegami/pangram-4-1-guidance.md b/.tegami/pangram-4-1-guidance.md deleted file mode 100644 index 8b043d6..0000000 --- a/.tegami/pangram-4-1-guidance.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -packages: - "cargo:microck-pangram-cli": patch - "npm:@microck/pangram-cli": patch ---- - -## Changed - -AI detection results in pretty, Markdown, and TUI views now caution that scans below 150 words are less certain, following Pangram 4.1's published interpretation guidance. Scores and machine-readable schemas are unchanged; undocumented dashboard uncertainty ranges are not fabricated. diff --git a/.tegami/publish-lock.yaml b/.tegami/publish-lock.yaml index c3b7498..c2403c7 100644 --- a/.tegami/publish-lock.yaml +++ b/.tegami/publish-lock.yaml @@ -1,9 +1,12 @@ core:changelogs: - - content: "---\npackages:\n cargo:microck-pangram-cli:\n type: minor\n npm:@microck/pangram-cli:\n type: minor\n---\n\n## Added\n\n`pangram URL` now routes a bare GitHub pull request, GitHub issue, or YouTube URL to `pangram pr`, `pangram issue`, or `pangram youtube`. Flags after the URL go to that command, so `pangram https://github.com/owner/repo/pull/123 --max-billable-units 5` works. Any other bare URL fails with `unsupported_input` instead of being analyzed as text; use `pangram detect` to analyze a URL as text.\n\n`pangram completions nushell` generates Nushell completions, and native release archives now include `completions/pangram.nu`.\n" - filename: bare-url-routing-nushell.md + - content: "---\npackages:\n cargo:microck-pangram-cli:\n type: patch\n npm:@microck/pangram-cli:\n type: patch\n---\n\n## Security\n\nUpdate TLS, QUIC, and ZIP dependencies to patched releases while retaining signed-archive validation and the Rust 1.88 minimum. Update development test dependencies to remove reported npm advisories.\n" + filename: audited-dependencies.md v: 0.0.0 - - content: "---\npackages:\n cargo:microck-pangram-cli:\n type: patch\n npm:@microck/pangram-cli:\n type: patch\n---\n\n## Fixed\n\nLonger AI detections no longer fail with `upstream_contract_changed` when Pangram reports its new `STAGE_POSTPROCESSING` stage. Any well-formed intermediate stage now keeps polling until Pangram returns a terminal result.\n\n`video`, `audio`, and `youtube` failures now include the underlying tool's error (for example a yt-dlp HTTP 403) in `details.tool_stderr` instead of only \"yt-dlp failed.\"\n" - filename: pangram-postprocessing-stage.md + - content: "---\npackages:\n cargo:microck-pangram-cli:\n type: patch\n npm:@microck/pangram-cli:\n type: patch\n---\n\n## Changed\n\nAI detection results in pretty, Markdown, and TUI views now caution that scans below 150 words are less certain, following Pangram 4.1's published interpretation guidance. Scores and machine-readable schemas are unchanged; undocumented dashboard uncertainty ranges are not fabricated.\n" + filename: pangram-4-1-guidance.md + v: 0.0.0 + - content: "---\npackages:\n cargo:microck-pangram-cli:\n type: patch\n npm:@microck/pangram-cli:\n type: patch\n---\n\n## Fixed\n\nYouTube transcription now explicitly downloads the best audio-only format instead of relying on yt-dlp's default format selection.\n" + filename: youtube-audio-only.md v: 0.0.0 core:packages: - id: npm:pangram-cli-development-tools @@ -11,13 +14,15 @@ core:packages: - id: npm:@microck/pangram-docs updated: false - changelogIds: - - bare-url-routing-nushell.md - - pangram-postprocessing-stage.md + - audited-dependencies.md + - pangram-4-1-guidance.md + - youtube-audio-only.md id: npm:@microck/pangram-cli updated: true - changelogIds: - - bare-url-routing-nushell.md - - pangram-postprocessing-stage.md + - audited-dependencies.md + - pangram-4-1-guidance.md + - youtube-audio-only.md id: cargo:microck-pangram-cli updated: true npm:packages: diff --git a/.tegami/youtube-audio-only.md b/.tegami/youtube-audio-only.md deleted file mode 100644 index 1ab4977..0000000 --- a/.tegami/youtube-audio-only.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -packages: - "cargo:microck-pangram-cli": patch - "npm:@microck/pangram-cli": patch ---- - -## Fixed - -YouTube transcription now explicitly downloads the best audio-only format instead of relying on yt-dlp's default format selection. diff --git a/CHANGELOG.md b/CHANGELOG.md index ec0bd6e..1618b1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## microck-pangram-cli@1.3.1 + +### Security + +Update TLS, QUIC, and ZIP dependencies to patched releases while retaining signed-archive validation and the Rust 1.88 minimum. Update development test dependencies to remove reported npm advisories. + +### Changed + +AI detection results in pretty, Markdown, and TUI views now caution that scans below 150 words are less certain, following Pangram 4.1's published interpretation guidance. Scores and machine-readable schemas are unchanged; undocumented dashboard uncertainty ranges are not fabricated. + +### Fixed + +YouTube transcription now explicitly downloads the best audio-only format instead of relying on yt-dlp's default format selection. + ## microck-pangram-cli@1.3.0 ### Added diff --git a/Cargo.lock b/Cargo.lock index 0a41354..193b99b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1807,7 +1807,7 @@ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "microck-pangram-cli" -version = "1.3.0" +version = "1.3.1" dependencies = [ "axum", "base64 0.23.1", diff --git a/Cargo.toml b/Cargo.toml index 7bf1698..357ab22 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "microck-pangram-cli" -version = "1.3.0" +version = "1.3.1" edition = "2024" rust-version = "1.88" description = "Unofficial Pangram terminal client" diff --git a/npm/pangram-cli/CHANGELOG.md b/npm/pangram-cli/CHANGELOG.md index 4ec9e5f..a72ee52 100644 --- a/npm/pangram-cli/CHANGELOG.md +++ b/npm/pangram-cli/CHANGELOG.md @@ -1,3 +1,17 @@ +## @microck/pangram-cli@1.3.1 + +### Security + +Update TLS, QUIC, and ZIP dependencies to patched releases while retaining signed-archive validation and the Rust 1.88 minimum. Update development test dependencies to remove reported npm advisories. + +### Changed + +AI detection results in pretty, Markdown, and TUI views now caution that scans below 150 words are less certain, following Pangram 4.1's published interpretation guidance. Scores and machine-readable schemas are unchanged; undocumented dashboard uncertainty ranges are not fabricated. + +### Fixed + +YouTube transcription now explicitly downloads the best audio-only format instead of relying on yt-dlp's default format selection. + ## @microck/pangram-cli@1.3.0 ### Added diff --git a/npm/pangram-cli/package.json b/npm/pangram-cli/package.json index 62f64b7..0470acc 100644 --- a/npm/pangram-cli/package.json +++ b/npm/pangram-cli/package.json @@ -1,6 +1,6 @@ { "name": "@microck/pangram-cli", - "version": "1.3.0", + "version": "1.3.1", "description": "Unofficial Pangram terminal client", "license": "MIT", "repository": "https://github.com/Microck/pangram-cli", diff --git a/package-lock.json b/package-lock.json index 62ea499..eea5612 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9731,7 +9731,7 @@ }, "npm/pangram-cli": { "name": "@microck/pangram-cli", - "version": "1.3.0", + "version": "1.3.1", "license": "MIT", "bin": { "pangram": "bin/pangram.js" From d423af0be6606006f240c0da79612a87e937b693 Mon Sep 17 00:00:00 2001 From: Microck Date: Mon, 19 Oct 2026 22:11:27 -0400 Subject: [PATCH 2/3] fix: synchronize platform packages before Tegami snapshots release --- npm/pangram-cli-darwin-arm64/package.json | 2 +- npm/pangram-cli-darwin-x64/package.json | 2 +- npm/pangram-cli-linux-arm64/package.json | 2 +- npm/pangram-cli-linux-x64/package.json | 2 +- npm/pangram-cli-win32-x64/package.json | 2 +- npm/pangram-cli/package.json | 10 +-- package-lock.json | 90 +++++-------------- package.json | 2 +- scripts/sync-platform-package-versions.mjs | 16 ++++ .../sync-platform-package-versions.test.mjs | 34 +++++++ scripts/tegami.mts | 18 ++-- 11 files changed, 87 insertions(+), 93 deletions(-) create mode 100644 scripts/sync-platform-package-versions.mjs create mode 100644 scripts/sync-platform-package-versions.test.mjs diff --git a/npm/pangram-cli-darwin-arm64/package.json b/npm/pangram-cli-darwin-arm64/package.json index 11d94b1..28a6650 100644 --- a/npm/pangram-cli-darwin-arm64/package.json +++ b/npm/pangram-cli-darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@microck/pangram-cli-darwin-arm64", - "version": "1.3.0", + "version": "1.3.1", "description": "Unofficial Pangram CLI binary for macOS ARM64", "license": "MIT", "repository": "https://github.com/Microck/pangram-cli", diff --git a/npm/pangram-cli-darwin-x64/package.json b/npm/pangram-cli-darwin-x64/package.json index 69a400a..b9326bf 100644 --- a/npm/pangram-cli-darwin-x64/package.json +++ b/npm/pangram-cli-darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@microck/pangram-cli-darwin-x64", - "version": "1.3.0", + "version": "1.3.1", "description": "Unofficial Pangram CLI binary for macOS x64", "license": "MIT", "repository": "https://github.com/Microck/pangram-cli", diff --git a/npm/pangram-cli-linux-arm64/package.json b/npm/pangram-cli-linux-arm64/package.json index 3299da2..36c77a5 100644 --- a/npm/pangram-cli-linux-arm64/package.json +++ b/npm/pangram-cli-linux-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@microck/pangram-cli-linux-arm64", - "version": "1.3.0", + "version": "1.3.1", "description": "Unofficial Pangram CLI binary for Linux ARM64", "license": "MIT", "repository": "https://github.com/Microck/pangram-cli", diff --git a/npm/pangram-cli-linux-x64/package.json b/npm/pangram-cli-linux-x64/package.json index 73d09d4..0febe10 100644 --- a/npm/pangram-cli-linux-x64/package.json +++ b/npm/pangram-cli-linux-x64/package.json @@ -1,6 +1,6 @@ { "name": "@microck/pangram-cli-linux-x64", - "version": "1.3.0", + "version": "1.3.1", "description": "Unofficial Pangram CLI binary for Linux x64", "license": "MIT", "repository": "https://github.com/Microck/pangram-cli", diff --git a/npm/pangram-cli-win32-x64/package.json b/npm/pangram-cli-win32-x64/package.json index bb2b230..70fe66e 100644 --- a/npm/pangram-cli-win32-x64/package.json +++ b/npm/pangram-cli-win32-x64/package.json @@ -1,6 +1,6 @@ { "name": "@microck/pangram-cli-win32-x64", - "version": "1.3.0", + "version": "1.3.1", "description": "Unofficial Pangram CLI binary for Windows x64", "license": "MIT", "repository": "https://github.com/Microck/pangram-cli", diff --git a/npm/pangram-cli/package.json b/npm/pangram-cli/package.json index 0470acc..7df614d 100644 --- a/npm/pangram-cli/package.json +++ b/npm/pangram-cli/package.json @@ -15,11 +15,11 @@ "node": ">=20" }, "optionalDependencies": { - "@microck/pangram-cli-darwin-arm64": "1.3.0", - "@microck/pangram-cli-darwin-x64": "1.3.0", - "@microck/pangram-cli-linux-arm64": "1.3.0", - "@microck/pangram-cli-linux-x64": "1.3.0", - "@microck/pangram-cli-win32-x64": "1.3.0" + "@microck/pangram-cli-darwin-arm64": "1.3.1", + "@microck/pangram-cli-darwin-x64": "1.3.1", + "@microck/pangram-cli-linux-arm64": "1.3.1", + "@microck/pangram-cli-linux-x64": "1.3.1", + "@microck/pangram-cli-win32-x64": "1.3.1" }, "publishConfig": { "access": "public" diff --git a/package-lock.json b/package-lock.json index eea5612..4bc0d87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1323,71 +1323,6 @@ "resolved": "npm/pangram-cli", "link": true }, - "node_modules/@microck/pangram-cli-darwin-arm64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microck/pangram-cli-darwin-arm64/-/pangram-cli-darwin-arm64-1.3.0.tgz", - "integrity": "sha512-0xVrviNztsNgeJRqILHSNK9ThbecCZImendjbKUFzSy8G6ftIwTDr+fYT2iu8dPU+2dQqqBO8qTgvriIX3mGCQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@microck/pangram-cli-darwin-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microck/pangram-cli-darwin-x64/-/pangram-cli-darwin-x64-1.3.0.tgz", - "integrity": "sha512-shSCNsEBegwvja8j498nI8mLvwGCxCl2VHhnETBy3r5rtNyZLsc08OVp52k0Qszd5+p3nniqlJQSqSy42CxlfA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@microck/pangram-cli-linux-arm64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microck/pangram-cli-linux-arm64/-/pangram-cli-linux-arm64-1.3.0.tgz", - "integrity": "sha512-5MFS5pytPLZDyA90AyvlY4i1uuH9xC5quJYYGDF0pr764MVvyTMqGjnyUXVIcZUnocBSSfDlJ8vk9S/uZGB9jA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@microck/pangram-cli-linux-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microck/pangram-cli-linux-x64/-/pangram-cli-linux-x64-1.3.0.tgz", - "integrity": "sha512-jTVuzW5ff1I67KQy6i/uXdAdar3ZNTGgPGCSCF9tLEslGNO2qtUQKVZA0dezSRvMVl1vR7gjH+yENshu7LBnNA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@microck/pangram-cli-win32-x64": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@microck/pangram-cli-win32-x64/-/pangram-cli-win32-x64-1.3.0.tgz", - "integrity": "sha512-DizaTd0gxOyrBA3ZJjAWD+7j7jziZMAOS+MoChwcG3qmqqVh4w3rBBRIMpykZ4WEEXoL039KRQWo7oU12+W0cA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/@microck/pangram-docs": { "resolved": "docs-app", "link": true @@ -9740,12 +9675,27 @@ "node": ">=20" }, "optionalDependencies": { - "@microck/pangram-cli-darwin-arm64": "1.3.0", - "@microck/pangram-cli-darwin-x64": "1.3.0", - "@microck/pangram-cli-linux-arm64": "1.3.0", - "@microck/pangram-cli-linux-x64": "1.3.0", - "@microck/pangram-cli-win32-x64": "1.3.0" + "@microck/pangram-cli-darwin-arm64": "1.3.1", + "@microck/pangram-cli-darwin-x64": "1.3.1", + "@microck/pangram-cli-linux-arm64": "1.3.1", + "@microck/pangram-cli-linux-x64": "1.3.1", + "@microck/pangram-cli-win32-x64": "1.3.1" } + }, + "npm/pangram-cli/node_modules/@microck/pangram-cli-darwin-arm64": { + "optional": true + }, + "npm/pangram-cli/node_modules/@microck/pangram-cli-darwin-x64": { + "optional": true + }, + "npm/pangram-cli/node_modules/@microck/pangram-cli-linux-arm64": { + "optional": true + }, + "npm/pangram-cli/node_modules/@microck/pangram-cli-linux-x64": { + "optional": true + }, + "npm/pangram-cli/node_modules/@microck/pangram-cli-win32-x64": { + "optional": true } } } diff --git a/package.json b/package.json index 17059d6..c9e0a89 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "docs:check": "npm run docs:generate && node --test scripts/check-docs.test.mjs && node scripts/check-docs.mjs && npm run check -w docs-app", "docs:generate": "node scripts/generate-docs.mjs", "docs:typecheck": "npm run generate -w docs-app && npm run typecheck -w docs-app", - "packages:check": "node scripts/check-packaging.mjs", + "packages:check": "node --test scripts/sync-platform-package-versions.test.mjs && node scripts/check-packaging.mjs", "tegami": "node scripts/tegami.mts", "test:mcp-conformance": "vitest run tools/mcp-conformance/applicability.test.ts --no-file-parallelism", "test:tui": "vitest run tools/tui-acceptance/tui-acceptance.test.ts --no-file-parallelism" diff --git a/scripts/sync-platform-package-versions.mjs b/scripts/sync-platform-package-versions.mjs new file mode 100644 index 0000000..b9e4a43 --- /dev/null +++ b/scripts/sync-platform-package-versions.mjs @@ -0,0 +1,16 @@ +import { readFile, writeFile } from "node:fs/promises"; +import { join } from "node:path"; +import { releasePlatforms } from "./release-platforms.mjs"; + +export async function syncPlatformPackageVersions(root = process.cwd()) { + const mainPath = join(root, "npm/pangram-cli/package.json"); + const main = JSON.parse(await readFile(mainPath, "utf8")); + for (const { directory } of releasePlatforms) { + const path = join(root, `npm/${directory}/package.json`); + const manifest = JSON.parse(await readFile(path, "utf8")); + manifest.version = main.version; + main.optionalDependencies[manifest.name] = main.version; + await writeFile(path, `${JSON.stringify(manifest, null, 2)}\n`); + } + await writeFile(mainPath, `${JSON.stringify(main, null, 2)}\n`); +} diff --git a/scripts/sync-platform-package-versions.test.mjs b/scripts/sync-platform-package-versions.test.mjs new file mode 100644 index 0000000..162e836 --- /dev/null +++ b/scripts/sync-platform-package-versions.test.mjs @@ -0,0 +1,34 @@ +import { test } from "node:test"; +import assert from "node:assert/strict"; +import { mkdtemp, mkdir, readFile, writeFile, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { releasePlatforms } from "./release-platforms.mjs"; +import { syncPlatformPackageVersions } from "./sync-platform-package-versions.mjs"; + +test("all native package versions follow the wrapper before lockfile/PR hooks", async () => { + const root = await mkdtemp(join(tmpdir(), "pangram-package-versions-")); + try { + await mkdir(join(root, "npm/pangram-cli"), { recursive: true }); + const dependencies = {}; + for (const { directory, os, cpu } of releasePlatforms) { + const name = `@microck/${directory}`; + dependencies[name] = "1.3.0"; + await mkdir(join(root, "npm", directory), { recursive: true }); + await writeFile(join(root, "npm", directory, "package.json"), JSON.stringify({ name, version: "1.3.0", os: [os], cpu: [cpu] })); + } + await writeFile(join(root, "npm/pangram-cli/package.json"), JSON.stringify({ version: "1.3.1", optionalDependencies: dependencies })); + await syncPlatformPackageVersions(root); + const main = JSON.parse(await readFile(join(root, "npm/pangram-cli/package.json"))); + for (const { directory, os, cpu } of releasePlatforms) { + const manifest = JSON.parse(await readFile(join(root, "npm", directory, "package.json"))); + assert.equal(manifest.version, main.version); + assert.equal(main.optionalDependencies[manifest.name], main.version); + assert.deepEqual(manifest.os, [os]); + assert.deepEqual(manifest.cpu, [cpu]); + } + const config = await readFile(new URL("./tegami.mts", import.meta.url), "utf8"); + assert.match(config, /async applyDraft\(\)/); + assert.doesNotMatch(config, /async applyCliDraft\(\)/); + } finally { await rm(root, { recursive: true, force: true }); } +}); diff --git a/scripts/tegami.mts b/scripts/tegami.mts index e5a2a39..df7e882 100644 --- a/scripts/tegami.mts +++ b/scripts/tegami.mts @@ -5,9 +5,10 @@ import type { TegamiPlugin } from "tegami"; import { cargo } from "tegami/plugins/cargo"; import { github } from "tegami/plugins/github"; import { execFile } from "node:child_process"; -import { readFile, writeFile } from "node:fs/promises"; +import { readFile } from "node:fs/promises"; import { promisify } from "node:util"; import { releasePlatforms } from "./release-platforms.mjs"; +import { syncPlatformPackageVersions } from "./sync-platform-package-versions.mjs"; const run = promisify(execFile); @@ -15,17 +16,10 @@ function platformPackagesPlugin(): TegamiPlugin { return { name: "pangram-platform-packages", enforce: "post", - async applyCliDraft() { - const mainPath = "npm/pangram-cli/package.json"; - const main = JSON.parse(await readFile(mainPath, "utf8")); - for (const { directory } of releasePlatforms) { - const path = `npm/${directory}/package.json`; - const manifest = JSON.parse(await readFile(path, "utf8")); - manifest.version = main.version; - main.optionalDependencies[manifest.name] = main.version; - await writeFile(path, `${JSON.stringify(manifest, null, 2)}\n`); - } - await writeFile(mainPath, `${JSON.stringify(main, null, 2)}\n`); + async applyDraft() { + // Run after npm's version writes, but before applyCliDraft updates the + // lockfile and GitHub snapshots the version branch. + await syncPlatformPackageVersions(); }, async willPublish({ pkg }) { if (pkg.name !== "@microck/pangram-cli") return; From c6dd20d34e539633646669416725dbb607b30314 Mon Sep 17 00:00:00 2001 From: Microck Date: Mon, 19 Oct 2026 22:24:02 -0400 Subject: [PATCH 3/3] fix: regenerate release docs and test the platform version hook --- docs-app/content/docs/reference/commands.mdx | 2 +- .../content/docs/reference/configuration.mdx | 2 +- docs-app/content/docs/reference/errors.mdx | 2 +- .../content/docs/reference/exit-codes.mdx | 2 +- docs-app/content/docs/reference/mcp-tools.mdx | 2 +- .../content/docs/reference/output-schema.mdx | 2 +- docs-app/content/docs/reference/progress.mdx | 2 +- .../docs/reference/update-manifest.mdx | 2 +- docs-app/public/llms-full.txt | 16 +++---- .../public/markdown/reference/commands.md | 2 +- .../markdown/reference/configuration.md | 2 +- docs-app/public/markdown/reference/errors.md | 2 +- .../public/markdown/reference/exit-codes.md | 2 +- .../public/markdown/reference/mcp-tools.md | 2 +- .../markdown/reference/output-schema.md | 2 +- .../public/markdown/reference/progress.md | 2 +- .../markdown/reference/update-manifest.md | 2 +- scripts/platform-packages-plugin.mts | 47 +++++++++++++++++++ .../sync-platform-package-versions.test.mjs | 8 ++-- scripts/tegami.mts | 47 +------------------ 20 files changed, 75 insertions(+), 75 deletions(-) create mode 100644 scripts/platform-packages-plugin.mts diff --git a/docs-app/content/docs/reference/commands.mdx b/docs-app/content/docs/reference/commands.mdx index 2a72cf5..c2631e1 100644 --- a/docs-app/content/docs/reference/commands.mdx +++ b/docs-app/content/docs/reference/commands.mdx @@ -3,7 +3,7 @@ title: Command index description: Generated command paths, availability, and arguments. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Command | Kind | Availability | Arguments | | --- | --- | --- | --- | diff --git a/docs-app/content/docs/reference/configuration.mdx b/docs-app/content/docs/reference/configuration.mdx index 38ac464..854dc02 100644 --- a/docs-app/content/docs/reference/configuration.mdx +++ b/docs-app/content/docs/reference/configuration.mdx @@ -3,7 +3,7 @@ title: Configuration reference description: Generated configuration schema fields and contract link. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Field | Type | Required | | --- | --- | --- | diff --git a/docs-app/content/docs/reference/errors.mdx b/docs-app/content/docs/reference/errors.mdx index 1325ac3..b82690d 100644 --- a/docs-app/content/docs/reference/errors.mdx +++ b/docs-app/content/docs/reference/errors.mdx @@ -3,7 +3,7 @@ title: Error catalog description: Generated stable error codes, categories, and retry defaults. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Code | Category | Retry by default | Contextual retry | | --- | --- | --- | --- | diff --git a/docs-app/content/docs/reference/exit-codes.mdx b/docs-app/content/docs/reference/exit-codes.mdx index 87e6181..abdb1d3 100644 --- a/docs-app/content/docs/reference/exit-codes.mdx +++ b/docs-app/content/docs/reference/exit-codes.mdx @@ -3,7 +3,7 @@ title: Exit codes description: Generated stable process exit values. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Code | Meaning | | --- | --- | diff --git a/docs-app/content/docs/reference/mcp-tools.mdx b/docs-app/content/docs/reference/mcp-tools.mdx index ad17acd..904722e 100644 --- a/docs-app/content/docs/reference/mcp-tools.mdx +++ b/docs-app/content/docs/reference/mcp-tools.mdx @@ -3,7 +3,7 @@ title: MCP tools description: Generated MCP protocol version, tool inventory, and annotations. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. Protocol: `2026-07-28`. diff --git a/docs-app/content/docs/reference/output-schema.mdx b/docs-app/content/docs/reference/output-schema.mdx index f356a19..08f7622 100644 --- a/docs-app/content/docs/reference/output-schema.mdx +++ b/docs-app/content/docs/reference/output-schema.mdx @@ -3,7 +3,7 @@ title: Output schema description: Canonical success and failure envelope contract. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. Every structured CLI and MCP result starts from the canonical typed envelope. diff --git a/docs-app/content/docs/reference/progress.mdx b/docs-app/content/docs/reference/progress.mdx index 87601c0..c8b9db4 100644 --- a/docs-app/content/docs/reference/progress.mdx +++ b/docs-app/content/docs/reference/progress.mdx @@ -3,7 +3,7 @@ title: Progress events description: Canonical stderr progress behavior for long operations. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. `--progress jsonl` writes canonical progress envelopes to stderr. Final command output remains on stdout. Progress never includes credentials, submitted content, plagiarism matches, or public links. diff --git a/docs-app/content/docs/reference/update-manifest.mdx b/docs-app/content/docs/reference/update-manifest.mdx index 396ff2b..2cf6cf0 100644 --- a/docs-app/content/docs/reference/update-manifest.mdx +++ b/docs-app/content/docs/reference/update-manifest.mdx @@ -3,7 +3,7 @@ title: Update manifest description: Generated signed-manifest fields and verification boundary. --- -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. The detached Ed25519 signature covers the exact downloaded manifest bytes. diff --git a/docs-app/public/llms-full.txt b/docs-app/public/llms-full.txt index 81b6df8..1be30cc 100644 --- a/docs-app/public/llms-full.txt +++ b/docs-app/public/llms-full.txt @@ -444,7 +444,7 @@ those permissions. Source: https://pangram.micr.dev/docs/reference/commands -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Command | Kind | Availability | Arguments | | --- | --- | --- | --- | @@ -500,7 +500,7 @@ Generated from Pangram CLI 1.3.0 and schema major 1. Source: https://pangram.micr.dev/docs/reference/configuration -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Field | Type | Required | | --- | --- | --- | @@ -530,7 +530,7 @@ Environment credentials never enter general configuration output. Source: https://pangram.micr.dev/docs/reference/errors -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Code | Category | Retry by default | Contextual retry | | --- | --- | --- | --- | @@ -577,7 +577,7 @@ Generated from Pangram CLI 1.3.0 and schema major 1. Source: https://pangram.micr.dev/docs/reference/exit-codes -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Code | Meaning | | --- | --- | @@ -613,7 +613,7 @@ has no prompts, subscriptions, HTTP transport, or experimental Tasks extension. Source: https://pangram.micr.dev/docs/reference/mcp-tools -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. Protocol: `2026-07-28`. @@ -643,7 +643,7 @@ Protocol: `2026-07-28`. Source: https://pangram.micr.dev/docs/reference/output-schema -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. Every structured CLI and MCP result starts from the canonical typed envelope. @@ -669,7 +669,7 @@ exact archive passes the native smoke test required by the observable contract. Source: https://pangram.micr.dev/docs/reference/progress -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. `--progress jsonl` writes canonical progress envelopes to stderr. Final command output remains on stdout. Progress never includes credentials, submitted content, plagiarism matches, or public links. @@ -693,7 +693,7 @@ would do the same. Source: https://pangram.micr.dev/docs/reference/update-manifest -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. The detached Ed25519 signature covers the exact downloaded manifest bytes. diff --git a/docs-app/public/markdown/reference/commands.md b/docs-app/public/markdown/reference/commands.md index 5d37982..6b5c9b2 100644 --- a/docs-app/public/markdown/reference/commands.md +++ b/docs-app/public/markdown/reference/commands.md @@ -1,6 +1,6 @@ # Command index -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Command | Kind | Availability | Arguments | | --- | --- | --- | --- | diff --git a/docs-app/public/markdown/reference/configuration.md b/docs-app/public/markdown/reference/configuration.md index 01dda40..94cdcc7 100644 --- a/docs-app/public/markdown/reference/configuration.md +++ b/docs-app/public/markdown/reference/configuration.md @@ -1,6 +1,6 @@ # Configuration reference -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Field | Type | Required | | --- | --- | --- | diff --git a/docs-app/public/markdown/reference/errors.md b/docs-app/public/markdown/reference/errors.md index 7ff9324..53aa0ed 100644 --- a/docs-app/public/markdown/reference/errors.md +++ b/docs-app/public/markdown/reference/errors.md @@ -1,6 +1,6 @@ # Error catalog -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Code | Category | Retry by default | Contextual retry | | --- | --- | --- | --- | diff --git a/docs-app/public/markdown/reference/exit-codes.md b/docs-app/public/markdown/reference/exit-codes.md index ce3a303..9b98589 100644 --- a/docs-app/public/markdown/reference/exit-codes.md +++ b/docs-app/public/markdown/reference/exit-codes.md @@ -1,6 +1,6 @@ # Exit codes -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. | Code | Meaning | | --- | --- | diff --git a/docs-app/public/markdown/reference/mcp-tools.md b/docs-app/public/markdown/reference/mcp-tools.md index ca52e95..41cddf8 100644 --- a/docs-app/public/markdown/reference/mcp-tools.md +++ b/docs-app/public/markdown/reference/mcp-tools.md @@ -1,6 +1,6 @@ # MCP tools -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. Protocol: `2026-07-28`. diff --git a/docs-app/public/markdown/reference/output-schema.md b/docs-app/public/markdown/reference/output-schema.md index c4c38ec..e059e3c 100644 --- a/docs-app/public/markdown/reference/output-schema.md +++ b/docs-app/public/markdown/reference/output-schema.md @@ -1,6 +1,6 @@ # Output schema -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. Every structured CLI and MCP result starts from the canonical typed envelope. diff --git a/docs-app/public/markdown/reference/progress.md b/docs-app/public/markdown/reference/progress.md index 48d9ab3..481d031 100644 --- a/docs-app/public/markdown/reference/progress.md +++ b/docs-app/public/markdown/reference/progress.md @@ -1,6 +1,6 @@ # Progress events -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. `--progress jsonl` writes canonical progress envelopes to stderr. Final command output remains on stdout. Progress never includes credentials, submitted content, plagiarism matches, or public links. diff --git a/docs-app/public/markdown/reference/update-manifest.md b/docs-app/public/markdown/reference/update-manifest.md index 7914633..8cf0404 100644 --- a/docs-app/public/markdown/reference/update-manifest.md +++ b/docs-app/public/markdown/reference/update-manifest.md @@ -1,6 +1,6 @@ # Update manifest -Generated from Pangram CLI 1.3.0 and schema major 1. +Generated from Pangram CLI 1.3.1 and schema major 1. The detached Ed25519 signature covers the exact downloaded manifest bytes. diff --git a/scripts/platform-packages-plugin.mts b/scripts/platform-packages-plugin.mts new file mode 100644 index 0000000..18abe74 --- /dev/null +++ b/scripts/platform-packages-plugin.mts @@ -0,0 +1,47 @@ +import type { TegamiPlugin } from "tegami"; +import { execFile } from "node:child_process"; +import { readFile } from "node:fs/promises"; +import { promisify } from "node:util"; +import { releasePlatforms } from "./release-platforms.mjs"; +import { syncPlatformPackageVersions } from "./sync-platform-package-versions.mjs"; + +const run = promisify(execFile); + +export function platformPackagesPlugin(root = process.cwd()): TegamiPlugin { + return { + name: "pangram-platform-packages", + enforce: "post", + async applyDraft() { + // Run after npm's version writes, but before applyCliDraft updates the + // lockfile and GitHub snapshots the version branch. + await syncPlatformPackageVersions(root); + }, + async willPublish({ pkg }) { + if (pkg.name !== "@microck/pangram-cli") return; + for (const { directory } of releasePlatforms) { + const path = `npm/${directory}`; + const manifest = JSON.parse(await readFile(`${path}/package.json`, "utf8")); + // `npm view` can exit 0 with empty output for a version that does + // not exist, so only an exact version echo counts as published. + try { + const { stdout } = await run("npm", [ + "view", + `${manifest.name}@${manifest.version}`, + "version", + ]); + if (stdout.trim() === manifest.version) continue; + } catch (error) { + const stderr = + error && typeof error === "object" && "stderr" in error + ? String(error.stderr) + : ""; + if (!stderr.includes("E404")) throw error; + } + await run("npm", ["publish", "--access", "public", "--provenance"], { + cwd: path, + }); + } + }, + }; +} + diff --git a/scripts/sync-platform-package-versions.test.mjs b/scripts/sync-platform-package-versions.test.mjs index 162e836..937d2ba 100644 --- a/scripts/sync-platform-package-versions.test.mjs +++ b/scripts/sync-platform-package-versions.test.mjs @@ -4,7 +4,7 @@ import { mkdtemp, mkdir, readFile, writeFile, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { releasePlatforms } from "./release-platforms.mjs"; -import { syncPlatformPackageVersions } from "./sync-platform-package-versions.mjs"; +import { platformPackagesPlugin } from "./platform-packages-plugin.mts"; test("all native package versions follow the wrapper before lockfile/PR hooks", async () => { const root = await mkdtemp(join(tmpdir(), "pangram-package-versions-")); @@ -18,7 +18,7 @@ test("all native package versions follow the wrapper before lockfile/PR hooks", await writeFile(join(root, "npm", directory, "package.json"), JSON.stringify({ name, version: "1.3.0", os: [os], cpu: [cpu] })); } await writeFile(join(root, "npm/pangram-cli/package.json"), JSON.stringify({ version: "1.3.1", optionalDependencies: dependencies })); - await syncPlatformPackageVersions(root); + await platformPackagesPlugin(root).applyDraft(); const main = JSON.parse(await readFile(join(root, "npm/pangram-cli/package.json"))); for (const { directory, os, cpu } of releasePlatforms) { const manifest = JSON.parse(await readFile(join(root, "npm", directory, "package.json"))); @@ -27,8 +27,6 @@ test("all native package versions follow the wrapper before lockfile/PR hooks", assert.deepEqual(manifest.os, [os]); assert.deepEqual(manifest.cpu, [cpu]); } - const config = await readFile(new URL("./tegami.mts", import.meta.url), "utf8"); - assert.match(config, /async applyDraft\(\)/); - assert.doesNotMatch(config, /async applyCliDraft\(\)/); + } finally { await rm(root, { recursive: true, force: true }); } }); diff --git a/scripts/tegami.mts b/scripts/tegami.mts index df7e882..4b6bb24 100644 --- a/scripts/tegami.mts +++ b/scripts/tegami.mts @@ -1,54 +1,9 @@ #!/usr/bin/env node import { tegami } from "tegami"; import { runCli } from "tegami/cli"; -import type { TegamiPlugin } from "tegami"; import { cargo } from "tegami/plugins/cargo"; import { github } from "tegami/plugins/github"; -import { execFile } from "node:child_process"; -import { readFile } from "node:fs/promises"; -import { promisify } from "node:util"; -import { releasePlatforms } from "./release-platforms.mjs"; -import { syncPlatformPackageVersions } from "./sync-platform-package-versions.mjs"; - -const run = promisify(execFile); - -function platformPackagesPlugin(): TegamiPlugin { - return { - name: "pangram-platform-packages", - enforce: "post", - async applyDraft() { - // Run after npm's version writes, but before applyCliDraft updates the - // lockfile and GitHub snapshots the version branch. - await syncPlatformPackageVersions(); - }, - async willPublish({ pkg }) { - if (pkg.name !== "@microck/pangram-cli") return; - for (const { directory } of releasePlatforms) { - const path = `npm/${directory}`; - const manifest = JSON.parse(await readFile(`${path}/package.json`, "utf8")); - // `npm view` can exit 0 with empty output for a version that does - // not exist, so only an exact version echo counts as published. - try { - const { stdout } = await run("npm", [ - "view", - `${manifest.name}@${manifest.version}`, - "version", - ]); - if (stdout.trim() === manifest.version) continue; - } catch (error) { - const stderr = - error && typeof error === "object" && "stderr" in error - ? String(error.stderr) - : ""; - if (!stderr.includes("E404")) throw error; - } - await run("npm", ["publish", "--access", "public", "--provenance"], { - cwd: path, - }); - } - }, - }; -} +import { platformPackagesPlugin } from "./platform-packages-plugin.mts"; const paper = tegami({ plugins: [