Skip to content

feat(service-messaging): the notification preference quiet_hours declares the quiet-hours widget - #31534

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-em4tjl
Nov 8, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-em4tjl

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Leehom · project thread

Fixes #31426

Clause-②: no
Metadata-protocol: none

维护者速读

What changes

  • sys_notification_preference.quiet_hours declares widget: 'quiet-hours', with a [#30208 row 6, #31426] comment like the ones on topic and channel. The field stays json; the stored shape { tz?, start: 'HH:MM', end: 'HH:MM' } and every refusal are unchanged. The ui half registers field:quiet-hours (PR feat(fields): draw a notification preference's quiet hours as a time-zone picker and two times #31459, merged).
  • content/docs/data-modeling/field-types.mdx gains a short section on the three notification preference widgets (notification-topic, notification-channel, quiet-hours): which field each sits on, what it draws, what it stores, and that an unregistered name falls back to the type's default input. Per the ui seat's note on the card, the topic and channel hints were undocumented until now.
  • Changeset: @objectstack/service-messaging patch.

Tests

  • notification-preference-topic-channel-help.test.ts (the file that pins the topic / channel hints) adds: quiet_hours declares widget: 'quiet-hours' and stays json.

Verification

Pin and ablation
npx vitest run src/objects/notification-preference-topic-channel-help.test.ts   Tests 5 passed (5)

scripts/ablation-replace.mjs --delete the widget line (landed; restored to the HEAD blob):
 × quiet_hours declares the quiet-hours widget and stays a json field (#31426)
 AssertionError: expected undefined to be 'quiet-hours'
 Tests  1 failed | 4 passed (5)
Gates

node scripts/pm/dispatch-gates.mjs --commands derives 94 families; all 94 run with each exit code captured before any pipe, all exit 0, and --ran reconciles: 94 derived famil(ies) accounted for — 94 run, 0 NOT-MEASURED. After a typing fix in the new pin (a required read the field shape does not type), pnpm --filter @objectstack/service-messaging typecheck exits 0, pnpm check:query-options-erasure exits 0, the pin and its ablation were rerun as above, and pnpm lint over the two touched .ts files exits 0.


Generated by Claude Code

…clares the quiet-hours widget

The console draws its quiet-hours control instead of the JSON editor; the
field stays json with the same stored shape. field-types.mdx documents the
three notification preference widgets.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FEkQ5kheduG7p1MXMoHHr4
@objectstack-fleet objectstack-fleet Bot added domain:server Domain lane — seat card indexed by label:pm:seat enhancement New feature or request labels Nov 8, 2026
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation tests tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface labels Nov 8, 2026
@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

1 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run.

What this run could not see

Coarse fallback — 6 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): node scripts/docs-audit/affected-docs.mjs --json a3ac7fb3808e2c17a369cab00f175ccb03e5e5f7 → packageMentionDocs.

Which tree this was computed on

This run read content/docs from eaef1dce44dc1d16ec17a97177bf7e46a9814cc1 — the merge of head 1863f9895b1b0e4552a0cd82acc2079bb813ac03 into base a3ac7fb3808e2c17a369cab00f175ccb03e5e5f7, which is what actions/checkout gives a pull_request run. Not the PR head.

A worktree cut from an older main holds a different content/docs, so re-deriving there can legitimately return a different list — that is a different tree, not a wrong row. To answer on the same tree:

# while this PR is open — GitHub drops the merge commit once it closes
git fetch origin eaef1dce44dc1d16ec17a97177bf7e46a9814cc1 && git checkout eaef1dce44dc1d16ec17a97177bf7e46a9814cc1
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin a3ac7fb3808e2c17a369cab00f175ccb03e5e5f7 1863f9895b1b0e4552a0cd82acc2079bb813ac03 && git checkout -B drift-repro a3ac7fb3808e2c17a369cab00f175ccb03e5e5f7 && git merge --no-ff 1863f9895b1b0e4552a0cd82acc2079bb813ac03

node scripts/docs-audit/affected-docs.mjs --json a3ac7fb3808e2c17a369cab00f175ccb03e5e5f7

⚠️ That checkout carried uncommitted changes, so the commit above does not fully identify what was read.

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:server#3 · os-project-manager · session_01FEkQ5pXkgNXVpCn2GZDjyy

席位意见:ACCEPT · Head-sha 1863f9895b1b0e4552a0cd82acc2079bb813ac03 · 2026-11-08T13:59Z。正文「维护者速读」与席位读到的 diff 一致。本 PR 不在 governed 面上,由席位落地,维护者不需要操作。

席位核对

  • 形态: draft,目标 main,首行 Fixes #31426;Clause-②: no、Metadata-protocol: none 都在行首,changeset 也写了。
  • diff: quiet_hours 增加了 widget: 'quiet-hours',注释写法和 topic、channel 一样带 [#30208 row 6]。字段仍是 json,存储格式不变,没有新增拒绝。FieldSchema.widget 是自由字符串,所以 Clause-②: no 成立。前端一半 PR feat(fields): draw a notification preference's quiet hours as a time-zone picker and two times #31459 已经合并。
  • 文档: 按 ui 席位的留言(6719581791),field-types.mdx 新增一小节,用表格列出三个通知偏好控件:notification-topic、notification-channel、quiet-hours。
  • 钉子: 钉子在 notification-preference-topic-channel-help.test.ts。删掉 widget 那一行,结果是 1 个失败、4 个通过。
  • 门禁(check-runs @ 1863f989): 39 个 success,20 个 skipped,0 个失败。被取消的 1 个是重复的 "Check Changeset",同名的另外两次都成功了。dev 本地跑了 94 个门族,全部退出码 0。
  • 落地条款: check-governed-merges --pr 31534:0 个 governed,+36/−0,走普通队列。席位把它转为 ready 并开启 auto-merge,合并后关闭 notification preference: quiet_hours declares the quiet-hours widget hint (server half of #31421) #31426。

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review November 8, 2026 14:00
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge November 8, 2026 14:00
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Nov 8, 2026
Merged via the queue into main with commit 6f9f008 Nov 8, 2026
60 of 61 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-em4tjl branch November 8, 2026 14:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation domain:server Domain lane — seat card indexed by label:pm:seat enhancement New feature or request size/s tests tooling Fix lands in tooling, not a product package — enters pm:queue only with Unblocks: or a named surface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

notification preference: quiet_hours declares the quiet-hours widget hint (server half of #31421)

1 participant