Skip to content

chore(release): 3.0.0 - #1242

Merged
os-zhuang merged 4 commits into
mainfrom
release/v3.0.0
Aug 23, 2026
Merged

os-zhuang merged 4 commits into
mainfrom
release/v3.0.0

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Cuts 3.0.0, the first release since v2.2.2 (2026-07-20) — 388 commits and 292 changesets of unreleased work, including the 17.1.0 platform upgrade.

Why major

One recorded major changeset, ownership-owner-id-548.md:

Owner is now one field, and changing it really does transfer the record. Every business object used to carry two owners — the Owner you saw on forms, views, highlight strips and reports, and a separate hidden column the platform used for every access decision. Reassigning Owner moved the record in every list and report and moved no access at all.

That changes access behaviour for every existing install, so it takes the major. The version is changeset version's arithmetic, not a hand-picked number.

What is in the commit

  • 292 changesets consumed, CHANGELOG.md generated.
  • Version sources aligned per docs/RELEASE_STRATEGY.md §Version Sources: package.json, objectstack.config.ts, CHANGELOG.md.
  • The surfaces the docs-drift guard binds to the manifest: version tables in docs/RELEASE_STRATEGY.md and docs/ARCHITECTURE.md, the transcript in docs/STATUS.md, the README badge, and the latest-release heading in content/docs/whats-new.{mdx,zh-Hans.mdx,zh-Hant.mdx}.

No source or metadata changes — this is the release commit only.

Verification

gate result
pnpm validate ✓
pnpm typecheck ✓
pnpm lint ✓
pnpm lint:i18n-gate ✓
pnpm hygiene ✓
pnpm hygiene:tokens ✓
pnpm build ✓ (artifact rebuilt at 3.0.0, 2.0 MB)
pnpm test 2798 passed

DRY_RUN=1 pnpm publish:marketplace reaches POST /api/v1/cloud/packages/:id/versions with version: 3.0.0.

test/source-token-ratchet.test.ts and test/case-sla-matrix.test.ts fail on the author's machine identically with and without this change (11 failed either way, on clean origin/main too), pass when run in isolation, and are green in CI — pre-existing and environmental, not release state.

After merge

v3.0.0 tag → release.yml → GitHub Release → staging publish (cloud.objectos.app), then a manual publish-production.yml dispatch once staging is verified.

Publishing at 2.2.2 would have been a silent no-op: the version is already live on both environments (staging + production runs, 2026-07-20), and publish-marketplace.mjs treats a duplicate-version 409 as a no-op. Without this bump the workflows go green and ship nothing.

Noted separately, not fixed here

scripts/publish-marketplace.mjs:176 sends release_notes: mp.releaseNotes, and objectstack.manifest.json declares no releaseNotes field — so every publish so far has pushed undefined and the marketplace listing carries no notes. CHANGELOG.md now holds the 3.0.0 section that belongs there. Filed as a follow-up rather than changed mid-release.

🤖 Generated with Claude Code

Consume the 292 pending changesets and cut the first release since v2.2.2
(2026-07-20). The bump is a major on one recorded change: owner is now a
single field and reassigning it really transfers the record
(.changeset/ownership-owner-id-548.md), which changes access behaviour for
every existing install.

Version sources aligned per docs/RELEASE_STRATEGY.md §Version Sources —
package.json, objectstack.config.ts, CHANGELOG.md — plus the surfaces the
docs-drift guard binds to the manifest: the version tables in
docs/RELEASE_STRATEGY.md and docs/ARCHITECTURE.md, the transcript in
docs/STATUS.md, the README badge, and the latest-release heading in
content/docs/whats-new.{mdx,zh-Hans.mdx,zh-Hant.mdx}.

Gates: validate, typecheck, lint, lint:i18n-gate, hygiene, hygiene:tokens and
build all green; 2798 tests pass. test/source-token-ratchet.test.ts and
test/case-sla-matrix.test.ts fail identically with and without this change on
this machine (11 failed either way), pass in isolation, and are green in CI —
pre-existing and environmental, not release state.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 23, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hotcrm Ignored Ignored Aug 23, 2026 5:10am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation dependencies Dependency bumps and lockfile changes configuration Build and app configuration files labels Aug 23, 2026
@os-zhuang os-zhuang added the skip-changeset PR ships nothing to users (pure CI/docs chore) — changeset gate waived label Aug 23, 2026
os-zhuang and others added 2 commits August 23, 2026 12:26
package-lock.json records package.json's version, so the bump left it stale
and `check-stackblitz-lock` failed the release PR. It is a fifth version
source, guarded by CI rather than by the docs-drift test — worth adding to
docs/RELEASE_STRATEGY.md §Version Sources so the next releaser finds it before
CI does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…lready wrote, and tell 2.x upgraders what changed

Two halves of the same gap: 3.0.0 carries a breaking change to Owner
semantics, and neither surface an installer reads was going to mention it.

**Marketplace listing.** `publish-marketplace.mjs` sent
`release_notes: mp.releaseNotes`, and `objectstack.manifest.json` has never
declared that key — so every publish to date pushed `undefined` and the listing
carried no notes, while the notes the changesets had already written sat in
CHANGELOG.md unread. The script now reads the section for the version being
published. The whole section is the wrong payload (3.0.0's is 649 KB, 292
changesets deep), so it prefers `### Major Changes` — the part that changes the
reader's deployment — falls back to the head of the section for releases
without one, caps at 8 KB, and still yields to `mp.releaseNotes` if a release
ever wants hand-written notes. Measured on this release: 3,938 chars, the
owner-unification entry including its backfill instructions.

**Docs.** `content/docs/whats-new.{mdx,zh-Hans.mdx,zh-Hant.mdx}` gain an
"Upgrading from 2.x" section: what the two-owner split was, that reassignment
is now its own permission, and that `pnpm backfill:owner` reconciles a
deployment where somebody reassigned an Owner under 2.x. The page deliberately
keeps no version history — that is CHANGELOG.md's job, and a hand-copy of it is
how this section once advertised a "v5.0" that never existed — so this is an
upgrade note attached to the current release, not a new release table.

The app artifact is unchanged: no metadata or manifest edit, only the publish
script and three doc pages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions github-actions Bot added the ci/cd CI plumbing and the verification pipeline label Aug 23, 2026
Comment thread scripts/publish-marketplace.mjs Fixed
…rom the version

CodeQL flagged the previous line high (js/incomplete-sanitization): it built
`new RegExp(\`^## ${version.replace(/\\./g, '\\\\.')}\`)` — hand-escaping one
metacharacter and leaving the rest, which is the incomplete-sanitization shape
whether or not today's input happens to be a semver.

Headings are now found with one static pattern and the version is compared as
a string, so no part of the input is ever treated as a pattern and nothing
needs escaping. Same output: 3,938 chars on this release.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd CI plumbing and the verification pipeline configuration Build and app configuration files dependencies Dependency bumps and lockfile changes documentation Improvements or additions to documentation skip-changeset PR ships nothing to users (pure CI/docs chore) — changeset gate waived

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants