Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .changeset/2105-objectstack-18-next-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
'hotcrm': minor
---

Upgrade the ObjectStack platform to 18.0.0-next.1 (prerelease)

All 23 `@objectstack/*` dependencies move from 18.0.0-next.0 to 18.0.0-next.1 together, pinned
exact: 19 in `dependencies` and 4 in `devDependencies`. `specVersion` and `engines.protocol` follow
to `^18.0.0-next.1` in `objectstack.manifest.json` and in both package manifests (`src/sales`,
`src/service`). The protocol major is still 18, so any 18 runtime admits the artifact, and a 17.x
host still refuses it. `pnpm install` regenerated `pnpm-lock.yaml`: 705 `packages:` entries before,
707 after. The 55 `@objectstack/*` keys moved one for one. `@objectstack/connector-imap` and
`postal-mime@4.0.6` arrive with the platform's mailbox service. No other third-party package
changed version.

The platform changes that reached this app:

- **Campaign members, event attendees and article feedback now name their parent as a master.**
Access to each of these rows derives from its parent (the campaign, the meeting, the article).
Since 18.0.0-next.1 the platform derives that parent only from a required master-detail field,
and it refused the required lookup these three objects used. **Campaign** and **Event** are now
master-detail fields that refuse to delete a campaign or a meeting that still has members or
attendees, as before. **Article** is master-detail and still deletes the feedback with its
article, as before.
- **Scheduled notifications name the record they are about.** The contract renewal and expiry
reminders, the stalled-deal nudge, the task reminder and the case SLA alert now link their inbox
entry to the contract, deal, task or case. On 18.0.0-next.1 this link also decides which
organization owns the notification. Without it, an install holding more than one organization
would refuse each of these notifications on 18.0.0-next.1, and the sweep would abandon that
record: no renewal deal opened, no stalled-deal task written.

The test suite moved with the platform. Test kits that mount the identity objects without the auth
plugin no longer create their own Default Organization, because the platform now creates it at boot.
The hierarchy read-depth suite saves its throwaway permission sets through the metadata API, because
the `sys_permission_set` data object is retired.
4 changes: 2 additions & 2 deletions content/docs/whats-new.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ http://localhost:4001 and create the first admin account.

**HotCRM 4.0.1** shipped on **ObjectStack 17.7.0** across every
`@objectstack/*` package. The release after it runs on **ObjectStack
18.0.0-next.0**, a prerelease of the platform's next major, and its manifest
declares the matching `^18.0.0-next.0` protocol range, so a runtime on a
18.0.0-next.1**, a prerelease of the platform's next major, and its manifest
declares the matching `^18.0.0-next.1` protocol range, so a runtime on a
different protocol major — a 17.x host included — refuses the load up front
with a structured diagnostic instead of failing deep in a schema parse.

Expand Down
4 changes: 2 additions & 2 deletions content/docs/whats-new.zh-Hans.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ HOTCRM_TOKEN=... ./scripts/wow1-live-schema.sh
## v4.0.1 —— 最新发布

**HotCRM 4.0.1** 发布时,全线 `@objectstack/*` 包运行在 **ObjectStack 17.7.0** 上。
它之后的版本运行在 **ObjectStack 18.0.0-next.0** 上(平台下一个大版本的预发布版),
应用清单声明了与之匹配的 `^18.0.0-next.0` 协议区间,因此协议大版本不同的运行时
它之后的版本运行在 **ObjectStack 18.0.0-next.1** 上(平台下一个大版本的预发布版),
应用清单声明了与之匹配的 `^18.0.0-next.1` 协议区间,因此协议大版本不同的运行时
(包括 17.x 的宿主)会在装载之初就带着结构化诊断拒绝加载,而不是在某次 schema
解析的深处才失败。

Expand Down
4 changes: 2 additions & 2 deletions content/docs/whats-new.zh-Hant.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ HOTCRM_TOKEN=... ./scripts/wow1-live-schema.sh
## v4.0.1 —— 最新發行

**HotCRM 4.0.1** 發行時,全線 `@objectstack/*` 套件執行在 **ObjectStack 17.7.0** 上。
它之後的版本執行在 **ObjectStack 18.0.0-next.0** 上(平台下一個大版本的預發行版),
應用清單宣告了與之相符的 `^18.0.0-next.0` 協定區間,因此協定大版本不同的執行時
它之後的版本執行在 **ObjectStack 18.0.0-next.1** 上(平台下一個大版本的預發行版),
應用清單宣告了與之相符的 `^18.0.0-next.1` 協定區間,因此協定大版本不同的執行時
(包括 17.x 的宿主)會在載入之初就帶著結構化診斷拒絕載入,而不是在某次 schema
解析的深處才失敗。

