Repository navigation
Desktop zoom S3: Windows/Linux 原生资格与平台交付 #2270
Description
Parent/spec: #2245. Implementation plan: #2245 (comment)
Human authorized formal implementation and one PR per issue on 2026-10-19. Stacked PRs are allowed; each PR closes only its own slice issue. No merge/release authorization. Do not modify upstream or installed ASAR. Preserve the existing accepted spec (L=-8…8, 1.2^L, device-local defaults/current window separation).
Current handoff — 2026-10-20 (Asia/Tokyo)
Windows implementation and native-test handoff is the current takeover entry point; it supersedes the older Draft/CI-blocked handoff comments below.
- Source baseline: main
2de555481cb01119b3e6abab19066bfe92f76680; fetch again before starting. - Windows workspace shell was delivered in merged fix(client): enable Windows workspace and preserve native dragging #2246; whole-window zoom is still not enabled or natively qualified on Windows. Linux zoom is likewise unqualified.
- macOS S1/S2 and theme/panel fixes are merged. fix(client): restore default window zoom with Cmd+0 #2334 added Cmd+0 (merge
33da7a0c6f274e50edbc9aa9814d9a1d4eb46f07), closing Desktop zoom: add Cmd+0 reset and retain keypad limitation #2318; those results do not qualify Windows. - Windows first needs a qualified Client/default-binding gate, font-key compatibility lease, platform installer/rollback and native launcher path. Current paths contain macOS-only checks/tools. Preserve the same zoom owner and native Shortcut Service; do not bypass guards or patch upstream/ASAR.
- Recovery priority: Ctrl+0 restores the saved device default, including non-100%. Probe Windows numeric-keypad capability and disclose an unsupported result if refused; an alternative input router is outside the accepted scope.
- No qualified Windows package is attached yet. Build and identify an immutable Windows candidate, then run the linked native matrix. Reuse one isolated Profile/window and preserve ordinary Windows chrome and other sessions.
User journey
Users on each actually supported Windows/Linux desktop complete the same settings, Ctrl shortcuts, embedded focus, ordinary foreground recovery and true restart/CLI journey as macOS.
Scope and acceptance
- Implement required platform adaptations on the same Service/compatibility path; explicit capability/version qualification prevents enabling unsupported desktop combinations.
- Independently verify actual Windows and Linux desktop key routing, plain/shift/reset keys, IME/recording and embedded focus with exactly one handler invocation per intended action; probe numpad capability and explicitly retain unsupported codes as a limitation when refused.
- Independently verify native visibility lifecycle, embedded rendering, coordinates, preservation of state, persistence/restart and targeted CLI on each platform.
- Verify full Web browser regression, packaging/upgrade/rollback and per-platform Human QA with exact version/head evidence.
- Only where the real shell supports multiple product windows, verify independent current levels, default propagation rules, new windows and restored identity; otherwise document not applicable without simulating qualification.
Dependency/delivery
S2 is merged; the remaining dependency is actual Windows/Linux adaptation and independent native qualification. Keep #2245 open until its remaining platform scope is complete.
This issue covers both Windows and Linux. Windows-only proof does not close the complete issue. If delivering independent platform PRs, split platform sub-issues first to retain one issue per closing PR; otherwise intermediate Windows work references #2270 while Linux remains open. Lack of native test access is an explicit unfulfilled gate, not a successful platform result.
This handoff does not extend the earlier macOS PR merge authorization to future platform PRs. No production deployment, release or new platform merge is authorized here.
Activity
DoodleBears commentedon Oct 19, 2026
Close eligibility audit — keep open
Windows/Linux platform adaptations and independent native qualification have not been delivered; activation remains disabled. Platform keyboard/embedded focus, visibility recovery, persistence/restart, packaging and Human QA remain required. Multiple-window behavior applies only if the real shell supports it.
This issue has no completed platform delivery PR and is not eligible for closure. The merged macOS work does not satisfy these requirements.
DoodleBears commentedon Oct 19, 2026
Human direction: prioritize completing macOS #2268/#2269 and the wallpaper/theme UI regressions first. Windows testing will be handed to the Human after the macOS delivery, with exact artifact/head, setup, test steps and failure-report requirements. Windows/Linux native qualification remains open in #2270 and does not block this macOS implementation turn; neither platform is silently marked supported or complete. No merge/release authorization was added.
DoodleBears commentedon Oct 19, 2026
Windows handoff after macOS qualification
macOS completion stack: #2294 → #2295 → #2298 → #2299, all Draft/unmerged. S1 head
574992cbde821398b224b4364810cb63c5919913; S2 headd56e3a77c746cb0cd8756437cddc614ff2e46d25. Parent #2245. Current independent CI blocker: #2314.Windows/Linux are not implemented or enabled by this stack. The macOS installer and Client lease intentionally refuse other platforms/unknown tuples. This is an implementation-and-qualification handoff, not a claim that the Human can already accept working Windows zoom. No Windows native result is inferred from macOS pixels/jsdom/source fixtures.
Before Windows feature acceptance, provide a bounded S3 PR that keeps the same state/CLI owner and portably qualifies the actual installed Windows app/Host/Client tuple, Profile package transaction/version/process/writer-lock guards and native shortcut handoff. Preserve DSH/Electron chrome; do not force platform flags, patch ASARs or bypass the unsupported-version guard. Windows titlebar/rail behavior has its own #2221 boundary.
Human Windows test matrix once that S3 artifact is ready:
Keep source tests, native pixels, Human results and exact-head CI separate. One S3 issue/PR remains the delivery unit; no merge/release authorization is implied by this handoff.
Agent-Task:
codex/local/01a1506e-87d7-7c10-b4d9-9ba86f02b264.DoodleBears commentedon Oct 19, 2026
Windows takeover handoff — 2026-10-20(Asia/Tokyo)
Parent #2245 · S3 #2270。此条替代本 issue 中旧的“macOS PR 仍 Draft / 被 #2314 阻塞”交接状态。
1. 当前实际支持状态
交接基线是最新
main:2de555481cb01119b3e6abab19066bfe92f76680。Windows 开始工作时仍须重新 fetch,记录实际 HEAD;保留已有脏文件,使用独立 worktree。33da7a0c6f274e50edbc9aa9814d9a1d4eb46f07。macOS 合格组合为 DSH Desktop 0.2.1-rc.2 配合已验证的 Host/Client/兼容包;不是任意桌面版本的支持声明。普通产品安装携带兼容包,但仍需显式激活。目前没有可直接移交的已合格 Windows 安装包;macOS QA 包及私有 Profile/端口/token 不应复制到 Windows。
#2334 的最终源 head 为
8b46c1771185ae30695fa6526b20e5deb0c52397,适用 CI、独立 Standards/Spec 和 Human QA 已通过。原生行为证据来自现有隔离 Profile 的不可变 Client 包覆盖,不是新 Windows 安装资格。交接基线中下述 Client/安装器/兼容脚本未在该合并后改变。2. Windows 需要先补的实现
先从 Windows DSH 0.2.1-rc.2 的真实安装开始;记录实际可执行程序版本、Host release、Client/兼容包版本和哈希,再决定支持集合。未知组合继续拒绝。Windows 标识取值须分别核对实际 shell 与 Shortcut Service,不能机械替换
darwin/macos字符串。shortcuts.platform === 'macos',默认绑定只登记desktop:macos。需加入已验证的 Windows 组合,沿用现有 WindowZoom owner、Shortcut Service/Registry 和primary修饰符;目标为 Ctrl+= / Ctrl+Shift+= / Ctrl+- / Ctrl+0。dataset.platform === 'darwin'和受支持 boot release 下暴露。Windows 必须验证 Ctrl 加减与字号命令的真实冲突,然后扩展同一 lease;释放时先撤销应用缩放命令,再恢复原字号 Fiber。保留版本/哈希检查、原生 theme 身份、字体偏好和单一 Provider。darwin,并使用.app路径、PlistBuddy、ps和 macOS 打包管理器定位。Windows 需要自己的应用版本与 bundled package-manager 定位、目标进程检查、Profile writer lock、路径/link/junction 和锁归属清理验证。保留目标 Desktop 全程关闭、scripts disabled、只动本 Profile 的事务边界;失败/不确定结果先检查,不自动重试。不得只删平台保护。open/.app/lsof,是 macOS launcher。需补可识别并复用同一 Windows 隔离 Profile、user-data 和精确 PID 的验证路径;不反复新开 DSH,不操作日常 Profile 或其他 session。CLI/调试端口在重启后重新发现,token 只存本机私有文件。恢复优先级已确认: Ctrl+0 恢复保存的设备默认值,包括非 100% 默认值;保留显式自定义绑定/解绑,默认键遇到已有显式分配时让位。数字键盘不是本轮必须实现的目标。已证实 macOS 固定版本主进程拒绝 NumpadAdd/Subtract/0;Windows 要核对自己的真实协议/输入行为,若同样拒绝,记录明确限制即可。不得靠 Client 键名替换、第二套全局监听、伪造平台标志、修改上游或已安装 ASAR 覆盖嵌入焦点。
3. Windows 验收顺序
A — 固定现场与基线
pnpm build成功不能替代安装及实际冷启动。B — 最小可运行闭环(先完成再扩大)
L=-8…8、比例1.2^L(约 23%—430%)。默认 100% 时按一次 Ctrl+= 到 120%,Ctrl+- 回 100%;普通等号与带 Shift 的加号分别测试。C — 布局、主题、系统 chrome
D — webview 前台恢复(独立门槛)
E — 持久化、CLI、安装生命周期
window-zoom-clients,选显式--client-id;get读 revision,set --zoom-level=1 --expected-revision …、reset --expected-revision …与设置界面一致。set --zoom-default同时更新默认和当前值。重启后重新枚举 Client ID,不复用旧 token/端口。4. 源码检查与证据
工具链读取当前
.node-version/packageManager(本次为 Node v24.21.0、pnpm 12.4.2)。Windows 上先读 AGENTS.md 及dsh-plugin-dev、dsh-dev、dsh-ui、verify-deepseekbot,按其机制适配真实壳。已有
scripts/e2e-dock-zoom.mjs、scripts/e2e-workspace-chrome.mjs、scripts/check-select-zoom.mjs、scripts/check-wallpaper-zoom.mjs可供依赖/浏览器回归;先检查路径和运行时前提的 Windows 兼容性。它们均不能替代原生 Windows 验收。优先阅读 ADR-0237、功能验收地图、CLI 文档。产品术语仍以 CONTEXT.md 为准。
每个结果标明 source SHA / 包版本与哈希 / DSH+Host+Client / 系统 DPI 与界面 zoom / 操作及焦点 / 预期与实测 / handler 与写入计数 / 截图或录屏 / 通过、失败、未测。截图只含本次测试窗口,发布前移除 token、账号及无关对话。PR 放 GitHub 可渲染的前后原生图;源码、CI、像素、Human QA 分别报告。
5. 交付边界
Agent-Task(交接整理):
codex/local/01a1506e-87d7-7c10-b4d9-9ba86f02b264。DoodleBears commentedon Oct 19, 2026
Agent work claim
codex/local/01a155e2-bea7-79d3-a3d1-c3bd465071d5(not a DSH Session)codex/2270-windows-window-zoom55c884830(fresh origin/main)Refs the current handoff: #2270 (comment). Preserve existing changes and other sessions. No upstream/ASAR changes, merge or release.
DoodleBears commentedon Oct 19, 2026
Windows Draft handoff — #2357(2026-10-20,Asia/Tokyo)
已提交 Draft PR #2357,仅 Refs #2270。Windows 资格未完成,Linux 仍未启用/验收;不合并、不发布、不关闭本 issue。
codex/local/01a155e2-bea7-79d3-a3d1-c3bd465071d5origin/main基线55c88483002ee10a87a6be262c37c327643a0bee;独立分支codex/2270-windows-window-zoom;实现 SHAb27a0cee2ea91f6be09a4830f2f59551ea4a81ab,含验证报告的 PR head447ae518fc3fb89169c885286382f77c5a9f5ea9。已有脏工作保留。已实现:Windows 实际
win32shell /windowsShortcut Service guard、精确 0.2.1-rc.2 boot 与兼容 lease、四个 Ctrl 默认键、原字号 Fiber 的租约恢复顺序;Windows FileVersion / bundled pnpm / CIM 进程 / writer-lock 归属 / junction 检查;正式关闭后 enable/disable 路径;同一 root/user-data/精确 PID/loopback listener 的原生 QA 工具。沿用 WindowZoom owner、现有快捷键服务和设备本地存储,没有第二套按键路由,没有修改上游或 ASAR。真实环境与候选包:Windows 11 专业版 25H2 26200.9457 x64;官方 DSH FileVersion 和观察到的 Host release 均为 0.2.1-rc.2;实测 DPR 1.1399999856948853,不代表 100/125/150/200% DPI 通过。
0.0.0-qa.2270.1,是在实现提交前的脏树构建,未保存为精确源码提交,因此不能资格认证最终 head。0.0.0-qa.2270.2从实现 SHA 构建、打包;manifest SHA-256e108a50f1770140158b077836214106fd274000856af20bd47f7064dd6781045。尚未安装或原生验收。原生部分通过(候选 1):
desktop-zoom-setup-desktop-running。Unsupported shortcut code),候选记录为不支持;不声称物理数字键盘已通过。保留异常:四键请求(Equal、Minus、Shift+Equal、Digit0)实际有 5 个原生事件、handler 和写入,含额外 ordinary Equal,比例
120→144→120→144→172.8→120%。单独 Shift+Equal 补测没有复现额外事件,但未消除该异常;四键组不标为通过。原生自动输入工具产生空 physical code,模拟键不作为通过证据。源码/浏览器证据:lint / format / typecheck / build 通过;focused 16 文件 / 87 tests 通过;Dock 17 档、chrome 204、selector 136、Tooltip 204、wallpaper 34 个浏览器 fixture 通过;product 和 Skill changelog 检查通过。这些不替代原生验收。
本机检查未全绿:related 308 passed / 1 failed,失败是未改动的 fresh-profile 测试将
file:/release/...固定为/,Windows 得到\;docs 前置slides:build在现有sync-slides.mjsspawnpnpm时ENOENT,依赖的 docs public-surface 测试未运行。最终 head 的 hosted CI 已通过:相关测试、lint/format/typecheck/build、mobile bundles、docs build、隔离 Host smoke。该结果不消除 Windows 本机失败,也不替代原生资格;独立审阅 / Human QA 仍待完成。提交内报告保留 CI 启动前的历史状态,以本次回填更新为准。
继续时保留同一隔离 Profile(路径和 token 不公开;默认 120%、当前 144%,原偏好恢复待做):
详细 pass/fail/untested 报告与原生截图。PR 内嵌同一原生窗口候选 1 的禁用/启用前后图;不能当作最终候选或完整 Windows 资格。
feat(desktop): guarded Windows window zoom candidate (#2357)
DoodleBears commentedon Oct 19, 2026
Windows candidate merged; native qualification remains open
Human authorized merging the documented candidate after the Draft handoff. PR #2357 is now merged, squash commit
78f61f227586f175699159d0cd0232cb2436839a, from exact head447ae518fc3fb89169c885286382f77c5a9f5ea9; hosted CI passed before merge.This is implementation delivery, not full Windows native qualification. The partial results and remaining gates remain valid: final-candidate install/keyboard retest, extra Equal discrepancy, focus/IME/embedded contexts, guest foreground pixels, native chrome/DPI and full persistence/disable/upgrade/rollback/removal lifecycle are still pending. Linux remains unimplemented/unqualified in this issue.
The same isolated Profile, user-data, candidate packages and worktree are preserved for continuation. No release or production installation was performed. Keep #2270 open.
codex/local/01a155e2-bea7-79d3-a3d1-c3bd465071d5DoodleBears commentedon Oct 19, 2026
Human acceptance — close this issue
Human 在了解此前说明的剩余原生验证和 Linux 范围后,明确接受当前结果并要求关闭 #2270。本 issue 按该决定结束跟踪。
PR #2357 已合并,提交
78f61f227586f175699159d0cd0232cb2436839a,合并前 CI 通过。此前的原生结果、异常及未测项 保留原状态,不追认为通过;Linux 尚未完成适配/原生资格,关闭本 issue 不构成 Linux 支持声明。同一隔离 Profile、候选包和证据继续保留,便于需要时复查。此次只关闭 issue,不发布。
Agent-Task:
codex/local/01a155e2-bea7-79d3-a3d1-c3bd465071d5.