@objectstack/metadata 17.0.0-rc.0 → 17.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3594 -0
- package/dist/index.cjs +353 -102
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +146 -17
- package/dist/index.d.ts +146 -17
- package/dist/index.js +348 -94
- package/dist/index.js.map +1 -1
- package/dist/node.cjs +353 -102
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.cts +2 -2
- package/dist/node.d.ts +2 -2
- package/dist/node.js +348 -94
- package/dist/node.js.map +1 -1
- package/package.json +12 -10
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,3594 @@
|
|
|
1
|
+
# @objectstack/metadata
|
|
2
|
+
|
|
3
|
+
## 17.0.0-rc.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c4ab50b: fix(metadata): `sys_metadata` 的 DDL 失败不再被静默吞掉 —— 只有「表已存在」这一种原因可以静音 (#4728)
|
|
8
|
+
|
|
9
|
+
`DatabaseLoader.ensureSchema()` 过去用一个空 `catch` 吞掉 **全部** DDL 失败,并且照样把
|
|
10
|
+
`schemaReady` 置为 `true`:
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
} catch {
|
|
14
|
+
// If syncSchema fails (e.g. table already exists), mark ready and continue
|
|
15
|
+
this.schemaReady = true;
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
注释里的免责理由只覆盖了失败原因中最良性的一种,却用它为**所有**原因开脱。真实的失败
|
|
20
|
+
(权限不足、数据源根本没连上、列类型冲突)之后,表或新列压根不存在,而进程的状态与成功
|
|
21
|
+
路径**逐字节相同**,启动日志里一行痕迹都没有 —— 这正是 #4420 的形态:声称已持久化、实
|
|
22
|
+
际没落盘、系统看起来完全健康。#4632 把它定成规则(AGENTS.md → "Degradation log levels"),
|
|
23
|
+
机械检查 `pnpm check:durability-log-level` 已经能发现这一处。
|
|
24
|
+
|
|
25
|
+
现在按**错误类型**判别,而不是按注释里的乐观假设:
|
|
26
|
+
|
|
27
|
+
- **良性的「已存在」**(SQLite 的 `table … already exists` / `duplicate column name`、
|
|
28
|
+
Postgres 的 SQLSTATE `42P07`/`42701`/`42710`、MySQL 的 `ER_TABLE_EXISTS_ERROR` 等及其
|
|
29
|
+
`errno`,并跟随 `cause` 链)—— 表确实已就绪,当作 no-op 静默通过,并照常执行后续的
|
|
30
|
+
`project_id → environment_id` 迁移与 ADR-0005 索引。
|
|
31
|
+
- **其余一切失败** —— 以 `console.error` 上报,文案同时说清**后果**(`sys_metadata` 的表/
|
|
32
|
+
列未创建,后续每一次元数据写入都会报错、或在宽松驱动上悄悄丢列,而服务器仍报告健康)
|
|
33
|
+
与**修复动作**(修掉下面那条驱动/数据源错误后重启)。只说**一次**,不是每次写入都刷屏。
|
|
34
|
+
- `schemaReady` **不再**在真实失败后置 `true`。启动依旧不被阻断(该方法不抛),但 loader
|
|
35
|
+
不再声称一个它并不具备的就绪状态,下一次元数据操作会重试 —— 数据源只是还在连接这类瞬
|
|
36
|
+
时故障因此可以自愈,恢复时补一条 `info`。
|
|
37
|
+
|
|
38
|
+
`ensureHistorySchema()` 按同一规则对齐:良性「已存在」不再每次写入都打一条 `error`(过度
|
|
39
|
+
使用 `error` 是镜像失败),真实失败则同样只响亮一次并保持重试。
|
|
40
|
+
|
|
41
|
+
无 API / schema 变更;新增内部工具 `isSchemaAlreadyExistsError()`(未从包入口导出)。
|
|
42
|
+
`scripts/durability-degradation.baseline.json` 中指向本单的条目随之删除(该文件 shrink-only)。
|
|
43
|
+
|
|
44
|
+
- 3c7bcc0: feat(spec)!: converge the 11 contracts-vs-domain dual-source type names (#4538)
|
|
45
|
+
|
|
46
|
+
`packages/spec/src/contracts/` hand-wrote parameter/result interfaces whose
|
|
47
|
+
names collided with same-named zod-derived types in the domains — the #4411
|
|
48
|
+
trap, tracked as 11 rows of `dual-source-exports.baseline.json`. Each name was
|
|
49
|
+
judged individually against a three-repo import-level scan (framework, cloud,
|
|
50
|
+
objectui): which declaration actually flows at runtime decides the direction.
|
|
51
|
+
All 11 rows are deleted from the baseline; no name below is exported twice
|
|
52
|
+
anymore.
|
|
53
|
+
|
|
54
|
+
**Converged — `./contracts` now re-exports the domain zod type (same
|
|
55
|
+
declaration on both entries, imports keep compiling from either):**
|
|
56
|
+
|
|
57
|
+
- `NotificationChannel` → `system/notification.zod`'s
|
|
58
|
+
`z.infer<NotificationChannelSchema>` (member sets were identical).
|
|
59
|
+
- `ValidationResult` → `kernel/plugin-validator.zod` (shapes were identical).
|
|
60
|
+
- `HealthStatus` → `kernel/startup-orchestrator.zod` (`details` narrows
|
|
61
|
+
`Record<string, any>` → `Record<string, unknown>`).
|
|
62
|
+
- `PluginStartupResult` → `kernel/startup-orchestrator.zod`. FROM `plugin:
|
|
63
|
+
Plugin` (live object) and `error?: Error` TO the serializable projection
|
|
64
|
+
(`plugin: { name, version? }`-passthrough, `error?: { name, message,
|
|
65
|
+
stack?, code? }`). Neither side had any consumer outside spec; the
|
|
66
|
+
zod-validatable shape wins.
|
|
67
|
+
- `StartupOptions` → `kernel/startup-orchestrator.zod` — the PARSED tier
|
|
68
|
+
(defaults applied). `IStartupOrchestrator.orchestrateStartup` now takes
|
|
69
|
+
`StartupOptionsInput` (the caller-authored all-optional tier, also
|
|
70
|
+
re-exported from `./contracts`). Fix for callers typed to the old
|
|
71
|
+
all-optional `StartupOptions`: rename to `StartupOptionsInput`.
|
|
72
|
+
- `JobExecution` → `system/job.zod`. The system schema's `duration` field is
|
|
73
|
+
RENAMED `durationMs` — that is what every job adapter produces and what the
|
|
74
|
+
`sys_job_run.duration_ms` column round-trips; the schema described records
|
|
75
|
+
nothing ever wrote. Fix: `duration` → `durationMs` when parsing
|
|
76
|
+
`JobExecutionSchema` payloads.
|
|
77
|
+
- `AnalyticsQuery` → `data/analytics.zod`. The domain schema aligned to the
|
|
78
|
+
contract's semantics first: `timezone` LOST its `.default('UTC')` — absence
|
|
79
|
+
is meaningful (the engine resolves org timezone, #1982/#2018; the
|
|
80
|
+
`/analytics` entry always refused to apply that default). The schema is now
|
|
81
|
+
transform-free, so `AnalyticsQuery` ≡ `AnalyticsQueryInput` (both kept
|
|
82
|
+
exported). Fix for code that relied on `.parse()` injecting `timezone:
|
|
83
|
+
'UTC'`: pass the timezone explicitly or resolve it via the engine chain
|
|
84
|
+
(`selection.timezone ?? context.timezone ?? 'UTC'`).
|
|
85
|
+
|
|
86
|
+
**Renamed — two genuinely different concepts were sharing one name (both
|
|
87
|
+
flow at runtime):**
|
|
88
|
+
|
|
89
|
+
- `./contracts` `DriverCapabilities` → **`AnalyticsDriverCapabilities`**
|
|
90
|
+
(`{ nativeSql, objectqlAggregate, inMemory }`, the analytics strategy-chain
|
|
91
|
+
execution-path probe). The `DriverCapabilities` name now belongs solely to
|
|
92
|
+
the data domain's driver feature-flag record (`DriverCapabilitiesSchema`,
|
|
93
|
+
what `IDataDriver.supports` declares). Fix: importers of the trio from
|
|
94
|
+
`@objectstack/spec/contracts` (or `@objectstack/service-analytics`, whose
|
|
95
|
+
re-export is renamed in lockstep) rename the import; importers who meant
|
|
96
|
+
the driver flags import `DriverCapabilities` from `@objectstack/spec/data`.
|
|
97
|
+
|
|
98
|
+
**Removed — the domain-side declaration was dead (zero import-level consumers
|
|
99
|
+
in framework/cloud/objectui; the #4411 family's last survivors):**
|
|
100
|
+
|
|
101
|
+
- `system` `MetadataExportOptionsSchema` / `MetadataExportOptions` and
|
|
102
|
+
`MetadataImportOptionsSchema` / `MetadataImportOptions` (the
|
|
103
|
+
`output`/`source`-directory bags). The names now have ONE declaration each:
|
|
104
|
+
the `IMetadataService.exportMetadata` / `importMetadata` parameter
|
|
105
|
+
interfaces on `./contracts` (`types`/`namespaces`/`format` and
|
|
106
|
+
`conflictResolution`/`validate`/`dryRun`), which `MetadataManager`
|
|
107
|
+
implements. No tombstone/D2 conversion, deliberately — these are runtime
|
|
108
|
+
option-bag types, not authorable metadata (same reasoning as #4458).
|
|
109
|
+
`@objectstack/metadata` re-exports the two names from `./contracts` now
|
|
110
|
+
(it previously re-exported the dead system-side shapes its own manager
|
|
111
|
+
did not accept).
|
|
112
|
+
- `system` `JobSchedule` (the `= Schedule` back-compat alias). The name's one
|
|
113
|
+
declaration is the `IJobService.schedule` boundary shape on `./contracts`
|
|
114
|
+
(plain-string cron `expression`); the authored metadata type keeps its real
|
|
115
|
+
name `Schedule`. Fix: `import type { JobSchedule } from
|
|
116
|
+
'@objectstack/spec/system'` → `Schedule` (authoring tier) or the
|
|
117
|
+
`./contracts` `JobSchedule` (service boundary), whichever you meant.
|
|
118
|
+
|
|
119
|
+
- 9fd9ae7: Init-time service consumption is now declared everywhere, and the declaration is enforced (#4471, ADR-0116). A new CI gate (`check:init-service-contract`) walks every plugin's `init()` call graph — including private helpers, the shape that shipped #4420 — and errors on any init-reachable `getService('X')` of a workspace-provided service that is not covered by `dependencies`, `optionalDependencies`, or `requiresServices`. Eleven previously undeclared init-time consumers (metadata, rest, cli serve plugins, and seven services) now declare `optionalDependencies` on their providers, so the kernel orders them deterministically instead of by registration luck; each still degrades on purpose when the provider is not composed. Plugin authors: a best-effort init-time `getService` must declare its provider in `optionalDependencies` (declared tolerance) — the checker never exempts it.
|
|
120
|
+
- f78dd83: fix(metadata,client): `subscribeMetadata` callbacks receive real `MetadataEvent`s — the producer now fulfils the declared contract (#4602)
|
|
121
|
+
|
|
122
|
+
`@objectstack/spec/api`'s `MetadataEvent` declares top-level `id` (uuid,
|
|
123
|
+
required), `metadataType`, `name`, `definition?`, `userId?` — and after
|
|
124
|
+
#4587's convergence it is the **only** declared contract for realtime
|
|
125
|
+
metadata-change events. But the producer (`MetadataManager`) published a raw
|
|
126
|
+
`RealtimeEventPayload` envelope with everything nested under `payload` and no
|
|
127
|
+
`id`/`userId`, while the client SDK force-cast that envelope into the callback
|
|
128
|
+
(`callback(event as any as MetadataEvent)`). Subscribers who wrote
|
|
129
|
+
`event.name` / `event.metadataType` — exactly what the types promised —
|
|
130
|
+
compiled green and read `undefined` at runtime.
|
|
131
|
+
|
|
132
|
+
Producer now fulfils the contract:
|
|
133
|
+
|
|
134
|
+
- `MetadataManager.register()` / `unregister()` build a true `MetadataEvent`
|
|
135
|
+
(generated uuid `id`, flattened top-level fields, `userId` when the write
|
|
136
|
+
declares an actor) and validate it with `MetadataEventSchema.parse` before
|
|
137
|
+
publishing. The transport envelope is unchanged (`RealtimeEventPayload`,
|
|
138
|
+
with `payload` carrying the complete `MetadataEvent`).
|
|
139
|
+
- A `register()` **overwrite now publishes `metadata.{type}.updated`** instead
|
|
140
|
+
of a second `.created`, mirroring the existing `added`/`changed` watcher
|
|
141
|
+
split. Previously `.updated` was declared with no producer at all.
|
|
142
|
+
- `MetadataEventType` is a closed enum: metadata types outside it (e.g.
|
|
143
|
+
`translation`) have no declared realtime event, so nothing is published for
|
|
144
|
+
them (debug-logged) instead of emitting an event every schema-compliant
|
|
145
|
+
consumer must reject.
|
|
146
|
+
|
|
147
|
+
Consumer validates instead of casting:
|
|
148
|
+
|
|
149
|
+
- `@objectstack/client`'s `subscribeMetadata` (and therefore
|
|
150
|
+
`@objectstack/client-react`'s metadata hooks, which delegate to it) unwraps
|
|
151
|
+
the envelope and runs `MetadataEventSchema.safeParse` at the boundary. An
|
|
152
|
+
off-contract payload is rejected loudly (handler error, callback never
|
|
153
|
+
invoked) — never coerced or passed through. The `as any as MetadataEvent`
|
|
154
|
+
double-cast is gone.
|
|
155
|
+
|
|
156
|
+
New seam: `MetadataWriteOptions.userId` (`@objectstack/spec/contracts`) lets
|
|
157
|
+
write paths that know the acting user carry it into the published event's
|
|
158
|
+
`userId`. Existing callers are unaffected — the field is optional and absence
|
|
159
|
+
means "no human actor".
|
|
160
|
+
|
|
161
|
+
- beefe89: fix(metadata): 历史序号 `event_seq` 不再从一次失败的读里凭空发号 —— 只有「表还没建」可以从 1 开始 (#4825)
|
|
162
|
+
|
|
163
|
+
`DatabaseLoader.nextEventSeq()` 过去把读 `sys_metadata_history` 的**全部**失败折成同一个答案:
|
|
164
|
+
|
|
165
|
+
```ts
|
|
166
|
+
} catch {
|
|
167
|
+
// Table not provisioned yet or driver error — start at 1.
|
|
168
|
+
return 1;
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
注释同时点名了两种原因,然后用同一个 `return 1` 对待。这是 #4728 刚修掉的同一种形状,但危害是
|
|
173
|
+
**更贵的那一半**:#4728 是「字节没落盘」,本条是「**落盘的字节是错的**」。历史表里已经有 N 行时,
|
|
174
|
+
一次瞬时读失败(连接抖动、超时、权限)会让下一条历史拿到 `event_seq = 1`,与既有行**直接撞号**,
|
|
175
|
+
而 insert **成功**、日志**一行没有**。`event_seq` 正是历史列表排序与 rollback 定位的依据,撞号之后
|
|
176
|
+
版本顺序就永久不可信 —— 重试不修、重启也不修。
|
|
177
|
+
|
|
178
|
+
现在按**错误类型**判别,复用 #4728 落地的那套判别机制(`packages/metadata/src/utils/schema-sync-errors.ts`
|
|
179
|
+
里新增的 `isMissingTableError()` 与既有 `isSchemaAlreadyExistsError()` 共用同一个 code / errno /
|
|
180
|
+
message + `cause` 链匹配器,而不是在同一个包里另起一套错误判别):
|
|
181
|
+
|
|
182
|
+
- **良性的「表还没建」**(SQLite `no such table: …`、Postgres SQLSTATE `42P01` /
|
|
183
|
+
`relation "…" does not exist`、MySQL `ER_NO_SUCH_TABLE` / errno `1146`,并跟随 `cause` 链)——
|
|
184
|
+
没有行,就没有可撞的号,`1` 确实是下一个号,静默返回。
|
|
185
|
+
- **其余一切读失败** —— `nextEventSeq()` 原样抛出。调用方 `createHistoryRecord()` 以
|
|
186
|
+
`console.error` 上报**后果**(该条历史记录未写入;元数据写入本身已成功,所以服务器仍报告健康,
|
|
187
|
+
而变更历史正在悄悄出现空洞,版本时间线与 rollback 目标将不完整)、**为什么是空洞而不是错号**
|
|
188
|
+
(从 1 发号会与既有行撞号,把「不完整」变成「顺序错误」,后者无人能发现)与**修复动作**,
|
|
189
|
+
然后**跳过这条历史记录**。
|
|
190
|
+
- 判别的方向刻意保守:凡是没有被正面识别为「表不存在」的,一律当作真实失败。`does not exist`
|
|
191
|
+
本身不够 —— `role "…" does not exist`、`database "…" does not exist`、`column "…" does not exist`
|
|
192
|
+
都是真实失败,对着一张可能满是行的表返回 1 正是要避免的事,所以消息匹配要求 table/relation 与
|
|
193
|
+
该短语同现。
|
|
194
|
+
|
|
195
|
+
两条边界保持不变:元数据写入本身**不**因此失败(记录已经落盘,把它报成失败是比原缺陷更糟的谎),
|
|
196
|
+
以及本路径已知的并发撞号限制(非事务,canonical producer 仍是 `SysMetadataRepository`)——那是被
|
|
197
|
+
记录过的限制,与「读失败静默重置到 1」是两回事。报告只说**一次**,恢复时补一条 `info`。
|
|
198
|
+
|
|
199
|
+
无 API / schema 变更;新增内部工具 `isMissingTableError()`(未从包入口导出)。
|
|
200
|
+
|
|
201
|
+
- Updated dependencies [430dcc2]
|
|
202
|
+
- Updated dependencies [e6ac4bd]
|
|
203
|
+
- Updated dependencies [80334c7]
|
|
204
|
+
- Updated dependencies [ce5242c]
|
|
205
|
+
- Updated dependencies [a7163ea]
|
|
206
|
+
- Updated dependencies [e6e9379]
|
|
207
|
+
- Updated dependencies [98877c9]
|
|
208
|
+
- Updated dependencies [98877c9]
|
|
209
|
+
- Updated dependencies [c44dd5e]
|
|
210
|
+
- Updated dependencies [e6b1b69]
|
|
211
|
+
- Updated dependencies [ad047d2]
|
|
212
|
+
- Updated dependencies [2826d1e]
|
|
213
|
+
- Updated dependencies [5a84d41]
|
|
214
|
+
- Updated dependencies [20b1a9e]
|
|
215
|
+
- Updated dependencies [203a449]
|
|
216
|
+
- Updated dependencies [ac37fc6]
|
|
217
|
+
- Updated dependencies [4820f55]
|
|
218
|
+
- Updated dependencies [462d9c4]
|
|
219
|
+
- Updated dependencies [7d21581]
|
|
220
|
+
- Updated dependencies [f2445c9]
|
|
221
|
+
- Updated dependencies [23338c3]
|
|
222
|
+
- Updated dependencies [5b843fb]
|
|
223
|
+
- Updated dependencies [b4487aa]
|
|
224
|
+
- Updated dependencies [65ca83a]
|
|
225
|
+
- Updated dependencies [67bf2e2]
|
|
226
|
+
- Updated dependencies [c6d1cb4]
|
|
227
|
+
- Updated dependencies [36030ff]
|
|
228
|
+
- Updated dependencies [6117f7b]
|
|
229
|
+
- Updated dependencies [e533b0b]
|
|
230
|
+
- Updated dependencies [cdf4d9a]
|
|
231
|
+
- Updated dependencies [aee1806]
|
|
232
|
+
- Updated dependencies [c13350b]
|
|
233
|
+
- Updated dependencies [c13350b]
|
|
234
|
+
- Updated dependencies [9ca2d85]
|
|
235
|
+
- Updated dependencies [c13350b]
|
|
236
|
+
- Updated dependencies [891d345]
|
|
237
|
+
- Updated dependencies [a52e2ef]
|
|
238
|
+
- Updated dependencies [5293114]
|
|
239
|
+
- Updated dependencies [20bc357]
|
|
240
|
+
- Updated dependencies [5966c2a]
|
|
241
|
+
- Updated dependencies [2382580]
|
|
242
|
+
- Updated dependencies [d9fa683]
|
|
243
|
+
- Updated dependencies [3c7bcc0]
|
|
244
|
+
- Updated dependencies [4b6cac7]
|
|
245
|
+
- Updated dependencies [7631964]
|
|
246
|
+
- Updated dependencies [ac471a0]
|
|
247
|
+
- Updated dependencies [60ae58e]
|
|
248
|
+
- Updated dependencies [ce92674]
|
|
249
|
+
- Updated dependencies [9f601e8]
|
|
250
|
+
- Updated dependencies [51c5227]
|
|
251
|
+
- Updated dependencies [a4a85c8]
|
|
252
|
+
- Updated dependencies [07a4e26]
|
|
253
|
+
- Updated dependencies [ec975f1]
|
|
254
|
+
- Updated dependencies [eb4204b]
|
|
255
|
+
- Updated dependencies [4f13be2]
|
|
256
|
+
- Updated dependencies [61cc079]
|
|
257
|
+
- Updated dependencies [0e96e46]
|
|
258
|
+
- Updated dependencies [b25a116]
|
|
259
|
+
- Updated dependencies [d52d4fe]
|
|
260
|
+
- Updated dependencies [742cebb]
|
|
261
|
+
- Updated dependencies [ce92674]
|
|
262
|
+
- Updated dependencies [cf2c9b7]
|
|
263
|
+
- Updated dependencies [833b512]
|
|
264
|
+
- Updated dependencies [0f9faa2]
|
|
265
|
+
- Updated dependencies [7cf42fe]
|
|
266
|
+
- Updated dependencies [5966c2a]
|
|
267
|
+
- Updated dependencies [f78dd83]
|
|
268
|
+
- Updated dependencies [a2cd18a]
|
|
269
|
+
- Updated dependencies [4638aaa]
|
|
270
|
+
- Updated dependencies [0222d3c]
|
|
271
|
+
- Updated dependencies [071d0dc]
|
|
272
|
+
- Updated dependencies [0a936ea]
|
|
273
|
+
- Updated dependencies [023c00b]
|
|
274
|
+
- Updated dependencies [155507e]
|
|
275
|
+
- Updated dependencies [7bba90b]
|
|
276
|
+
- Updated dependencies [7e05d8e]
|
|
277
|
+
- Updated dependencies [061406d]
|
|
278
|
+
- Updated dependencies [c1f344b]
|
|
279
|
+
- Updated dependencies [9c93465]
|
|
280
|
+
- Updated dependencies [ebb209c]
|
|
281
|
+
- Updated dependencies [65f184b]
|
|
282
|
+
- Updated dependencies [63b33e6]
|
|
283
|
+
- Updated dependencies [2a44c1d]
|
|
284
|
+
- Updated dependencies [695cfbd]
|
|
285
|
+
- Updated dependencies [7445149]
|
|
286
|
+
- Updated dependencies [071d0dc]
|
|
287
|
+
- Updated dependencies [0848bea]
|
|
288
|
+
- Updated dependencies [d51bed2]
|
|
289
|
+
- Updated dependencies [b8b3c64]
|
|
290
|
+
- Updated dependencies [0c0fbd9]
|
|
291
|
+
- Updated dependencies [f3141d8]
|
|
292
|
+
- Updated dependencies [5a84d41]
|
|
293
|
+
- Updated dependencies [fd3013a]
|
|
294
|
+
- Updated dependencies [21676eb]
|
|
295
|
+
- Updated dependencies [e336549]
|
|
296
|
+
- Updated dependencies [d40f43a]
|
|
297
|
+
- Updated dependencies [e5e7ee0]
|
|
298
|
+
- Updated dependencies [a2ebea2]
|
|
299
|
+
- Updated dependencies [800bdb0]
|
|
300
|
+
- Updated dependencies [04f1182]
|
|
301
|
+
- Updated dependencies [5647006]
|
|
302
|
+
- Updated dependencies [38f7e4f]
|
|
303
|
+
- Updated dependencies [c57f3cf]
|
|
304
|
+
- Updated dependencies [97faca3]
|
|
305
|
+
- Updated dependencies [ad5fe25]
|
|
306
|
+
- Updated dependencies [ea90179]
|
|
307
|
+
- Updated dependencies [ce92674]
|
|
308
|
+
- Updated dependencies [5ef0b5b]
|
|
309
|
+
- Updated dependencies [48fbacb]
|
|
310
|
+
- Updated dependencies [355e951]
|
|
311
|
+
- Updated dependencies [dadb43f]
|
|
312
|
+
- @objectstack/spec@17.0.0-rc.2
|
|
313
|
+
- @objectstack/platform-objects@17.0.0-rc.2
|
|
314
|
+
- @objectstack/core@17.0.0-rc.2
|
|
315
|
+
- @objectstack/types@17.0.0-rc.2
|
|
316
|
+
- @objectstack/metadata-core@17.0.0-rc.2
|
|
317
|
+
- @objectstack/metadata-fs@17.0.0-rc.2
|
|
318
|
+
|
|
319
|
+
## 17.0.0-rc.1
|
|
320
|
+
|
|
321
|
+
### Major Changes
|
|
322
|
+
|
|
323
|
+
- ac6c0be: refactor(metadata)!: remove the `artifact-api` artifact source (#4246)
|
|
324
|
+
|
|
325
|
+
`MetadataPluginOptions.artifactSource` loses its `artifact-api` union member;
|
|
326
|
+
`{ mode: 'local-file', path }` is now the single artifact source. The
|
|
327
|
+
`_loadFromArtifactApi` loader, its `environmentId` pre-flight guard, and the
|
|
328
|
+
Bearer-token support in `_fetchJson` go with it.
|
|
329
|
+
|
|
330
|
+
**Why removal, not the doc fix this branch first carried.** #4246 found the
|
|
331
|
+
declaration and the implementation contradicting each other — the option's
|
|
332
|
+
comment called `artifact-api` "reserved for M3/M4" while the loader shipped and
|
|
333
|
+
all three bootstrap modes dispatched to it — and asked the owner to pick a
|
|
334
|
+
direction. Auditing both repos to answer that settled it:
|
|
335
|
+
|
|
336
|
+
- **Zero consumers anywhere.** No `mode: 'artifact-api'` call site exists in
|
|
337
|
+
this repo or in cloud. The two real "pull an artifact from the cloud" paths
|
|
338
|
+
both bypass it: the cloud runtime uses its own `ArtifactApiClient` (TTL
|
|
339
|
+
cache, singleflight, hostname resolution, runtime config injection — a
|
|
340
|
+
superset this option was never going to grow into), and package distribution
|
|
341
|
+
into a running OSS instance goes through `@objectstack/cloud-connection`
|
|
342
|
+
(`os package install`, ADR-0008).
|
|
343
|
+
- **Half its input contract had been dead since v5.0 with no one noticing.**
|
|
344
|
+
The URL builder decided "append the canonical path vs use as-is" by testing
|
|
345
|
+
for an `/api/v{n}/cloud/projects/` segment that the v5.0
|
|
346
|
+
`project → environment` rename deleted, so every already-resolved URL got
|
|
347
|
+
the path appended a second time and 404'd. A year of silence on a bug like
|
|
348
|
+
that is consumer-count evidence of its own.
|
|
349
|
+
- **Its one non-replaceable capability was declined.** A Bearer-authenticated
|
|
350
|
+
pull of a _private_ environment artifact is the single thing `local-file`
|
|
351
|
+
cannot do (`local-file` URLs fetch verbatim, unauthenticated). The owner
|
|
352
|
+
confirmed that sealed-private-artifact deployments are not a supported need
|
|
353
|
+
right now, which removed the last reason to keep the mode.
|
|
354
|
+
|
|
355
|
+
**Migration.** Public or commit-pinned artifacts load through the existing
|
|
356
|
+
`local-file` URL form, which every bootstrap mode already honors:
|
|
357
|
+
|
|
358
|
+
```ts
|
|
359
|
+
artifactSource: {
|
|
360
|
+
mode: 'local-file',
|
|
361
|
+
path: 'https://cloud.example.com/pub/v1/environments/env_42/artifact?commit=cmt_1a2b',
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
(`private` environments still serve exact-commit deep links through the same
|
|
366
|
+
`/pub` route; fully private pulls have no replacement — by decision, not
|
|
367
|
+
oversight.) For installing packages into a running runtime, use
|
|
368
|
+
`os package install` / `@objectstack/cloud-connection`.
|
|
369
|
+
|
|
370
|
+
**The removal is loud, not silent.** A still-configured `artifact-api` source
|
|
371
|
+
(reachable from JS or `any`-typed config now that the TS union is
|
|
372
|
+
single-member) throws at `start()` with the migration pointer above. This
|
|
373
|
+
guard exists because the dispatch's old fall-through would have treated
|
|
374
|
+
"unsupported source" as "no source" — under `eager` that silently scans the
|
|
375
|
+
filesystem instead of loading the artifact the caller named. Tests pin the
|
|
376
|
+
rejection in `artifact-only` and `eager`, and pin the migration target
|
|
377
|
+
(`local-file` fetching an http(s) URL and registering the envelope) so the
|
|
378
|
+
path the error message points at stays real.
|
|
379
|
+
|
|
380
|
+
Also replaces a test that passed for the wrong reason: "artifact-only
|
|
381
|
+
bootstrap rejects the not-yet-implemented artifact-api source" matched
|
|
382
|
+
`/artifact-api/` against the missing-`environmentId` guard's message — which
|
|
383
|
+
merely contained the string — proving nothing about implementation status.
|
|
384
|
+
The doc comment, `implementation-status.mdx`, `metadata-service.mdx`, and the
|
|
385
|
+
package ROADMAP now all describe the single `local-file` source, ending the
|
|
386
|
+
docs-audit loop #4246 was filed to stop.
|
|
387
|
+
|
|
388
|
+
### Minor Changes
|
|
389
|
+
|
|
390
|
+
- ffb003c: **ADR-0110 — an action's identity is its `name`, and anything executable over a
|
|
391
|
+
governed surface must have a declaration.**
|
|
392
|
+
|
|
393
|
+
`POST /api/v1/actions/:object/:action` resolved the DECLARATION from the URL
|
|
394
|
+
segment as a `name` but dispatched the HANDLER using that same segment as a
|
|
395
|
+
registry key. For a target-bound action (`{ name: 'complete_task', target:
|
|
396
|
+
'completeTask' }`) those are different strings, so the two documented callers
|
|
397
|
+
each worked on exactly the half the other broke: the documented curl resolved
|
|
398
|
+
the declaration then 404ed, while the Console's `target`-addressed call
|
|
399
|
+
dispatched fine and resolved no declaration — silently skipping the ADR-0066 D4
|
|
400
|
+
capability gate and the ADR-0104 param contract (#3935).
|
|
401
|
+
|
|
402
|
+
- **D1/D2** — identity is always the declarative `name`; the handler key is
|
|
403
|
+
derived from the resolved declaration through a rotation now shared with the
|
|
404
|
+
MCP `run_action` bridge (`resolveActionHandlerKeys`, `executeRegisteredAction`).
|
|
405
|
+
The REST route previously rotated only the object key, never the handler key.
|
|
406
|
+
- **D3 (breaking)** — declaration resolution is a trichotomy. A genuinely
|
|
407
|
+
undeclared handler is **refused (404)** with the `defineAction` to add, rather
|
|
408
|
+
than executed ungated with system privileges; an unreachable metadata plane is
|
|
409
|
+
a **503** rather than a silent ungating (`MetadataManager.loadDiagnosed` tells
|
|
410
|
+
a clean miss from an outage). `OS_ALLOW_UNDECLARED_ACTIONS=1` is the migration
|
|
411
|
+
valve — it warns on every invocation and is removed in 18.
|
|
412
|
+
- **D5** — `reconcileActionRegistrations` plus `ObjectQLEngine.listRegisteredActions`
|
|
413
|
+
power a `kernel:ready` inventory logging every registered-but-undeclared
|
|
414
|
+
handler (refused at dispatch) and every declared script action bound to no
|
|
415
|
+
handler — the ADR-0078 converse, mechanised.
|
|
416
|
+
- **D6** — security-gate strictness is opt-**out** (`OS_ALLOW_*`), never opt-in.
|
|
417
|
+
|
|
418
|
+
Apps whose actions are all declared need no changes beyond gaining enforcement
|
|
419
|
+
of the `requiredPermissions` they already declared.
|
|
420
|
+
|
|
421
|
+
### Patch Changes
|
|
422
|
+
|
|
423
|
+
- 2e836de: chore(packaging): CHANGELOG.md ships in every npm tarball (#4261)
|
|
424
|
+
|
|
425
|
+
The AGENTS.md post-task checklist requires breaking changesets to carry their
|
|
426
|
+
FROM → TO migration because "this text ships to consumers as `CHANGELOG.md`
|
|
427
|
+
inside the npm package and is what an upgrading agent greps after the tombstone
|
|
428
|
+
error." That delivery path was severed for 68 of the 69 publishable packages:
|
|
429
|
+
npm packs `package.json` / `README*` / `LICENSE*` unconditionally but — unlike
|
|
430
|
+
older npm versions — not `CHANGELOG.md`, and the canonical
|
|
431
|
+
`"files": ["dist", "README.md"]` whitelist never named it. Measured on npm
|
|
432
|
+
10.9.7: `npm pack --dry-run` on `@objectstack/types` shipped 3 files while its
|
|
433
|
+
70KB `CHANGELOG.md` stayed behind. Only `@objectstack/spec` listed it
|
|
434
|
+
explicitly.
|
|
435
|
+
|
|
436
|
+
The tombstone-error scenario is precisely the one where the repo is out of
|
|
437
|
+
reach — the upgrading agent has `node_modules` and nothing else — so the
|
|
438
|
+
migration text has to ride in the tarball. Every publishable package now
|
|
439
|
+
declares `CHANGELOG.md` in `files`, and the canonical whitelist is
|
|
440
|
+
`["dist", "README.md", "CHANGELOG.md"]`.
|
|
441
|
+
|
|
442
|
+
The other half is the gate: `check:published-files` gains a fifth invariant,
|
|
443
|
+
COMPLETE — a whitelist that fails to cover `CHANGELOG.md` fails the
|
|
444
|
+
always-required lint job, so the next package cannot silently sever the path
|
|
445
|
+
again. `@objectstack/spec`'s per-package EXTRA_ENTRIES exemption dissolves
|
|
446
|
+
into the canonical set.
|
|
447
|
+
|
|
448
|
+
Consumer-visible change: one more file per install (the package's changelog,
|
|
449
|
+
e.g. 70.8KB for `@objectstack/types`), and `grep -r "removed key"
|
|
450
|
+
node_modules/@objectstack/*/CHANGELOG.md` now finds the migration it was
|
|
451
|
+
promised.
|
|
452
|
+
|
|
453
|
+
- f985b3f: fix(spec,core,cloud-connection,metadata): one HTTP contract, one canonical slot name — and the dead shadow copy that helped cause the false exemption is deleted (#4251)
|
|
454
|
+
|
|
455
|
+
**`packages/core/src/contracts/` was a dead near-copy of the real contracts,
|
|
456
|
+
and it is gone.** The directory (http-server.ts, data-engine.ts, logger.ts) had
|
|
457
|
+
ZERO importers — no relative import, no subpath export, not a tsup entry;
|
|
458
|
+
core's barrel has re-exported the `@objectstack/spec/contracts` versions all
|
|
459
|
+
along ("Re-export contracts from @objectstack/spec for backward
|
|
460
|
+
compatibility"). But the shadow had already **diverged** from the live
|
|
461
|
+
contract (spec's `IHttpResponse` grew `write?`/`end?` and `IHttpRequest` grew
|
|
462
|
+
`rawBody?`; the copy never did), so anyone who grepped their way into it read a
|
|
463
|
+
stale contract that nothing enforces — the exact both-humans-and-AI failure
|
|
464
|
+
mode behind the false `http.server` exemption (#4382). Deleting it is
|
|
465
|
+
zero-risk by construction: nothing could reach it.
|
|
466
|
+
|
|
467
|
+
**`http.server` is the canonical slot name, and the ledger now says so.**
|
|
468
|
+
`ServiceSlotContracts` gains `'http.server': IHttpServer` plus the deprecated
|
|
469
|
+
`'http-server'` alias entry (same instance — hono-plugin and qa's node-plugin
|
|
470
|
+
register both two lines apart; cloud's two server entrypoints do the same).
|
|
471
|
+
Canonical is the only name present on EVERY provider path: runtime's
|
|
472
|
+
`config.server` path registers no alias, so the three cloud-connection plugins
|
|
473
|
+
that read the alias alone (marketplace-proxy, runtime-config,
|
|
474
|
+
marketplace-install-local) found an empty slot there — a live miss, now fixed:
|
|
475
|
+
all readers go canonical-first with the alias as a fallback that dies with the
|
|
476
|
+
alias registrations. The registrations themselves are untouched this release;
|
|
477
|
+
both sites now carry the deprecation note.
|
|
478
|
+
|
|
479
|
+
**`getRawApp?(): any` joins `IHttpServer`** — the deliberate framework-handle
|
|
480
|
+
escape, declared once. Four consumers were each declaring it locally
|
|
481
|
+
(cloud-connection ×2, metadata's HMR routes, cloud's serverless node-server);
|
|
482
|
+
those local `RawAppHost`/`HttpServerWithRawApp` types are deleted. The `any`
|
|
483
|
+
return is deliberate and documented at the single declaration: the handle's
|
|
484
|
+
real type belongs to the framework, and naming it would give the contract a
|
|
485
|
+
framework dependency. Adapters are not required to expose it; consumers
|
|
486
|
+
feature-detect.
|
|
487
|
+
|
|
488
|
+
**`IMetadataService.bulkRegister`/`bulkUnregister` declare the write options
|
|
489
|
+
their implementation has always accepted.** `bulkRegister`'s contract options
|
|
490
|
+
dropped the `MetadataWriteOptions` half its implementation intersects in
|
|
491
|
+
(`notify` is destructured on the method's first line); `bulkUnregister`
|
|
492
|
+
declared no options at all while the manager takes them. Same shape as the
|
|
493
|
+
`IDataEngine` read-methods gap from B2: a caller typed to the contract could
|
|
494
|
+
not reach the channel without erasing the lookup. Both additive; no implementor
|
|
495
|
+
or caller breaks.
|
|
496
|
+
|
|
497
|
+
Slot-lookup baseline ratchets 168 → 167 (marketplace-install-local's lookup
|
|
498
|
+
typed while touched).
|
|
499
|
+
|
|
500
|
+
- 10575f3: fix(lint,metadata): revoke the `http.server` lint exemption — its stated reason was false (#4251)
|
|
501
|
+
|
|
502
|
+
`http.server` was added to `UNCONTRACTED_SLOTS` in #4321 on the ground that
|
|
503
|
+
"no IHttpServer contract exists". The contract does exist —
|
|
504
|
+
`packages/spec/src/contracts/http-server.ts` — and eight call sites were
|
|
505
|
+
already resolving the slot as `getService<IHttpServer>(…)` when the exemption
|
|
506
|
+
was written. An exemption is a claim like any other, and this one rested on a
|
|
507
|
+
premise nobody checked: the same shape as the gaps the rule exists to find.
|
|
508
|
+
|
|
509
|
+
Revoked. That surfaced **9 erasures the exemption had been hiding** — 7 in
|
|
510
|
+
files never grandfathered, 2 as count growth inside grandfathered ones, none of
|
|
511
|
+
which the baseline could legally absorb. All typed to `IHttpServer`;
|
|
512
|
+
`packages/metadata/src/plugin.ts` came out clean entirely, so the baseline
|
|
513
|
+
ratchets **DOWN to 168 sites in 36 files** and loses a file.
|
|
514
|
+
|
|
515
|
+
Two things confirmed on the way, reported rather than changed:
|
|
516
|
+
|
|
517
|
+
**`http.server` and `http-server` are the same instance under two names.**
|
|
518
|
+
plugin-hono-server and qa's node-plugin each register it twice, two lines
|
|
519
|
+
apart; runtime's `config.server` path registers only `http.server`.
|
|
520
|
+
`metadata/src/plugin.ts` reads both with a `??`, which is how it survived. No
|
|
521
|
+
registration is removed here — that is a runtime-behaviour change and belongs
|
|
522
|
+
with whoever picks the canonical name.
|
|
523
|
+
|
|
524
|
+
**`IHttpServer` is defined twice and the two have already diverged.**
|
|
525
|
+
`packages/spec/src/contracts/http-server.ts` (15 importers) declares `write?()`
|
|
526
|
+
and `end?()`; `packages/core/src/contracts/http-server.ts` (8 importers) does
|
|
527
|
+
not. Spec's is the superset and the one the ledger points at, so it is the
|
|
528
|
+
source; core's is a stale near-copy and should re-export it. Left for its own
|
|
529
|
+
change — collapsing a duplicated contract is not a lint fix.
|
|
530
|
+
|
|
531
|
+
Also worth a note for whoever writes the wider HTTP contract: `getRawApp()` now
|
|
532
|
+
has a **third** independent consumer (metadata's HMR routes, joining
|
|
533
|
+
cloud-connection's two). It is deliberately absent from `IHttpServer` — the
|
|
534
|
+
contract is framework-agnostic and the raw app is the framework's own handle —
|
|
535
|
+
so each consumer names it locally. Three is enough evidence to decide whether
|
|
536
|
+
that stays the right answer.
|
|
537
|
+
|
|
538
|
+
- d13004a: feat(core,runtime): plugin ordering is a declared, kernel-enforced contract (ADR-0116, #4131)
|
|
539
|
+
|
|
540
|
+
`kernel.use()` registration order was never a contract — the kernel resolves
|
|
541
|
+
init/start order from the plugin dependency graph — but a plugin that needed a
|
|
542
|
+
service at init _when its provider is composed_ while also booting _without_
|
|
543
|
+
the provider had no way to declare that. `AppPlugin` was the standing example:
|
|
544
|
+
it grabs `manifest`/`objectql` synchronously in `init()`, declared nothing
|
|
545
|
+
(a hard dependency would break empty-env / metadata-only / mock-engine
|
|
546
|
+
kernels), and so its correctness rode on which array slot each caller put it
|
|
547
|
+
in. That convention failed the same way twice (`DefaultDatasourcePlugin`'s
|
|
548
|
+
first cut; then #4085, disguised for months as "crashes when the artifact is
|
|
549
|
+
missing").
|
|
550
|
+
|
|
551
|
+
The kernel `Plugin` contract gains three additive fields, enforced by both
|
|
552
|
+
`ObjectKernel` and `LiteKernel` through one shared implementation
|
|
553
|
+
(`plugin-order.ts` — the previously duplicated topological sort is unified
|
|
554
|
+
there):
|
|
555
|
+
|
|
556
|
+
- **`optionalDependencies: string[]`** — order-if-present: hoisted ahead
|
|
557
|
+
exactly like `dependencies` when composed (real topology edges, including
|
|
558
|
+
cycle detection), silently skipped when absent.
|
|
559
|
+
- **`requiresServices: string[]`** — services resolved synchronously during
|
|
560
|
+
`init()` with no fallback. Validated **before Phase 1**: a required service
|
|
561
|
+
whose only declared provider initializes later fails the boot with an error
|
|
562
|
+
naming both plugins, both slots, and the fix — before any init side
|
|
563
|
+
effects. Re-checked immediately before the plugin's own init, where a still-
|
|
564
|
+
missing service becomes a named composition error exactly where the old
|
|
565
|
+
bare `Service not found` crash fired.
|
|
566
|
+
- **`providesServices: string[]`** — services a plugin's `init()`
|
|
567
|
+
unconditionally registers; powers the validation and the diagnostics.
|
|
568
|
+
|
|
569
|
+
Plugins that declare nothing get the diagnosis too: a `getService` miss
|
|
570
|
+
during Phase 1 now appends which plugin was initializing and — when a
|
|
571
|
+
composed plugin declares the service — who provides it and how to declare the
|
|
572
|
+
ordering. The `Service '<name>' not found` prefix and the factory-backed
|
|
573
|
+
`is async - use await` message are unchanged.
|
|
574
|
+
|
|
575
|
+
First adopters: `AppPlugin` declares
|
|
576
|
+
`optionalDependencies: ['com.objectstack.engine.objectql']` +
|
|
577
|
+
`requiresServices: ['manifest']` (cleared on the empty-env no-op path), so
|
|
578
|
+
the #4085 composition — AppPlugin registered before the engine — now boots
|
|
579
|
+
correctly in every slot; `ObjectQLPlugin` declares
|
|
580
|
+
`providesServices: ['objectql', 'data', 'manifest', 'lifecycle']` and
|
|
581
|
+
`MetadataPlugin` declares `providesServices: ['metadata']`.
|
|
582
|
+
|
|
583
|
+
Everything is additive — plugins that declare nothing keep their exact
|
|
584
|
+
ordering semantics; no existing declaration changes meaning.
|
|
585
|
+
|
|
586
|
+
- 857a6cf: fix(cli,core,metadata,runtime): `os serve` boots with no compiled artifact — the platform does not need an application to start (#4085)
|
|
587
|
+
|
|
588
|
+
The artifact (`dist/objectstack.json`) defines an **application**. ObjectStack is
|
|
589
|
+
a development platform, so it has to start without one — but `os serve
|
|
590
|
+
objectstack.config.ts` died during boot whenever the artifact was absent:
|
|
591
|
+
|
|
592
|
+
```
|
|
593
|
+
Loading objectstack.config.ts...
|
|
594
|
+
[StandaloneStack] artifact read FAILED: path='…/dist/objectstack.json' error=ENOENT…
|
|
595
|
+
|
|
596
|
+
✗ Service 'manifest' is async - use await
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
Exit 1 — on a **known-good app** (`examples/app-todo` fails the same way with
|
|
600
|
+
only its `dist/objectstack.json` moved aside), and on every freshly authored
|
|
601
|
+
project between `os init` and its first `os compile`. The message named neither
|
|
602
|
+
the missing artifact nor a fix, so it read as an internal kernel fault.
|
|
603
|
+
|
|
604
|
+
Three separate faults, each of which alone was enough to refuse the boot:
|
|
605
|
+
|
|
606
|
+
- **`serve` registered the config-derived `AppPlugin` before the stack's own
|
|
607
|
+
`plugins[]`.** Registration order _is_ the kernel's init/start order, and that
|
|
608
|
+
slot sits ahead of `ObjectQLPlugin` (which registers `manifest`/`objectql`) and
|
|
609
|
+
`DefaultDatasourcePlugin` (which connects the database the app seeds through).
|
|
610
|
+
The wrap is now **appended** to `plugins[]`, the same slot
|
|
611
|
+
`createStandaloneStack` gives its artifact-derived `AppPlugin` — so config-boot
|
|
612
|
+
and artifact-boot share one plugin order. The artifact path never hit this,
|
|
613
|
+
which is exactly what made a plugin-**order** bug look artifact-related.
|
|
614
|
+
|
|
615
|
+
- **`ctx.getService()` reported a never-registered service as "is async".**
|
|
616
|
+
`PluginLoader.getService` is an `async` method, so its return value is _always_
|
|
617
|
+
a Promise and its internal "not found" rejection can never surface
|
|
618
|
+
synchronously — the kernel read the answer off that Promise and told every
|
|
619
|
+
caller to `await` a service that did not exist, while the `not found` branch
|
|
620
|
+
below it was unreachable. It now decides from the registry: absent ⇒
|
|
621
|
+
`[Kernel] Service 'x' not found`, registered-but-uninstantiated ⇒ the unchanged
|
|
622
|
+
`Service 'x' is async - use await`. The same crash now reads
|
|
623
|
+
`[Kernel] Service 'manifest' not found`, which points at the layer that is
|
|
624
|
+
actually wrong.
|
|
625
|
+
|
|
626
|
+
- **`MetadataPlugin` treated an absent `local-file` artifact as fatal.**
|
|
627
|
+
`createStandaloneStack` always points it at `dist/objectstack.json`, so a stack
|
|
628
|
+
with no app at all could not boot. A **missing** local artifact is now "nothing
|
|
629
|
+
compiled yet": it logs, starts empty, and leaves the artifact watcher armed, so
|
|
630
|
+
a later `os compile` hydrates the running server. The tolerance is
|
|
631
|
+
ENOENT-only — a malformed or unreadable artifact stays fatal — and
|
|
632
|
+
`bootstrap: 'artifact-only'` (sealed runtime, where the artifact _is_ the
|
|
633
|
+
deployment) keeps failing loudly rather than silently serving an empty runtime.
|
|
634
|
+
|
|
635
|
+
`[StandaloneStack] artifact read FAILED … ENOENT` is likewise no longer shouted
|
|
636
|
+
at callers for whom "no artifact" is a healthy state; a present-but-unusable
|
|
637
|
+
artifact keeps the loud warning.
|
|
638
|
+
|
|
639
|
+
Pinned by an e2e pair that drives the real `os serve` with **no `os compile`
|
|
640
|
+
anywhere**: an app defined only by `objectstack.config.ts` (asserting its object
|
|
641
|
+
is in the started plugin set, not merely that boot survived) and a bare
|
|
642
|
+
`export default {}` platform. The #4012 fixture drops the `os compile` this bug
|
|
643
|
+
had forced on it.
|
|
644
|
+
|
|
645
|
+
- 5d21a48: feat(spec,metadata-protocol,metadata,objectql,service-automation): stored metadata replays the full conversion chain at rehydration (#3903)
|
|
646
|
+
|
|
647
|
+
Every mechanism the platform has for evolving the metadata contract — schema
|
|
648
|
+
transforms, the ADR-0087 D2 conversion layer, the D3 migration chain, the
|
|
649
|
+
protocol-17 tombstones — operated on **authored source** only. Metadata **at
|
|
650
|
+
rest** (`sys_metadata` rows written by Studio or the runtime authoring APIs)
|
|
651
|
+
was rehydrated unparsed and unconverted, so the authored and stored contracts
|
|
652
|
+
silently diverged: a pre-17 row carrying `conditionalRequired` or `execute`
|
|
653
|
+
read as whatever each ad-hoc consumer happened to do with it.
|
|
654
|
+
|
|
655
|
+
**New spec primitive — `applyConversionsToStoredItem(type, item, options?)`**
|
|
656
|
+
(exported from the package root). Wraps one stored item of a given metadata
|
|
657
|
+
type and replays the **full** conversion chain over it — `retiredFromLoadPath`
|
|
658
|
+
entries included, because retirement is an _authoring-surface_ event: the
|
|
659
|
+
window exists to teach a live author, and a row at rest has no author to
|
|
660
|
+
teach. Idempotent, never throws, never validates.
|
|
661
|
+
|
|
662
|
+
Wired at every stored-row rehydration seam:
|
|
663
|
+
|
|
664
|
+
- `metadata-protocol`: `loadMetaFromDb`, `getMetaItems` (active + draft
|
|
665
|
+
preview), `getMetaItem` (active + draft), `getMetaItemLayered`, and
|
|
666
|
+
`duplicatePackage` (a copy re-saves through the schema gate, so legacy
|
|
667
|
+
sources now duplicate successfully — and the copy is canonical).
|
|
668
|
+
- `metadata`: the DatabaseLoader's live-row reads (`load` / `loadMany`).
|
|
669
|
+
History reads stay verbatim — history records what was written.
|
|
670
|
+
- `objectql`: the authored-action / authored-hook direct table reads, so
|
|
671
|
+
runtime-authored actions stored with the removed `execute` alias dispatch
|
|
672
|
+
via `target` again.
|
|
673
|
+
- `service-automation`: `AutomationEngine.registerFlow` now passes
|
|
674
|
+
`includeRetired` — stored flows keep canonicalizing after their conversions
|
|
675
|
+
graduate out of the load window. (The generic metadata seams deliberately
|
|
676
|
+
skip `type: 'flow'`: flow conversions carry the open-namespace conflict
|
|
677
|
+
guard, which needs this engine's live executor registry.)
|
|
678
|
+
|
|
679
|
+
**Boot hydration diagnoses instead of shrugging.** `loadMetaFromDb` now
|
|
680
|
+
returns `{ loaded, errors, invalid }`: each row is validated against its
|
|
681
|
+
type's spec schema _after_ conversion, and a genuine contract violation is
|
|
682
|
+
counted and warned with a stable `[metadata_spec_invalid]` marker — but still
|
|
683
|
+
registered, deliberately: refusing at boot would unhook live tables and make
|
|
684
|
+
the row unlistable and unfixable in Studio. The write path (`saveMetaItem` → 422) and the read-side `_diagnostics` envelope remain the enforcing gates; the
|
|
685
|
+
`SchemaRegistry.registerItem` validation hook is now documented as exactly
|
|
686
|
+
that diagnostic.
|
|
687
|
+
|
|
688
|
+
**Retired accommodation.** With the chain running on every stored read path,
|
|
689
|
+
the rule-validator's `requiredWhen ?? conditionalRequired` fallback — kept in
|
|
690
|
+
#3883 with a retirement promise that had no mechanism — is deleted. If you
|
|
691
|
+
call `evaluateValidationRules` directly with raw legacy field definitions,
|
|
692
|
+
convert them first (`applyConversionsToStoredItem('object', def)`) or author
|
|
693
|
+
`requiredWhen`; the platform's own read paths already hand you canonical
|
|
694
|
+
shapes.
|
|
695
|
+
|
|
696
|
+
- 7309c81: test(runtime,client,metadata): back the remaining suites with in-memory SQLite instead of the mingo driver (#4065)
|
|
697
|
+
|
|
698
|
+
Ten test files used `InMemoryDriver` as a convenience backing store — somewhere
|
|
699
|
+
for rows to go while the suite proved something else (REST routing, datasource
|
|
700
|
+
auto-connect, the batch `$ref` contract, metadata history). They now run on
|
|
701
|
+
`SqliteWasmDriver` at `:memory:`, the same engine `@objectstack/verify`'s
|
|
702
|
+
`bootStack` already gives the dogfood gate: pure JS (no native build, CI-safe on
|
|
703
|
+
any runner) and real SQL semantics.
|
|
704
|
+
|
|
705
|
+
The point is fidelity, not tidiness. Production runs SQL, and mingo differs from
|
|
706
|
+
it in ways that let a suite pass while the behaviour it stands for is broken.
|
|
707
|
+
Every failure this migration produced was a fixture defect the memory driver had
|
|
708
|
+
been absorbing:
|
|
709
|
+
|
|
710
|
+
- **Tables were never created.** `driver.create()` on the memory driver is a
|
|
711
|
+
bare `table.push()` onto an auto-vivified array, so an object registered
|
|
712
|
+
_after_ `kernel.bootstrap()` — which misses the boot-time schema sync — looked
|
|
713
|
+
fine. On SQL the first write fails with `no such table`, which the REST error
|
|
714
|
+
mapper turns into a **404 `OBJECT_NOT_FOUND`**: a routing-shaped symptom for a
|
|
715
|
+
DDL-shaped cause. Four suites needed an explicit `syncObjectSchema`.
|
|
716
|
+
- **A missing object declaration read as working.** `notifications.hono.integration`
|
|
717
|
+
writes `sys_notification`, which `MessagingServicePlugin` does not declare —
|
|
718
|
+
it is a platform object, and that lean kernel never booted `platform-objects`.
|
|
719
|
+
Auto-vivification hid the omission entirely. The suite now registers the real
|
|
720
|
+
`SysNotification` rather than a hand-copied stand-in, so there is still exactly
|
|
721
|
+
one schema for it (Prime Directive #12).
|
|
722
|
+
- **`connect()` was optional.** The memory driver needs none; a SQL driver does.
|
|
723
|
+
|
|
724
|
+
What deliberately did NOT move: `read-coercion-conformance` keeps its two-driver
|
|
725
|
+
matrix (proving a stored value reads back as its declared type on _both_ engines
|
|
726
|
+
is the entire point of that gate), and the suites whose subject IS the memory
|
|
727
|
+
driver or its wiring — `standalone-stack` (`memory://` scheme),
|
|
728
|
+
`sqlite-driver-fallback` (the dev step-down), the CLI's driver-label tests, and
|
|
729
|
+
driver-memory's own suite.
|
|
730
|
+
|
|
731
|
+
`datasource-autoconnect` is in that second group as of #4083, which landed a
|
|
732
|
+
regression test there for exactly the memory-pool property this PR originally
|
|
733
|
+
proposed to migrate away from. Moving that file to SQLite would have left the
|
|
734
|
+
new test passing vacuously — a wasm-SQLite pool never writes `.objectstack/` at
|
|
735
|
+
all — so it stays on the memory driver and keeps guarding what it was written
|
|
736
|
+
to guard.
|
|
737
|
+
|
|
738
|
+
No new coverage is claimed here: each suite asserts exactly what it asserted
|
|
739
|
+
before, against a more faithful store.
|
|
740
|
+
|
|
741
|
+
- Updated dependencies [6a67d7a]
|
|
742
|
+
- Updated dependencies [0ecc656]
|
|
743
|
+
- Updated dependencies [06772eb]
|
|
744
|
+
- Updated dependencies [270650f]
|
|
745
|
+
- Updated dependencies [3aef718]
|
|
746
|
+
- Updated dependencies [1ea6bce]
|
|
747
|
+
- Updated dependencies [c1dcacd]
|
|
748
|
+
- Updated dependencies [ad303ed]
|
|
749
|
+
- Updated dependencies [32ccb23]
|
|
750
|
+
- Updated dependencies [f5a4ef0]
|
|
751
|
+
- Updated dependencies [2d3e255]
|
|
752
|
+
- Updated dependencies [7d7521f]
|
|
753
|
+
- Updated dependencies [5dc4d02]
|
|
754
|
+
- Updated dependencies [05154a1]
|
|
755
|
+
- Updated dependencies [9b6fe7c]
|
|
756
|
+
- Updated dependencies [8c711fb]
|
|
757
|
+
- Updated dependencies [09e4547]
|
|
758
|
+
- Updated dependencies [91f4c78]
|
|
759
|
+
- Updated dependencies [820eff9]
|
|
760
|
+
- Updated dependencies [8d895ff]
|
|
761
|
+
- Updated dependencies [f6472d7]
|
|
762
|
+
- Updated dependencies [78caf51]
|
|
763
|
+
- Updated dependencies [62a789b]
|
|
764
|
+
- Updated dependencies [789ad63]
|
|
765
|
+
- Updated dependencies [2af1988]
|
|
766
|
+
- Updated dependencies [0af50a3]
|
|
767
|
+
- Updated dependencies [2e836de]
|
|
768
|
+
- Updated dependencies [12a19a8]
|
|
769
|
+
- Updated dependencies [41dcda3]
|
|
770
|
+
- Updated dependencies [c8124e5]
|
|
771
|
+
- Updated dependencies [a1a4140]
|
|
772
|
+
- Updated dependencies [c20b875]
|
|
773
|
+
- Updated dependencies [2a37694]
|
|
774
|
+
- Updated dependencies [217e2e6]
|
|
775
|
+
- Updated dependencies [86a71d1]
|
|
776
|
+
- Updated dependencies [d5c75e2]
|
|
777
|
+
- Updated dependencies [03d26f7]
|
|
778
|
+
- Updated dependencies [4384921]
|
|
779
|
+
- Updated dependencies [3c628ce]
|
|
780
|
+
- Updated dependencies [7cb922e]
|
|
781
|
+
- Updated dependencies [1d22114]
|
|
782
|
+
- Updated dependencies [b5f9397]
|
|
783
|
+
- Updated dependencies [ed77493]
|
|
784
|
+
- Updated dependencies [58a03d2]
|
|
785
|
+
- Updated dependencies [dc530b4]
|
|
786
|
+
- Updated dependencies [e59786e]
|
|
787
|
+
- Updated dependencies [bcf1112]
|
|
788
|
+
- Updated dependencies [9774b78]
|
|
789
|
+
- Updated dependencies [b07d829]
|
|
790
|
+
- Updated dependencies [a648e96]
|
|
791
|
+
- Updated dependencies [a47ac06]
|
|
792
|
+
- Updated dependencies [e4c61a7]
|
|
793
|
+
- Updated dependencies [cc60165]
|
|
794
|
+
- Updated dependencies [081aa6f]
|
|
795
|
+
- Updated dependencies [91f4c78]
|
|
796
|
+
- Updated dependencies [e8d0c21]
|
|
797
|
+
- Updated dependencies [45dc446]
|
|
798
|
+
- Updated dependencies [c1d44f7]
|
|
799
|
+
- Updated dependencies [ab9fb5c]
|
|
800
|
+
- Updated dependencies [f985b3f]
|
|
801
|
+
- Updated dependencies [9a4932a]
|
|
802
|
+
- Updated dependencies [f9fc874]
|
|
803
|
+
- Updated dependencies [011b386]
|
|
804
|
+
- Updated dependencies [9881074]
|
|
805
|
+
- Updated dependencies [7777e8f]
|
|
806
|
+
- Updated dependencies [507b92a]
|
|
807
|
+
- Updated dependencies [7309c81]
|
|
808
|
+
- Updated dependencies [20bc1ec]
|
|
809
|
+
- Updated dependencies [90c2b15]
|
|
810
|
+
- Updated dependencies [39eb01b]
|
|
811
|
+
- Updated dependencies [42eeb7d]
|
|
812
|
+
- Updated dependencies [01e124d]
|
|
813
|
+
- Updated dependencies [7ce02eb]
|
|
814
|
+
- Updated dependencies [a13827e]
|
|
815
|
+
- Updated dependencies [7733604]
|
|
816
|
+
- Updated dependencies [40e420f]
|
|
817
|
+
- Updated dependencies [d13004a]
|
|
818
|
+
- Updated dependencies [be7360c]
|
|
819
|
+
- Updated dependencies [5b47ab5]
|
|
820
|
+
- Updated dependencies [b09d8d9]
|
|
821
|
+
- Updated dependencies [b09d8d9]
|
|
822
|
+
- Updated dependencies [8675db6]
|
|
823
|
+
- Updated dependencies [b09d8d9]
|
|
824
|
+
- Updated dependencies [3eb1b2b]
|
|
825
|
+
- Updated dependencies [59b85c0]
|
|
826
|
+
- Updated dependencies [6e357ed]
|
|
827
|
+
- Updated dependencies [d6938bf]
|
|
828
|
+
- Updated dependencies [31e0be9]
|
|
829
|
+
- Updated dependencies [4bfd455]
|
|
830
|
+
- Updated dependencies [ffd2ce2]
|
|
831
|
+
- Updated dependencies [62f8017]
|
|
832
|
+
- Updated dependencies [a831df1]
|
|
833
|
+
- Updated dependencies [f752ee3]
|
|
834
|
+
- Updated dependencies [a1b61e0]
|
|
835
|
+
- Updated dependencies [cd6b9f2]
|
|
836
|
+
- Updated dependencies [2cb6d3c]
|
|
837
|
+
- Updated dependencies [af2a095]
|
|
838
|
+
- Updated dependencies [ec796d5]
|
|
839
|
+
- Updated dependencies [e87fea1]
|
|
840
|
+
- Updated dependencies [c65e529]
|
|
841
|
+
- Updated dependencies [3ca34c1]
|
|
842
|
+
- Updated dependencies [239c3a3]
|
|
843
|
+
- Updated dependencies [94a0bbc]
|
|
844
|
+
- Updated dependencies [d6bfb3d]
|
|
845
|
+
- Updated dependencies [a2266a6]
|
|
846
|
+
- Updated dependencies [d25a0ec]
|
|
847
|
+
- Updated dependencies [667b83e]
|
|
848
|
+
- Updated dependencies [627b188]
|
|
849
|
+
- Updated dependencies [8d4eae7]
|
|
850
|
+
- Updated dependencies [857a6cf]
|
|
851
|
+
- Updated dependencies [65a3a84]
|
|
852
|
+
- Updated dependencies [d5749d7]
|
|
853
|
+
- Updated dependencies [ccd9397]
|
|
854
|
+
- Updated dependencies [bca935b]
|
|
855
|
+
- Updated dependencies [d92c72d]
|
|
856
|
+
- Updated dependencies [c54c822]
|
|
857
|
+
- Updated dependencies [8dcc0f5]
|
|
858
|
+
- Updated dependencies [75b9e51]
|
|
859
|
+
- Updated dependencies [0a2f233]
|
|
860
|
+
- Updated dependencies [8621cdd]
|
|
861
|
+
- Updated dependencies [6f23667]
|
|
862
|
+
- Updated dependencies [5d21a48]
|
|
863
|
+
- Updated dependencies [19365b7]
|
|
864
|
+
- Updated dependencies [b7ed26d]
|
|
865
|
+
- Updated dependencies [68dea0b]
|
|
866
|
+
- Updated dependencies [64f8cbe]
|
|
867
|
+
- Updated dependencies [b3a3d83]
|
|
868
|
+
- Updated dependencies [7a55913]
|
|
869
|
+
- Updated dependencies [35accbf]
|
|
870
|
+
- Updated dependencies [6038de7]
|
|
871
|
+
- Updated dependencies [eb95d97]
|
|
872
|
+
- Updated dependencies [e4c2dc8]
|
|
873
|
+
- Updated dependencies [1bd2795]
|
|
874
|
+
- Updated dependencies [8186a70]
|
|
875
|
+
- Updated dependencies [a329cca]
|
|
876
|
+
- Updated dependencies [6eec18c]
|
|
877
|
+
- Updated dependencies [4d7bebf]
|
|
878
|
+
- Updated dependencies [821ac7a]
|
|
879
|
+
- Updated dependencies [8f81731]
|
|
880
|
+
- Updated dependencies [8b50cb3]
|
|
881
|
+
- Updated dependencies [8c2db68]
|
|
882
|
+
- Updated dependencies [22b5e54]
|
|
883
|
+
- Updated dependencies [0166bd5]
|
|
884
|
+
- Updated dependencies [9b702dc]
|
|
885
|
+
- Updated dependencies [ab16331]
|
|
886
|
+
- @objectstack/spec@17.0.0-rc.1
|
|
887
|
+
- @objectstack/platform-objects@17.0.0-rc.1
|
|
888
|
+
- @objectstack/core@17.0.0-rc.1
|
|
889
|
+
- @objectstack/metadata-core@17.0.0-rc.1
|
|
890
|
+
- @objectstack/metadata-fs@17.0.0-rc.1
|
|
891
|
+
- @objectstack/types@17.0.0-rc.1
|
|
892
|
+
|
|
893
|
+
## 17.0.0-rc.0
|
|
894
|
+
|
|
895
|
+
### Patch Changes
|
|
896
|
+
|
|
897
|
+
- 4e9e184: chore(deps): OSV security batch — bump tar to ^7.5.21 (GHSA-r292-9mhp-454m) and
|
|
898
|
+
js-yaml to ^5.2.2 (GHSA-pm4m-ph32-ghv5)
|
|
899
|
+
|
|
900
|
+
Both are declared-range bumps to the patched releases, so downstream installs
|
|
901
|
+
resolve the fixed versions from the published manifests, not just this
|
|
902
|
+
workspace's lockfile. The same batch clears the remaining transitive advisories
|
|
903
|
+
(next 16.2.11 in apps/docs; workspace overrides for brace-expansion, sharp,
|
|
904
|
+
react-router, @sveltejs/kit, @hono/node-server) — those live in pnpm-workspace.yaml
|
|
905
|
+
and the private docs app, which do not ship.
|
|
906
|
+
|
|
907
|
+
- Updated dependencies [50616d9]
|
|
908
|
+
- Updated dependencies [08b5a3d]
|
|
909
|
+
- Updated dependencies [d99aeb3]
|
|
910
|
+
- Updated dependencies [4727eb8]
|
|
911
|
+
- Updated dependencies [f63cd09]
|
|
912
|
+
- Updated dependencies [fa3d0cf]
|
|
913
|
+
- Updated dependencies [af5a224]
|
|
914
|
+
- Updated dependencies [71f76e1]
|
|
915
|
+
- Updated dependencies [37b1346]
|
|
916
|
+
- Updated dependencies [99736a0]
|
|
917
|
+
- Updated dependencies [fe67e34]
|
|
918
|
+
- Updated dependencies [fdb4f50]
|
|
919
|
+
- Updated dependencies [1bd5652]
|
|
920
|
+
- Updated dependencies [14252d3]
|
|
921
|
+
- Updated dependencies [7fb436c]
|
|
922
|
+
- Updated dependencies [879ea13]
|
|
923
|
+
- Updated dependencies [201b31f]
|
|
924
|
+
- Updated dependencies [e2616e0]
|
|
925
|
+
- Updated dependencies [6fdc5c6]
|
|
926
|
+
- Updated dependencies [8b9d71e]
|
|
927
|
+
- Updated dependencies [33f5e23]
|
|
928
|
+
- Updated dependencies [259af21]
|
|
929
|
+
- Updated dependencies [840ee4b]
|
|
930
|
+
- Updated dependencies [587fc91]
|
|
931
|
+
- Updated dependencies [1986594]
|
|
932
|
+
- Updated dependencies [ad4af62]
|
|
933
|
+
- Updated dependencies [d44dbfa]
|
|
934
|
+
- Updated dependencies [474fe39]
|
|
935
|
+
- Updated dependencies [0bc685a]
|
|
936
|
+
- Updated dependencies [b949059]
|
|
937
|
+
- Updated dependencies [be1c52c]
|
|
938
|
+
- Updated dependencies [c5ff96d]
|
|
939
|
+
- Updated dependencies [84e7be9]
|
|
940
|
+
- Updated dependencies [a6c3f38]
|
|
941
|
+
- Updated dependencies [debc23a]
|
|
942
|
+
- Updated dependencies [0f8ad09]
|
|
943
|
+
- Updated dependencies [8f9689f]
|
|
944
|
+
- Updated dependencies [57a3bb3]
|
|
945
|
+
- Updated dependencies [5f9a987]
|
|
946
|
+
- Updated dependencies [9f060e5]
|
|
947
|
+
- Updated dependencies [bc17d39]
|
|
948
|
+
- Updated dependencies [db02d47]
|
|
949
|
+
- Updated dependencies [0bfdf46]
|
|
950
|
+
- Updated dependencies [87aca93]
|
|
951
|
+
- Updated dependencies [376a061]
|
|
952
|
+
- Updated dependencies [7c7e246]
|
|
953
|
+
- Updated dependencies [f35cdc5]
|
|
954
|
+
- Updated dependencies [9ea2bc5]
|
|
955
|
+
- Updated dependencies [32d3800]
|
|
956
|
+
- Updated dependencies [c2d9098]
|
|
957
|
+
- Updated dependencies [a227ed7]
|
|
958
|
+
- Updated dependencies [9613396]
|
|
959
|
+
- Updated dependencies [e47b342]
|
|
960
|
+
- Updated dependencies [4ed7ed4]
|
|
961
|
+
- Updated dependencies [2fa4ca1]
|
|
962
|
+
- Updated dependencies [f5a2320]
|
|
963
|
+
- Updated dependencies [deb538f]
|
|
964
|
+
- Updated dependencies [5b89711]
|
|
965
|
+
- Updated dependencies [0c8a22f]
|
|
966
|
+
- Updated dependencies [763931e]
|
|
967
|
+
- Updated dependencies [de9af8a]
|
|
968
|
+
- Updated dependencies [c4df271]
|
|
969
|
+
- Updated dependencies [a41ba5c]
|
|
970
|
+
- Updated dependencies [189854c]
|
|
971
|
+
- Updated dependencies [0e3a226]
|
|
972
|
+
- Updated dependencies [524151c]
|
|
973
|
+
- Updated dependencies [1d4756e]
|
|
974
|
+
- Updated dependencies [720c5ad]
|
|
975
|
+
- Updated dependencies [a8d1e24]
|
|
976
|
+
- Updated dependencies [d1cabaa]
|
|
977
|
+
- Updated dependencies [41642b0]
|
|
978
|
+
- Updated dependencies [4cca74c]
|
|
979
|
+
- Updated dependencies [88ef03e]
|
|
980
|
+
- Updated dependencies [9e2caf3]
|
|
981
|
+
- Updated dependencies [81ce41a]
|
|
982
|
+
- Updated dependencies [85e1e4e]
|
|
983
|
+
- Updated dependencies [dac6a08]
|
|
984
|
+
- Updated dependencies [394b7a1]
|
|
985
|
+
- Updated dependencies [677b591]
|
|
986
|
+
- Updated dependencies [d77d1b7]
|
|
987
|
+
- Updated dependencies [5b79a34]
|
|
988
|
+
- Updated dependencies [c757854]
|
|
989
|
+
- Updated dependencies [0045682]
|
|
990
|
+
- Updated dependencies [2a5f04a]
|
|
991
|
+
- Updated dependencies [4f740b0]
|
|
992
|
+
- Updated dependencies [030125b]
|
|
993
|
+
- Updated dependencies [67452d1]
|
|
994
|
+
- Updated dependencies [4921a95]
|
|
995
|
+
- Updated dependencies [0fc6219]
|
|
996
|
+
- Updated dependencies [605e190]
|
|
997
|
+
- Updated dependencies [c6c59f1]
|
|
998
|
+
- Updated dependencies [b0e78a8]
|
|
999
|
+
- Updated dependencies [f31cc8d]
|
|
1000
|
+
- Updated dependencies [f343dc4]
|
|
1001
|
+
- Updated dependencies [8269e32]
|
|
1002
|
+
- Updated dependencies [74f7339]
|
|
1003
|
+
- Updated dependencies [a6c35a2]
|
|
1004
|
+
- Updated dependencies [c2f1002]
|
|
1005
|
+
- Updated dependencies [db48ad5]
|
|
1006
|
+
- Updated dependencies [f163028]
|
|
1007
|
+
- Updated dependencies [f07808c]
|
|
1008
|
+
- Updated dependencies [7ffc3d3]
|
|
1009
|
+
- Updated dependencies [88346ba]
|
|
1010
|
+
- Updated dependencies [4631592]
|
|
1011
|
+
- Updated dependencies [32ff033]
|
|
1012
|
+
- Updated dependencies [5ac93d4]
|
|
1013
|
+
- Updated dependencies [93f267f]
|
|
1014
|
+
- Updated dependencies [0024abf]
|
|
1015
|
+
- Updated dependencies [acbf364]
|
|
1016
|
+
- Updated dependencies [5487c20]
|
|
1017
|
+
- Updated dependencies [aa8b847]
|
|
1018
|
+
- Updated dependencies [7687f7b]
|
|
1019
|
+
- Updated dependencies [1659072]
|
|
1020
|
+
- Updated dependencies [abceb0d]
|
|
1021
|
+
- Updated dependencies [0c302a7]
|
|
1022
|
+
- Updated dependencies [6633337]
|
|
1023
|
+
- Updated dependencies [f00d8d4]
|
|
1024
|
+
- Updated dependencies [503be86]
|
|
1025
|
+
- Updated dependencies [cde1975]
|
|
1026
|
+
- Updated dependencies [0bc685a]
|
|
1027
|
+
- Updated dependencies [c073b8c]
|
|
1028
|
+
- Updated dependencies [11949fc]
|
|
1029
|
+
- Updated dependencies [b098b0e]
|
|
1030
|
+
- Updated dependencies [4d00b13]
|
|
1031
|
+
- Updated dependencies [9aa5510]
|
|
1032
|
+
- Updated dependencies [57bab76]
|
|
1033
|
+
- Updated dependencies [b90086a]
|
|
1034
|
+
- Updated dependencies [b95577a]
|
|
1035
|
+
- Updated dependencies [83c161f]
|
|
1036
|
+
- Updated dependencies [d8c4957]
|
|
1037
|
+
- Updated dependencies [f24cb83]
|
|
1038
|
+
- Updated dependencies [5dbbb92]
|
|
1039
|
+
- Updated dependencies [69f1dfd]
|
|
1040
|
+
- @objectstack/spec@17.0.0-rc.0
|
|
1041
|
+
- @objectstack/platform-objects@17.0.0-rc.0
|
|
1042
|
+
- @objectstack/core@17.0.0-rc.0
|
|
1043
|
+
- @objectstack/types@17.0.0-rc.0
|
|
1044
|
+
- @objectstack/metadata-core@17.0.0-rc.0
|
|
1045
|
+
- @objectstack/metadata-fs@17.0.0-rc.0
|
|
1046
|
+
|
|
1047
|
+
## 16.1.0
|
|
1048
|
+
|
|
1049
|
+
### Patch Changes
|
|
1050
|
+
|
|
1051
|
+
- Updated dependencies [212b66a]
|
|
1052
|
+
- Updated dependencies [d10c4dc]
|
|
1053
|
+
- Updated dependencies [9e45b63]
|
|
1054
|
+
- Updated dependencies [b20201f]
|
|
1055
|
+
- @objectstack/platform-objects@16.1.0
|
|
1056
|
+
- @objectstack/spec@16.1.0
|
|
1057
|
+
- @objectstack/core@16.1.0
|
|
1058
|
+
- @objectstack/metadata-core@16.1.0
|
|
1059
|
+
- @objectstack/types@16.1.0
|
|
1060
|
+
- @objectstack/metadata-fs@16.1.0
|
|
1061
|
+
|
|
1062
|
+
## 16.0.0
|
|
1063
|
+
|
|
1064
|
+
### Patch Changes
|
|
1065
|
+
|
|
1066
|
+
- fdc244e: Dev-loop DX fixes from the 15.1 third-party evaluation (P2 batch):
|
|
1067
|
+
|
|
1068
|
+
- **Hot-added objects are now queryable without a restart.** Adding a `*.object.ts` under `os dev` used to recompile "green" while every query answered `no such table` (or `not registered`) until a manual restart: the artifact reload never notified the ObjectQL registry, tables were only created at boot, and seeds only loaded from the boot-time bundle. The `metadata:reloaded` payload now carries the parsed artifact; ObjectQL ingests the object definitions and re-runs the idempotent schema sync (same `skipSchemaSync` opt-out as boot), and the runtime loads seeds for first-seen objects (dev, single-tenant). `os dev` also prints `✚ new object(s): …` on recompile.
|
|
1069
|
+
- **Dev admin credentials stay visible.** The `os dev` startup banner only showed `admin@objectos.ai / admin123` on the boot that actually seeded it; with the persistent default DB every later boot hid it, and the Console login page never knew it existed. The hint now re-arms on every dev boot for as long as the account still verifies against the default password, and `GET /api/v1/auth/config` exposes a dev-gated `devSeedAdmin` field (never present outside `NODE_ENV=development`) so the login page can show it.
|
|
1070
|
+
- **`os doctor` reference analysis understands current metadata shapes.** Objects bound through `defineView` containers (`list`/`listViews`/`form`/`formViews` → `data.object`, subform `childObject`, lookup form fields) and app navigation (`objectName`, nested `children`, `areas`) were reported as "defined but not referenced". The collector now walks the canonical shapes (plus flow node `config.object`/`objectName`) and the orphan-view check descends into containers.
|
|
1071
|
+
|
|
1072
|
+
- d2723e2: **`MetadataManager.register()` / `unregister()` now announce to `subscribe()` watchers.** Both updated the registry, persisted to writable loaders and published to realtime, but never fired the watch callbacks — so `subscribe()` looked like it covered every write while silently missing all of them. Only the `saveMetaItem` path (via the repository watch stream) and the filesystem watcher ever reached a subscriber. Runtime consumers that cache metadata — notably ObjectQL's SchemaRegistry bridge, the component that decides what is queryable — went stale on every other write until the process restarted.
|
|
1073
|
+
|
|
1074
|
+
Announcing is now the **default**, so a new call site is correct without knowing this contract exists. This is a contract fix rather than a bug fix: the one live behavior change is that runtime datasource writes (`datasource-admin`) now reach the HMR SSE stream, which subscribes to every registered type. `unregisterPackage()` / `bulkUnregister()` also announce their deletes now — correct, but latent, since neither has a production caller today.
|
|
1075
|
+
|
|
1076
|
+
Bulk ingest opts out explicitly with the new `MetadataWriteOptions` (`{ notify: false }`) — boot-time filesystem priming, artifact ingest, and ObjectQL's registry bridge, each of which either runs before consumers cache anything or announces the whole batch once (as the artifact reload path does via `metadata:reloaded`). The bridge in particular MUST stay silent: it copies objects out of the SchemaRegistry, and announcing would feed them back through a handler that re-registers under `_packageId ?? 'metadata-service'`, overwriting the true package provenance of every object whose body carries no `_packageId`.
|
|
1077
|
+
|
|
1078
|
+
Additive only — `register(type, name, data)` and `unregister(type, name)` keep working unchanged.
|
|
1079
|
+
|
|
1080
|
+
Fixes #3112.
|
|
1081
|
+
|
|
1082
|
+
- Updated dependencies [f972574]
|
|
1083
|
+
- Updated dependencies [6289ec3]
|
|
1084
|
+
- Updated dependencies [22013aa]
|
|
1085
|
+
- Updated dependencies [3ad3dd5]
|
|
1086
|
+
- Updated dependencies [8efa395]
|
|
1087
|
+
- Updated dependencies [3a18b60]
|
|
1088
|
+
- Updated dependencies [a8aa34c]
|
|
1089
|
+
- Updated dependencies [e057f42]
|
|
1090
|
+
- Updated dependencies [a3823b2]
|
|
1091
|
+
- Updated dependencies [bc65105]
|
|
1092
|
+
- Updated dependencies [43a3efb]
|
|
1093
|
+
- Updated dependencies [524696a]
|
|
1094
|
+
- Updated dependencies [bfa3c3f]
|
|
1095
|
+
- Updated dependencies [5e3301d]
|
|
1096
|
+
- Updated dependencies [dd9f223]
|
|
1097
|
+
- Updated dependencies [46e876c]
|
|
1098
|
+
- Updated dependencies [5f05de2]
|
|
1099
|
+
- Updated dependencies [021ba4c]
|
|
1100
|
+
- Updated dependencies [158aa14]
|
|
1101
|
+
- Updated dependencies [62a2117]
|
|
1102
|
+
- Updated dependencies [83e8f7d]
|
|
1103
|
+
- Updated dependencies [d2723e2]
|
|
1104
|
+
- Updated dependencies [fefcd54]
|
|
1105
|
+
- Updated dependencies [beaf2de]
|
|
1106
|
+
- Updated dependencies [06cb319]
|
|
1107
|
+
- Updated dependencies [369eb6e]
|
|
1108
|
+
- Updated dependencies [06ff734]
|
|
1109
|
+
- Updated dependencies [b659111]
|
|
1110
|
+
- Updated dependencies [5754a23]
|
|
1111
|
+
- Updated dependencies [6c270a6]
|
|
1112
|
+
- Updated dependencies [290e2f0]
|
|
1113
|
+
- Updated dependencies [668dd17]
|
|
1114
|
+
- Updated dependencies [8abf133]
|
|
1115
|
+
- Updated dependencies [e0859b1]
|
|
1116
|
+
- Updated dependencies [92f5f19]
|
|
1117
|
+
- Updated dependencies [32899e6]
|
|
1118
|
+
- Updated dependencies [04ecd4e]
|
|
1119
|
+
- Updated dependencies [4d5a892]
|
|
1120
|
+
- Updated dependencies [16cebeb]
|
|
1121
|
+
- Updated dependencies [86d30af]
|
|
1122
|
+
- Updated dependencies [8923843]
|
|
1123
|
+
- Updated dependencies [a2795f6]
|
|
1124
|
+
- Updated dependencies [f16b492]
|
|
1125
|
+
- Updated dependencies [4b6fde8]
|
|
1126
|
+
- Updated dependencies [2018df9]
|
|
1127
|
+
- Updated dependencies [fc5a3a2]
|
|
1128
|
+
- Updated dependencies [8ff9210]
|
|
1129
|
+
- @objectstack/spec@16.0.0
|
|
1130
|
+
- @objectstack/platform-objects@16.0.0
|
|
1131
|
+
- @objectstack/core@16.0.0
|
|
1132
|
+
- @objectstack/metadata-core@16.0.0
|
|
1133
|
+
- @objectstack/types@16.0.0
|
|
1134
|
+
- @objectstack/metadata-fs@16.0.0
|
|
1135
|
+
|
|
1136
|
+
## 16.0.0-rc.1
|
|
1137
|
+
|
|
1138
|
+
### Patch Changes
|
|
1139
|
+
|
|
1140
|
+
- Updated dependencies [6289ec3]
|
|
1141
|
+
- Updated dependencies [8efa395]
|
|
1142
|
+
- Updated dependencies [bfa3c3f]
|
|
1143
|
+
- Updated dependencies [62a2117]
|
|
1144
|
+
- Updated dependencies [06ff734]
|
|
1145
|
+
- @objectstack/spec@16.0.0-rc.1
|
|
1146
|
+
- @objectstack/platform-objects@16.0.0-rc.1
|
|
1147
|
+
- @objectstack/metadata-core@16.0.0-rc.1
|
|
1148
|
+
- @objectstack/core@16.0.0-rc.1
|
|
1149
|
+
- @objectstack/types@16.0.0-rc.1
|
|
1150
|
+
- @objectstack/metadata-fs@16.0.0-rc.1
|
|
1151
|
+
|
|
1152
|
+
## 16.0.0-rc.0
|
|
1153
|
+
|
|
1154
|
+
### Patch Changes
|
|
1155
|
+
|
|
1156
|
+
- fdc244e: Dev-loop DX fixes from the 15.1 third-party evaluation (P2 batch):
|
|
1157
|
+
|
|
1158
|
+
- **Hot-added objects are now queryable without a restart.** Adding a `*.object.ts` under `os dev` used to recompile "green" while every query answered `no such table` (or `not registered`) until a manual restart: the artifact reload never notified the ObjectQL registry, tables were only created at boot, and seeds only loaded from the boot-time bundle. The `metadata:reloaded` payload now carries the parsed artifact; ObjectQL ingests the object definitions and re-runs the idempotent schema sync (same `skipSchemaSync` opt-out as boot), and the runtime loads seeds for first-seen objects (dev, single-tenant). `os dev` also prints `✚ new object(s): …` on recompile.
|
|
1159
|
+
- **Dev admin credentials stay visible.** The `os dev` startup banner only showed `admin@objectos.ai / admin123` on the boot that actually seeded it; with the persistent default DB every later boot hid it, and the Console login page never knew it existed. The hint now re-arms on every dev boot for as long as the account still verifies against the default password, and `GET /api/v1/auth/config` exposes a dev-gated `devSeedAdmin` field (never present outside `NODE_ENV=development`) so the login page can show it.
|
|
1160
|
+
- **`os doctor` reference analysis understands current metadata shapes.** Objects bound through `defineView` containers (`list`/`listViews`/`form`/`formViews` → `data.object`, subform `childObject`, lookup form fields) and app navigation (`objectName`, nested `children`, `areas`) were reported as "defined but not referenced". The collector now walks the canonical shapes (plus flow node `config.object`/`objectName`) and the orphan-view check descends into containers.
|
|
1161
|
+
|
|
1162
|
+
- d2723e2: **`MetadataManager.register()` / `unregister()` now announce to `subscribe()` watchers.** Both updated the registry, persisted to writable loaders and published to realtime, but never fired the watch callbacks — so `subscribe()` looked like it covered every write while silently missing all of them. Only the `saveMetaItem` path (via the repository watch stream) and the filesystem watcher ever reached a subscriber. Runtime consumers that cache metadata — notably ObjectQL's SchemaRegistry bridge, the component that decides what is queryable — went stale on every other write until the process restarted.
|
|
1163
|
+
|
|
1164
|
+
Announcing is now the **default**, so a new call site is correct without knowing this contract exists. This is a contract fix rather than a bug fix: the one live behavior change is that runtime datasource writes (`datasource-admin`) now reach the HMR SSE stream, which subscribes to every registered type. `unregisterPackage()` / `bulkUnregister()` also announce their deletes now — correct, but latent, since neither has a production caller today.
|
|
1165
|
+
|
|
1166
|
+
Bulk ingest opts out explicitly with the new `MetadataWriteOptions` (`{ notify: false }`) — boot-time filesystem priming, artifact ingest, and ObjectQL's registry bridge, each of which either runs before consumers cache anything or announces the whole batch once (as the artifact reload path does via `metadata:reloaded`). The bridge in particular MUST stay silent: it copies objects out of the SchemaRegistry, and announcing would feed them back through a handler that re-registers under `_packageId ?? 'metadata-service'`, overwriting the true package provenance of every object whose body carries no `_packageId`.
|
|
1167
|
+
|
|
1168
|
+
Additive only — `register(type, name, data)` and `unregister(type, name)` keep working unchanged.
|
|
1169
|
+
|
|
1170
|
+
Fixes #3112.
|
|
1171
|
+
|
|
1172
|
+
- Updated dependencies [f972574]
|
|
1173
|
+
- Updated dependencies [22013aa]
|
|
1174
|
+
- Updated dependencies [3ad3dd5]
|
|
1175
|
+
- Updated dependencies [3a18b60]
|
|
1176
|
+
- Updated dependencies [a8aa34c]
|
|
1177
|
+
- Updated dependencies [e057f42]
|
|
1178
|
+
- Updated dependencies [a3823b2]
|
|
1179
|
+
- Updated dependencies [bc65105]
|
|
1180
|
+
- Updated dependencies [43a3efb]
|
|
1181
|
+
- Updated dependencies [524696a]
|
|
1182
|
+
- Updated dependencies [5e3301d]
|
|
1183
|
+
- Updated dependencies [dd9f223]
|
|
1184
|
+
- Updated dependencies [46e876c]
|
|
1185
|
+
- Updated dependencies [5f05de2]
|
|
1186
|
+
- Updated dependencies [021ba4c]
|
|
1187
|
+
- Updated dependencies [158aa14]
|
|
1188
|
+
- Updated dependencies [83e8f7d]
|
|
1189
|
+
- Updated dependencies [d2723e2]
|
|
1190
|
+
- Updated dependencies [fefcd54]
|
|
1191
|
+
- Updated dependencies [beaf2de]
|
|
1192
|
+
- Updated dependencies [06cb319]
|
|
1193
|
+
- Updated dependencies [369eb6e]
|
|
1194
|
+
- Updated dependencies [b659111]
|
|
1195
|
+
- Updated dependencies [5754a23]
|
|
1196
|
+
- Updated dependencies [6c270a6]
|
|
1197
|
+
- Updated dependencies [290e2f0]
|
|
1198
|
+
- Updated dependencies [668dd17]
|
|
1199
|
+
- Updated dependencies [8abf133]
|
|
1200
|
+
- Updated dependencies [e0859b1]
|
|
1201
|
+
- Updated dependencies [92f5f19]
|
|
1202
|
+
- Updated dependencies [32899e6]
|
|
1203
|
+
- Updated dependencies [04ecd4e]
|
|
1204
|
+
- Updated dependencies [4d5a892]
|
|
1205
|
+
- Updated dependencies [16cebeb]
|
|
1206
|
+
- Updated dependencies [86d30af]
|
|
1207
|
+
- Updated dependencies [8923843]
|
|
1208
|
+
- Updated dependencies [a2795f6]
|
|
1209
|
+
- Updated dependencies [f16b492]
|
|
1210
|
+
- Updated dependencies [4b6fde8]
|
|
1211
|
+
- Updated dependencies [2018df9]
|
|
1212
|
+
- Updated dependencies [fc5a3a2]
|
|
1213
|
+
- @objectstack/spec@16.0.0-rc.0
|
|
1214
|
+
- @objectstack/platform-objects@16.0.0-rc.0
|
|
1215
|
+
- @objectstack/core@16.0.0-rc.0
|
|
1216
|
+
- @objectstack/types@16.0.0-rc.0
|
|
1217
|
+
- @objectstack/metadata-core@16.0.0-rc.0
|
|
1218
|
+
- @objectstack/metadata-fs@16.0.0-rc.0
|
|
1219
|
+
|
|
1220
|
+
## 15.1.1
|
|
1221
|
+
|
|
1222
|
+
### Patch Changes
|
|
1223
|
+
|
|
1224
|
+
- @objectstack/spec@15.1.1
|
|
1225
|
+
- @objectstack/core@15.1.1
|
|
1226
|
+
- @objectstack/types@15.1.1
|
|
1227
|
+
- @objectstack/metadata-core@15.1.1
|
|
1228
|
+
- @objectstack/metadata-fs@15.1.1
|
|
1229
|
+
- @objectstack/platform-objects@15.1.1
|
|
1230
|
+
|
|
1231
|
+
## 15.1.0
|
|
1232
|
+
|
|
1233
|
+
### Patch Changes
|
|
1234
|
+
|
|
1235
|
+
- Updated dependencies [f531a26]
|
|
1236
|
+
- Updated dependencies [f531a26]
|
|
1237
|
+
- Updated dependencies [f531a26]
|
|
1238
|
+
- Updated dependencies [f531a26]
|
|
1239
|
+
- Updated dependencies [f531a26]
|
|
1240
|
+
- Updated dependencies [f531a26]
|
|
1241
|
+
- Updated dependencies [3fe9df1]
|
|
1242
|
+
- Updated dependencies [f531a26]
|
|
1243
|
+
- Updated dependencies [f531a26]
|
|
1244
|
+
- Updated dependencies [f531a26]
|
|
1245
|
+
- Updated dependencies [f531a26]
|
|
1246
|
+
- Updated dependencies [f531a26]
|
|
1247
|
+
- Updated dependencies [f531a26]
|
|
1248
|
+
- Updated dependencies [f531a26]
|
|
1249
|
+
- Updated dependencies [f531a26]
|
|
1250
|
+
- Updated dependencies [f531a26]
|
|
1251
|
+
- Updated dependencies [f531a26]
|
|
1252
|
+
- Updated dependencies [f531a26]
|
|
1253
|
+
- Updated dependencies [f531a26]
|
|
1254
|
+
- Updated dependencies [f531a26]
|
|
1255
|
+
- Updated dependencies [f531a26]
|
|
1256
|
+
- Updated dependencies [f531a26]
|
|
1257
|
+
- Updated dependencies [4109153]
|
|
1258
|
+
- Updated dependencies [f531a26]
|
|
1259
|
+
- Updated dependencies [f531a26]
|
|
1260
|
+
- Updated dependencies [f531a26]
|
|
1261
|
+
- Updated dependencies [f531a26]
|
|
1262
|
+
- Updated dependencies [f531a26]
|
|
1263
|
+
- Updated dependencies [f531a26]
|
|
1264
|
+
- Updated dependencies [f531a26]
|
|
1265
|
+
- Updated dependencies [f531a26]
|
|
1266
|
+
- Updated dependencies [627f225]
|
|
1267
|
+
- Updated dependencies [f531a26]
|
|
1268
|
+
- Updated dependencies [f531a26]
|
|
1269
|
+
- Updated dependencies [f531a26]
|
|
1270
|
+
- @objectstack/spec@15.1.0
|
|
1271
|
+
- @objectstack/platform-objects@15.1.0
|
|
1272
|
+
- @objectstack/core@15.1.0
|
|
1273
|
+
- @objectstack/types@15.1.0
|
|
1274
|
+
- @objectstack/metadata-core@15.1.0
|
|
1275
|
+
- @objectstack/metadata-fs@15.1.0
|
|
1276
|
+
|
|
1277
|
+
## 15.0.0
|
|
1278
|
+
|
|
1279
|
+
### Patch Changes
|
|
1280
|
+
|
|
1281
|
+
- Updated dependencies [02a014b]
|
|
1282
|
+
- Updated dependencies [28b7c28]
|
|
1283
|
+
- Updated dependencies [13749ec]
|
|
1284
|
+
- Updated dependencies [e62c233]
|
|
1285
|
+
- Updated dependencies [ed61c9b]
|
|
1286
|
+
- Updated dependencies [31d04d4]
|
|
1287
|
+
- @objectstack/platform-objects@15.0.0
|
|
1288
|
+
- @objectstack/spec@15.0.0
|
|
1289
|
+
- @objectstack/core@15.0.0
|
|
1290
|
+
- @objectstack/metadata-core@15.0.0
|
|
1291
|
+
- @objectstack/types@15.0.0
|
|
1292
|
+
- @objectstack/metadata-fs@15.0.0
|
|
1293
|
+
|
|
1294
|
+
## 14.8.0
|
|
1295
|
+
|
|
1296
|
+
### Patch Changes
|
|
1297
|
+
|
|
1298
|
+
- Updated dependencies [16b4bf6]
|
|
1299
|
+
- Updated dependencies [16b4bf6]
|
|
1300
|
+
- Updated dependencies [10e8983]
|
|
1301
|
+
- Updated dependencies [607aaf4]
|
|
1302
|
+
- Updated dependencies [bb71321]
|
|
1303
|
+
- @objectstack/spec@14.8.0
|
|
1304
|
+
- @objectstack/platform-objects@14.8.0
|
|
1305
|
+
- @objectstack/core@14.8.0
|
|
1306
|
+
- @objectstack/metadata-core@14.8.0
|
|
1307
|
+
- @objectstack/types@14.8.0
|
|
1308
|
+
- @objectstack/metadata-fs@14.8.0
|
|
1309
|
+
|
|
1310
|
+
## 14.7.0
|
|
1311
|
+
|
|
1312
|
+
### Patch Changes
|
|
1313
|
+
|
|
1314
|
+
- Updated dependencies [d6a72eb]
|
|
1315
|
+
- Updated dependencies [824a395]
|
|
1316
|
+
- @objectstack/spec@14.7.0
|
|
1317
|
+
- @objectstack/types@14.7.0
|
|
1318
|
+
- @objectstack/core@14.7.0
|
|
1319
|
+
- @objectstack/metadata-core@14.7.0
|
|
1320
|
+
- @objectstack/platform-objects@14.7.0
|
|
1321
|
+
- @objectstack/metadata-fs@14.7.0
|
|
1322
|
+
|
|
1323
|
+
## 14.6.0
|
|
1324
|
+
|
|
1325
|
+
### Patch Changes
|
|
1326
|
+
|
|
1327
|
+
- Updated dependencies [609cb13]
|
|
1328
|
+
- Updated dependencies [ce6d151]
|
|
1329
|
+
- @objectstack/spec@14.6.0
|
|
1330
|
+
- @objectstack/platform-objects@14.6.0
|
|
1331
|
+
- @objectstack/core@14.6.0
|
|
1332
|
+
- @objectstack/metadata-core@14.6.0
|
|
1333
|
+
- @objectstack/types@14.6.0
|
|
1334
|
+
- @objectstack/metadata-fs@14.6.0
|
|
1335
|
+
|
|
1336
|
+
## 14.5.0
|
|
1337
|
+
|
|
1338
|
+
### Patch Changes
|
|
1339
|
+
|
|
1340
|
+
- Updated dependencies [526805e]
|
|
1341
|
+
- Updated dependencies [d79ca07]
|
|
1342
|
+
- Updated dependencies [33ebd34]
|
|
1343
|
+
- Updated dependencies [c044f08]
|
|
1344
|
+
- Updated dependencies [01274eb]
|
|
1345
|
+
- Updated dependencies [8f23746]
|
|
1346
|
+
- Updated dependencies [b97af7e]
|
|
1347
|
+
- Updated dependencies [6da03ee]
|
|
1348
|
+
- @objectstack/spec@14.5.0
|
|
1349
|
+
- @objectstack/platform-objects@14.5.0
|
|
1350
|
+
- @objectstack/core@14.5.0
|
|
1351
|
+
- @objectstack/metadata-core@14.5.0
|
|
1352
|
+
- @objectstack/types@14.5.0
|
|
1353
|
+
- @objectstack/metadata-fs@14.5.0
|
|
1354
|
+
|
|
1355
|
+
## 14.4.0
|
|
1356
|
+
|
|
1357
|
+
### Patch Changes
|
|
1358
|
+
|
|
1359
|
+
- Updated dependencies [7953832]
|
|
1360
|
+
- Updated dependencies [82e745e]
|
|
1361
|
+
- Updated dependencies [f3035bd]
|
|
1362
|
+
- Updated dependencies [82c0d94]
|
|
1363
|
+
- Updated dependencies [7449476]
|
|
1364
|
+
- @objectstack/spec@14.4.0
|
|
1365
|
+
- @objectstack/platform-objects@14.4.0
|
|
1366
|
+
- @objectstack/metadata-core@14.4.0
|
|
1367
|
+
- @objectstack/core@14.4.0
|
|
1368
|
+
- @objectstack/types@14.4.0
|
|
1369
|
+
- @objectstack/metadata-fs@14.4.0
|
|
1370
|
+
|
|
1371
|
+
## 14.3.0
|
|
1372
|
+
|
|
1373
|
+
### Minor Changes
|
|
1374
|
+
|
|
1375
|
+
- 02f6af4: ADR-0090 follow-through wave: enforce book audience at the read layer; finish the D2/D3 cleanup the P1 rename missed.
|
|
1376
|
+
|
|
1377
|
+
- **rest**: `/meta/book`, `/meta/doc`, and `/meta/book/:name/tree` now ENFORCE
|
|
1378
|
+
the ADR-0046 §6.7 audience model (ADR-0049 — no unenforced security
|
|
1379
|
+
properties): anonymous callers see only `public` books/docs;
|
|
1380
|
+
`{ permissionSet }`-gated books require the caller to hold the named set;
|
|
1381
|
+
a doc's effective audience is the union over the books that CLAIM it
|
|
1382
|
+
(unclaimed docs default to `org`; orphan rendering never inherits `public`).
|
|
1383
|
+
Gated evaluation fails CLOSED when holdings cannot be resolved. `doc`/`book`
|
|
1384
|
+
single-item reads bypass the shared meta cache (per-caller gate vs shared ETag).
|
|
1385
|
+
- **spec**: new pure helpers powering that gate — `audienceAllows`,
|
|
1386
|
+
`resolveDocAudiences`, `docAudienceAllows`, `resolveBookClaimedDocs`
|
|
1387
|
+
(+ `AudienceCaller`/`AudienceBook` types). BREAKING but ships as a `minor`
|
|
1388
|
+
per the launch-window convention (pre-1.0 semantics — breaking changes do
|
|
1389
|
+
not burn a major version number while the whole stack is in lockstep):
|
|
1390
|
+
`METADATA_FORM_REGISTRY` keys `role`/`profile` are gone — `position` is the
|
|
1391
|
+
registered form (the `position` type had LOST its form layout in the P1
|
|
1392
|
+
rename); `EnvironmentArtifactMetadataSchema` declares `positions` instead of
|
|
1393
|
+
retired `roles`/`profiles`.
|
|
1394
|
+
- **plugin-security**: the `security` service exposes
|
|
1395
|
+
`resolvePermissionSetNames(ctx)` — the same resolution as data-plane
|
|
1396
|
+
enforcement, for the docs gate.
|
|
1397
|
+
- **metadata**: artifact ingestion maps `positions → 'position'` (the stale
|
|
1398
|
+
`roles → 'role'` mapping matched nothing since the P1 rename, silently
|
|
1399
|
+
dropping compiled positions from metadata registration).
|
|
1400
|
+
- **lint**: books join the D3 role-word scan (their `audience` is a
|
|
1401
|
+
permission-model reference now), and a new advisory rule
|
|
1402
|
+
`security-book-audience-unknown-set` flags a `{ permissionSet }` audience
|
|
1403
|
+
naming a set the stack does not declare (runtime fails closed — the typo
|
|
1404
|
+
cost is "nobody can read the book", so say it at author time).
|
|
1405
|
+
- **platform-objects**: metadata-form translations regain `position` (all four
|
|
1406
|
+
locales) and drop the retired `role`/`profile` groups, with a vocabulary
|
|
1407
|
+
regression test.
|
|
1408
|
+
|
|
1409
|
+
### Patch Changes
|
|
1410
|
+
|
|
1411
|
+
- Updated dependencies [2a71f48]
|
|
1412
|
+
- Updated dependencies [02f6af4]
|
|
1413
|
+
- Updated dependencies [c1064f1]
|
|
1414
|
+
- @objectstack/platform-objects@14.3.0
|
|
1415
|
+
- @objectstack/spec@14.3.0
|
|
1416
|
+
- @objectstack/core@14.3.0
|
|
1417
|
+
- @objectstack/metadata-core@14.3.0
|
|
1418
|
+
- @objectstack/types@14.3.0
|
|
1419
|
+
- @objectstack/metadata-fs@14.3.0
|
|
1420
|
+
|
|
1421
|
+
## 14.2.0
|
|
1422
|
+
|
|
1423
|
+
### Patch Changes
|
|
1424
|
+
|
|
1425
|
+
- Updated dependencies [ac8f029]
|
|
1426
|
+
- Updated dependencies [4ab9958]
|
|
1427
|
+
- @objectstack/spec@14.2.0
|
|
1428
|
+
- @objectstack/platform-objects@14.2.0
|
|
1429
|
+
- @objectstack/core@14.2.0
|
|
1430
|
+
- @objectstack/metadata-core@14.2.0
|
|
1431
|
+
- @objectstack/types@14.2.0
|
|
1432
|
+
- @objectstack/metadata-fs@14.2.0
|
|
1433
|
+
|
|
1434
|
+
## 14.1.0
|
|
1435
|
+
|
|
1436
|
+
### Patch Changes
|
|
1437
|
+
|
|
1438
|
+
- Updated dependencies [5a8465f]
|
|
1439
|
+
- Updated dependencies [7f8620b]
|
|
1440
|
+
- Updated dependencies [82ba3a6]
|
|
1441
|
+
- @objectstack/spec@14.1.0
|
|
1442
|
+
- @objectstack/core@14.1.0
|
|
1443
|
+
- @objectstack/metadata-core@14.1.0
|
|
1444
|
+
- @objectstack/platform-objects@14.1.0
|
|
1445
|
+
- @objectstack/types@14.1.0
|
|
1446
|
+
- @objectstack/metadata-fs@14.1.0
|
|
1447
|
+
|
|
1448
|
+
## 14.0.0
|
|
1449
|
+
|
|
1450
|
+
### Patch Changes
|
|
1451
|
+
|
|
1452
|
+
- Updated dependencies [0a8e685]
|
|
1453
|
+
- Updated dependencies [afa8115]
|
|
1454
|
+
- Updated dependencies [80f12ca]
|
|
1455
|
+
- Updated dependencies [332b711]
|
|
1456
|
+
- Updated dependencies [e2fa074]
|
|
1457
|
+
- Updated dependencies [23c8668]
|
|
1458
|
+
- Updated dependencies [29f017d]
|
|
1459
|
+
- Updated dependencies [216fa9a]
|
|
1460
|
+
- Updated dependencies [6c22b12]
|
|
1461
|
+
- Updated dependencies [d0531c4]
|
|
1462
|
+
- Updated dependencies [cff5aac]
|
|
1463
|
+
- @objectstack/spec@14.0.0
|
|
1464
|
+
- @objectstack/platform-objects@14.0.0
|
|
1465
|
+
- @objectstack/core@14.0.0
|
|
1466
|
+
- @objectstack/metadata-core@14.0.0
|
|
1467
|
+
- @objectstack/types@14.0.0
|
|
1468
|
+
- @objectstack/metadata-fs@14.0.0
|
|
1469
|
+
|
|
1470
|
+
## 13.0.0
|
|
1471
|
+
|
|
1472
|
+
### Major Changes
|
|
1473
|
+
|
|
1474
|
+
- 6d83431: ADR-0090 P1 breaking wave — permission model v2 concept convergence.
|
|
1475
|
+
|
|
1476
|
+
Pre-launch one-step renames and secure defaults (no compatibility aliases, per
|
|
1477
|
+
ADR-0090 D3/D4 superseding ADR-0057 D5/D7's alias discipline):
|
|
1478
|
+
|
|
1479
|
+
- `sys_role` → `sys_position`, `sys_user_role` → `sys_user_position` (field
|
|
1480
|
+
`role` → `position`), `sys_role_permission_set` → `sys_position_permission_set`
|
|
1481
|
+
(field `role_id` → `position_id`); `RoleSchema`/`defineRole` →
|
|
1482
|
+
`PositionSchema`/`definePosition` with **no `parent`** (positions are flat;
|
|
1483
|
+
hierarchy lives on the business-unit tree).
|
|
1484
|
+
- `ExecutionContext.roles[]` → `positions[]`; the EvalUser/CEL contract
|
|
1485
|
+
`current_user.roles` → `current_user.positions` (formula validators updated);
|
|
1486
|
+
stack property `roles:` → `positions:`; metadata kinds `role`/`profile` →
|
|
1487
|
+
`position` (profile kind removed).
|
|
1488
|
+
- `isProfile` removed from `PermissionSetSchema` (ADR-0090 D2); `isDefault`
|
|
1489
|
+
narrows to an install-time suggestion; `appDefaultProfileName` →
|
|
1490
|
+
`appDefaultPermissionSetName` (isDefault-only).
|
|
1491
|
+
- OWD enum drops legacy aliases `read`/`read_write`/`full`; new optional
|
|
1492
|
+
`externalSharingModel` (external dial, `private` default) lands as P1 spec
|
|
1493
|
+
shape (ADR-0090 D11).
|
|
1494
|
+
- **Secure default (D1)**: a custom object with an owner field and NO
|
|
1495
|
+
`sharingModel` now resolves `private` (was: fully public). System objects
|
|
1496
|
+
keep their explicit posture. Unrecognised stored values fail closed.
|
|
1497
|
+
- ExecutionContext gains the P1 principal-taxonomy shape (D10):
|
|
1498
|
+
`principalKind` / `audience` / `onBehalfOf` (optional, semantics phase in
|
|
1499
|
+
later).
|
|
1500
|
+
- Sharing recipients: `role` → `position` (expanded via `sys_user_position`
|
|
1501
|
+
∪ the better-auth membership transition source); `role_and_subordinates`
|
|
1502
|
+
removed — `unit_and_subordinates` now expands the business-unit subtree
|
|
1503
|
+
(finishes ADR-0057 D5's re-homing).
|
|
1504
|
+
|
|
1505
|
+
### Patch Changes
|
|
1506
|
+
|
|
1507
|
+
- Updated dependencies [6d83431]
|
|
1508
|
+
- Updated dependencies [01917c2]
|
|
1509
|
+
- Updated dependencies [b271691]
|
|
1510
|
+
- Updated dependencies [a5a1e41]
|
|
1511
|
+
- Updated dependencies [466adf6]
|
|
1512
|
+
- Updated dependencies [57b89b4]
|
|
1513
|
+
- Updated dependencies [5be00c3]
|
|
1514
|
+
- Updated dependencies [466adf6]
|
|
1515
|
+
- Updated dependencies [2bee609]
|
|
1516
|
+
- Updated dependencies [9fa84f9]
|
|
1517
|
+
- Updated dependencies [fc7e7f7]
|
|
1518
|
+
- @objectstack/spec@13.0.0
|
|
1519
|
+
- @objectstack/core@13.0.0
|
|
1520
|
+
- @objectstack/platform-objects@13.0.0
|
|
1521
|
+
- @objectstack/types@13.0.0
|
|
1522
|
+
- @objectstack/metadata-core@13.0.0
|
|
1523
|
+
- @objectstack/metadata-fs@13.0.0
|
|
1524
|
+
|
|
1525
|
+
## 12.6.0
|
|
1526
|
+
|
|
1527
|
+
### Patch Changes
|
|
1528
|
+
|
|
1529
|
+
- Updated dependencies [6cebf22]
|
|
1530
|
+
- Updated dependencies [21420d9]
|
|
1531
|
+
- @objectstack/spec@12.6.0
|
|
1532
|
+
- @objectstack/core@12.6.0
|
|
1533
|
+
- @objectstack/metadata-core@12.6.0
|
|
1534
|
+
- @objectstack/platform-objects@12.6.0
|
|
1535
|
+
- @objectstack/types@12.6.0
|
|
1536
|
+
- @objectstack/metadata-fs@12.6.0
|
|
1537
|
+
|
|
1538
|
+
## 12.5.0
|
|
1539
|
+
|
|
1540
|
+
### Patch Changes
|
|
1541
|
+
|
|
1542
|
+
- Updated dependencies [8b3d363]
|
|
1543
|
+
- @objectstack/spec@12.5.0
|
|
1544
|
+
- @objectstack/core@12.5.0
|
|
1545
|
+
- @objectstack/metadata-core@12.5.0
|
|
1546
|
+
- @objectstack/platform-objects@12.5.0
|
|
1547
|
+
- @objectstack/types@12.5.0
|
|
1548
|
+
- @objectstack/metadata-fs@12.5.0
|
|
1549
|
+
|
|
1550
|
+
## 12.4.0
|
|
1551
|
+
|
|
1552
|
+
### Patch Changes
|
|
1553
|
+
|
|
1554
|
+
- Updated dependencies [60dc3ba]
|
|
1555
|
+
- @objectstack/spec@12.4.0
|
|
1556
|
+
- @objectstack/metadata-core@12.4.0
|
|
1557
|
+
- @objectstack/core@12.4.0
|
|
1558
|
+
- @objectstack/platform-objects@12.4.0
|
|
1559
|
+
- @objectstack/types@12.4.0
|
|
1560
|
+
- @objectstack/metadata-fs@12.4.0
|
|
1561
|
+
|
|
1562
|
+
## 12.3.0
|
|
1563
|
+
|
|
1564
|
+
### Patch Changes
|
|
1565
|
+
|
|
1566
|
+
- Updated dependencies [e7eceec]
|
|
1567
|
+
- @objectstack/spec@12.3.0
|
|
1568
|
+
- @objectstack/core@12.3.0
|
|
1569
|
+
- @objectstack/metadata-core@12.3.0
|
|
1570
|
+
- @objectstack/platform-objects@12.3.0
|
|
1571
|
+
- @objectstack/types@12.3.0
|
|
1572
|
+
- @objectstack/metadata-fs@12.3.0
|
|
1573
|
+
|
|
1574
|
+
## 12.2.0
|
|
1575
|
+
|
|
1576
|
+
### Patch Changes
|
|
1577
|
+
|
|
1578
|
+
- Updated dependencies [fce8ff4]
|
|
1579
|
+
- Updated dependencies [3962023]
|
|
1580
|
+
- Updated dependencies [2bb193d]
|
|
1581
|
+
- Updated dependencies [0426d27]
|
|
1582
|
+
- Updated dependencies [da807f7]
|
|
1583
|
+
- Updated dependencies [4f5b791]
|
|
1584
|
+
- @objectstack/spec@12.2.0
|
|
1585
|
+
- @objectstack/metadata-core@12.2.0
|
|
1586
|
+
- @objectstack/core@12.2.0
|
|
1587
|
+
- @objectstack/platform-objects@12.2.0
|
|
1588
|
+
- @objectstack/types@12.2.0
|
|
1589
|
+
- @objectstack/metadata-fs@12.2.0
|
|
1590
|
+
|
|
1591
|
+
## 12.1.0
|
|
1592
|
+
|
|
1593
|
+
### Patch Changes
|
|
1594
|
+
|
|
1595
|
+
- Updated dependencies [93e6d02]
|
|
1596
|
+
- @objectstack/spec@12.1.0
|
|
1597
|
+
- @objectstack/core@12.1.0
|
|
1598
|
+
- @objectstack/metadata-core@12.1.0
|
|
1599
|
+
- @objectstack/platform-objects@12.1.0
|
|
1600
|
+
- @objectstack/types@12.1.0
|
|
1601
|
+
- @objectstack/metadata-fs@12.1.0
|
|
1602
|
+
|
|
1603
|
+
## 12.0.0
|
|
1604
|
+
|
|
1605
|
+
### Patch Changes
|
|
1606
|
+
|
|
1607
|
+
- 9860de4: Surface view-key collisions during view container expansion instead of renaming silently.
|
|
1608
|
+
|
|
1609
|
+
`expandViewContainer` keeps its backward-compatible rename behaviour (`<object>.<key>` →
|
|
1610
|
+
`<object>.<key>_2` on collision) but now stamps a machine-readable
|
|
1611
|
+
`_diagnostics.warnings` entry on the renamed `ExpandedViewItem`, explaining that
|
|
1612
|
+
references targeting the requested name (form action targets, navigation `viewName`s)
|
|
1613
|
+
will resolve to the _other_ view. Both flattening loaders — the ObjectQL engine and the
|
|
1614
|
+
MetadataPlugin — log these warnings at boot so the collision is visible instead of
|
|
1615
|
+
manifesting as a form action opening a list view (#2554).
|
|
1616
|
+
|
|
1617
|
+
- Updated dependencies [a8df396]
|
|
1618
|
+
- Updated dependencies [e695fe0]
|
|
1619
|
+
- Updated dependencies [07f055c]
|
|
1620
|
+
- Updated dependencies [7c09621]
|
|
1621
|
+
- Updated dependencies [7709db4]
|
|
1622
|
+
- Updated dependencies [2082109]
|
|
1623
|
+
- Updated dependencies [7c09621]
|
|
1624
|
+
- Updated dependencies [9860de4]
|
|
1625
|
+
- Updated dependencies [069c205]
|
|
1626
|
+
- @objectstack/spec@12.0.0
|
|
1627
|
+
- @objectstack/platform-objects@12.0.0
|
|
1628
|
+
- @objectstack/core@12.0.0
|
|
1629
|
+
- @objectstack/metadata-core@12.0.0
|
|
1630
|
+
- @objectstack/types@12.0.0
|
|
1631
|
+
- @objectstack/metadata-fs@12.0.0
|
|
1632
|
+
|
|
1633
|
+
## 11.10.0
|
|
1634
|
+
|
|
1635
|
+
### Patch Changes
|
|
1636
|
+
|
|
1637
|
+
- Updated dependencies [6a9397e]
|
|
1638
|
+
- Updated dependencies [c0efe5d]
|
|
1639
|
+
- @objectstack/spec@11.10.0
|
|
1640
|
+
- @objectstack/core@11.10.0
|
|
1641
|
+
- @objectstack/metadata-core@11.10.0
|
|
1642
|
+
- @objectstack/platform-objects@11.10.0
|
|
1643
|
+
- @objectstack/types@11.10.0
|
|
1644
|
+
- @objectstack/metadata-fs@11.10.0
|
|
1645
|
+
|
|
1646
|
+
## 11.9.0
|
|
1647
|
+
|
|
1648
|
+
### Patch Changes
|
|
1649
|
+
|
|
1650
|
+
- Updated dependencies [d3595d9]
|
|
1651
|
+
- @objectstack/spec@11.9.0
|
|
1652
|
+
- @objectstack/core@11.9.0
|
|
1653
|
+
- @objectstack/metadata-core@11.9.0
|
|
1654
|
+
- @objectstack/platform-objects@11.9.0
|
|
1655
|
+
- @objectstack/types@11.9.0
|
|
1656
|
+
- @objectstack/metadata-fs@11.9.0
|
|
1657
|
+
|
|
1658
|
+
## 11.8.0
|
|
1659
|
+
|
|
1660
|
+
### Patch Changes
|
|
1661
|
+
|
|
1662
|
+
- Updated dependencies [53d491a]
|
|
1663
|
+
- Updated dependencies [b84726b]
|
|
1664
|
+
- @objectstack/platform-objects@11.8.0
|
|
1665
|
+
- @objectstack/spec@11.8.0
|
|
1666
|
+
- @objectstack/core@11.8.0
|
|
1667
|
+
- @objectstack/types@11.8.0
|
|
1668
|
+
- @objectstack/metadata-core@11.8.0
|
|
1669
|
+
- @objectstack/metadata-fs@11.8.0
|
|
1670
|
+
|
|
1671
|
+
## 11.7.0
|
|
1672
|
+
|
|
1673
|
+
### Patch Changes
|
|
1674
|
+
|
|
1675
|
+
- Updated dependencies [5178906]
|
|
1676
|
+
- @objectstack/spec@11.7.0
|
|
1677
|
+
- @objectstack/platform-objects@11.7.0
|
|
1678
|
+
- @objectstack/core@11.7.0
|
|
1679
|
+
- @objectstack/metadata-core@11.7.0
|
|
1680
|
+
- @objectstack/types@11.7.0
|
|
1681
|
+
- @objectstack/metadata-fs@11.7.0
|
|
1682
|
+
|
|
1683
|
+
## 11.6.0
|
|
1684
|
+
|
|
1685
|
+
### Patch Changes
|
|
1686
|
+
|
|
1687
|
+
- @objectstack/spec@11.6.0
|
|
1688
|
+
- @objectstack/core@11.6.0
|
|
1689
|
+
- @objectstack/types@11.6.0
|
|
1690
|
+
- @objectstack/metadata-core@11.6.0
|
|
1691
|
+
- @objectstack/metadata-fs@11.6.0
|
|
1692
|
+
- @objectstack/platform-objects@11.6.0
|
|
1693
|
+
|
|
1694
|
+
## 11.5.0
|
|
1695
|
+
|
|
1696
|
+
### Patch Changes
|
|
1697
|
+
|
|
1698
|
+
- Updated dependencies [6ee4f04]
|
|
1699
|
+
- Updated dependencies [c1e3a65]
|
|
1700
|
+
- @objectstack/spec@11.5.0
|
|
1701
|
+
- @objectstack/core@11.5.0
|
|
1702
|
+
- @objectstack/metadata-core@11.5.0
|
|
1703
|
+
- @objectstack/platform-objects@11.5.0
|
|
1704
|
+
- @objectstack/types@11.5.0
|
|
1705
|
+
- @objectstack/metadata-fs@11.5.0
|
|
1706
|
+
|
|
1707
|
+
## 11.4.0
|
|
1708
|
+
|
|
1709
|
+
### Patch Changes
|
|
1710
|
+
|
|
1711
|
+
- Updated dependencies [5821c51]
|
|
1712
|
+
- Updated dependencies [a0fce3f]
|
|
1713
|
+
- @objectstack/spec@11.4.0
|
|
1714
|
+
- @objectstack/core@11.4.0
|
|
1715
|
+
- @objectstack/metadata-core@11.4.0
|
|
1716
|
+
- @objectstack/platform-objects@11.4.0
|
|
1717
|
+
- @objectstack/types@11.4.0
|
|
1718
|
+
- @objectstack/metadata-fs@11.4.0
|
|
1719
|
+
|
|
1720
|
+
## 11.3.0
|
|
1721
|
+
|
|
1722
|
+
### Patch Changes
|
|
1723
|
+
|
|
1724
|
+
- Updated dependencies [58e8e31]
|
|
1725
|
+
- Updated dependencies [b4a5df0]
|
|
1726
|
+
- @objectstack/spec@11.3.0
|
|
1727
|
+
- @objectstack/core@11.3.0
|
|
1728
|
+
- @objectstack/metadata-core@11.3.0
|
|
1729
|
+
- @objectstack/platform-objects@11.3.0
|
|
1730
|
+
- @objectstack/types@11.3.0
|
|
1731
|
+
- @objectstack/metadata-fs@11.3.0
|
|
1732
|
+
|
|
1733
|
+
## 11.2.0
|
|
1734
|
+
|
|
1735
|
+
### Patch Changes
|
|
1736
|
+
|
|
1737
|
+
- Updated dependencies [d0f4b13]
|
|
1738
|
+
- Updated dependencies [302bdab]
|
|
1739
|
+
- @objectstack/spec@11.2.0
|
|
1740
|
+
- @objectstack/core@11.2.0
|
|
1741
|
+
- @objectstack/metadata-core@11.2.0
|
|
1742
|
+
- @objectstack/platform-objects@11.2.0
|
|
1743
|
+
- @objectstack/types@11.2.0
|
|
1744
|
+
- @objectstack/metadata-fs@11.2.0
|
|
1745
|
+
|
|
1746
|
+
## 11.1.0
|
|
1747
|
+
|
|
1748
|
+
### Patch Changes
|
|
1749
|
+
|
|
1750
|
+
- Updated dependencies [cbc8c02]
|
|
1751
|
+
- Updated dependencies [07c2773]
|
|
1752
|
+
- Updated dependencies [d7a88df]
|
|
1753
|
+
- Updated dependencies [4f8f108]
|
|
1754
|
+
- Updated dependencies [ce0b4f6]
|
|
1755
|
+
- Updated dependencies [90bce88]
|
|
1756
|
+
- Updated dependencies [3209ec6]
|
|
1757
|
+
- Updated dependencies [e011d42]
|
|
1758
|
+
- Updated dependencies [6e5bdd5]
|
|
1759
|
+
- Updated dependencies [9ccfcd6]
|
|
1760
|
+
- Updated dependencies [ecf193f]
|
|
1761
|
+
- Updated dependencies [51bec81]
|
|
1762
|
+
- Updated dependencies [3e593a7]
|
|
1763
|
+
- Updated dependencies [fdb41c0]
|
|
1764
|
+
- Updated dependencies [63d5403]
|
|
1765
|
+
- @objectstack/platform-objects@11.1.0
|
|
1766
|
+
- @objectstack/core@11.1.0
|
|
1767
|
+
- @objectstack/spec@11.1.0
|
|
1768
|
+
- @objectstack/types@11.1.0
|
|
1769
|
+
- @objectstack/metadata-core@11.1.0
|
|
1770
|
+
- @objectstack/metadata-fs@11.1.0
|
|
1771
|
+
|
|
1772
|
+
## 11.0.0
|
|
1773
|
+
|
|
1774
|
+
### Patch Changes
|
|
1775
|
+
|
|
1776
|
+
- 4b5ec6e: fix(automation): re-bind scheduled-flow jobs on `os dev` hot-reload
|
|
1777
|
+
|
|
1778
|
+
Editing a schedule-triggered flow under `objectstack dev` silently kept firing
|
|
1779
|
+
the OLD definition until a full server restart. The dev watcher recompiles
|
|
1780
|
+
`dist/objectstack.json` and MetadataPlugin reloads it into the MetadataManager
|
|
1781
|
+
(so GET /meta reads + UI HMR are fresh), but the AutomationEngine pulls its flow
|
|
1782
|
+
definitions and trigger/job bindings ONCE at boot — nothing re-registered them
|
|
1783
|
+
on reload. So the scheduled job bound at boot kept running the pre-edit flow
|
|
1784
|
+
(old `runAs`, schedule, or logic) on its timer, with no signal that the edit had
|
|
1785
|
+
no effect.
|
|
1786
|
+
|
|
1787
|
+
Fix: MetadataPlugin now fires a generic `metadata:reloaded` hook after each
|
|
1788
|
+
artifact reload (the HMR POST handler and the server-side artifact-file watcher;
|
|
1789
|
+
never on the initial boot load). AutomationServicePlugin subscribes and re-syncs
|
|
1790
|
+
the engine from the metadata service — re-registering every current flow
|
|
1791
|
+
(idempotent: `registerFlow` re-binds the trigger, and `ScheduleTrigger.start`
|
|
1792
|
+
cancels + reschedules the job) and unregistering flows removed from the artifact
|
|
1793
|
+
so their jobs stop firing. This covers all auto-triggered flow types
|
|
1794
|
+
(schedule / record-change / api), not just scheduled ones, since record-change
|
|
1795
|
+
flows were also executing their boot-time definitions after an edit. Production
|
|
1796
|
+
deployments are unaffected — nothing reloads the artifact there.
|
|
1797
|
+
|
|
1798
|
+
- Updated dependencies [4d99a5c]
|
|
1799
|
+
- Updated dependencies [9b5bf3d]
|
|
1800
|
+
- Updated dependencies [cb5b393]
|
|
1801
|
+
- Updated dependencies [ab5718a]
|
|
1802
|
+
- Updated dependencies [4845c12]
|
|
1803
|
+
- Updated dependencies [c1a754a]
|
|
1804
|
+
- Updated dependencies [6fbe91f]
|
|
1805
|
+
- Updated dependencies [715d667]
|
|
1806
|
+
- Updated dependencies [5eef4cf]
|
|
1807
|
+
- Updated dependencies [72759e1]
|
|
1808
|
+
- Updated dependencies [6c4fbd9]
|
|
1809
|
+
- Updated dependencies [ef3ed67]
|
|
1810
|
+
- Updated dependencies [cd51229]
|
|
1811
|
+
- Updated dependencies [7697a0e]
|
|
1812
|
+
- Updated dependencies [e7e04f1]
|
|
1813
|
+
- Updated dependencies [cfd5ac4]
|
|
1814
|
+
- Updated dependencies [2be5c1f]
|
|
1815
|
+
- Updated dependencies [ad143ce]
|
|
1816
|
+
- Updated dependencies [5c4a8c8]
|
|
1817
|
+
- Updated dependencies [3afaeed]
|
|
1818
|
+
- Updated dependencies [5737261]
|
|
1819
|
+
- Updated dependencies [a619a3a]
|
|
1820
|
+
- Updated dependencies [f44c1bd]
|
|
1821
|
+
- Updated dependencies [795b6d1]
|
|
1822
|
+
- Updated dependencies [8801c02]
|
|
1823
|
+
- Updated dependencies [3d04e06]
|
|
1824
|
+
- Updated dependencies [4a84c98]
|
|
1825
|
+
- Updated dependencies [c715d25]
|
|
1826
|
+
- Updated dependencies [aa33b02]
|
|
1827
|
+
- Updated dependencies [d980f0d]
|
|
1828
|
+
- Updated dependencies [a658523]
|
|
1829
|
+
- Updated dependencies [82ff91c]
|
|
1830
|
+
- Updated dependencies [638f472]
|
|
1831
|
+
- @objectstack/metadata-core@11.0.0
|
|
1832
|
+
- @objectstack/platform-objects@11.0.0
|
|
1833
|
+
- @objectstack/spec@11.0.0
|
|
1834
|
+
- @objectstack/types@11.0.0
|
|
1835
|
+
- @objectstack/core@11.0.0
|
|
1836
|
+
- @objectstack/metadata-fs@11.0.0
|
|
1837
|
+
|
|
1838
|
+
## 10.3.0
|
|
1839
|
+
|
|
1840
|
+
### Patch Changes
|
|
1841
|
+
|
|
1842
|
+
- @objectstack/spec@10.3.0
|
|
1843
|
+
- @objectstack/core@10.3.0
|
|
1844
|
+
- @objectstack/types@10.3.0
|
|
1845
|
+
- @objectstack/metadata-core@10.3.0
|
|
1846
|
+
- @objectstack/metadata-fs@10.3.0
|
|
1847
|
+
- @objectstack/platform-objects@10.3.0
|
|
1848
|
+
|
|
1849
|
+
## 10.2.0
|
|
1850
|
+
|
|
1851
|
+
### Patch Changes
|
|
1852
|
+
|
|
1853
|
+
- Updated dependencies [b496498]
|
|
1854
|
+
- @objectstack/spec@10.2.0
|
|
1855
|
+
- @objectstack/core@10.2.0
|
|
1856
|
+
- @objectstack/metadata-core@10.2.0
|
|
1857
|
+
- @objectstack/platform-objects@10.2.0
|
|
1858
|
+
- @objectstack/types@10.2.0
|
|
1859
|
+
- @objectstack/metadata-fs@10.2.0
|
|
1860
|
+
|
|
1861
|
+
## 10.1.0
|
|
1862
|
+
|
|
1863
|
+
### Patch Changes
|
|
1864
|
+
|
|
1865
|
+
- Updated dependencies [49da36e]
|
|
1866
|
+
- Updated dependencies [ac79f16]
|
|
1867
|
+
- @objectstack/spec@10.1.0
|
|
1868
|
+
- @objectstack/core@10.1.0
|
|
1869
|
+
- @objectstack/metadata-core@10.1.0
|
|
1870
|
+
- @objectstack/platform-objects@10.1.0
|
|
1871
|
+
- @objectstack/types@10.1.0
|
|
1872
|
+
- @objectstack/metadata-fs@10.1.0
|
|
1873
|
+
|
|
1874
|
+
## 10.0.0
|
|
1875
|
+
|
|
1876
|
+
### Patch Changes
|
|
1877
|
+
|
|
1878
|
+
- Updated dependencies [d7ff626]
|
|
1879
|
+
- Updated dependencies [2a1b16b]
|
|
1880
|
+
- Updated dependencies [2256e93]
|
|
1881
|
+
- Updated dependencies [7108ff3]
|
|
1882
|
+
- Updated dependencies [30c0313]
|
|
1883
|
+
- Updated dependencies [e16f2a8]
|
|
1884
|
+
- Updated dependencies [e411a82]
|
|
1885
|
+
- Updated dependencies [ae271d0]
|
|
1886
|
+
- Updated dependencies [61ed5c7]
|
|
1887
|
+
- Updated dependencies [a581385]
|
|
1888
|
+
- Updated dependencies [d5f6d29]
|
|
1889
|
+
- Updated dependencies [220ce5b]
|
|
1890
|
+
- Updated dependencies [3efe334]
|
|
1891
|
+
- Updated dependencies [0df063e]
|
|
1892
|
+
- Updated dependencies [ce13bb8]
|
|
1893
|
+
- Updated dependencies [feead7e]
|
|
1894
|
+
- Updated dependencies [6ca20b3]
|
|
1895
|
+
- Updated dependencies [5f875fe]
|
|
1896
|
+
- Updated dependencies [b469950]
|
|
1897
|
+
- Updated dependencies [47d978a]
|
|
1898
|
+
- @objectstack/spec@10.0.0
|
|
1899
|
+
- @objectstack/platform-objects@10.0.0
|
|
1900
|
+
- @objectstack/core@10.0.0
|
|
1901
|
+
- @objectstack/metadata-core@10.0.0
|
|
1902
|
+
- @objectstack/types@10.0.0
|
|
1903
|
+
- @objectstack/metadata-fs@10.0.0
|
|
1904
|
+
|
|
1905
|
+
## 9.11.0
|
|
1906
|
+
|
|
1907
|
+
### Patch Changes
|
|
1908
|
+
|
|
1909
|
+
- Updated dependencies [e7f6539]
|
|
1910
|
+
- Updated dependencies [2365d07]
|
|
1911
|
+
- Updated dependencies [6595b53]
|
|
1912
|
+
- Updated dependencies [fa8964d]
|
|
1913
|
+
- Updated dependencies [36138c7]
|
|
1914
|
+
- Updated dependencies [a8e4f3b]
|
|
1915
|
+
- Updated dependencies [4c213c2]
|
|
1916
|
+
- Updated dependencies [2afb612]
|
|
1917
|
+
- @objectstack/spec@9.11.0
|
|
1918
|
+
- @objectstack/core@9.11.0
|
|
1919
|
+
- @objectstack/metadata-core@9.11.0
|
|
1920
|
+
- @objectstack/platform-objects@9.11.0
|
|
1921
|
+
- @objectstack/types@9.11.0
|
|
1922
|
+
- @objectstack/metadata-fs@9.11.0
|
|
1923
|
+
|
|
1924
|
+
## 9.10.0
|
|
1925
|
+
|
|
1926
|
+
### Patch Changes
|
|
1927
|
+
|
|
1928
|
+
- Updated dependencies [db02bd5]
|
|
1929
|
+
- Updated dependencies [641675d]
|
|
1930
|
+
- Updated dependencies [94e9040]
|
|
1931
|
+
- Updated dependencies [4331adb]
|
|
1932
|
+
- Updated dependencies [1f88fd9]
|
|
1933
|
+
- Updated dependencies [1f88fd9]
|
|
1934
|
+
- @objectstack/spec@9.10.0
|
|
1935
|
+
- @objectstack/platform-objects@9.10.0
|
|
1936
|
+
- @objectstack/core@9.10.0
|
|
1937
|
+
- @objectstack/metadata-core@9.10.0
|
|
1938
|
+
- @objectstack/types@9.10.0
|
|
1939
|
+
- @objectstack/metadata-fs@9.10.0
|
|
1940
|
+
|
|
1941
|
+
## 9.9.1
|
|
1942
|
+
|
|
1943
|
+
### Patch Changes
|
|
1944
|
+
|
|
1945
|
+
- @objectstack/spec@9.9.1
|
|
1946
|
+
- @objectstack/core@9.9.1
|
|
1947
|
+
- @objectstack/types@9.9.1
|
|
1948
|
+
- @objectstack/metadata-core@9.9.1
|
|
1949
|
+
- @objectstack/metadata-fs@9.9.1
|
|
1950
|
+
- @objectstack/platform-objects@9.9.1
|
|
1951
|
+
|
|
1952
|
+
## 9.9.0
|
|
1953
|
+
|
|
1954
|
+
### Patch Changes
|
|
1955
|
+
|
|
1956
|
+
- Updated dependencies [84249a4]
|
|
1957
|
+
- Updated dependencies [11af299]
|
|
1958
|
+
- Updated dependencies [d5774b5]
|
|
1959
|
+
- Updated dependencies [134043a]
|
|
1960
|
+
- Updated dependencies [90108e0]
|
|
1961
|
+
- Updated dependencies [9afeb2d]
|
|
1962
|
+
- Updated dependencies [6bec07e]
|
|
1963
|
+
- Updated dependencies [601cc11]
|
|
1964
|
+
- Updated dependencies [575448d]
|
|
1965
|
+
- @objectstack/spec@9.9.0
|
|
1966
|
+
- @objectstack/core@9.9.0
|
|
1967
|
+
- @objectstack/metadata-core@9.9.0
|
|
1968
|
+
- @objectstack/platform-objects@9.9.0
|
|
1969
|
+
- @objectstack/types@9.9.0
|
|
1970
|
+
- @objectstack/metadata-fs@9.9.0
|
|
1971
|
+
|
|
1972
|
+
## 9.8.0
|
|
1973
|
+
|
|
1974
|
+
### Patch Changes
|
|
1975
|
+
|
|
1976
|
+
- Updated dependencies [97c55b3]
|
|
1977
|
+
- Updated dependencies [1b1f490]
|
|
1978
|
+
- @objectstack/spec@9.8.0
|
|
1979
|
+
- @objectstack/core@9.8.0
|
|
1980
|
+
- @objectstack/metadata-core@9.8.0
|
|
1981
|
+
- @objectstack/platform-objects@9.8.0
|
|
1982
|
+
- @objectstack/types@9.8.0
|
|
1983
|
+
- @objectstack/metadata-fs@9.8.0
|
|
1984
|
+
|
|
1985
|
+
## 9.7.0
|
|
1986
|
+
|
|
1987
|
+
### Patch Changes
|
|
1988
|
+
|
|
1989
|
+
- @objectstack/spec@9.7.0
|
|
1990
|
+
- @objectstack/core@9.7.0
|
|
1991
|
+
- @objectstack/types@9.7.0
|
|
1992
|
+
- @objectstack/metadata-core@9.7.0
|
|
1993
|
+
- @objectstack/metadata-fs@9.7.0
|
|
1994
|
+
- @objectstack/platform-objects@9.7.0
|
|
1995
|
+
|
|
1996
|
+
## 9.6.0
|
|
1997
|
+
|
|
1998
|
+
### Patch Changes
|
|
1999
|
+
|
|
2000
|
+
- Updated dependencies [d1e930a]
|
|
2001
|
+
- Updated dependencies [71578f2]
|
|
2002
|
+
- Updated dependencies [5e3a301]
|
|
2003
|
+
- Updated dependencies [5db2742]
|
|
2004
|
+
- @objectstack/spec@9.6.0
|
|
2005
|
+
- @objectstack/core@9.6.0
|
|
2006
|
+
- @objectstack/metadata-core@9.6.0
|
|
2007
|
+
- @objectstack/platform-objects@9.6.0
|
|
2008
|
+
- @objectstack/types@9.6.0
|
|
2009
|
+
- @objectstack/metadata-fs@9.6.0
|
|
2010
|
+
|
|
2011
|
+
## 9.5.1
|
|
2012
|
+
|
|
2013
|
+
### Patch Changes
|
|
2014
|
+
|
|
2015
|
+
- Updated dependencies [ee72aae]
|
|
2016
|
+
- @objectstack/spec@9.5.1
|
|
2017
|
+
- @objectstack/core@9.5.1
|
|
2018
|
+
- @objectstack/metadata-core@9.5.1
|
|
2019
|
+
- @objectstack/platform-objects@9.5.1
|
|
2020
|
+
- @objectstack/types@9.5.1
|
|
2021
|
+
- @objectstack/metadata-fs@9.5.1
|
|
2022
|
+
|
|
2023
|
+
## 9.5.0
|
|
2024
|
+
|
|
2025
|
+
### Patch Changes
|
|
2026
|
+
|
|
2027
|
+
- Updated dependencies [d08551c]
|
|
2028
|
+
- Updated dependencies [5be7102]
|
|
2029
|
+
- Updated dependencies [707aeed]
|
|
2030
|
+
- Updated dependencies [7a103d4]
|
|
2031
|
+
- Updated dependencies [4b01250]
|
|
2032
|
+
- @objectstack/spec@9.5.0
|
|
2033
|
+
- @objectstack/platform-objects@9.5.0
|
|
2034
|
+
- @objectstack/core@9.5.0
|
|
2035
|
+
- @objectstack/metadata-core@9.5.0
|
|
2036
|
+
- @objectstack/types@9.5.0
|
|
2037
|
+
- @objectstack/metadata-fs@9.5.0
|
|
2038
|
+
|
|
2039
|
+
## 9.4.0
|
|
2040
|
+
|
|
2041
|
+
### Patch Changes
|
|
2042
|
+
|
|
2043
|
+
- 2c8e607: fix(ADR-0046): serve package docs at runtime, not just in the compiled artifact
|
|
2044
|
+
|
|
2045
|
+
Package docs (`src/docs/*.md`) compiled into a bundle were never reaching the
|
|
2046
|
+
runtime, so `GET /meta/doc` returned an empty list and the docs were invisible
|
|
2047
|
+
even though `os build` produced them.
|
|
2048
|
+
|
|
2049
|
+
Two gaps:
|
|
2050
|
+
|
|
2051
|
+
- **`os dev` / `os serve` (config-load path)** re-derives metadata from
|
|
2052
|
+
`defineStack(...)`, which never carries the markdown docs — those are
|
|
2053
|
+
collected only at compile time. `serve.ts` now collects `src/docs/*.md` into
|
|
2054
|
+
the stack on the config-load path too (collection only — additive, never
|
|
2055
|
+
blocks boot), so docs serve in dev exactly as from a built artifact.
|
|
2056
|
+
- **The MetadataPlugin artifact loader** (`ARTIFACT_FIELD_TO_TYPE`) omitted the
|
|
2057
|
+
`docs` → `doc` mapping, so the bundle's `docs` array was skipped when loading
|
|
2058
|
+
through that path. Added the mapping (with a regression test) for parity with
|
|
2059
|
+
the ObjectQL engine's `metadataArrayKeys`.
|
|
2060
|
+
|
|
2061
|
+
- Updated dependencies [060467a]
|
|
2062
|
+
- Updated dependencies [0856476]
|
|
2063
|
+
- Updated dependencies [fef38ec]
|
|
2064
|
+
- Updated dependencies [b678d8c]
|
|
2065
|
+
- Updated dependencies [b678d8c]
|
|
2066
|
+
- Updated dependencies [b678d8c]
|
|
2067
|
+
- @objectstack/spec@9.4.0
|
|
2068
|
+
- @objectstack/metadata-core@9.4.0
|
|
2069
|
+
- @objectstack/core@9.4.0
|
|
2070
|
+
- @objectstack/platform-objects@9.4.0
|
|
2071
|
+
- @objectstack/types@9.4.0
|
|
2072
|
+
- @objectstack/metadata-fs@9.4.0
|
|
2073
|
+
|
|
2074
|
+
## 9.3.0
|
|
2075
|
+
|
|
2076
|
+
### Minor Changes
|
|
2077
|
+
|
|
2078
|
+
- b10aa78: Metadata registered through the metadata-service path now carries package provenance. `loadMetadataFromService` and `MetadataFacade.register` pass each item's own `_packageId` through to `registry.registerItem` so `applyProtection` stamps `_packageId`/`_provenance: 'package'` (never a synthetic id — `isArtifactBacked()` write authorization keys off `_packageId`). New `MetadataPluginOptions.packageId` lets hosts running the filesystem scanner declare the owning package id for scanned source-file metadata, closing the same gap for hand-wired kernels. GET /api/v1/meta/:type consumers (e.g. objectui NavigationSyncEffect) can now distinguish package-shipped items from user-authored rows without name heuristics.
|
|
2079
|
+
|
|
2080
|
+
### Patch Changes
|
|
2081
|
+
|
|
2082
|
+
- Updated dependencies [1ada658]
|
|
2083
|
+
- Updated dependencies [3219191]
|
|
2084
|
+
- Updated dependencies [290f631]
|
|
2085
|
+
- Updated dependencies [50b7b47]
|
|
2086
|
+
- Updated dependencies [f15d6f6]
|
|
2087
|
+
- Updated dependencies [f8684ea]
|
|
2088
|
+
- Updated dependencies [c802327]
|
|
2089
|
+
- Updated dependencies [b4765be]
|
|
2090
|
+
- @objectstack/spec@9.3.0
|
|
2091
|
+
- @objectstack/platform-objects@9.3.0
|
|
2092
|
+
- @objectstack/core@9.3.0
|
|
2093
|
+
- @objectstack/metadata-core@9.3.0
|
|
2094
|
+
- @objectstack/types@9.3.0
|
|
2095
|
+
- @objectstack/metadata-fs@9.3.0
|
|
2096
|
+
|
|
2097
|
+
## 9.2.0
|
|
2098
|
+
|
|
2099
|
+
### Patch Changes
|
|
2100
|
+
|
|
2101
|
+
- Updated dependencies [2f57b75]
|
|
2102
|
+
- Updated dependencies [2f57b75]
|
|
2103
|
+
- @objectstack/spec@9.2.0
|
|
2104
|
+
- @objectstack/core@9.2.0
|
|
2105
|
+
- @objectstack/metadata-core@9.2.0
|
|
2106
|
+
- @objectstack/platform-objects@9.2.0
|
|
2107
|
+
- @objectstack/types@9.2.0
|
|
2108
|
+
- @objectstack/metadata-fs@9.2.0
|
|
2109
|
+
|
|
2110
|
+
## 9.1.0
|
|
2111
|
+
|
|
2112
|
+
### Patch Changes
|
|
2113
|
+
|
|
2114
|
+
- Updated dependencies [b9062c9]
|
|
2115
|
+
- @objectstack/spec@9.1.0
|
|
2116
|
+
- @objectstack/core@9.1.0
|
|
2117
|
+
- @objectstack/metadata-core@9.1.0
|
|
2118
|
+
- @objectstack/platform-objects@9.1.0
|
|
2119
|
+
- @objectstack/types@9.1.0
|
|
2120
|
+
- @objectstack/metadata-fs@9.1.0
|
|
2121
|
+
|
|
2122
|
+
## 9.0.1
|
|
2123
|
+
|
|
2124
|
+
### Patch Changes
|
|
2125
|
+
|
|
2126
|
+
- Updated dependencies [1817845]
|
|
2127
|
+
- @objectstack/spec@9.0.1
|
|
2128
|
+
- @objectstack/core@9.0.1
|
|
2129
|
+
- @objectstack/metadata-core@9.0.1
|
|
2130
|
+
- @objectstack/platform-objects@9.0.1
|
|
2131
|
+
- @objectstack/types@9.0.1
|
|
2132
|
+
- @objectstack/metadata-fs@9.0.1
|
|
2133
|
+
|
|
2134
|
+
## 9.0.0
|
|
2135
|
+
|
|
2136
|
+
### Patch Changes
|
|
2137
|
+
|
|
2138
|
+
- Updated dependencies [4c3f693]
|
|
2139
|
+
- Updated dependencies [0bf39f1]
|
|
2140
|
+
- Updated dependencies [f533f42]
|
|
2141
|
+
- Updated dependencies [1c83ee8]
|
|
2142
|
+
- @objectstack/spec@9.0.0
|
|
2143
|
+
- @objectstack/core@9.0.0
|
|
2144
|
+
- @objectstack/metadata-core@9.0.0
|
|
2145
|
+
- @objectstack/platform-objects@9.0.0
|
|
2146
|
+
- @objectstack/types@9.0.0
|
|
2147
|
+
- @objectstack/metadata-fs@9.0.0
|
|
2148
|
+
|
|
2149
|
+
## 8.0.1
|
|
2150
|
+
|
|
2151
|
+
### Patch Changes
|
|
2152
|
+
|
|
2153
|
+
- @objectstack/spec@8.0.1
|
|
2154
|
+
- @objectstack/core@8.0.1
|
|
2155
|
+
- @objectstack/types@8.0.1
|
|
2156
|
+
- @objectstack/metadata-core@8.0.1
|
|
2157
|
+
- @objectstack/metadata-fs@8.0.1
|
|
2158
|
+
- @objectstack/platform-objects@8.0.1
|
|
2159
|
+
|
|
2160
|
+
## 8.0.0
|
|
2161
|
+
|
|
2162
|
+
### Patch Changes
|
|
2163
|
+
|
|
2164
|
+
- Updated dependencies [a46c017]
|
|
2165
|
+
- Updated dependencies [b990b89]
|
|
2166
|
+
- Updated dependencies [99111ec]
|
|
2167
|
+
- Updated dependencies [d5a8161]
|
|
2168
|
+
- Updated dependencies [5cf1f1b]
|
|
2169
|
+
- Updated dependencies [9ef89d4]
|
|
2170
|
+
- Updated dependencies [3306d2f]
|
|
2171
|
+
- Updated dependencies [c262301]
|
|
2172
|
+
- Updated dependencies [bc44195]
|
|
2173
|
+
- Updated dependencies [9e2e229]
|
|
2174
|
+
- @objectstack/spec@8.0.0
|
|
2175
|
+
- @objectstack/core@8.0.0
|
|
2176
|
+
- @objectstack/metadata-core@8.0.0
|
|
2177
|
+
- @objectstack/platform-objects@8.0.0
|
|
2178
|
+
- @objectstack/types@8.0.0
|
|
2179
|
+
- @objectstack/metadata-fs@8.0.0
|
|
2180
|
+
|
|
2181
|
+
## 7.9.0
|
|
2182
|
+
|
|
2183
|
+
### Patch Changes
|
|
2184
|
+
|
|
2185
|
+
- @objectstack/spec@7.9.0
|
|
2186
|
+
- @objectstack/core@7.9.0
|
|
2187
|
+
- @objectstack/types@7.9.0
|
|
2188
|
+
- @objectstack/metadata-core@7.9.0
|
|
2189
|
+
- @objectstack/metadata-fs@7.9.0
|
|
2190
|
+
- @objectstack/platform-objects@7.9.0
|
|
2191
|
+
|
|
2192
|
+
## 7.8.0
|
|
2193
|
+
|
|
2194
|
+
### Patch Changes
|
|
2195
|
+
|
|
2196
|
+
- Updated dependencies [06f2bbb]
|
|
2197
|
+
- Updated dependencies [36719db]
|
|
2198
|
+
- Updated dependencies [424ab26]
|
|
2199
|
+
- @objectstack/spec@7.8.0
|
|
2200
|
+
- @objectstack/core@7.8.0
|
|
2201
|
+
- @objectstack/metadata-core@7.8.0
|
|
2202
|
+
- @objectstack/platform-objects@7.8.0
|
|
2203
|
+
- @objectstack/types@7.8.0
|
|
2204
|
+
- @objectstack/metadata-fs@7.8.0
|
|
2205
|
+
|
|
2206
|
+
## 7.7.0
|
|
2207
|
+
|
|
2208
|
+
### Patch Changes
|
|
2209
|
+
|
|
2210
|
+
- 764c747: fix(metadata): home the metadata-storage objects in metadata-core and register them from ObjectQL
|
|
2211
|
+
|
|
2212
|
+
Standalone "host config" apps boot without `@objectstack/metadata`'s MetadataPlugin, so nobody registered the metadata-storage objects (`sys_metadata`, `_history`, `_audit`, `sys_view_definition`) into ObjectQL — their tables were never schema-synced and ObjectQL's own protocol (`loadMetaFromDb` / `getMetaItems`) failed with `no such table: sys_metadata` on every read.
|
|
2213
|
+
|
|
2214
|
+
- Move the four storage-object definitions from `@objectstack/platform-objects/metadata` to `@objectstack/metadata-core` (the lowest package shared by their real consumers); `platform-objects/metadata` now re-exports them for back-compat.
|
|
2215
|
+
- `ObjectQLPlugin` registers these objects itself (gated on `environmentId === undefined`, mirroring `restoreMetadataFromDb`) so their tables always sync on platform/standalone kernels.
|
|
2216
|
+
- Gate the SQL driver's tenant-audit warning on actual multi-tenant mode — `organization_id` now exists on every table, so column presence alone no longer implies "tenant-scoped"; single-tenant boots no longer spam the warning for system writes.
|
|
2217
|
+
|
|
2218
|
+
- Updated dependencies [b391955]
|
|
2219
|
+
- Updated dependencies [f06b64e]
|
|
2220
|
+
- Updated dependencies [023bf93]
|
|
2221
|
+
- Updated dependencies [764c747]
|
|
2222
|
+
- @objectstack/spec@7.7.0
|
|
2223
|
+
- @objectstack/platform-objects@7.7.0
|
|
2224
|
+
- @objectstack/metadata-core@7.7.0
|
|
2225
|
+
- @objectstack/core@7.7.0
|
|
2226
|
+
- @objectstack/types@7.7.0
|
|
2227
|
+
- @objectstack/metadata-fs@7.7.0
|
|
2228
|
+
|
|
2229
|
+
## 7.6.0
|
|
2230
|
+
|
|
2231
|
+
### Patch Changes
|
|
2232
|
+
|
|
2233
|
+
- Updated dependencies [955d4c8]
|
|
2234
|
+
- Updated dependencies [c4a4cbd]
|
|
2235
|
+
- Updated dependencies [b046ec2]
|
|
2236
|
+
- Updated dependencies [2170ad9]
|
|
2237
|
+
- Updated dependencies [02d6359]
|
|
2238
|
+
- Updated dependencies [7648242]
|
|
2239
|
+
- Updated dependencies [8fa1e7f]
|
|
2240
|
+
- Updated dependencies [7ae6abc]
|
|
2241
|
+
- Updated dependencies [55866f5]
|
|
2242
|
+
- Updated dependencies [60f9c45]
|
|
2243
|
+
- @objectstack/spec@7.6.0
|
|
2244
|
+
- @objectstack/platform-objects@7.6.0
|
|
2245
|
+
- @objectstack/core@7.6.0
|
|
2246
|
+
- @objectstack/types@7.6.0
|
|
2247
|
+
- @objectstack/metadata-core@7.6.0
|
|
2248
|
+
- @objectstack/metadata-fs@7.6.0
|
|
2249
|
+
|
|
2250
|
+
## 7.5.0
|
|
2251
|
+
|
|
2252
|
+
### Patch Changes
|
|
2253
|
+
|
|
2254
|
+
- @objectstack/spec@7.5.0
|
|
2255
|
+
- @objectstack/core@7.5.0
|
|
2256
|
+
- @objectstack/types@7.5.0
|
|
2257
|
+
- @objectstack/metadata-core@7.5.0
|
|
2258
|
+
- @objectstack/metadata-fs@7.5.0
|
|
2259
|
+
- @objectstack/platform-objects@7.5.0
|
|
2260
|
+
|
|
2261
|
+
## 7.4.1
|
|
2262
|
+
|
|
2263
|
+
### Patch Changes
|
|
2264
|
+
|
|
2265
|
+
- @objectstack/spec@7.4.1
|
|
2266
|
+
- @objectstack/core@7.4.1
|
|
2267
|
+
- @objectstack/types@7.4.1
|
|
2268
|
+
- @objectstack/metadata-core@7.4.1
|
|
2269
|
+
- @objectstack/metadata-fs@7.4.1
|
|
2270
|
+
- @objectstack/platform-objects@7.4.1
|
|
2271
|
+
|
|
2272
|
+
## 7.4.0
|
|
2273
|
+
|
|
2274
|
+
### Minor Changes
|
|
2275
|
+
|
|
2276
|
+
- 13632b1: ADR-0030 P0 (framework) — converge notifications onto a single ingress and the
|
|
2277
|
+
layered model. Every producer now publishes through
|
|
2278
|
+
`NotificationService.emit(EmitInput)`; the in-app inbox is a materialization of
|
|
2279
|
+
delivery, not a row producers write.
|
|
2280
|
+
|
|
2281
|
+
**Single ingress (`@objectstack/service-messaging`) — breaking**
|
|
2282
|
+
|
|
2283
|
+
- `MessagingService.emit` takes the new `EmitInput` contract (`topic` /
|
|
2284
|
+
`audience` / `payload` / `severity` / `dedupKey` / `source` / `actorId` /
|
|
2285
|
+
`organizationId` / `channels`) instead of the flat `Notification` shape. It
|
|
2286
|
+
writes the L2 `sys_notification` event (idempotent on `dedupKey`), resolves the
|
|
2287
|
+
audience, then fans out; it returns `{ notificationId, deduped, deliveries,
|
|
2288
|
+
delivered, failed }`.
|
|
2289
|
+
- New `sys_notification_receipt` object — the read-state spine
|
|
2290
|
+
(`delivered|read|clicked|dismissed`), keyed `(notification_id, user_id,
|
|
2291
|
+
channel)`. The inbox channel writes a `delivered` receipt on materialization.
|
|
2292
|
+
- `sys_inbox_message`: adds `notification_id` / `delivery_id`, **drops `read`**
|
|
2293
|
+
(read-state moved to the receipt), adds the user `mine` list view.
|
|
2294
|
+
|
|
2295
|
+
**Event re-model (`@objectstack/platform-objects`) — breaking**
|
|
2296
|
+
|
|
2297
|
+
- `sys_notification` is re-modeled from a per-user inbox into the L2 **event**
|
|
2298
|
+
(`topic`, `payload`, `severity`, `dedup_key`, `source_*`, `actor_id`). Removes
|
|
2299
|
+
`recipient_id` / `is_read` / `read_at` / `type` / `title` / `body` / `url` /
|
|
2300
|
+
`actor_name` and the inbox actions/views. App-nav: the account inbox points at
|
|
2301
|
+
`sys_inbox_message`; Setup shows the notification event log.
|
|
2302
|
+
|
|
2303
|
+
**Producers routed through `emit()`**
|
|
2304
|
+
|
|
2305
|
+
- `@objectstack/service-automation`: the `notify` node maps its config to
|
|
2306
|
+
`EmitInput`.
|
|
2307
|
+
- `@objectstack/plugin-audit`: collaboration `@mention` → `collab.mention` and
|
|
2308
|
+
assignment → `collab.assignment` (both with a `dedupKey`); no more direct
|
|
2309
|
+
`sys_notification` writes. Collaboration notifications now require
|
|
2310
|
+
`MessagingServicePlugin` (they degrade to a warn otherwise).
|
|
2311
|
+
|
|
2312
|
+
**Migration (`@objectstack/metadata`)**
|
|
2313
|
+
|
|
2314
|
+
- Idempotent `migrateSysNotificationToEvent` splits legacy `sys_notification`
|
|
2315
|
+
inbox rows into `sys_inbox_message` + receipts and rewrites the event row.
|
|
2316
|
+
|
|
2317
|
+
**Startup (`@objectstack/cli`, `@objectstack/runtime`)**
|
|
2318
|
+
|
|
2319
|
+
- `messaging` is now a foundational capability. On `objectstack serve` it is
|
|
2320
|
+
added to `ALWAYS_ON_CAPABILITIES` (every non-`minimal` preset starts it); on
|
|
2321
|
+
cloud per-project kernels the capability loader expands `requires` to add
|
|
2322
|
+
`messaging` whenever `audit` is present. This keeps collaboration `@mention` /
|
|
2323
|
+
assignment notifications (which now flow through the pipeline) working out of
|
|
2324
|
+
the box on both paths. `--preset minimal` opts out.
|
|
2325
|
+
|
|
2326
|
+
The Console bell repoint (objectui) and phases P1–P3 are tracked in
|
|
2327
|
+
`docs/handoff/adr-0030-notification-convergence.md`.
|
|
2328
|
+
|
|
2329
|
+
### Patch Changes
|
|
2330
|
+
|
|
2331
|
+
- Updated dependencies [23c7107]
|
|
2332
|
+
- Updated dependencies [c72daad]
|
|
2333
|
+
- Updated dependencies [4404572]
|
|
2334
|
+
- Updated dependencies [eea3f1b]
|
|
2335
|
+
- Updated dependencies [e478e0c]
|
|
2336
|
+
- Updated dependencies [4cc2ced]
|
|
2337
|
+
- Updated dependencies [13632b1]
|
|
2338
|
+
- Updated dependencies [f115182]
|
|
2339
|
+
- Updated dependencies [2faf9f2]
|
|
2340
|
+
- Updated dependencies [2faf9f2]
|
|
2341
|
+
- Updated dependencies [2faf9f2]
|
|
2342
|
+
- Updated dependencies [58b450b]
|
|
2343
|
+
- Updated dependencies [82eb6cf]
|
|
2344
|
+
- Updated dependencies [c381977]
|
|
2345
|
+
- Updated dependencies [13d8653]
|
|
2346
|
+
- Updated dependencies [ff3d006]
|
|
2347
|
+
- Updated dependencies [5e831de]
|
|
2348
|
+
- @objectstack/spec@7.4.0
|
|
2349
|
+
- @objectstack/platform-objects@7.4.0
|
|
2350
|
+
- @objectstack/core@7.4.0
|
|
2351
|
+
- @objectstack/types@7.4.0
|
|
2352
|
+
- @objectstack/metadata-core@7.4.0
|
|
2353
|
+
- @objectstack/metadata-fs@7.4.0
|
|
2354
|
+
|
|
2355
|
+
## 7.3.0
|
|
2356
|
+
|
|
2357
|
+
### Patch Changes
|
|
2358
|
+
|
|
2359
|
+
- Updated dependencies [5e7c554]
|
|
2360
|
+
- @objectstack/spec@7.3.0
|
|
2361
|
+
- @objectstack/core@7.3.0
|
|
2362
|
+
- @objectstack/platform-objects@7.3.0
|
|
2363
|
+
- @objectstack/types@7.3.0
|
|
2364
|
+
- @objectstack/metadata-core@7.3.0
|
|
2365
|
+
- @objectstack/metadata-fs@7.3.0
|
|
2366
|
+
|
|
2367
|
+
## 7.2.1
|
|
2368
|
+
|
|
2369
|
+
### Patch Changes
|
|
2370
|
+
|
|
2371
|
+
- Updated dependencies [9096dfe]
|
|
2372
|
+
- @objectstack/types@7.2.1
|
|
2373
|
+
- @objectstack/spec@7.2.1
|
|
2374
|
+
- @objectstack/core@7.2.1
|
|
2375
|
+
- @objectstack/metadata-core@7.2.1
|
|
2376
|
+
- @objectstack/metadata-fs@7.2.1
|
|
2377
|
+
- @objectstack/platform-objects@7.2.1
|
|
2378
|
+
|
|
2379
|
+
## 7.2.0
|
|
2380
|
+
|
|
2381
|
+
### Patch Changes
|
|
2382
|
+
|
|
2383
|
+
- @objectstack/spec@7.2.0
|
|
2384
|
+
- @objectstack/core@7.2.0
|
|
2385
|
+
- @objectstack/types@7.2.0
|
|
2386
|
+
- @objectstack/metadata-core@7.2.0
|
|
2387
|
+
- @objectstack/metadata-fs@7.2.0
|
|
2388
|
+
- @objectstack/platform-objects@7.2.0
|
|
2389
|
+
|
|
2390
|
+
## 7.1.0
|
|
2391
|
+
|
|
2392
|
+
### Patch Changes
|
|
2393
|
+
|
|
2394
|
+
- 47a92f4: Promote `email_template` to a first-class metadata type using the canonical
|
|
2395
|
+
`EmailTemplateDefinitionSchema`.
|
|
2396
|
+
|
|
2397
|
+
Previously `email_template` had two competing Zod schemas (Prime Directive
|
|
2398
|
+
#8 violation): the legacy `EmailTemplateSchema` (a sub-shape of
|
|
2399
|
+
`Notification`) and the richer `EmailTemplateDefinitionSchema`. The runtime
|
|
2400
|
+
metadata protocol (`packages/objectql/src/protocol.ts`) and Studio's
|
|
2401
|
+
property panel registered the legacy one, which is why all the new fields
|
|
2402
|
+
(`name`, `label`, `category`, `locale`, `bodyHtml`, `bodyText`, …) were
|
|
2403
|
+
reported as “declared in form layout but missing from schema”.
|
|
2404
|
+
|
|
2405
|
+
This change:
|
|
2406
|
+
|
|
2407
|
+
- Repoints the `email_template` entry in `TYPE_TO_SCHEMA`
|
|
2408
|
+
(`packages/objectql/src/protocol.ts`) and in
|
|
2409
|
+
`BUILTIN_METADATA_TYPE_SCHEMAS`
|
|
2410
|
+
(`packages/spec/src/kernel/metadata-type-schemas.ts`) to
|
|
2411
|
+
`EmailTemplateDefinitionSchema`. The legacy `EmailTemplateSchema` is
|
|
2412
|
+
kept only as an inline sub-shape inside `Notification`.
|
|
2413
|
+
- Adds an `emailTemplates` collection to `defineStack()` input
|
|
2414
|
+
(`packages/spec/src/stack.zod.ts`), registers it in
|
|
2415
|
+
`MAP_SUPPORTED_FIELDS`/`PLURAL_TO_SINGULAR`
|
|
2416
|
+
(`packages/spec/src/shared/metadata-collection.zod.ts`), wires it into
|
|
2417
|
+
`ARTIFACT_FIELD_TO_TYPE` (`packages/metadata/src/plugin.ts`) and
|
|
2418
|
+
`APP_CATEGORY_KEYS` (`packages/runtime/src/app-plugin.ts`).
|
|
2419
|
+
- Rewrites `packages/spec/src/system/email-template.form.ts` for the new
|
|
2420
|
+
schema with sections for Identity, Subject, HTML body, Plain-text body,
|
|
2421
|
+
Variables, Delivery overrides, Status.
|
|
2422
|
+
- Ships three reference templates in `examples/app-crm/src/emails/`:
|
|
2423
|
+
`crm.deal_won` (rewritten to canonical shape), `crm.welcome` (new),
|
|
2424
|
+
`crm.lead_followup` (new), and wires them into the CRM stack via
|
|
2425
|
+
`emailTemplates: Object.values(emails)`.
|
|
2426
|
+
|
|
2427
|
+
End-to-end verified in Studio: list view at
|
|
2428
|
+
`/_console/apps/studio/metadata/email_template` shows all three entries;
|
|
2429
|
+
the detail view renders the EmailTemplatePreview iframe and the property
|
|
2430
|
+
panel cleanly renders every canonical field (no missing-schema warnings).
|
|
2431
|
+
`GET /api/v1/meta` now returns the new `properties` set
|
|
2432
|
+
(`name, label, category, locale, subject, bodyHtml, bodyText, variables,
|
|
2433
|
+
fromOverride, replyTo, active, isSystem, description`).
|
|
2434
|
+
|
|
2435
|
+
- Updated dependencies [6228609]
|
|
2436
|
+
- Updated dependencies [47a92f4]
|
|
2437
|
+
- @objectstack/platform-objects@7.1.0
|
|
2438
|
+
- @objectstack/spec@7.1.0
|
|
2439
|
+
- @objectstack/core@7.1.0
|
|
2440
|
+
- @objectstack/types@7.1.0
|
|
2441
|
+
- @objectstack/metadata-core@7.1.0
|
|
2442
|
+
- @objectstack/metadata-fs@7.1.0
|
|
2443
|
+
|
|
2444
|
+
## 7.0.0
|
|
2445
|
+
|
|
2446
|
+
### Patch Changes
|
|
2447
|
+
|
|
2448
|
+
- Updated dependencies [74470ad]
|
|
2449
|
+
- Updated dependencies [d29617e]
|
|
2450
|
+
- Updated dependencies [dc72172]
|
|
2451
|
+
- Updated dependencies [d29617e]
|
|
2452
|
+
- Updated dependencies [010757b]
|
|
2453
|
+
- Updated dependencies [257954d]
|
|
2454
|
+
- @objectstack/spec@7.0.0
|
|
2455
|
+
- @objectstack/platform-objects@7.0.0
|
|
2456
|
+
- @objectstack/core@7.0.0
|
|
2457
|
+
- @objectstack/types@7.0.0
|
|
2458
|
+
- @objectstack/metadata-core@7.0.0
|
|
2459
|
+
- @objectstack/metadata-fs@7.0.0
|
|
2460
|
+
|
|
2461
|
+
## 6.9.0
|
|
2462
|
+
|
|
2463
|
+
### Patch Changes
|
|
2464
|
+
|
|
2465
|
+
- @objectstack/spec@6.9.0
|
|
2466
|
+
- @objectstack/core@6.9.0
|
|
2467
|
+
- @objectstack/types@6.9.0
|
|
2468
|
+
- @objectstack/metadata-core@6.9.0
|
|
2469
|
+
- @objectstack/metadata-fs@6.9.0
|
|
2470
|
+
- @objectstack/platform-objects@6.9.0
|
|
2471
|
+
|
|
2472
|
+
## 6.8.1
|
|
2473
|
+
|
|
2474
|
+
### Patch Changes
|
|
2475
|
+
|
|
2476
|
+
- @objectstack/spec@6.8.1
|
|
2477
|
+
- @objectstack/core@6.8.1
|
|
2478
|
+
- @objectstack/types@6.8.1
|
|
2479
|
+
- @objectstack/metadata-core@6.8.1
|
|
2480
|
+
- @objectstack/metadata-fs@6.8.1
|
|
2481
|
+
- @objectstack/platform-objects@6.8.1
|
|
2482
|
+
|
|
2483
|
+
## 6.8.0
|
|
2484
|
+
|
|
2485
|
+
### Patch Changes
|
|
2486
|
+
|
|
2487
|
+
- Updated dependencies [6e88f77]
|
|
2488
|
+
- Updated dependencies [c8b9f57]
|
|
2489
|
+
- Updated dependencies [45d27c5]
|
|
2490
|
+
- @objectstack/spec@6.8.0
|
|
2491
|
+
- @objectstack/platform-objects@6.8.0
|
|
2492
|
+
- @objectstack/core@6.8.0
|
|
2493
|
+
- @objectstack/types@6.8.0
|
|
2494
|
+
- @objectstack/metadata-core@6.8.0
|
|
2495
|
+
- @objectstack/metadata-fs@6.8.0
|
|
2496
|
+
|
|
2497
|
+
## 6.7.1
|
|
2498
|
+
|
|
2499
|
+
### Patch Changes
|
|
2500
|
+
|
|
2501
|
+
- @objectstack/spec@6.7.1
|
|
2502
|
+
- @objectstack/core@6.7.1
|
|
2503
|
+
- @objectstack/types@6.7.1
|
|
2504
|
+
- @objectstack/metadata-core@6.7.1
|
|
2505
|
+
- @objectstack/metadata-fs@6.7.1
|
|
2506
|
+
- @objectstack/platform-objects@6.7.1
|
|
2507
|
+
|
|
2508
|
+
## 6.7.0
|
|
2509
|
+
|
|
2510
|
+
### Patch Changes
|
|
2511
|
+
|
|
2512
|
+
- Updated dependencies [430067b]
|
|
2513
|
+
- Updated dependencies [4f9e9d4]
|
|
2514
|
+
- Updated dependencies [4f9e9d4]
|
|
2515
|
+
- @objectstack/spec@6.7.0
|
|
2516
|
+
- @objectstack/platform-objects@6.7.0
|
|
2517
|
+
- @objectstack/core@6.7.0
|
|
2518
|
+
- @objectstack/types@6.7.0
|
|
2519
|
+
- @objectstack/metadata-core@6.7.0
|
|
2520
|
+
- @objectstack/metadata-fs@6.7.0
|
|
2521
|
+
|
|
2522
|
+
## 6.6.0
|
|
2523
|
+
|
|
2524
|
+
### Patch Changes
|
|
2525
|
+
|
|
2526
|
+
- Updated dependencies [a49cfc2]
|
|
2527
|
+
- @objectstack/spec@6.6.0
|
|
2528
|
+
- @objectstack/core@6.6.0
|
|
2529
|
+
- @objectstack/platform-objects@6.6.0
|
|
2530
|
+
- @objectstack/types@6.6.0
|
|
2531
|
+
- @objectstack/metadata-core@6.6.0
|
|
2532
|
+
- @objectstack/metadata-fs@6.6.0
|
|
2533
|
+
|
|
2534
|
+
## 6.5.1
|
|
2535
|
+
|
|
2536
|
+
### Patch Changes
|
|
2537
|
+
|
|
2538
|
+
- @objectstack/spec@6.5.1
|
|
2539
|
+
- @objectstack/core@6.5.1
|
|
2540
|
+
- @objectstack/types@6.5.1
|
|
2541
|
+
- @objectstack/metadata-core@6.5.1
|
|
2542
|
+
- @objectstack/metadata-fs@6.5.1
|
|
2543
|
+
- @objectstack/platform-objects@6.5.1
|
|
2544
|
+
|
|
2545
|
+
## 6.5.0
|
|
2546
|
+
|
|
2547
|
+
### Patch Changes
|
|
2548
|
+
|
|
2549
|
+
- @objectstack/spec@6.5.0
|
|
2550
|
+
- @objectstack/core@6.5.0
|
|
2551
|
+
- @objectstack/types@6.5.0
|
|
2552
|
+
- @objectstack/metadata-core@6.5.0
|
|
2553
|
+
- @objectstack/metadata-fs@6.5.0
|
|
2554
|
+
- @objectstack/platform-objects@6.5.0
|
|
2555
|
+
|
|
2556
|
+
## 6.4.0
|
|
2557
|
+
|
|
2558
|
+
### Patch Changes
|
|
2559
|
+
|
|
2560
|
+
- Updated dependencies [f8651cc]
|
|
2561
|
+
- Updated dependencies [f8651cc]
|
|
2562
|
+
- Updated dependencies [0bf6f9a]
|
|
2563
|
+
- @objectstack/spec@6.4.0
|
|
2564
|
+
- @objectstack/core@6.4.0
|
|
2565
|
+
- @objectstack/platform-objects@6.4.0
|
|
2566
|
+
- @objectstack/types@6.4.0
|
|
2567
|
+
- @objectstack/metadata-core@6.4.0
|
|
2568
|
+
- @objectstack/metadata-fs@6.4.0
|
|
2569
|
+
|
|
2570
|
+
## 6.3.0
|
|
2571
|
+
|
|
2572
|
+
### Patch Changes
|
|
2573
|
+
|
|
2574
|
+
- @objectstack/spec@6.3.0
|
|
2575
|
+
- @objectstack/core@6.3.0
|
|
2576
|
+
- @objectstack/types@6.3.0
|
|
2577
|
+
- @objectstack/metadata-core@6.3.0
|
|
2578
|
+
- @objectstack/metadata-fs@6.3.0
|
|
2579
|
+
- @objectstack/platform-objects@6.3.0
|
|
2580
|
+
|
|
2581
|
+
## 6.2.0
|
|
2582
|
+
|
|
2583
|
+
### Patch Changes
|
|
2584
|
+
|
|
2585
|
+
- Updated dependencies [b4c74a9]
|
|
2586
|
+
- @objectstack/spec@6.2.0
|
|
2587
|
+
- @objectstack/core@6.2.0
|
|
2588
|
+
- @objectstack/platform-objects@6.2.0
|
|
2589
|
+
- @objectstack/types@6.2.0
|
|
2590
|
+
- @objectstack/metadata-core@6.2.0
|
|
2591
|
+
- @objectstack/metadata-fs@6.2.0
|
|
2592
|
+
|
|
2593
|
+
## 6.1.1
|
|
2594
|
+
|
|
2595
|
+
### Patch Changes
|
|
2596
|
+
|
|
2597
|
+
- @objectstack/spec@6.1.1
|
|
2598
|
+
- @objectstack/core@6.1.1
|
|
2599
|
+
- @objectstack/types@6.1.1
|
|
2600
|
+
- @objectstack/metadata-core@6.1.1
|
|
2601
|
+
- @objectstack/metadata-fs@6.1.1
|
|
2602
|
+
- @objectstack/platform-objects@6.1.1
|
|
2603
|
+
|
|
2604
|
+
## 6.1.0
|
|
2605
|
+
|
|
2606
|
+
### Patch Changes
|
|
2607
|
+
|
|
2608
|
+
- Updated dependencies [93c0589]
|
|
2609
|
+
- @objectstack/spec@6.1.0
|
|
2610
|
+
- @objectstack/core@6.1.0
|
|
2611
|
+
- @objectstack/platform-objects@6.1.0
|
|
2612
|
+
- @objectstack/types@6.1.0
|
|
2613
|
+
- @objectstack/metadata-core@6.1.0
|
|
2614
|
+
- @objectstack/metadata-fs@6.1.0
|
|
2615
|
+
|
|
2616
|
+
## 6.0.0
|
|
2617
|
+
|
|
2618
|
+
### Major Changes
|
|
2619
|
+
|
|
2620
|
+
- 944f187: # v5.0 — `project` → `environment` hard rename
|
|
2621
|
+
|
|
2622
|
+
The runtime concept previously called **"project"** (per-tenant business
|
|
2623
|
+
workspace; Org → **Project** → Branch hierarchy; per-project ObjectKernel,
|
|
2624
|
+
per-project DB, per-project artifact) is now uniformly called
|
|
2625
|
+
**"environment"**.
|
|
2626
|
+
|
|
2627
|
+
This is a **hard rename with no aliases, deprecation shims, or compatibility
|
|
2628
|
+
layer**. Upgrade requires a coordinated update of CLI, runtime, server, and any
|
|
2629
|
+
clients calling the REST API.
|
|
2630
|
+
|
|
2631
|
+
> Note: "project" in the npm / monorepo sense (the framework itself, `package.json`,
|
|
2632
|
+
> tsconfig project references, vitest `projects` config) is **unchanged**.
|
|
2633
|
+
|
|
2634
|
+
## Breaking changes
|
|
2635
|
+
|
|
2636
|
+
### CLI
|
|
2637
|
+
|
|
2638
|
+
- Flags renamed:
|
|
2639
|
+
- `--project` / `-p` → `--environment` / `-e` (`os publish`, `os rollback`)
|
|
2640
|
+
- `--project-id` → `--environment-id` (`os dev`)
|
|
2641
|
+
- Default local env id: `proj_local` → `env_local`.
|
|
2642
|
+
- Env var: `OS_PROJECT_ID` → `OS_ENVIRONMENT_ID`.
|
|
2643
|
+
- Command group renamed: `os projects ...` → `os environments ...`
|
|
2644
|
+
(`bind`, `create`, `list`, `show`, `switch`).
|
|
2645
|
+
- Persisted auth-config key: `activeProjectId` → `activeEnvironmentId`.
|
|
2646
|
+
|
|
2647
|
+
### HTTP / REST
|
|
2648
|
+
|
|
2649
|
+
- Scoped routes: `/api/v1/projects/:projectId/...` → `/api/v1/environments/:environmentId/...`.
|
|
2650
|
+
- Cloud control-plane routes: `/api/v1/cloud/projects/...` → `/api/v1/cloud/environments/...`
|
|
2651
|
+
(including `/cloud/environments/:id/artifact`, `/cloud/environments/:id/metadata`,
|
|
2652
|
+
`/cloud/environments/:id/credentials/rotate`, etc.).
|
|
2653
|
+
- Header: `X-Project-Id` (and lowercase `x-project-id`) → `X-Environment-Id`
|
|
2654
|
+
(`x-environment-id`).
|
|
2655
|
+
- Route param name in handlers: `req.params.projectId` → `req.params.environmentId`.
|
|
2656
|
+
- Hostname-routing and tenant-resolution code-paths use `environmentId` end-to-end.
|
|
2657
|
+
|
|
2658
|
+
### Runtime / spec
|
|
2659
|
+
|
|
2660
|
+
- Exported symbols (no aliases):
|
|
2661
|
+
- `createSystemProjectPlugin` → `createSystemEnvironmentPlugin`
|
|
2662
|
+
- `SYSTEM_PROJECT_ID` → `SYSTEM_ENVIRONMENT_ID`
|
|
2663
|
+
- `ProjectArtifactSchema` → `EnvironmentArtifactSchema`
|
|
2664
|
+
- `PROJECT_ARTIFACT_SCHEMA_VERSION` → `ENVIRONMENT_ARTIFACT_SCHEMA_VERSION`
|
|
2665
|
+
- `ObjectOSProjectPlugin` → `ObjectOSEnvironmentPlugin`
|
|
2666
|
+
- `createSingleProjectPlugin` → `createSingleEnvironmentPlugin`
|
|
2667
|
+
- Plugin identifier strings:
|
|
2668
|
+
- `com.objectstack.runtime.objectos-project` → `objectos-environment`
|
|
2669
|
+
- `com.objectstack.studio.single-project` → `single-environment`
|
|
2670
|
+
- `com.objectstack.multi-project` → `multi-environment`
|
|
2671
|
+
- `com.objectstack.runtime.system-project` → `system-environment`
|
|
2672
|
+
- Provisioning hook: `provisionSystemProject` → `provisionSystemEnvironment`.
|
|
2673
|
+
|
|
2674
|
+
### Database / schemas
|
|
2675
|
+
|
|
2676
|
+
- Column renames on `sys_metadata` and `sys_metadata_history`:
|
|
2677
|
+
`project_id` → `environment_id`.
|
|
2678
|
+
- Column renames on `sys_activity`: `project_id` → `environment_id` (plus index).
|
|
2679
|
+
- Object renames in platform-objects metadata: `sys_project` → `sys_environment`
|
|
2680
|
+
(lookup targets), `sys_project_member` → `sys_environment_member`,
|
|
2681
|
+
`sys_project_credential` → `sys_environment_credential`.
|
|
2682
|
+
- Auth-context field: `active_project_id` → `active_environment_id`.
|
|
2683
|
+
- JSON schemas under `packages/spec/json-schema/system/`:
|
|
2684
|
+
`ProjectArtifact*.json` → `EnvironmentArtifact*.json` (regenerated at build).
|
|
2685
|
+
|
|
2686
|
+
### Automatic forward migration
|
|
2687
|
+
|
|
2688
|
+
A new migration `migrateProjectIdToEnvironmentId`
|
|
2689
|
+
(`packages/metadata/src/migrations/migrate-project-id-to-environment-id.ts`)
|
|
2690
|
+
auto-runs from `DatabaseLoader.ensureSchema()` on bootstrap and rewrites any
|
|
2691
|
+
existing `project_id` column on `sys_metadata` / `sys_metadata_history` to
|
|
2692
|
+
`environment_id` (idempotent, best-effort). Existing rows are preserved.
|
|
2693
|
+
|
|
2694
|
+
The legacy reverse migration `migrateEnvIdToProjectId` is retained verbatim
|
|
2695
|
+
for historical / disaster-recovery use; it is **not** auto-run.
|
|
2696
|
+
|
|
2697
|
+
## Migration guide
|
|
2698
|
+
|
|
2699
|
+
```diff
|
|
2700
|
+
-os publish --project proj_xyz
|
|
2701
|
+
+os publish --environment env_xyz
|
|
2702
|
+
|
|
2703
|
+
-curl -H "X-Project-Id: env_xyz" https://api.example.com/api/v1/data/customer
|
|
2704
|
+
+curl -H "X-Environment-Id: env_xyz" https://api.example.com/api/v1/data/customer
|
|
2705
|
+
|
|
2706
|
+
-OS_PROJECT_ID=env_xyz os dev
|
|
2707
|
+
+OS_ENVIRONMENT_ID=env_xyz os dev
|
|
2708
|
+
|
|
2709
|
+
-import { createSystemProjectPlugin, SYSTEM_PROJECT_ID } from "@objectstack/runtime";
|
|
2710
|
+
+import { createSystemEnvironmentPlugin, SYSTEM_ENVIRONMENT_ID } from "@objectstack/runtime";
|
|
2711
|
+
|
|
2712
|
+
-import { ProjectArtifactSchema } from "@objectstack/spec";
|
|
2713
|
+
+import { EnvironmentArtifactSchema } from "@objectstack/spec";
|
|
2714
|
+
```
|
|
2715
|
+
|
|
2716
|
+
If you maintain a Cloud control-plane deployment, the `cloud` repository must
|
|
2717
|
+
be updated in lockstep to pick up the new plugin identifier strings
|
|
2718
|
+
(`single-environment`, `multi-environment`, `objectos-environment`).
|
|
2719
|
+
|
|
2720
|
+
### Patch Changes
|
|
2721
|
+
|
|
2722
|
+
- Updated dependencies [629a716]
|
|
2723
|
+
- Updated dependencies [dbc4f7d]
|
|
2724
|
+
- Updated dependencies [944f187]
|
|
2725
|
+
- @objectstack/spec@6.0.0
|
|
2726
|
+
- @objectstack/platform-objects@6.0.0
|
|
2727
|
+
- @objectstack/core@6.0.0
|
|
2728
|
+
- @objectstack/types@6.0.0
|
|
2729
|
+
- @objectstack/metadata-core@6.0.0
|
|
2730
|
+
- @objectstack/metadata-fs@6.0.0
|
|
2731
|
+
|
|
2732
|
+
## 5.2.0
|
|
2733
|
+
|
|
2734
|
+
### Patch Changes
|
|
2735
|
+
|
|
2736
|
+
- Updated dependencies [bab2b20]
|
|
2737
|
+
- Updated dependencies [fa011d8]
|
|
2738
|
+
- Updated dependencies [f0f7c27]
|
|
2739
|
+
- Updated dependencies [b806f58]
|
|
2740
|
+
- @objectstack/platform-objects@5.2.0
|
|
2741
|
+
- @objectstack/spec@5.2.0
|
|
2742
|
+
- @objectstack/metadata-core@5.2.0
|
|
2743
|
+
- @objectstack/core@5.2.0
|
|
2744
|
+
- @objectstack/types@5.2.0
|
|
2745
|
+
- @objectstack/metadata-fs@5.2.0
|
|
2746
|
+
|
|
2747
|
+
## 5.1.0
|
|
2748
|
+
|
|
2749
|
+
### Patch Changes
|
|
2750
|
+
|
|
2751
|
+
- 75f4ee6: feat(metadata): introduce `executionPinned` capability for runtime version pinning (ADR-0009)
|
|
2752
|
+
|
|
2753
|
+
Adds a new capability flag on the metadata type registry so that types whose runtime
|
|
2754
|
+
transaction rows reference a specific historical version (flow, workflow, approval)
|
|
2755
|
+
get unified pinning behavior — instead of every business table re-implementing its
|
|
2756
|
+
own snapshot column.
|
|
2757
|
+
|
|
2758
|
+
- `MetadataTypeRegistryEntrySchema` gains `executionPinned: boolean`, enforced
|
|
2759
|
+
invariant `executionPinned ⇒ supportsVersioning`.
|
|
2760
|
+
- `flow`, `workflow`, `approval` flipped to `executionPinned: true`. `approval`
|
|
2761
|
+
also corrected to `supportsVersioning: true` (it was wrongly `false`).
|
|
2762
|
+
- `MetadataRepository.getByHash(ref, hash)` added to the interface. Production
|
|
2763
|
+
implementation in `SysMetadataRepository` resolves historical bodies through
|
|
2764
|
+
`sys_metadata_history` keyed by `(organization_id, type, name, checksum)`.
|
|
2765
|
+
In-memory and FS repositories serve HEAD-only matches.
|
|
2766
|
+
- `sys_metadata_history` gains an index on `(organization_id, type, name, checksum)`
|
|
2767
|
+
to keep hash lookups O(log n).
|
|
2768
|
+
- `HistoryCleanupManager` skips pinned types entirely (both age-based and
|
|
2769
|
+
count-based retention) — pinned-type history must never be GC'd.
|
|
2770
|
+
|
|
2771
|
+
See `docs/adr/0009-execution-pinned-metadata.md` for full rationale and the
|
|
2772
|
+
list of rejected alternatives (no shared snapshot table, no inlined snapshot column).
|
|
2773
|
+
|
|
2774
|
+
- 823d559: Remove `sys_metadata_history.metadata_id` column.
|
|
2775
|
+
|
|
2776
|
+
The column was originally a `Field.lookup` FK into `sys_metadata.id`,
|
|
2777
|
+
then downgraded to plain `text` during the M1 history-writes work so
|
|
2778
|
+
that DELETE tombstones could keep an orphaned ref. After M1 we
|
|
2779
|
+
concluded the column carries no business value:
|
|
2780
|
+
|
|
2781
|
+
- Audit-time joins use `(organization_id, type, name, version)`,
|
|
2782
|
+
which is already a UNIQUE composite key.
|
|
2783
|
+
- The physical row id is a database-internal detail with no logical
|
|
2784
|
+
identity — it cannot follow an item through delete + recreate.
|
|
2785
|
+
- No code reader was ever added.
|
|
2786
|
+
|
|
2787
|
+
This release removes the column outright:
|
|
2788
|
+
|
|
2789
|
+
- Dropped `metadata_id` from `SysMetadataHistoryObject`
|
|
2790
|
+
(`@objectstack/platform-objects`).
|
|
2791
|
+
- Dropped `metadataId` from `MetadataHistoryRecordSchema`
|
|
2792
|
+
(`@objectstack/spec`).
|
|
2793
|
+
- `SysMetadataRepository.put`/`delete` no longer write the column.
|
|
2794
|
+
- Legacy `DatabaseLoader.createHistoryRecord` no longer writes it;
|
|
2795
|
+
`getHistoryRecord`/`queryHistory` filter by `(type, name)` directly
|
|
2796
|
+
(no parent-row lookup needed).
|
|
2797
|
+
- `MetadataHistoryCleanup` `maxVersions` policy groups by
|
|
2798
|
+
`(type, name)` instead of `metadata_id`.
|
|
2799
|
+
|
|
2800
|
+
**Migration**: Drop the column from existing `sys_metadata_history`
|
|
2801
|
+
tables in a follow-up SQL migration. Existing history rows remain
|
|
2802
|
+
queryable since `(organization_id, type, name, version)` is already
|
|
2803
|
+
the canonical lookup key. No consumer code should be reading
|
|
2804
|
+
`metadata_id` — if you are, switch to `(organization_id, type, name,
|
|
2805
|
+
version)`.
|
|
2806
|
+
|
|
2807
|
+
See ADR-0008 §14 for the full rationale.
|
|
2808
|
+
|
|
2809
|
+
- Updated dependencies [75f4ee6]
|
|
2810
|
+
- Updated dependencies [823d559]
|
|
2811
|
+
- @objectstack/spec@5.1.0
|
|
2812
|
+
- @objectstack/metadata-core@5.1.0
|
|
2813
|
+
- @objectstack/platform-objects@5.1.0
|
|
2814
|
+
- @objectstack/metadata-fs@5.1.0
|
|
2815
|
+
- @objectstack/core@5.1.0
|
|
2816
|
+
- @objectstack/types@5.1.0
|
|
2817
|
+
|
|
2818
|
+
## 5.0.0
|
|
2819
|
+
|
|
2820
|
+
### Minor Changes
|
|
2821
|
+
|
|
2822
|
+
- 5e9dcb4: **BREAKING — metadata: remove `project` and `branch` from `MetaRef`**
|
|
2823
|
+
|
|
2824
|
+
The metadata layer no longer models project or branch. Customisation is now
|
|
2825
|
+
scoped purely to **organisation**. Project remains exclusively as an artifact
|
|
2826
|
+
packaging concept (the `objectstack.json` bundle envelope); branching is left
|
|
2827
|
+
to Git.
|
|
2828
|
+
|
|
2829
|
+
What changed:
|
|
2830
|
+
|
|
2831
|
+
- `MetaRef` is now `{ org, type, name, version? }` (was
|
|
2832
|
+
`{ org, project, branch, type, name, version? }`). `refKey()` is the two
|
|
2833
|
+
segment string `${org}/${type}/${name}` (was five segments).
|
|
2834
|
+
- `MetadataItem.seq` is monotonic **per org** (was per branch).
|
|
2835
|
+
- `BranchRef`, `MergeStrategy`, `MergeResult` types and the optional
|
|
2836
|
+
`fork`/`merge` methods on `MetadataRepository` are removed.
|
|
2837
|
+
- `ListFilter` / `WatchFilter` / `HistoryOptions` no longer accept `project`
|
|
2838
|
+
or `branch`.
|
|
2839
|
+
- `FileSystemRepository` disk layout simplified to
|
|
2840
|
+
`<root>/<type>/<name>.json` (was `<root>/<project>/<branch>/<type>/<name>.json`);
|
|
2841
|
+
change-log path is now `.objectstack/.log/main.jsonl` regardless of any
|
|
2842
|
+
branch concept. Constructor no longer accepts `project` / `branch`.
|
|
2843
|
+
- `SysMetadataRepository`: removed `projectLabel` / `branchLabel` options;
|
|
2844
|
+
the `sys_metadata` schema's `project_id` / `branch` columns (if present)
|
|
2845
|
+
are ignored. A future major release will `DROP` them.
|
|
2846
|
+
- `MetadataManager.setRepository(repo, opts)` no longer takes an opts object
|
|
2847
|
+
with `branch`.
|
|
2848
|
+
|
|
2849
|
+
Migration:
|
|
2850
|
+
|
|
2851
|
+
```diff
|
|
2852
|
+
-const ref = { org: 'acme', project: 'crm', branch: 'main', type: 'view', name: 'home' };
|
|
2853
|
+
+const ref = { org: 'acme', type: 'view', name: 'home' };
|
|
2854
|
+
|
|
2855
|
+
-new FileSystemRepository({ root, org: 'acme', project: 'crm', branch: 'main' });
|
|
2856
|
+
+new FileSystemRepository({ root, org: 'acme' });
|
|
2857
|
+
```
|
|
2858
|
+
|
|
2859
|
+
Existing `sys_metadata` rows continue to load; the deprecated columns are
|
|
2860
|
+
ignored at read time.
|
|
2861
|
+
|
|
2862
|
+
- 8b298c7: Attach an `@objectstack/metadata-core` `MetadataRepository` as a
|
|
2863
|
+
supplementary event source on `MetadataManager` (ADR-0008 M0 PR-6).
|
|
2864
|
+
|
|
2865
|
+
When a repository is configured via `manager.setRepository(repo)`:
|
|
2866
|
+
|
|
2867
|
+
- the manager subscribes to `repo.watch({ branch: 'main' })` and re-emits
|
|
2868
|
+
each event through the legacy `MetadataWatchEvent` channel that
|
|
2869
|
+
`manager.subscribe(type, cb)` already exposes, so existing HMR / SSE
|
|
2870
|
+
pipelines pick up changes from the new layer automatically;
|
|
2871
|
+
- each event also invalidates the in-memory registry entry and the
|
|
2872
|
+
`list()` cache for the affected type, so subsequent reads fall
|
|
2873
|
+
through to the repository / loaders instead of returning stale data;
|
|
2874
|
+
- a new `manager.dispose()` method drains the watch loop and the FS
|
|
2875
|
+
watcher cleanly. `MetadataPlugin.stop()` calls it.
|
|
2876
|
+
|
|
2877
|
+
`MetadataPlugin.start()` now instantiates a `FileSystemRepository`
|
|
2878
|
+
rooted at `<rootDir>/.objectstack/metadata/` (separate from user source
|
|
2879
|
+
files) and attaches it automatically when not in `artifact-only` mode.
|
|
2880
|
+
|
|
2881
|
+
No write-mirroring yet — `register()` / `unregister()` / `save()` keep
|
|
2882
|
+
their existing semantics; the canonical write path migrates in PR-10.
|
|
2883
|
+
|
|
2884
|
+
- 9e51868: Server-side artifact-file watcher; CLI no longer posts to the HMR
|
|
2885
|
+
endpoint on recompile (ADR-0008 M0 PR-8).
|
|
2886
|
+
|
|
2887
|
+
`MetadataPlugin.start()` now attaches a chokidar watcher on the
|
|
2888
|
+
`artifactSource.path` when running in local-file mode with `watch !==
|
|
2889
|
+
false`. On every artifact change it re-invokes `_loadFromLocalFile`
|
|
2890
|
+
and broadcasts a `reload` event through the HMR hub. This replaces
|
|
2891
|
+
the previous arrangement where `os dev`'s watch-recompile loop POSTed
|
|
2892
|
+
`/api/v1/dev/metadata-events` to trigger a reload — the server is now
|
|
2893
|
+
autonomous.
|
|
2894
|
+
|
|
2895
|
+
The CLI `dev` command's recompile loop drops the POST call; the
|
|
2896
|
+
`/api/v1/dev/metadata-events` route remains available for external
|
|
2897
|
+
trigger sources (cloud webhooks, git hooks, ad-hoc curl).
|
|
2898
|
+
|
|
2899
|
+
`MetadataPlugin.stop()` closes the artifact watcher cleanly.
|
|
2900
|
+
|
|
2901
|
+
- ddf8080: ADR-0008 M0 PR-9: thread the canonical server-side change-log `seq` from
|
|
2902
|
+
`MetadataRepository` events through to the Studio HMR badge. The
|
|
2903
|
+
`useMetadataHmr()` hook now exposes `lastSeq` alongside the local
|
|
2904
|
+
`version` counter, and the badge tooltip renders "Repo seq: #N" so
|
|
2905
|
+
operators can correlate Studio reloads with what other replicas observe.
|
|
2906
|
+
Legacy chokidar-driven events still work — they simply leave `seq`
|
|
2907
|
+
undefined and consumers fall back to the local counter.
|
|
2908
|
+
|
|
2909
|
+
### Patch Changes
|
|
2910
|
+
|
|
2911
|
+
- 96ad4df: Fix dev-mode HMR data-reload for `*.view.ts` / `*.flow.ts` source-file edits.
|
|
2912
|
+
|
|
2913
|
+
Three coordinated fixes close the long-standing gap where editing a
|
|
2914
|
+
declarative-metadata source file in dev (e.g. `case.view.ts`) would
|
|
2915
|
+
recompile `dist/objectstack.json` but the running server kept serving
|
|
2916
|
+
the stale boot-time value:
|
|
2917
|
+
|
|
2918
|
+
1. **`@objectstack/objectql`** — `ObjectStackProtocolImplementation.getMetaItem`
|
|
2919
|
+
now consults `MetadataService` (HMR-aware) **before** the in-memory
|
|
2920
|
+
`SchemaRegistry` (boot-time cache). Previously the registry shadowed
|
|
2921
|
+
freshly-registered values: `manager.register('view','case',newDef)`
|
|
2922
|
+
updated MetadataManager but `getMetaItem` returned the stale registry
|
|
2923
|
+
copy because step 2 (registry) ran before step 3 (service). Reordered
|
|
2924
|
+
to "1. sys_metadata overlay → 2. MetadataService → 3. SchemaRegistry".
|
|
2925
|
+
|
|
2926
|
+
2. **`@objectstack/runtime`** — `createStandaloneStack` now enables the
|
|
2927
|
+
`MetadataPlugin` artifact-file watcher in non-production environments
|
|
2928
|
+
(`NODE_ENV !== 'production'`). Previously hard-coded to `watch: false`,
|
|
2929
|
+
leaving nothing watching `dist/objectstack.json` when the CLI dev mode
|
|
2930
|
+
recompiled it.
|
|
2931
|
+
|
|
2932
|
+
3. **`@objectstack/metadata`** & **`@objectstack/metadata-fs`** — Both
|
|
2933
|
+
chokidar watchers now use `usePolling: true` to avoid `fs.watch`
|
|
2934
|
+
EMFILE on macOS / busy dev hosts where the native file-descriptor
|
|
2935
|
+
pool can be exhausted by other long-running node processes.
|
|
2936
|
+
|
|
2937
|
+
With these three changes:
|
|
2938
|
+
|
|
2939
|
+
- CLI edits source → recompile artifact (~400ms)
|
|
2940
|
+
- Server's polling chokidar detects artifact change → `_loadFromLocalFile`
|
|
2941
|
+
- `_loadFromLocalFile` calls `manager.register(type, name, item)`
|
|
2942
|
+
- MetadataService now has the fresh value
|
|
2943
|
+
- Read path returns the fresh value via the new step-2 lookup
|
|
2944
|
+
- Studio SSE listeners re-render
|
|
2945
|
+
|
|
2946
|
+
- df18ae9: Fix dev-mode HMR data-reload for view metadata.
|
|
2947
|
+
|
|
2948
|
+
`MetadataPlugin._parseAndRegisterArtifact` previously required a top-level
|
|
2949
|
+
`name` on every artifact item and silently skipped those without one.
|
|
2950
|
+
View bundles in the compiled artifact carry no top-level `name` (their
|
|
2951
|
+
identity is the target object, encoded under `list.data.object` /
|
|
2952
|
+
`form.data.object` — same pattern used by `ObjectQL.SchemaRegistry`'s
|
|
2953
|
+
`resolveMetadataItemName`). As a result, artifact-loaded views never
|
|
2954
|
+
reached `MetadataManager`, and HMR file pushes never affected the read
|
|
2955
|
+
path: API responses kept returning the boot-time `SchemaRegistry` copy.
|
|
2956
|
+
|
|
2957
|
+
This change derives the registration key from `list.data.object` (or
|
|
2958
|
+
`form.data.object`) when no top-level `name` is present, mirroring the
|
|
2959
|
+
ObjectQL convention.
|
|
2960
|
+
|
|
2961
|
+
Also splits the `MetadataPlugin` watch flag into two independent
|
|
2962
|
+
options so dev mode can enable artifact-file HMR without paying the
|
|
2963
|
+
cost of the source-file scanner:
|
|
2964
|
+
|
|
2965
|
+
- `watch` — controls `NodeMetadataManager`'s recursive source scan
|
|
2966
|
+
(default `false`; turning it on in artifact mode would polling-scan
|
|
2967
|
+
the entire project root including `node_modules`).
|
|
2968
|
+
- `artifactWatch` — controls the cheap single-file polling watcher on
|
|
2969
|
+
the compiled artifact (`dist/objectstack.json`). The standalone stack
|
|
2970
|
+
enables this automatically when `NODE_ENV !== 'production'`.
|
|
2971
|
+
|
|
2972
|
+
- Updated dependencies [5e9dcb4]
|
|
2973
|
+
- Updated dependencies [4150fe4]
|
|
2974
|
+
- Updated dependencies [8337cdb]
|
|
2975
|
+
- Updated dependencies [58835a6]
|
|
2976
|
+
- Updated dependencies [8cc30b4]
|
|
2977
|
+
- Updated dependencies [32ce912]
|
|
2978
|
+
- Updated dependencies [888a5c1]
|
|
2979
|
+
- Updated dependencies [96ad4df]
|
|
2980
|
+
- Updated dependencies [2f9073a]
|
|
2981
|
+
- @objectstack/metadata-core@5.0.0
|
|
2982
|
+
- @objectstack/metadata-fs@5.0.0
|
|
2983
|
+
- @objectstack/platform-objects@5.0.0
|
|
2984
|
+
- @objectstack/spec@5.0.0
|
|
2985
|
+
- @objectstack/core@5.0.0
|
|
2986
|
+
- @objectstack/types@5.0.0
|
|
2987
|
+
|
|
2988
|
+
## 4.2.0
|
|
2989
|
+
|
|
2990
|
+
### Patch Changes
|
|
2991
|
+
|
|
2992
|
+
- 3a99239: Metadata HMR via SSE — close the agent-edits → preview-refresh loop.
|
|
2993
|
+
|
|
2994
|
+
- `@objectstack/metadata`: register `/api/v1/dev/metadata-events` SSE endpoint unconditionally;
|
|
2995
|
+
add `POST` trigger that reloads the artifact and broadcasts a `reload` event to all listeners.
|
|
2996
|
+
- `@objectstack/cli` (`os dev`): chokidar-based watch on `objectstack.config.ts` and `src/`;
|
|
2997
|
+
debounced recompile + `POST` to the HMR endpoint so the server reloads without restart.
|
|
2998
|
+
- `@objectstack/studio`: `useMetadataHmr` provider opens an `EventSource`, exposes a version
|
|
2999
|
+
counter; previews include it in their query deps, and a top-bar badge surfaces connection
|
|
3000
|
+
state and event counts for diagnostics.
|
|
3001
|
+
|
|
3002
|
+
- Updated dependencies [2869891]
|
|
3003
|
+
- @objectstack/spec@4.2.0
|
|
3004
|
+
- @objectstack/core@4.2.0
|
|
3005
|
+
- @objectstack/platform-objects@4.2.0
|
|
3006
|
+
- @objectstack/types@4.2.0
|
|
3007
|
+
|
|
3008
|
+
## 4.1.1
|
|
3009
|
+
|
|
3010
|
+
### Patch Changes
|
|
3011
|
+
|
|
3012
|
+
- @objectstack/spec@4.1.1
|
|
3013
|
+
- @objectstack/core@4.1.1
|
|
3014
|
+
- @objectstack/types@4.1.1
|
|
3015
|
+
- @objectstack/platform-objects@4.1.1
|
|
3016
|
+
|
|
3017
|
+
## 4.1.0
|
|
3018
|
+
|
|
3019
|
+
### Minor Changes
|
|
3020
|
+
|
|
3021
|
+
- 1234920: v3.1 — Runtime controls & read-through cache.
|
|
3022
|
+
|
|
3023
|
+
- Generic `LRUCache` (lazy TTL, promote-on-get, size cap, hits/misses/hitRate stats) wired into `DatabaseLoader.{load,loadMany,list,stat}` with write invalidation. Configured via `cache.databaseLoader`.
|
|
3024
|
+
- `MetadataPluginConfig.bootstrap` modes: `eager` (default), `lazy`, `artifact-only`. `artifact-only` requires `artifactSource.mode = 'local-file'`.
|
|
3025
|
+
- `MetadataManagerConfig.persistence` two-axis write gates: `writable` (gates `register()`) and `overlayWritable` (gates `saveOverlay()`). Both default `true`; either becomes a throw under `validation.throwOnError`.
|
|
3026
|
+
- Single-source schema discipline: canonical `MetadataManagerConfigSchema` / `MetadataFallbackStrategySchema` live in `kernel/metadata-loader.zod.ts` and are re-exported from `system/metadata-persistence.zod.ts`.
|
|
3027
|
+
|
|
3028
|
+
### Patch Changes
|
|
3029
|
+
|
|
3030
|
+
- Updated dependencies [2108c30]
|
|
3031
|
+
- Updated dependencies [23db640]
|
|
3032
|
+
- @objectstack/spec@4.1.0
|
|
3033
|
+
- @objectstack/core@4.1.0
|
|
3034
|
+
- @objectstack/platform-objects@4.1.0
|
|
3035
|
+
- @objectstack/types@4.1.0
|
|
3036
|
+
|
|
3037
|
+
## 4.0.5
|
|
3038
|
+
|
|
3039
|
+
### Patch Changes
|
|
3040
|
+
|
|
3041
|
+
- 15e0df6: chore: unify all package versions to a single patch release
|
|
3042
|
+
- Updated dependencies [15e0df6]
|
|
3043
|
+
- @objectstack/spec@4.0.5
|
|
3044
|
+
- @objectstack/core@4.0.5
|
|
3045
|
+
- @objectstack/types@4.0.5
|
|
3046
|
+
- @objectstack/platform-objects@4.0.5
|
|
3047
|
+
|
|
3048
|
+
## 4.0.4
|
|
3049
|
+
|
|
3050
|
+
### Patch Changes
|
|
3051
|
+
|
|
3052
|
+
- Updated dependencies [326b66b]
|
|
3053
|
+
- @objectstack/spec@4.0.4
|
|
3054
|
+
- @objectstack/core@4.0.4
|
|
3055
|
+
- @objectstack/types@4.0.4
|
|
3056
|
+
|
|
3057
|
+
## 4.0.3
|
|
3058
|
+
|
|
3059
|
+
### Patch Changes
|
|
3060
|
+
|
|
3061
|
+
- @objectstack/spec@4.0.3
|
|
3062
|
+
- @objectstack/core@4.0.3
|
|
3063
|
+
- @objectstack/types@4.0.3
|
|
3064
|
+
|
|
3065
|
+
## 4.0.2
|
|
3066
|
+
|
|
3067
|
+
### Patch Changes
|
|
3068
|
+
|
|
3069
|
+
- Updated dependencies [5f659e9]
|
|
3070
|
+
- @objectstack/spec@4.0.2
|
|
3071
|
+
- @objectstack/core@4.0.2
|
|
3072
|
+
- @objectstack/types@4.0.2
|
|
3073
|
+
|
|
3074
|
+
## 4.0.0
|
|
3075
|
+
|
|
3076
|
+
### Patch Changes
|
|
3077
|
+
|
|
3078
|
+
- Updated dependencies [f08ffc3]
|
|
3079
|
+
- Updated dependencies [e0b0a78]
|
|
3080
|
+
- @objectstack/spec@4.0.0
|
|
3081
|
+
- @objectstack/core@4.0.0
|
|
3082
|
+
- @objectstack/types@4.0.0
|
|
3083
|
+
|
|
3084
|
+
## 3.3.1
|
|
3085
|
+
|
|
3086
|
+
### Patch Changes
|
|
3087
|
+
|
|
3088
|
+
- @objectstack/spec@3.3.1
|
|
3089
|
+
- @objectstack/core@3.3.1
|
|
3090
|
+
- @objectstack/types@3.3.1
|
|
3091
|
+
|
|
3092
|
+
## 3.3.0
|
|
3093
|
+
|
|
3094
|
+
### Patch Changes
|
|
3095
|
+
|
|
3096
|
+
- Fix ERR_MODULE_NOT_FOUND on Vercel: add `"type": "module"` and update exports to use `.js`/`.cjs` pattern (consistent with @objectstack/core, @objectstack/runtime)
|
|
3097
|
+
- @objectstack/spec@3.3.0
|
|
3098
|
+
- @objectstack/core@3.3.0
|
|
3099
|
+
- @objectstack/types@3.3.0
|
|
3100
|
+
|
|
3101
|
+
## 3.2.9
|
|
3102
|
+
|
|
3103
|
+
### Patch Changes
|
|
3104
|
+
|
|
3105
|
+
- @objectstack/spec@3.2.9
|
|
3106
|
+
- @objectstack/core@3.2.9
|
|
3107
|
+
- @objectstack/types@3.2.9
|
|
3108
|
+
|
|
3109
|
+
## 3.2.8
|
|
3110
|
+
|
|
3111
|
+
### Patch Changes
|
|
3112
|
+
|
|
3113
|
+
- @objectstack/spec@3.2.8
|
|
3114
|
+
- @objectstack/core@3.2.8
|
|
3115
|
+
- @objectstack/types@3.2.8
|
|
3116
|
+
|
|
3117
|
+
## 3.2.7
|
|
3118
|
+
|
|
3119
|
+
### Patch Changes
|
|
3120
|
+
|
|
3121
|
+
- @objectstack/spec@3.2.7
|
|
3122
|
+
- @objectstack/core@3.2.7
|
|
3123
|
+
- @objectstack/types@3.2.7
|
|
3124
|
+
|
|
3125
|
+
## 3.2.6
|
|
3126
|
+
|
|
3127
|
+
### Patch Changes
|
|
3128
|
+
|
|
3129
|
+
- @objectstack/spec@3.2.6
|
|
3130
|
+
- @objectstack/core@3.2.6
|
|
3131
|
+
- @objectstack/types@3.2.6
|
|
3132
|
+
|
|
3133
|
+
## 3.2.5
|
|
3134
|
+
|
|
3135
|
+
### Patch Changes
|
|
3136
|
+
|
|
3137
|
+
- @objectstack/spec@3.2.5
|
|
3138
|
+
- @objectstack/core@3.2.5
|
|
3139
|
+
- @objectstack/types@3.2.5
|
|
3140
|
+
|
|
3141
|
+
## 3.2.4
|
|
3142
|
+
|
|
3143
|
+
### Patch Changes
|
|
3144
|
+
|
|
3145
|
+
- @objectstack/spec@3.2.4
|
|
3146
|
+
- @objectstack/core@3.2.4
|
|
3147
|
+
- @objectstack/types@3.2.4
|
|
3148
|
+
|
|
3149
|
+
## 3.2.3
|
|
3150
|
+
|
|
3151
|
+
### Patch Changes
|
|
3152
|
+
|
|
3153
|
+
- @objectstack/spec@3.2.3
|
|
3154
|
+
- @objectstack/core@3.2.3
|
|
3155
|
+
- @objectstack/types@3.2.3
|
|
3156
|
+
|
|
3157
|
+
## 3.2.2
|
|
3158
|
+
|
|
3159
|
+
### Patch Changes
|
|
3160
|
+
|
|
3161
|
+
- Updated dependencies [46defbb]
|
|
3162
|
+
- @objectstack/spec@3.2.2
|
|
3163
|
+
- @objectstack/core@3.2.2
|
|
3164
|
+
- @objectstack/types@3.2.2
|
|
3165
|
+
|
|
3166
|
+
## 3.2.1
|
|
3167
|
+
|
|
3168
|
+
### Patch Changes
|
|
3169
|
+
|
|
3170
|
+
- Updated dependencies [850b546]
|
|
3171
|
+
- @objectstack/spec@3.2.1
|
|
3172
|
+
- @objectstack/core@3.2.1
|
|
3173
|
+
- @objectstack/types@3.2.1
|
|
3174
|
+
|
|
3175
|
+
## 3.2.0
|
|
3176
|
+
|
|
3177
|
+
### Patch Changes
|
|
3178
|
+
|
|
3179
|
+
- Updated dependencies [5901c29]
|
|
3180
|
+
- @objectstack/spec@3.2.0
|
|
3181
|
+
- @objectstack/core@3.2.0
|
|
3182
|
+
- @objectstack/types@3.2.0
|
|
3183
|
+
|
|
3184
|
+
## 3.1.1
|
|
3185
|
+
|
|
3186
|
+
### Patch Changes
|
|
3187
|
+
|
|
3188
|
+
- Updated dependencies [953d667]
|
|
3189
|
+
- @objectstack/spec@3.1.1
|
|
3190
|
+
- @objectstack/core@3.1.1
|
|
3191
|
+
- @objectstack/types@3.1.1
|
|
3192
|
+
|
|
3193
|
+
## 3.1.0
|
|
3194
|
+
|
|
3195
|
+
### Patch Changes
|
|
3196
|
+
|
|
3197
|
+
- Updated dependencies [0088830]
|
|
3198
|
+
- @objectstack/spec@3.1.0
|
|
3199
|
+
- @objectstack/core@3.1.0
|
|
3200
|
+
- @objectstack/types@3.1.0
|
|
3201
|
+
|
|
3202
|
+
## 3.0.11
|
|
3203
|
+
|
|
3204
|
+
### Patch Changes
|
|
3205
|
+
|
|
3206
|
+
- Updated dependencies [92d9d99]
|
|
3207
|
+
- @objectstack/spec@3.0.11
|
|
3208
|
+
- @objectstack/core@3.0.11
|
|
3209
|
+
- @objectstack/types@3.0.11
|
|
3210
|
+
|
|
3211
|
+
## 3.0.10
|
|
3212
|
+
|
|
3213
|
+
### Patch Changes
|
|
3214
|
+
|
|
3215
|
+
- Updated dependencies [d1e5d31]
|
|
3216
|
+
- @objectstack/spec@3.0.10
|
|
3217
|
+
- @objectstack/core@3.0.10
|
|
3218
|
+
- @objectstack/types@3.0.10
|
|
3219
|
+
|
|
3220
|
+
## 3.0.9
|
|
3221
|
+
|
|
3222
|
+
### Patch Changes
|
|
3223
|
+
|
|
3224
|
+
- Updated dependencies [15e0df6]
|
|
3225
|
+
- @objectstack/spec@3.0.9
|
|
3226
|
+
- @objectstack/core@3.0.9
|
|
3227
|
+
- @objectstack/types@3.0.9
|
|
3228
|
+
|
|
3229
|
+
## 3.0.8
|
|
3230
|
+
|
|
3231
|
+
### Patch Changes
|
|
3232
|
+
|
|
3233
|
+
- Updated dependencies [5a968a2]
|
|
3234
|
+
- @objectstack/spec@3.0.8
|
|
3235
|
+
- @objectstack/core@3.0.8
|
|
3236
|
+
- @objectstack/types@3.0.8
|
|
3237
|
+
|
|
3238
|
+
## 3.0.7
|
|
3239
|
+
|
|
3240
|
+
### Patch Changes
|
|
3241
|
+
|
|
3242
|
+
- Updated dependencies [0119bd7]
|
|
3243
|
+
- Updated dependencies [5426bdf]
|
|
3244
|
+
- @objectstack/spec@3.0.7
|
|
3245
|
+
- @objectstack/core@3.0.7
|
|
3246
|
+
- @objectstack/types@3.0.7
|
|
3247
|
+
|
|
3248
|
+
## 3.0.6
|
|
3249
|
+
|
|
3250
|
+
### Patch Changes
|
|
3251
|
+
|
|
3252
|
+
- Updated dependencies [5df254c]
|
|
3253
|
+
- @objectstack/spec@3.0.6
|
|
3254
|
+
- @objectstack/core@3.0.6
|
|
3255
|
+
- @objectstack/types@3.0.6
|
|
3256
|
+
|
|
3257
|
+
## 3.0.5
|
|
3258
|
+
|
|
3259
|
+
### Patch Changes
|
|
3260
|
+
|
|
3261
|
+
- Updated dependencies [23a4a68]
|
|
3262
|
+
- @objectstack/spec@3.0.5
|
|
3263
|
+
- @objectstack/core@3.0.5
|
|
3264
|
+
- @objectstack/types@3.0.5
|
|
3265
|
+
|
|
3266
|
+
## 3.0.4
|
|
3267
|
+
|
|
3268
|
+
### Patch Changes
|
|
3269
|
+
|
|
3270
|
+
- Updated dependencies [d738987]
|
|
3271
|
+
- @objectstack/spec@3.0.4
|
|
3272
|
+
- @objectstack/core@3.0.4
|
|
3273
|
+
- @objectstack/types@3.0.4
|
|
3274
|
+
|
|
3275
|
+
## 3.0.3
|
|
3276
|
+
|
|
3277
|
+
### Patch Changes
|
|
3278
|
+
|
|
3279
|
+
- c7267f6: Patch release for maintenance updates and improvements.
|
|
3280
|
+
- Updated dependencies [c7267f6]
|
|
3281
|
+
- @objectstack/spec@3.0.3
|
|
3282
|
+
- @objectstack/core@3.0.3
|
|
3283
|
+
- @objectstack/types@3.0.3
|
|
3284
|
+
|
|
3285
|
+
## 3.0.2
|
|
3286
|
+
|
|
3287
|
+
### Patch Changes
|
|
3288
|
+
|
|
3289
|
+
- Updated dependencies [28985f5]
|
|
3290
|
+
- @objectstack/spec@3.0.2
|
|
3291
|
+
- @objectstack/core@3.0.2
|
|
3292
|
+
- @objectstack/types@3.0.2
|
|
3293
|
+
|
|
3294
|
+
## 3.0.1
|
|
3295
|
+
|
|
3296
|
+
### Patch Changes
|
|
3297
|
+
|
|
3298
|
+
- Updated dependencies [389725a]
|
|
3299
|
+
- @objectstack/spec@3.0.1
|
|
3300
|
+
- @objectstack/core@3.0.1
|
|
3301
|
+
- @objectstack/types@3.0.1
|
|
3302
|
+
|
|
3303
|
+
## 3.0.0
|
|
3304
|
+
|
|
3305
|
+
### Major Changes
|
|
3306
|
+
|
|
3307
|
+
- Release v3.0.0 — unified version bump for all ObjectStack packages.
|
|
3308
|
+
|
|
3309
|
+
### Patch Changes
|
|
3310
|
+
|
|
3311
|
+
- Updated dependencies
|
|
3312
|
+
- @objectstack/spec@3.0.0
|
|
3313
|
+
- @objectstack/core@3.0.0
|
|
3314
|
+
- @objectstack/types@3.0.0
|
|
3315
|
+
|
|
3316
|
+
## 2.0.7
|
|
3317
|
+
|
|
3318
|
+
### Patch Changes
|
|
3319
|
+
|
|
3320
|
+
- Updated dependencies
|
|
3321
|
+
- @objectstack/spec@2.0.7
|
|
3322
|
+
- @objectstack/core@2.0.7
|
|
3323
|
+
- @objectstack/types@2.0.7
|
|
3324
|
+
|
|
3325
|
+
## 2.0.6
|
|
3326
|
+
|
|
3327
|
+
### Patch Changes
|
|
3328
|
+
|
|
3329
|
+
- Patch release for maintenance and stability improvements
|
|
3330
|
+
- Updated dependencies
|
|
3331
|
+
- @objectstack/spec@2.0.6
|
|
3332
|
+
- @objectstack/core@2.0.6
|
|
3333
|
+
- @objectstack/types@2.0.6
|
|
3334
|
+
|
|
3335
|
+
## 2.0.5
|
|
3336
|
+
|
|
3337
|
+
### Patch Changes
|
|
3338
|
+
|
|
3339
|
+
- Updated dependencies
|
|
3340
|
+
- @objectstack/spec@2.0.5
|
|
3341
|
+
- @objectstack/core@2.0.5
|
|
3342
|
+
- @objectstack/types@2.0.5
|
|
3343
|
+
|
|
3344
|
+
## 2.0.4
|
|
3345
|
+
|
|
3346
|
+
### Patch Changes
|
|
3347
|
+
|
|
3348
|
+
- Patch release for maintenance and stability improvements
|
|
3349
|
+
- Updated dependencies
|
|
3350
|
+
- @objectstack/spec@2.0.4
|
|
3351
|
+
- @objectstack/core@2.0.4
|
|
3352
|
+
- @objectstack/types@2.0.4
|
|
3353
|
+
|
|
3354
|
+
## 2.0.3
|
|
3355
|
+
|
|
3356
|
+
### Patch Changes
|
|
3357
|
+
|
|
3358
|
+
- Patch release for maintenance and stability improvements
|
|
3359
|
+
- Updated dependencies
|
|
3360
|
+
- @objectstack/spec@2.0.3
|
|
3361
|
+
- @objectstack/core@2.0.3
|
|
3362
|
+
- @objectstack/types@2.0.3
|
|
3363
|
+
|
|
3364
|
+
## 2.0.2
|
|
3365
|
+
|
|
3366
|
+
### Patch Changes
|
|
3367
|
+
|
|
3368
|
+
- Updated dependencies [1db8559]
|
|
3369
|
+
- @objectstack/spec@2.0.2
|
|
3370
|
+
- @objectstack/core@2.0.2
|
|
3371
|
+
- @objectstack/types@2.0.2
|
|
3372
|
+
|
|
3373
|
+
## 2.0.1
|
|
3374
|
+
|
|
3375
|
+
### Patch Changes
|
|
3376
|
+
|
|
3377
|
+
- Patch release for maintenance and stability improvements
|
|
3378
|
+
- Updated dependencies
|
|
3379
|
+
- @objectstack/spec@2.0.1
|
|
3380
|
+
- @objectstack/core@2.0.1
|
|
3381
|
+
- @objectstack/types@2.0.1
|
|
3382
|
+
|
|
3383
|
+
## 2.0.0
|
|
3384
|
+
|
|
3385
|
+
### Patch Changes
|
|
3386
|
+
|
|
3387
|
+
- Updated dependencies [38e5dd5]
|
|
3388
|
+
- Updated dependencies [38e5dd5]
|
|
3389
|
+
- @objectstack/spec@2.0.0
|
|
3390
|
+
- @objectstack/core@2.0.0
|
|
3391
|
+
- @objectstack/types@2.0.0
|
|
3392
|
+
|
|
3393
|
+
## 1.0.12
|
|
3394
|
+
|
|
3395
|
+
### Patch Changes
|
|
3396
|
+
|
|
3397
|
+
- Updated dependencies
|
|
3398
|
+
- @objectstack/spec@1.0.12
|
|
3399
|
+
- @objectstack/core@1.0.12
|
|
3400
|
+
- @objectstack/types@1.0.12
|
|
3401
|
+
|
|
3402
|
+
## 1.0.11
|
|
3403
|
+
|
|
3404
|
+
### Patch Changes
|
|
3405
|
+
|
|
3406
|
+
- @objectstack/spec@1.0.11
|
|
3407
|
+
- @objectstack/core@1.0.11
|
|
3408
|
+
- @objectstack/types@1.0.11
|
|
3409
|
+
|
|
3410
|
+
## 1.0.10
|
|
3411
|
+
|
|
3412
|
+
### Patch Changes
|
|
3413
|
+
|
|
3414
|
+
- Updated dependencies [10f52e1]
|
|
3415
|
+
- @objectstack/core@1.0.10
|
|
3416
|
+
- @objectstack/spec@1.0.10
|
|
3417
|
+
- @objectstack/types@1.0.10
|
|
3418
|
+
|
|
3419
|
+
## 1.0.9
|
|
3420
|
+
|
|
3421
|
+
### Patch Changes
|
|
3422
|
+
|
|
3423
|
+
- @objectstack/spec@1.0.9
|
|
3424
|
+
- @objectstack/core@1.0.9
|
|
3425
|
+
- @objectstack/types@1.0.9
|
|
3426
|
+
|
|
3427
|
+
## 1.0.8
|
|
3428
|
+
|
|
3429
|
+
### Patch Changes
|
|
3430
|
+
|
|
3431
|
+
- @objectstack/spec@1.0.8
|
|
3432
|
+
- @objectstack/core@1.0.8
|
|
3433
|
+
- @objectstack/types@1.0.8
|
|
3434
|
+
|
|
3435
|
+
## 1.0.7
|
|
3436
|
+
|
|
3437
|
+
### Patch Changes
|
|
3438
|
+
|
|
3439
|
+
- @objectstack/spec@1.0.7
|
|
3440
|
+
- @objectstack/core@1.0.7
|
|
3441
|
+
- @objectstack/types@1.0.7
|
|
3442
|
+
|
|
3443
|
+
## 1.0.6
|
|
3444
|
+
|
|
3445
|
+
### Patch Changes
|
|
3446
|
+
|
|
3447
|
+
- Updated dependencies [a7f7b9d]
|
|
3448
|
+
- @objectstack/spec@1.0.6
|
|
3449
|
+
- @objectstack/core@1.0.6
|
|
3450
|
+
- @objectstack/types@1.0.6
|
|
3451
|
+
|
|
3452
|
+
## 1.0.5
|
|
3453
|
+
|
|
3454
|
+
### Patch Changes
|
|
3455
|
+
|
|
3456
|
+
- b1d24bd: refactor: migrate build system from tsc to tsup for faster builds
|
|
3457
|
+
- Replaced `tsc` with `tsup` (using esbuild) across all packages
|
|
3458
|
+
- Added shared `tsup.config.ts` in workspace root
|
|
3459
|
+
- Added `tsup` as workspace dev dependency
|
|
3460
|
+
- significantly improved build performance
|
|
3461
|
+
- Updated dependencies [b1d24bd]
|
|
3462
|
+
- @objectstack/core@1.0.5
|
|
3463
|
+
- @objectstack/types@1.0.5
|
|
3464
|
+
- @objectstack/spec@1.0.5
|
|
3465
|
+
|
|
3466
|
+
## 1.0.4
|
|
3467
|
+
|
|
3468
|
+
### Patch Changes
|
|
3469
|
+
|
|
3470
|
+
- @objectstack/spec@1.0.4
|
|
3471
|
+
- @objectstack/core@1.0.4
|
|
3472
|
+
- @objectstack/types@1.0.4
|
|
3473
|
+
|
|
3474
|
+
## 1.0.3
|
|
3475
|
+
|
|
3476
|
+
### Patch Changes
|
|
3477
|
+
|
|
3478
|
+
- Updated dependencies [fb2eabd]
|
|
3479
|
+
- @objectstack/core@1.0.3
|
|
3480
|
+
- @objectstack/spec@1.0.3
|
|
3481
|
+
- @objectstack/types@1.0.3
|
|
3482
|
+
|
|
3483
|
+
## 1.0.2
|
|
3484
|
+
|
|
3485
|
+
### Patch Changes
|
|
3486
|
+
|
|
3487
|
+
- a0a6c85: Infrastructure and development tooling improvements
|
|
3488
|
+
|
|
3489
|
+
- Add changeset configuration for automated version management
|
|
3490
|
+
- Add comprehensive GitHub Actions workflows (CI, CodeQL, linting, releases)
|
|
3491
|
+
- Add development configuration files (.cursorrules, .github/prompts)
|
|
3492
|
+
- Add documentation files (ARCHITECTURE.md, CONTRIBUTING.md, workflows docs)
|
|
3493
|
+
- Update test script configuration in package.json
|
|
3494
|
+
- Add @objectstack/cli to devDependencies for better development experience
|
|
3495
|
+
|
|
3496
|
+
- 109fc5b: Unified patch release to align all package versions.
|
|
3497
|
+
- Updated dependencies [a0a6c85]
|
|
3498
|
+
- Updated dependencies [109fc5b]
|
|
3499
|
+
- @objectstack/spec@1.0.2
|
|
3500
|
+
- @objectstack/core@1.0.2
|
|
3501
|
+
- @objectstack/types@1.0.2
|
|
3502
|
+
|
|
3503
|
+
## 1.0.1
|
|
3504
|
+
|
|
3505
|
+
### Patch Changes
|
|
3506
|
+
|
|
3507
|
+
- @objectstack/spec@1.0.1
|
|
3508
|
+
- @objectstack/core@1.0.1
|
|
3509
|
+
- @objectstack/types@1.0.1
|
|
3510
|
+
|
|
3511
|
+
## 1.0.0
|
|
3512
|
+
|
|
3513
|
+
### Major Changes
|
|
3514
|
+
|
|
3515
|
+
- Major version release for ObjectStack Protocol v1.0.
|
|
3516
|
+
- Stabilized Protocol Definitions
|
|
3517
|
+
- Enhanced Runtime Plugin Support
|
|
3518
|
+
- Fixed Type Compliance across Monorepo
|
|
3519
|
+
|
|
3520
|
+
### Patch Changes
|
|
3521
|
+
|
|
3522
|
+
- Updated dependencies
|
|
3523
|
+
- @objectstack/spec@1.0.0
|
|
3524
|
+
- @objectstack/core@1.0.0
|
|
3525
|
+
- @objectstack/types@1.0.0
|
|
3526
|
+
|
|
3527
|
+
## 0.9.2
|
|
3528
|
+
|
|
3529
|
+
### Patch Changes
|
|
3530
|
+
|
|
3531
|
+
- Updated dependencies
|
|
3532
|
+
- @objectstack/spec@0.9.2
|
|
3533
|
+
- @objectstack/core@0.9.2
|
|
3534
|
+
- @objectstack/types@0.9.2
|
|
3535
|
+
|
|
3536
|
+
## 0.9.1
|
|
3537
|
+
|
|
3538
|
+
### Patch Changes
|
|
3539
|
+
|
|
3540
|
+
- Patch release for maintenance and stability improvements. All packages updated with unified versioning.
|
|
3541
|
+
- Updated dependencies
|
|
3542
|
+
- @objectstack/spec@0.9.1
|
|
3543
|
+
- @objectstack/core@0.9.1
|
|
3544
|
+
- @objectstack/types@0.9.1
|
|
3545
|
+
|
|
3546
|
+
## 0.8.2
|
|
3547
|
+
|
|
3548
|
+
### Patch Changes
|
|
3549
|
+
|
|
3550
|
+
- Updated dependencies [555e6a7]
|
|
3551
|
+
- @objectstack/spec@0.8.2
|
|
3552
|
+
- @objectstack/core@0.8.2
|
|
3553
|
+
- @objectstack/types@0.8.2
|
|
3554
|
+
|
|
3555
|
+
## 0.8.1
|
|
3556
|
+
|
|
3557
|
+
### Patch Changes
|
|
3558
|
+
|
|
3559
|
+
- @objectstack/spec@0.8.1
|
|
3560
|
+
- @objectstack/core@0.8.1
|
|
3561
|
+
- @objectstack/types@0.8.1
|
|
3562
|
+
|
|
3563
|
+
## 1.0.0
|
|
3564
|
+
|
|
3565
|
+
### Minor Changes
|
|
3566
|
+
|
|
3567
|
+
- # Upgrade to Zod v4 and Protocol Improvements
|
|
3568
|
+
|
|
3569
|
+
This release includes a major upgrade to the core validation engine (Zod v4) and aligns all protocol definitions with stricter type safety.
|
|
3570
|
+
|
|
3571
|
+
### Patch Changes
|
|
3572
|
+
|
|
3573
|
+
- Updated dependencies
|
|
3574
|
+
- @objectstack/spec@1.0.0
|
|
3575
|
+
- @objectstack/core@1.0.0
|
|
3576
|
+
- @objectstack/types@1.0.0
|
|
3577
|
+
|
|
3578
|
+
## 0.7.2
|
|
3579
|
+
|
|
3580
|
+
### Patch Changes
|
|
3581
|
+
|
|
3582
|
+
- Updated dependencies [fb41cc0]
|
|
3583
|
+
- @objectstack/spec@0.7.2
|
|
3584
|
+
- @objectstack/core@0.7.2
|
|
3585
|
+
- @objectstack/types@0.7.2
|
|
3586
|
+
|
|
3587
|
+
## 0.7.1
|
|
3588
|
+
|
|
3589
|
+
### Patch Changes
|
|
3590
|
+
|
|
3591
|
+
- Updated dependencies
|
|
3592
|
+
- @objectstack/spec@0.7.1
|
|
3593
|
+
- @objectstack/types@0.7.1
|
|
3594
|
+
- @objectstack/core@0.7.1
|