Expand Down
2 changes: 1 addition & 1 deletion docs/STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ pnpm verify
| --- | --- |
| Node.js | `^22.11 \|\| ^24 \|\| >=26` |
| pnpm | `>=10.0.0` |
| ObjectStack packages | `18.0.0-next.0` |
| ObjectStack packages | `18.0.0-next.1` |
| Local dev port | `4001` |

Each row above is asserted against `package.json` (`engines`, the `@objectstack/*`
Expand Down
4 changes: 2 additions & 2 deletions objectstack.manifest.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
{
"$schema": "https://schemas.objectstack.dev/template-manifest.json",
"name": "hotcrm",
"specVersion": "^18.0.0-next.0",
"specVersion": "^18.0.0-next.1",
"engines": {
"protocol": "^18.0.0-next.0"
"protocol": "^18.0.0-next.1"
},
"manifestId": "app.objectstack.hotcrm",
"displayName": "HotCRM",
Expand Down
46 changes: 23 additions & 23 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,35 +36,35 @@
},
"packageManager": "pnpm@10.33.0",
"dependencies": {
"@objectstack/account": "18.0.0-next.0",
"@objectstack/cli": "18.0.0-next.0",
"@objectstack/core": "18.0.0-next.0",
"@objectstack/driver-sql": "18.0.0-next.0",
"@objectstack/driver-sqlite-wasm": "18.0.0-next.0",
"@objectstack/metadata": "18.0.0-next.0",
"@objectstack/objectql": "18.0.0-next.0",
"@objectstack/platform-objects": "18.0.0-next.0",
"@objectstack/plugin-approvals": "18.0.0-next.0",
"@objectstack/plugin-auth": "18.0.0-next.0",
"@objectstack/plugin-security": "18.0.0-next.0",
"@objectstack/plugin-sharing": "18.0.0-next.0",
"@objectstack/runtime": "18.0.0-next.0",
"@objectstack/service-analytics": "18.0.0-next.0",
"@objectstack/service-automation": "18.0.0-next.0",
"@objectstack/service-messaging": "18.0.0-next.0",
"@objectstack/service-storage": "18.0.0-next.0",
"@objectstack/spec": "18.0.0-next.0",
"@objectstack/trigger-record-change": "18.0.0-next.0"
"@objectstack/account": "18.0.0-next.1",
"@objectstack/cli": "18.0.0-next.1",
"@objectstack/core": "18.0.0-next.1",
"@objectstack/driver-sql": "18.0.0-next.1",
"@objectstack/driver-sqlite-wasm": "18.0.0-next.1",
"@objectstack/metadata": "18.0.0-next.1",
"@objectstack/objectql": "18.0.0-next.1",
"@objectstack/platform-objects": "18.0.0-next.1",
"@objectstack/plugin-approvals": "18.0.0-next.1",
"@objectstack/plugin-auth": "18.0.0-next.1",
"@objectstack/plugin-security": "18.0.0-next.1",
"@objectstack/plugin-sharing": "18.0.0-next.1",
"@objectstack/runtime": "18.0.0-next.1",
"@objectstack/service-analytics": "18.0.0-next.1",
"@objectstack/service-automation": "18.0.0-next.1",
"@objectstack/service-messaging": "18.0.0-next.1",
"@objectstack/service-storage": "18.0.0-next.1",
"@objectstack/spec": "18.0.0-next.1",
"@objectstack/trigger-record-change": "18.0.0-next.1"
},
"optionalDependencies": {
"better-sqlite3": "^13.0.3"
},
"devDependencies": {
"@changesets/cli": "^3.0.3",
"@objectstack/formula": "18.0.0-next.0",
"@objectstack/plugin-audit": "18.0.0-next.0",
"@objectstack/plugin-email": "18.0.0-next.0",
"@objectstack/verify": "18.0.0-next.0",
"@objectstack/formula": "18.0.0-next.1",
"@objectstack/plugin-audit": "18.0.0-next.1",
"@objectstack/plugin-email": "18.0.0-next.1",
"@objectstack/verify": "18.0.0-next.1",
"@playwright/test": "^1.63.0",
"@vitest/coverage-v8": "^4.1.10",
"fumadocs-core": "16.15.14",
Expand Down
Loading
Loading