# DSH 嵌入右侧栏边界修复

## 原因与范围

Arkme 将原生 DSH iframe 保持为整个浏览器大小，以便任务菜单越过对话区域显示；实际对话通过 AppFrame 定位和 iframe clip-path 限定在第三栏。

原生右侧栏在 AppFrame 宽度小于 768px 时切到 `position: fixed; inset: 0; width: 100%` 的全屏模式，其定位仍相对于整个 iframe。1100px 窗口中第三栏从 x=344 开始、宽 756px，原生面板却从 x=0 开始、宽 1100px。文件列表因此被外层裁掉，造成空白、会话消失的观感；会话实际没有卸载。

本次只在嵌入适配器内限制原生 fullscreen 面板的边界：横向与第三栏一致，纵向位于当前任务标题下方。标题变化通过尺寸观察同步，不写死高度。宽屏 push 并排布局不变，不替换上游面板、消息、输入框或状态存储。

## 验证

- 类型检查、构建及本地打包通过。
- 9 个相关测试文件，78 项通过，覆盖嵌入区域、原生任务下拉、标题、菜单、拖拽与前一轮添加菜单。
- 独立 Web 预览 3098 安装包与本地 client.js SHA256 一致：`96f62c9b5c8920c554cca275608701cf5ed9c44cee389fdd5289754c36227397`。
- Chromium 浏览器验证：1440px 为并排面板；1100、900、720px 为第三栏内展开。标题与文件列表可见，开关后保持同一会话、输入组件和任务标题，无页面异常。
- 面板打开期间，1440 → 1100 → 720 → 420 → 1440 缩放通过，任务下拉仍能打开。
- 经用户确认继续修复后，420、500、575px 均通过：顶部名称、任务选择及工具按钮不越界，侧栏完整约束在第三栏且可关闭。打开按钮不再触发外层横向滚动；标题与会话输入组件保持原位和身份。
- 420px 和 1440px 的原生「更多操作」菜单均可打开、位于窗口边界内，Escape 可关闭。所有宽度无 pageerror。
- 已人工检查 1440、1100、720、420px 截图。未发送消息、创建会话、执行文件操作或调用通话。

## 极窄窗口补充修复（已确认并完成）

420px 窗口下第三栏仅 236px。打开面板前 header.scrollWidth 为 276px，外层会话容器 scrollWidth 为 501px；点击右侧按钮后该容器 scrollLeft 变为 144px，导致顶部标题离开可见区域。此问题与 fullscreen 面板坐标越界不同。

用户确认后，仅在标题内容区域宽度不超过 360px 时将工具按钮另排一行；上方保留对话名与当前任务。使用标题自身的容器查询而非窗口媒体查询，适配左侧目录和侧栏对实际宽度的影响。原生 React 节点和事件绑定不移动、不重建，常规桌面布局不变。

420px 复测中标题保持 x=184，外层 scrollLeft=0；标题高度由 73px 自适应为 109px，侧栏自动从 y=109 开始，不遮盖工具栏。放大回 1440px 后恢复 73px 单行布局。

补充修复预览包：`senguoyun-dsh-arkme-0.1.70-narrow-header-20260921-0204.tgz`。本地与已安装 `harness-session-client.js` SHA256 一致：`0283b1954813f74e199d47c7552bc7a49f04520e03f96a0da96e29502727231e`。

## 交付边界

仅更新独立 3098 预览；未修改已安装的 Arkme 客户端、未发布 npm。Git 提交推送单独执行，不代表已合并或发布。上一轮添加菜单修复保留。旧版安装包和预览回滚包保留。

提交前补充回归：12 个相关测试文件、95 项通过，包含对话/联系人工具栏尺寸和添加菜单 portal；`git diff --check` 通过。

浏览器脚本与截图位于本机 `.codex-artifacts/web-preview-3098/`：`check-dsh-rightbar.mjs`、`dsh-rightbar-fixed-{width}.png`。
