Device Hub 机身与 Safari 场景对应
当前应用使用 config/safari-scenes.json 中的真实本地采集参考。Body +90° 选择观测机身状态,不机械旋转上一屏。宿主分别记录机身角度、场景角度、实际 DOM viewport、呈现 DIP 框及未缩放场景组件框,桌面 UA/DPR/方向/safe area 保持真实值。
| 机身角度 | 折叠场景 | 侧栏 | 展开场景 |
|---|---|---|---|
| 0° | 466×678 | 右侧 | 951×669 |
| 90° | 678×466 | 右侧,相机位于标签下方 | 669×951 |
| 180° | 678×466,保留前一横向场景 | 右侧 | 951×669 |
| 270° | 678×466 | 左侧,相机位于导航上方 | 669×951 |
Closed 180° 是记录的顺时针序列实际结果,不能证明支持倒置纵向,也不能保证其它旋转历史相同。展开遮罩的正负旋转用于表示对称轮廓,不增加硬件测量结论。
单/多标签页开关
多标签页栏开关仅在展开 Safari 下可用。开启表示多个标签,并添加额外标签栏;关闭表示单标签,移除该栏并扩大真实页面视口。沉浸模式没有浏览器外壳,折叠模式有独立侧边组件。
| 展开场景 | 多标签初始 | 单标签初始 | 两者滚动后 |
|---|---|---|---|
| 951×669 | 951×543 | 951×589 | 951×618 |
| 669×951 | 669×825 | 669×871 | 669×900 |
额外标签栏占 46 场景点;初始顶部预留为多标签 126、单标签 80,紧凑为 51。真实单标签 Safari 报告顶部 safe area 初始 2、紧凑 31,底部 34;这些只保留为参考,不注入桌面 CSS。
所有标签标题使用统一 14 点 medium 场景字体,按文字行测量居中并截断长标题。Windows 使用统一 pixel-unit 字体及居中对齐。通用占位标签避免复制私有浏览标题。数量/宽度来自相应参考的实际标签数量,并非某个机身角度的通用规则;这是外壳示意,不是完整标签管理器。
复现和验证
按标定流程在每次采集前设置并验证折叠/机身角度。单标签场景使用已加载页面和唯一 captureSession,不能因打开 URL 又新增标签。原生明确 display 的图像、组件 JSON、浏览器记录与哈希共同建立对应关系。
拥有完整私有证据时,scripts/archive/2026-10-21/ 内的历史 extract_safari_scenes.py 可重新生成当前会话参考,verify_desktop_scenes.py 可检查既定 24 个桌面状态,verify_tab_strip.py 检查四个展开角度的完整标签和关闭按钮。这些是特定会话工具,不能自动验收任意新会话。维护中的 uv run --locked devduo-tools contact-sheet 接受显式图片对。接触表仅供评审,缩放、不同 scrollY、时钟和桌面字体栅格化不能成为像素一致证明。工具调用见开发工具链。
选中标签边界修正
选中 TabBarTab 的 AX 点击框排除了 32 点宽的 CloseTabBarItemButton。将点击框作为背景导致选中标签更窄。提取器独立保留 hit frame,并取完整、32 点高的 TabBarItemTitleContainer 作为 visualFrame,验证关闭按钮并集。机身 0° 宽度由 194.67 修正为 226.67;其余三个选中宽度为 124.33、150、100。
渲染器绘制连续灰色轨道、分隔线、完整白色选中表面、关闭符号和通用 favicon。原始重叠 AX 框保留,绘制/文本区域在下一完整标签起点处裁剪。文字统一字号和垂直居中,颜色、软描边及系统玻璃仍为近似。
限制
macOS 折叠通过公开 inset 让普通流延伸到地址栏下,水平组件带仍使用文档根背景色近似。展开使用较小原生内容框;NSGlassEffectView 不等于 iOS 私有光学内核。状态图标/标签内容是示意。Windows 共享几何和矢量/GDI 绘制,但原生运行及 zoom Fit 尚待验证。所有屏幕/曲线来自模拟器,毫米和真实硬件半径未知。