From d56049fa63534cdeaa50b4c49cf4986941950879 Mon Sep 17 00:00:00 2001 From: John Wang Date: Mon, 2 Nov 2026 09:36:36 -0800 Subject: [PATCH 1/3] build: rebuild every package before it is published Each package's prepublishOnly script runs its build, so pnpm publish uploads a dist/ built from the commit being published rather than one left from an earlier build. Co-Authored-By: Claude Opus 5.5 --- packages/api-client/package.json | 1 + packages/auth/package.json | 1 + packages/chat/package.json | 1 + packages/console/package.json | 1 + packages/design-tokens/package.json | 1 + packages/host/package.json | 1 + packages/invites/package.json | 1 + packages/pages/package.json | 1 + packages/shell/package.json | 1 + packages/speech/package.json | 1 + packages/telemetry/package.json | 1 + packages/tenant/package.json | 1 + packages/ui/package.json | 1 + 13 files changed, 13 insertions(+) diff --git a/packages/api-client/package.json b/packages/api-client/package.json index ed9db81..1687f21 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/auth/package.json b/packages/auth/package.json index e0ba439..6109154 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "typecheck": "tsc --noEmit", "lint": "eslint src/", diff --git a/packages/chat/package.json b/packages/chat/package.json index eeb0d6c..1ecceae 100644 --- a/packages/chat/package.json +++ b/packages/chat/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/console/package.json b/packages/console/package.json index 2224a7d..9be9452 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -22,6 +22,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/design-tokens/package.json b/packages/design-tokens/package.json index 6b6e57d..e33fd9e 100644 --- a/packages/design-tokens/package.json +++ b/packages/design-tokens/package.json @@ -22,6 +22,7 @@ }, "scripts": { "build": "tsup && pnpm run build:css", + "prepublishOnly": "pnpm run build", "build:css": "node scripts/generate-css.js", "dev": "tsup --watch", "lint": "eslint src/", diff --git a/packages/host/package.json b/packages/host/package.json index c58ebce..f8e6800 100644 --- a/packages/host/package.json +++ b/packages/host/package.json @@ -27,6 +27,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/invites/package.json b/packages/invites/package.json index 421939b..cfc78cf 100644 --- a/packages/invites/package.json +++ b/packages/invites/package.json @@ -22,6 +22,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/pages/package.json b/packages/pages/package.json index 3426e04..b9b8b8e 100644 --- a/packages/pages/package.json +++ b/packages/pages/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/shell/package.json b/packages/shell/package.json index 0a0e5ac..49ae50e 100644 --- a/packages/shell/package.json +++ b/packages/shell/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/speech/package.json b/packages/speech/package.json index 0942923..501094f 100644 --- a/packages/speech/package.json +++ b/packages/speech/package.json @@ -28,6 +28,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 9ba8649..14c0a52 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "lint": "eslint src/", "typecheck": "tsc --noEmit" diff --git a/packages/tenant/package.json b/packages/tenant/package.json index c12eb47..1a8ed42 100644 --- a/packages/tenant/package.json +++ b/packages/tenant/package.json @@ -21,6 +21,7 @@ }, "scripts": { "build": "tsup", + "prepublishOnly": "pnpm run build", "dev": "tsup --watch", "typecheck": "tsc --noEmit", "lint": "eslint src/", diff --git a/packages/ui/package.json b/packages/ui/package.json index b3cb0a2..48a0309 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -38,6 +38,7 @@ }, "scripts": { "build": "tsup && pnpm run build:css", + "prepublishOnly": "pnpm run build", "build:css": "node scripts/build-css.js", "dev": "tsup --watch", "lint": "eslint src/", From e605282e673b6cfe757c8e45456a6d5491f5499d Mon Sep 17 00:00:00 2001 From: John Wang Date: Mon, 2 Nov 2026 09:36:36 -0800 Subject: [PATCH 2/3] docs(guides): note that publishing rebuilds each package Co-Authored-By: Claude Opus 5.5 --- docs/guides/releasing.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/guides/releasing.md b/docs/guides/releasing.md index 6afb23c..10a83e9 100644 --- a/docs/guides/releasing.md +++ b/docs/guides/releasing.md @@ -68,6 +68,13 @@ pnpm install --frozen-lockfile pnpm build ``` +Each package's `prepublishOnly` script builds it again as it is published, +so `pnpm publish` never uploads a `dist/` left from an earlier commit. A +build from before a `git pull` once shipped `@plexusone/speech` 0.1.0 +without its release's fixes. Run the full `pnpm build` first all the same: +a package's type declarations are built against the other packages' +`dist/`. + Sign in right before publishing: tokens from `npm login` are short-lived, and an expired one makes `publish` fail with `E404` on `PUT`. If `npm whoami` fails, run `npm login` again. From 595d40dfd17f6d3d921343f7f355b6eb9fcdd2b3 Mon Sep 17 00:00:00 2001 From: John Wang Date: Mon, 2 Nov 2026 09:39:37 -0800 Subject: [PATCH 3/3] docs(release): add v0.6.1 changelog and release notes @plexusone/speech goes to 0.1.1. Refs: RMI-SYSTEMFORGEWEB-031 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.json | 31 +++++++++++++++++++++++++++++++ CHANGELOG.md | 22 +++++++++++++++++++++- docs/changelog.md | 22 +++++++++++++++++++++- docs/packages/speech.md | 2 +- docs/releases/v0.6.1.md | 36 ++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + packages/speech/package.json | 2 +- 7 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 docs/releases/v0.6.1.md diff --git a/CHANGELOG.json b/CHANGELOG.json index ce55e07..0158328 100644 --- a/CHANGELOG.json +++ b/CHANGELOG.json @@ -6,6 +6,37 @@ "commitConvention": "conventional", "maintainers": ["grokify", "johncwang@gmail.com"], "releases": [ + { + "version": "v0.6.1", + "date": "2026-11-02", + "highlights": [ + { + "description": "`@plexusone/speech` 0.1.1: the first build with everything v0.6.0 describes; 0.1.0 on npm was built from an earlier commit", + "commit": "d56049f" + } + ], + "fixed": [ + { + "description": "`@plexusone/speech` 0.1.0 was published from a `dist/` built before v0.6.0's last changes. 0.1.1 has them: words without the punctuation around them and no dashes reported as words, dictation that does not repeat Android's partial results, whole words such as \"don't\" in Safari, and one copy of the speaking code shared by the main and React entry points", + "commit": "872a64c" + } + ], + "infrastructure": [ + { + "description": "Every package rebuilds in `prepublishOnly`, so `pnpm publish` cannot upload a `dist/` from an earlier commit", + "commit": "d56049f" + } + ], + "documentation": [ + { + "description": "The release guide notes that publishing rebuilds each package", + "commit": "e605282" + }, + { + "description": "v0.6.1 release notes" + } + ] + }, { "version": "v0.6.0", "date": "2026-11-02", diff --git a/CHANGELOG.md b/CHANGELOG.md index 70ffd26..03a6c62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,25 @@ and this changelog is generated by [Structured Changelog](https://github.com/gro ## [Unreleased] +## [v0.6.1] - 2026-11-02 + +### Highlights + +- `@plexusone/speech` 0.1.1: the first build with everything v0.6.0 describes; 0.1.0 on npm was built from an earlier commit + +### Fixed + +- `@plexusone/speech` 0.1.0 was published from a `dist/` built before v0.6.0's last changes. 0.1.1 has them: words without the punctuation around them and no dashes reported as words, dictation that does not repeat Android's partial results, whole words such as "don't" in Safari, and one copy of the speaking code shared by the main and React entry points ([`872a64c`](https://github.com/plexusone/systemforge-web/commit/872a64c)) + +### Documentation + +- The release guide notes that publishing rebuilds each package ([`e605282`](https://github.com/plexusone/systemforge-web/commit/e605282)) +- v0.6.1 release notes + +### Infrastructure + +- Every package rebuilds in `prepublishOnly`, so `pnpm publish` cannot upload a `dist/` from an earlier commit ([`d56049f`](https://github.com/plexusone/systemforge-web/commit/d56049f)) + ## [v0.6.0] - 2026-11-02 ### Highlights @@ -302,7 +321,8 @@ and this changelog is generated by [Structured Changelog](https://github.com/gro - Shared pnpm workflows from grokify/.github ([`bb07c1d`](https://github.com/plexusone/systemforge-web/commit/bb07c1d)) -[unreleased]: https://github.com/plexusone/systemforge-web/compare/v0.6.0...HEAD +[unreleased]: https://github.com/plexusone/systemforge-web/compare/v0.6.1...HEAD +[v0.6.1]: https://github.com/plexusone/systemforge-web/compare/v0.6.0...v0.6.1 [v0.6.0]: https://github.com/plexusone/systemforge-web/compare/v0.5.1...v0.6.0 [v0.5.1]: https://github.com/plexusone/systemforge-web/compare/v0.5.0...v0.5.1 [v0.5.0]: https://github.com/plexusone/systemforge-web/compare/v0.4.0...v0.5.0 diff --git a/docs/changelog.md b/docs/changelog.md index 70ffd26..03a6c62 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,6 +9,25 @@ and this changelog is generated by [Structured Changelog](https://github.com/gro ## [Unreleased] +## [v0.6.1] - 2026-11-02 + +### Highlights + +- `@plexusone/speech` 0.1.1: the first build with everything v0.6.0 describes; 0.1.0 on npm was built from an earlier commit + +### Fixed + +- `@plexusone/speech` 0.1.0 was published from a `dist/` built before v0.6.0's last changes. 0.1.1 has them: words without the punctuation around them and no dashes reported as words, dictation that does not repeat Android's partial results, whole words such as "don't" in Safari, and one copy of the speaking code shared by the main and React entry points ([`872a64c`](https://github.com/plexusone/systemforge-web/commit/872a64c)) + +### Documentation + +- The release guide notes that publishing rebuilds each package ([`e605282`](https://github.com/plexusone/systemforge-web/commit/e605282)) +- v0.6.1 release notes + +### Infrastructure + +- Every package rebuilds in `prepublishOnly`, so `pnpm publish` cannot upload a `dist/` from an earlier commit ([`d56049f`](https://github.com/plexusone/systemforge-web/commit/d56049f)) + ## [v0.6.0] - 2026-11-02 ### Highlights @@ -302,7 +321,8 @@ and this changelog is generated by [Structured Changelog](https://github.com/gro - Shared pnpm workflows from grokify/.github ([`bb07c1d`](https://github.com/plexusone/systemforge-web/commit/bb07c1d)) -[unreleased]: https://github.com/plexusone/systemforge-web/compare/v0.6.0...HEAD +[unreleased]: https://github.com/plexusone/systemforge-web/compare/v0.6.1...HEAD +[v0.6.1]: https://github.com/plexusone/systemforge-web/compare/v0.6.0...v0.6.1 [v0.6.0]: https://github.com/plexusone/systemforge-web/compare/v0.5.1...v0.6.0 [v0.5.1]: https://github.com/plexusone/systemforge-web/compare/v0.5.0...v0.5.1 [v0.5.0]: https://github.com/plexusone/systemforge-web/compare/v0.4.0...v0.5.0 diff --git a/docs/packages/speech.md b/docs/packages/speech.md index 8cce159..f4f0097 100644 --- a/docs/packages/speech.md +++ b/docs/packages/speech.md @@ -210,7 +210,7 @@ Speech and listening stop when the component unmounts. The promises from `window.PlexusSpeech` with the same functions as the main entry point: ```html - + diff --git a/docs/releases/v0.6.1.md b/docs/releases/v0.6.1.md new file mode 100644 index 0000000..485875a --- /dev/null +++ b/docs/releases/v0.6.1.md @@ -0,0 +1,36 @@ +# v0.6.1 Release Notes + +**Release Date:** 2026-11-02 + +`@plexusone/speech` 0.1.1, the build v0.6.0 describes. The other packages +are unchanged apart from how they are published. + +## Highlights + +- **`@plexusone/speech` 0.1.1 has everything in v0.6.0.** 0.1.0 on npm was + published from a build of an earlier commit and is now deprecated. It + works, but it lacks v0.6.0's last changes: + - words are marked with the punctuation around them, and a dash can be + reported as a word; + - dictation on Chrome for Android repeats each partial result; + - in Safari, a word with punctuation inside it, such as "don't" or + "3.5", is cut short; + - the main and React entry points each have their own copy of the + speaking code, so `stopSpeaking()` cannot stop speech started by + `useSpeech`. + +- **Publishing rebuilds each package.** Every package's `prepublishOnly` + script runs its build, so `pnpm publish` uploads a build of the commit + being published. + +## Installation + +```bash +pnpm add @plexusone/speech@^0.1.1 +``` + +## Upgrading + +Move from 0.1.0 to 0.1.1; nothing else changes. The standalone build's +CDN address names the version, so a page that loads +`@plexusone/speech@0.1.0/dist/speech.global.js` should load `@0.1.1`. diff --git a/mkdocs.yml b/mkdocs.yml index 762b92b..e8a05c4 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -89,6 +89,7 @@ nav: - Tasks: specs/initiatives/invention/productgraph/TASKS.md - Releases: - Changelog: changelog.md + - v0.6.1: releases/v0.6.1.md - v0.6.0: releases/v0.6.0.md - v0.5.1: releases/v0.5.1.md - v0.5.0: releases/v0.5.0.md diff --git a/packages/speech/package.json b/packages/speech/package.json index 501094f..e95b050 100644 --- a/packages/speech/package.json +++ b/packages/speech/package.json @@ -1,6 +1,6 @@ { "name": "@plexusone/speech", - "version": "0.1.0", + "version": "0.1.1", "description": "Browser text-to-speech and speech-to-text, with React hooks and a standalone build", "homepage": "https://plexusone.github.io/systemforge-web/packages/speech/", "main": "./dist/index.js",