feat(approvals): make the inbox opt-in (default OFF) and drop em-dashes

Owner decision: every Approvals Inbox UI surface (header bell, drawer,
phone overview answer strips, reload seeding) now requires enabling
approvalsInboxEnabled in App Settings -> Panels; only an explicit true
turns it on. The store, endpoints, and push Approve/Deny actions keep
running regardless (the push buttons are already opt-in per subscription).

Also replaces em-dashes with plain punctuation across the newly authored
comments, docs, and strings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer
2026-08-09 15:55:51 +02:00
parent ff10a50bc0
commit 6c744f8677
13 changed files with 54 additions and 51 deletions
+5 -4
View File
@@ -680,7 +680,7 @@ export const HookEventSchema = z.object({
/**
* Body of POST /api/approvals/:id/answer (Approvals Inbox).
* `option` digits are additionally validated against the item's PARSED options
* in the route — the schema alone must not authorize blind digit-poking.
* in the route; the schema alone must not authorize blind digit-poking.
*/
export const ApprovalAnswerSchema = z
.object({
@@ -791,9 +791,10 @@ export const SettingsUpdateSchema = z
*/
agentSkillEnabled: z.boolean().optional(),
/**
* Approvals Inbox UI (header badge + drawer, phone overview answer buttons).
* SYNCED, default ON: the surfaces only appear while a prompt is pending.
* The server-side store runs regardless (push actions keep working).
* Approvals Inbox UI (header bell + drawer, phone overview answer buttons).
* SYNCED, default OFF (opt-in): even with items pending, no surface renders
* until this is enabled. The server-side store and answer endpoints run
* regardless, so push Approve/Deny actions keep working either way.
*/
approvalsInboxEnabled: z.boolean().optional(),
tunnelEnabled: z.boolean().optional(),