Repository navigation
feat: device-owned notification preferences (#2500 Track 4) - #2534
Conversation
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
⛔ Files ignored due to path filters: 5
📒 Files selected for processing: 59
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
eab3494 to
8fc9384
Compare
|
精确版本交接: 完整 build 在相同生产代码 f9ead34 整体 exit0;后续仅两处测试 fixture 修复。最终 root/mobile typecheck、lint、format、changelog、CLI parity、24文件210项单worker回归及624页 docs build 均 exit0。四个 Browser/Computer js/maps 真实重建后与提交 blob 一致,无人为产物差异。R6 固定 head 独立 Standards0/Spec0;父协调者另核对 T7 viewer remove 与 T4 forget 交界及最终 test-only delta。 R5 长串行 exit1 的 relay timeout/unavailable 保留,根因未证实。R6 固定旧83ae产物单轮完整序列 exit0,不代表旧故障已修复或是 baseline;最终集成运行 E2E 留统一批次。本轮未启动 Host/Metro/设备/模型。 PR 四张浅/深色 before/after 已在公开 GitHub 页面解码为1440×900,并目视核对;图片来源版本已明确标注。精确 head 的 HTML 解释材料已生成并检查桌面/窄屏,无私密资料;当前仅本地/T3可用,没有 GitHub reviewer 可访问的托管链接,不声称公共 HTML 交付完成。公开 PR 正文保留对应数据流、风险和验收边界。 iOS/Android 原生12格、真实手机 dev CLI、OS banner 尚未运行,转统一外部交接;Expo58.0.17公共补丁后需新 dev build。development-only CLI 不代表 release-client parity 已完成或豁免。migration106 前向恢复及 O(已见身份数) 会话内内存风险保留。CI成功后由父协调者按用户授权合并;本任务保持 Draft,不自行合并或等待 CI。 Human comment discussion_r4339304548 已按原文修改并推送,回复见 #2534 (comment) 。 Agent-Task: |
8fc9384 to
80d8ed1
Compare
|
R8 已推送:head 80d8ed1,base c63947d。Draft 保留,新 CI 交父协调者。 旧8fc的 shard2失败 保留,处理两项:
最初两文件31项与相邻四文件41项均exit0。随后rebase T8:仅Host菜单与feature map发生冲突,settings和notifications入口、state、dialog及两条journey均保留;T8共享model revision模块与main无diff,T4通知owner/control/sharedInbox未变。最终组合build、root/mobile typecheck、lint、format和9文件151项交界回归均整体exit0。四个Browser/Computer js/maps真实重建、blob等于HEAD,无人为diff。未启动Host/native/模型或全962文件suite;R7的210项/docs、R5失败与R6旧产物单轮成功继续单列。 精确head的HTML与PR说明已刷新;HTML仍仅本地/T3可访问,无公共托管URL。原生/真实phone dev CLI/OS banner及release parity边界、migration106恢复和O(seen)内存风险不变。重型检查窗口已释放,等待父检查新CI后按用户授权处理合并。 Requested by Vain. Refs #2500. Agent-Task: |
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
Include notifications in the gateway parameter contract and assert forwarding while preserving unavailable-owner refusals. Split inspector refusal scenarios, wait for this evaluation rather than a global socket count, assert the exact 20-second deadline, and await bounded fixture cleanup. The controlled idle-socket/delayed-discovery probe exposes a premature clock advance. The original CI timeout has no phase trace, so its exact phase is not claimed as proven. No production code or timeout configuration changes. Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
The server close callback can finish before the client socket close event. The client ws close handshake then still owns its 30-second timer even though the 20-second request timeout and CLI result have completed. Observe real peer close events, wait for them during fixture teardown, and restore the observer. Keep the zero-timer assertion and the original business deadline unchanged. Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
80d8ed1 to
d47d76f
Compare
|
R9 follow-up pushed at
Exact-head HTML was regenerated and previewed at900/360px as local/T3 material; no public reviewer-hosted URL is available. Public light/dark before/after images decode at1440×900; their old runtime provenance remains explicit in the PR. Human request PR remains Draft. Parent owns new CI and merging; this thread does not watch or merge. Heavy window released; no owned Host/process and no listeners47411/47412. |
Advance only the 49+1ms source timeout, then await real fallback installation under a separate real-time bound. Assert source order, abort scope and timer cleanup. Controlled delayed filesystem callbacks reproduce the old timing-sensitive failure; the original CI phase is not observed. Issue: #2500 Agent-Task: codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183
|
R10 pushed at Only Evidence: the original file executed all 11 tests on WSL Linux / Node24.21 / Vitest5.0.1 and passed. A controlled 80ms delay after real filesystem write completion reproduced the CI's The final test verifies no abort/source switch at49ms, first-source abort and backup selection at50ms, then awaits real download, checksum, tar extraction and Git probe. It requires backup success, only the first source aborted, and zero fake timers. A separate real2s deadline bounds that I/O wait; finally clears it and restores real timers. No production timeout increase, skipped test, global timer clearing or blind CI retry.
PR remains Draft. No Host/native/Metro/model run; owned Windows and Linux processes are gone and ports47411/47412 are clear. Exact-head PR/HTML and native handoff are refreshed; native, real phone CLI, OS banner and release-client parity gaps remain. R5 unexplained failure and R6 old-runtime pass stay separate. |
Why the change
让手机持久保存四类通知选择并复制到所有已配对 Host,同时让打开的浏览器按各远程 Host 的本地选择提醒新的 attention。
Requested by Vain. Refs #2500 · 任务 claim · Agent-Task:
codex/local/01a15ee9-f10e-7e21-90ba-727ffccb2183.Special things to note
39780fbd2b2c625af87e7185daad67281487bc2b/ basef3b3c3389f15d8ba58848f4703e7750cdd1f91d5。R10仅改Managed Git fallback测试,生产/依赖/Client未变。Linux Node24.21/Vitest5.0.1:原文件11项exit0;真实WriteStream callback延迟80ms受控red1→green0;去探针后11项exit0;邻接git-probe9项exit0。测试明确49ms未abort/未切换,+1ms首源abort并进入备用,冻结测试时钟后以独立真实2秒上限等待真实下载/校验/tar/probe,最终仅首源abort、timer0;未加大生产stall或全局timeout。原CI run39691576559/shard1唯一失败计数保留:1failed322passed3skipfiles、1failed3083passed4skiptests;CI缺phase日志,不把受控复现冒充原CI具体阶段。Windows邻接组合exit1:phoneCLI8项通过,git-probe另有macOS路径fixture失败(1fail/15pass/1skip);Linux9项通过不抹除Windows失败。最终root/mobile type、lint、format各exit0。R9 d47d组合build、239项交界回归及四bundle真实同blob证据保留,本次tests-only不重复build/docs。旧80d timer count1受控诊断、8fc两项CI失败,以及R5长串行exit1未归因/R6旧83ae单轮exit0分别留存,不写fix/baseline。本轮未启动Host/native/模型,集成E2E留全部merge后统一批次。Change outline
deepseekbot inbox --notifications对应 Host 决定的 actions、群 mention/reply 和普通 DM 的完整分页;原 Activity 排序、30条 UI 窗口和 Host 来源隔离不变。Web 1440×900,浅/深色:Before 为 f878c43 的原入口,After 为83ae实际通知界面;图片由本 head 承载,不是本次集成 head 的新运行截图。本轮按协调要求不启动 Host;当前入口可由 Messages → Remote Host icon 右键 → Remote notifications 复验。原生截图未运行,不用 Web 替代。
Light — Before
Light — After
Dark — Before
Dark — After
外部原生 fixtures:两台批次 owner 的 QA Host、四类 attention、首次种子/已建立选择、重启和重配对、A持续在线而B恢复、UI/CLI同owner、权限拒绝/无token、系统过滤与点击目标。iOS与Android各验证 default/intermediate/maximum 系统字号 × light/dark,并记录真实设备/build及同条件 before/after;12格均未运行。开发 CLI 另测错误/重复target、release、未初始化/重复owner、断线/超时,超时结果未知时先读取,不盲目重试。
Human comment
discussion_r4339304548的 lead 已采用原文 “stop spamming me with notifications.”,保留必要验证步骤,不改通知语义。证据范围:本轨旧运行只验证文字和附件名,未验收图片/卡片;最新 main 的 T5 renderer 已继承,不能把旧缺口写成当前实现仍缺失。Host icon/colour 按设备本地设计;DSH Desktop 未验收;未做物理两机真实 tailnet 测试。浏览器只在页面打开时提醒,Notification API 证据不等同 OS banner。