|
| 1 | +--- |
| 2 | +"@objectstack/spec": minor |
| 3 | +--- |
| 4 | + |
| 5 | +feat(spec)!: prune the still-dead aspirational config from Theme / Translation / Webhook (#3494) |
| 6 | + |
| 7 | +Removes the authorable-but-never-consumed props confirmed dead by the 2026-06 |
| 8 | +liveness audit (follow-up to #1878/#1893; same treatment as the #2377 and |
| 9 | +#3464 prunes). Authoring any of these was a silent no-op. |
| 10 | + |
| 11 | +## Removed |
| 12 | + |
| 13 | +**Theme** (`ThemeSchema`) — the theme engine (objectui `generateThemeVars`) |
| 14 | +never emitted or consumed them: |
| 15 | +- Props: `spacing`, `breakpoints`, `logo`, `density`, `wcagContrast`, `rtl`, |
| 16 | + `touchTarget`, `keyboardNavigation` |
| 17 | +- Exports: `SpacingSchema`, `BreakpointsSchema`, `DensityModeSchema` (+ |
| 18 | + deprecated `DensityMode` alias), `WcagContrastLevelSchema` (+ deprecated |
| 19 | + `WcagContrastLevel` alias), and the `Spacing` / `Breakpoints` / |
| 20 | + `DensityMode` / `WcagContrastLevel` types |
| 21 | + |
| 22 | +**Translation** (`TranslationConfigSchema`) — no runtime reader; there is no |
| 23 | +ICU engine and interpolation is always simple `{variable}` substitution: |
| 24 | +- Props: `fileOrganization`, `messageFormat`, `lazyLoad`, `cache` |
| 25 | +- Exports: `MessageFormatSchema`, `TranslationFileOrganizationSchema`, and the |
| 26 | + `MessageFormat` / `TranslationFileOrganization` types |
| 27 | + |
| 28 | +**Webhook** (`WebhookSchema`) — the delivery path always sends its own fixed |
| 29 | +envelope and only applies HMAC signing via `secret`; delivery retries are owned |
| 30 | +by the messaging outbox's fixed schedule: |
| 31 | +- Props: `body`, `payloadFields`, `includeSession`, `authentication` |
| 32 | + (bearer/basic/api-key were never attached; HMAC via `secret` stays), |
| 33 | + `retryPolicy`, `tags` |
| 34 | +- Exports: the entire inbound `WebhookReceiverSchema` + `WebhookReceiver` type |
| 35 | + (never consumed by any runtime) |
| 36 | + |
| 37 | +## Migration |
| 38 | + |
| 39 | +Delete these keys from your configs — they never did anything, so removing |
| 40 | +them changes no behavior. Parsed output no longer contains the previously |
| 41 | +defaulted keys (`includeSession: false`, `fileOrganization: 'per_locale'`, |
| 42 | +`messageFormat: 'simple'`, `lazyLoad: false`, `cache: true`). Webhook HMAC |
| 43 | +signing (`secret`), `headers`, and `timeoutMs` are unaffected. File layout for |
| 44 | +translations remains a pure authoring convention — no config knob needed. |
| 45 | + |
| 46 | +## Deliberately NOT removed |
| 47 | + |
| 48 | +- Translation `supportedLocales` — it has a live reader (pinyin-search |
| 49 | + capability toggle in `serve.ts`). |
| 50 | +- Job `retryPolicy` / `timeout` — being implemented (built, not pruned) in the |
| 51 | + #3494 follow-up PR. |
| 52 | +- The materialized webhook props (`name`, `object`, `triggers`, `url`, |
| 53 | + `method`, `headers`, `timeoutMs`, `secret`, `isActive`, `description`, |
| 54 | + `label`) — live via the #3489 bridge; ledger flip tracked in #3490. |
| 55 | + |
| 56 | +Refs #3494, #1878, #1893. |
0 commit comments