Skip to content

chore(deps): 升级 @objectstack/* 到 17.0.0-rc.5 - #1056

Merged
os-zhuang merged 2 commits into
mainfrom
claude/hotcrm-objectstack-upgrade-kmkdl0
Aug 7, 2026
Merged

chore(deps): 升级 @objectstack/* 到 17.0.0-rc.5#1056
os-zhuang merged 2 commits into
mainfrom
claude/hotcrm-objectstack-upgrade-kmkdl0

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Description

Upgrades every @objectstack/* dependency from 17.0.0-rc.4 to 17.0.0-rc.5 and moves the declared protocol range to match.

No app metadata had to change to absorb it — that is the finding of this PR, not a gap in it. rc.5 ships three breaking changes and all three land outside what HotCRM authors. Each was checked against the repo rather than assumed:

rc.5 breaking change Why HotCRM is unaffected
system-data bucket no longer defaults to CSV import (spec, upstream #4671) HotCRM declares no system-data object, and no page of its admin docs points an administrator at CSV for the user↔position / user↔permission-set / position↔permission-set bindings. The authorization boundary is unchanged either way — import is an affordance, and CSV-written rows already went through the same delegated-admin, RLS and permission-set adjudication as hand-typed ones.
Transaction handles no longer cross data sources; business writes across them are refused, system ledgers carve out (objectql, upstream #5351) Only bites installs registering a second data source. HotCRM registers none — a clean boot reports Tenancy: single and one SqlDriver(better-sqlite3). Confirmed live: 242 sys_audit_log rows landed alongside the seed.
subscribeMetadata narrowed its type to MetadataEventSubject (client, upstream #4627) HotCRM depends on neither @objectstack/client nor @objectstack/client-react.

Also new in rc.5 and also inapplicable: os migrate summary-nulls, which backfills roll-up count/sum columns left NULL by pre-fix inserts. HotCRM has no platform roll-ups — its line items and campaign members reach parents through lookup, not master_detail, and the aggregates it displays are plain number fields written by its own hooks.

Type of Change

  • CI/CD update
  • Documentation update

Related Issues

Follows the platform upgrade checklist in docs/MAINTENANCE.md §3. Upstream release: ObjectStack 17.0.0-rc.5.

Changes Made

  • Bumped all 12 @objectstack/* pins (11 deps + @objectstack/formula dev dep) to 17.0.0-rc.5; refreshed pnpm-lock.yaml.
  • Moved the protocol range to ^17.0.0-rc.5 in both objectstack.config.ts (engines.protocol) and objectstack.manifest.json (specVersion + engines.protocol), keeping the three declarations [17.0-rc2验收] objectstack.config.ts 的 engines.protocol 仍是 ^17.0.0-rc.1,与 objectstack.manifest.json(rc.2)及 build 产物不一致 #728 pairs in agreement.
  • Updated the latest-release section in all three content/docs/whats-new*.mdx locales and the runtime-requirements row in docs/STATUS.md to state the installed version — both are enforced by test/docs-drift.test.ts, which failed on rc.5 until they followed package.json.
  • Recorded in docs/MAINTENANCE.md §3.2 why os migrate summary-nulls does not apply here, and what would change that answer (a future line-item lookup converted to master_detail — the lint rule relationship/line-item-should-be-master-detail suggests exactly that on four fields today).
  • Added a changeset.

Testing

  • Unit tests pass — pnpm test: 1886 passed, 1 skipped, 81 files. Includes test/parent-derived-reach.test.ts, so the Controlled-by-Parent reach rc.4 established still holds on rc.5.
  • Linting passes — pnpm lint clean (116 warnings / 14 suggestions, all pre-existing).
  • Build succeeds — pnpm build: 17 objects, 344 fields, 24 flows, 1920.1 KB artifact.
  • Manual testing completed — pnpm demo:reset then a real server boot on rc.5: console returns 200, 38 plugins load, 24 flows bind, and the seed lands all 17 CRM objects (342 rows) plus 242 audit rows.
  • New tests added — none needed; the existing drift guards and reach pins are what verify this upgrade.

Full gate (pnpm verify = validate && typecheck && lint && hygiene && build && test) exits 0.

Checklist

  • I have added a changeset.changeset/objectstack-17-0-0-rc-5.md
  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published

Additional Notes

Historical version references were deliberately left alone. The repo carries a number of MEASURED on 17.0.0-rc.4 comments and This changed in platform 17.0.0-rc.4 doc paragraphs. Those state when a behaviour changed or was measured, which rc.5 does not alter — rewriting them to rc.5 would turn accurate history into a false claim. Only the current-version pins moved. The measurements themselves are re-verified on every run by test/parent-derived-reach.test.ts, which is green on rc.5.

Per docs/MAINTENANCE.md §3.2, demo:reset starts from an empty database and therefore says nothing about an in-place upgrade of an existing deployment. Operators upgrading in place should still run the 17.0 data gates (os migrate files-to-references, os migrate value-shapes) as dry runs first; summary-nulls can be skipped for the reason documented above.


Generated by Claude Code

Bump every @objectstack/* dependency to 17.0.0-rc.5 and move the protocol
range in objectstack.config.ts and objectstack.manifest.json to match, so
the three files #728 pairs keep stating one version.

No app metadata had to change. rc.5's three breaking changes all land
outside what this app authors: the `system-data` bucket dropping CSV
`import` from its defaults touches platform objects HotCRM does not
declare and its admin docs never point at, the cross-datasource
transaction refusal is unreachable on a single-datasource install, and
`subscribeMetadata`'s narrowed type belongs to a client package HotCRM
does not depend on. `os migrate summary-nulls` is likewise a no-op here —
the app has no master_detail roll-ups, only hook-written number fields.

Docs follow package.json where the drift guards require it: the three
whats-new locales and docs/STATUS.md now state rc.5. MAINTENANCE.md §3.2
records why summary-nulls does not apply and what would change that.

Verified on rc.5: pnpm verify green (1886 tests, including the
parent-derived-reach pins rc.4 established), and demo:reset + boot seeds
all 17 objects with 342 rows and 242 audit rows on a clean server start.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TuU3HbdGQz3sm8mmNmZBJP
@vercel

vercel Bot commented Aug 7, 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 7, 2026 10:17am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation dependencies Dependency bumps and lockfile changes metadata Declarative metadata — schema, security posture, UI surfaces configuration Build and app configuration files labels Aug 7, 2026
The repo carries package-lock.json for one reason — the StackBlitz demo
installs with npm, not pnpm (scripts/check-stackblitz-lock.mjs) — and the
rc.5 bump refreshed pnpm-lock.yaml only, so CI's staleness guard caught
the npm lockfile still resolving the whole @objectstack/* tree at rc.4.
A stale lock does not break the app, it makes the demo fall back to a
full re-resolve on every boot.

Regenerated with the recipe the guard prints. 356 rc.5 entries, no rc.4
left. pnpm verify still exits 0 (1886 tests).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TuU3HbdGQz3sm8mmNmZBJP
@os-zhuang
os-zhuang marked this pull request as ready for review August 7, 2026 10:49
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 7, 2026
Merged via the queue into main with commit 333259a Aug 7, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

configuration Build and app configuration files dependencies Dependency bumps and lockfile changes documentation Improvements or additions to documentation metadata Declarative metadata — schema, security posture, UI surfaces

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants