Skip to content

Commit 4813fe4

Browse files
xuyushun441-sysos-zhuangclaude
authored
chore(deps): upgrade ObjectStack 9.11 → 10.0 (1.3.0) (#411)
Bump all @objectstack/* deps ^9.11.0 → ^10.0.0; app version 1.2.0 → 1.3.0 (package.json, objectstack.config.ts, manifest specVersion). The 10.0 metadata surface is additive for HotCRM (new tree view type + TreeConfig, optional readScope/writeScope on permissions [ADR-0057], optional currency on datasets, actor/currency on execution context, defaulted `surface` on AI agents/skills) — no metadata edits required. The one real break: 10.0's build-time expression validator (ADR-0032) now also checks sharing-rule CEL conditions against the object schema, surfacing a latent dangling reference. crm_account has no `billing_country` field — country lives inside the structured `billing_address` (Field.address). Repoint the north_america_territory and europe_territory rules to `record.billing_address.country`. No behavioral change (the dangling field matched nothing before; seed does not populate billing_address). Verified: pnpm verify green (validate, typecheck, build, 17/17 tests). Browser-verified login → Executive Dashboard (live seeded data, lazy charts) → Accounts list → record detail; no console errors. Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 7ba260b commit 4813fe4

8 files changed

Lines changed: 488 additions & 466 deletions

File tree

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22

33
All notable changes to HotCRM are documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); HotCRM follows [Semantic Versioning](https://semver.org/).
44

5+
## [1.3.0] — 2026-06-22
6+
7+
Platform upgrade to ObjectStack **10.0** — the first major line bump. Manifest `specVersion` now declares `^10.0.0` (was `^9.11.0`); app version `1.3.0`. The 10.0 metadata surface is **additive** for HotCRM except for one newly-enforced validation (below). Built, validated, type-checked, unit-tested (17/17), and browser-verified against `@objectstack/* ^10.0.0` (login → home → Executive Dashboard with live seeded data and lazy charts → Accounts list → record detail; no console errors, no failed requests).
8+
9+
### Changed
10+
11+
- **ObjectStack platform → 10.0** across all `@objectstack/*` packages (from `9.11`). Schema-level changes are additive and required no metadata edits: new `tree` view type + `TreeConfig` (ui); optional `readScope`/`writeScope` access-depth on object permissions and a new `ObjectAccessScope` enum (security, ADR-0057); optional `currency` on `Dataset`/`DatasetMeasure`; `actor`/`currency` fields on the execution context; AI `Agent`/`Skill` gained a `surface` field (defaulted, so existing agents/skills validate unchanged). No use of these is required by HotCRM today.
12+
13+
### Fixed
14+
15+
- **Territory sharing rules referenced a non-existent `billing_country` field.** 10.0's build-time expression validator (ADR-0032) now also checks **sharing-rule** CEL conditions against the object schema, which surfaced this latent dangling reference — `crm_account` has no `billing_country`; the country lives inside the structured `billing_address` field. The `north_america_territory` and `europe_territory` rules in [`src/sharing/account.sharing.ts`](src/sharing/account.sharing.ts) now read `record.billing_address.country`. No behavioral change (the dangling field matched nothing before; the seed does not populate `billing_address`), but the metadata is now valid and the rule expresses its stated "by billing country" intent against a real field.
16+
517
## [1.2.0] — 2026-06-20
618

719
Platform upgrade to ObjectStack **9.11** — the release cut that promotes the in-tree 9.9.1 work to the latest line. Manifest `specVersion` now declares `^9.11.0` (was `^9.4.0`); app version `1.2.0`. Built, validated, type-checked, unit-tested (17/17), and browser-verified against `@objectstack/* ^9.11.0`.

docs/MAINTENANCE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ can silently invalidate existing metadata or **seed data** (see §4). Treat ever
4949
1. Bump all `@objectstack/*` deps in [`package.json`](../package.json) together —
5050
they are released in lockstep, so keep them on one version line.
5151
2. Update `specVersion` in [`objectstack.manifest.json`](../objectstack.manifest.json)
52-
to match the installed `@objectstack/spec` (e.g. `^9.11.0`).
52+
to match the installed `@objectstack/spec` (e.g. `^10.0.0`).
5353
3. `pnpm install`.
5454
4. `pnpm verify`. Validation failures here are usually metadata that a new
5555
platform contract just started enforcing — fix the metadata, do not pin back.

docs/STATUS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# HotCRM Status
22

3-
> Snapshot date: June 4, 2026
3+
> Snapshot date: June 22, 2026
44
> Source of truth: `pnpm validate`, `pnpm typecheck`, and `pnpm test`
55
66
## Summary
77

8-
HotCRM is a single ObjectStack marketplace app at version `1.0.5`. The app manifest is defined in [`objectstack.config.ts`](../objectstack.config.ts) with id `app.objectstack.hotcrm` and namespace `crm`.
8+
HotCRM is a single ObjectStack marketplace app at version `1.3.0`. The app manifest is defined in [`objectstack.config.ts`](../objectstack.config.ts) with id `app.objectstack.hotcrm` and namespace `crm`.
99

1010
## ObjectStack Validation
1111

objectstack.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export default defineStack({
3131
manifest: {
3232
id: 'app.objectstack.hotcrm',
3333
namespace: 'crm',
34-
version: '1.2.0',
34+
version: '1.3.0',
3535
type: 'app',
3636
name: 'HotCRM',
3737
description: 'AI-Native CRM for the ObjectStack marketplace — Accounts, Contacts, Leads, Opportunities, Cases, Knowledge, Forecasts, Campaigns, Contracts.',

objectstack.manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schemas.objectstack.dev/template-manifest.json",
33
"name": "hotcrm",
4-
"specVersion": "^9.11.0",
4+
"specVersion": "^10.0.0",
55
"manifestId": "app.objectstack.hotcrm",
66
"displayName": "HotCRM",
77
"description": "AI-Native CRM for the ObjectStack marketplace — Accounts, Contacts, Leads, Opportunities, Cases, Knowledge, Forecasts, Campaigns, and Contracts in one production-grade workspace.",

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "hotcrm",
3-
"version": "1.2.0",
3+
"version": "1.3.0",
44
"description": "HotCRM - Production CRM built on ObjectStack",
55
"private": true,
66
"main": "./objectstack.config.ts",
@@ -26,17 +26,17 @@
2626
},
2727
"packageManager": "pnpm@10.33.0",
2828
"dependencies": {
29-
"@objectstack/account": "^9.11.0",
30-
"@objectstack/cli": "^9.11.0",
31-
"@objectstack/driver-memory": "^9.11.0",
32-
"@objectstack/driver-sql": "^9.11.0",
33-
"@objectstack/driver-sqlite-wasm": "^9.11.0",
34-
"@objectstack/metadata": "^9.11.0",
35-
"@objectstack/objectql": "^9.11.0",
36-
"@objectstack/runtime": "^9.11.0",
37-
"@objectstack/service-analytics": "^9.11.0",
38-
"@objectstack/service-automation": "^9.11.0",
39-
"@objectstack/spec": "^9.11.0"
29+
"@objectstack/account": "^10.0.0",
30+
"@objectstack/cli": "^10.0.0",
31+
"@objectstack/driver-memory": "^10.0.0",
32+
"@objectstack/driver-sql": "^10.0.0",
33+
"@objectstack/driver-sqlite-wasm": "^10.0.0",
34+
"@objectstack/metadata": "^10.0.0",
35+
"@objectstack/objectql": "^10.0.0",
36+
"@objectstack/runtime": "^10.0.0",
37+
"@objectstack/service-analytics": "^10.0.0",
38+
"@objectstack/service-automation": "^10.0.0",
39+
"@objectstack/spec": "^10.0.0"
4040
},
4141
"optionalDependencies": {
4242
"better-sqlite3": "^12.11.1"

0 commit comments

Comments
 (0)