diff --git a/CHANGELOG.md b/CHANGELOG.md index a9e2fc892b8..770e80a5d15 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1030,7 +1030,7 @@ Followup to M10.30a. Walked every Setup menu in a real tenant; produced verdict - **New `objectstack-formula` skill** ([`skills/objectstack-formula/SKILL.md`](skills/objectstack-formula/SKILL.md)) and rewritten [`content/docs/data-modeling/formulas.mdx`](content/docs/data-modeling/formulas.mdx) — Author-facing documentation of the canonical CEL contract: stdlib reference, mandatory patterns for AI emission, mechanical translation table from the legacy Salesforce-flavor DSL, and the determinism contract. ### Removed — M9 Expression Unification -- **Custom Salesforce-flavor formula engine** (`@objectstack/objectql`) — Deleted `packages/objectql/src/formula.ts` (433 LoC hand-written recursive-descent parser exposing 22 functions: `CONCAT`/`UPPER`/`IF`/`AND`/`OR`/`ISBLANK`/`TODAY`/…) and its companion `packages/spec/docs/formula-functions.md`. The engine had no formal grammar, no public training corpus, no AST persistence, and was a single-vendor surface. **Salesforce compatibility is not pursued** — see [north-star §8](content/docs/concepts/north-star.mdx) "No private expression DSL". Authors targeting Salesforce semantics rewrite their formulas in CEL using the translation table in the formula skill. Resolves D9. +- **Custom Salesforce-flavor formula engine** (`@objectstack/objectql`) — Deleted `packages/objectql/src/formula.ts` (433 LoC hand-written recursive-descent parser exposing 22 functions: `CONCAT`/`UPPER`/`IF`/`AND`/`OR`/`ISBLANK`/`TODAY`/…) and its companion `packages/spec/docs/formula-functions.md`. The engine had no formal grammar, no public training corpus, no AST persistence, and was a single-vendor surface. **Salesforce compatibility is not pursued** — see [north-star §8](https://objectstack.ai/docs/concepts/north-star) "No private expression DSL". Authors targeting Salesforce semantics rewrite their formulas in CEL using the translation table in the formula skill. Resolves D9. ### Added - **Per-organization seed-data clone for new signups** (`@objectstack/plugin-security`) — In multi-tenant mode, when a user signs up after the very first user (whose org gets the seed via `claimOrphanTenantRows`), SecurityPlugin now copies the platform-first organization's user-defined data into the new user's personal workspace via `cloneTenantSeedData()`. Without this, every user-after-the-first landed on an empty dashboard — multi-tenant isolation is correctly enforced, so seed rows owned by the first org are filtered out by RLS for everyone else. Implementation: two-pass strategy — pass A inserts shallow row copies (lookup field values left as donor's old IDs) under the new `organization_id` and records `oldId → newId` per object; pass B walks each cloned record's lookup fields and rewrites values via the per-object remap so intra-clone foreign keys (e.g. `opportunity.account → account.id`) stay intact without needing topological insert ordering. Skips computed/virtual field types (`formula`, `summary`, `autonumber`) that have no underlying SQL column. Disambiguates `unique: true` columns with a per-tenant `clone--` prefix so global UNIQUE indexes (e.g. `lead.email`) don't collide. Idempotent per-object — if the target org already has any row in an object, that object is skipped. Donor org is the oldest `sys_organization`. Best-effort: a per-object failure is logged at `warn` and never blocks signup. Wired via DI hook in `ensureUserHasOrganization` so the security plugin owns the policy and the helper stays unit-testable. Verified end-to-end with `pnpm dev:crm`: 2nd registered user gets 3 leads, 5 accounts, 4 opportunities, 5 campaigns, 4 products, 5 tasks, 2 cases, 1 contract cloned into their personal workspace. diff --git a/content/docs/releases/v17/17-6.mdx b/content/docs/releases/v17/17-6.mdx index 4e7afde4b14..fe488102432 100644 --- a/content/docs/releases/v17/17-6.mdx +++ b/content/docs/releases/v17/17-6.mdx @@ -1480,7 +1480,7 @@ it is tracked in #21361. The 17.6.0 release verification found these: an upgrade of HotCRM on a 17.5.0-created database (objectstack-ai/hotcrm#1982), a walk of the [North -Star](/docs/concepts/north-star) path on the published packages (#21318), and a +Star](https://objectstack.ai/docs/concepts/north-star) path on the published packages (#21318), and a checklist run of the P0 smoke and the 17.6-risk items on `617f25f8` (#21330). Each was open when this page was written.