Skip to content

会话页 PR-3 + PR-6:单行工具胶囊、菜单分组、紧凑宽度会话抽屉 - #9

Merged
tall-1997 merged 4 commits into
mainfrom
feature/chat-pill-menu-drawer
Oct 13, 2026
Merged

tall-1997 merged 4 commits into
mainfrom
feature/chat-pill-menu-drawer

Conversation

@tall-1997

Copy link
Copy Markdown
Owner

做了什么

PR-3(P0-4 / P0-5)

  • 输入框上方的悬浮工具条从「38dp 全宽横条 + 100×65 预览缩略图 + 左右翻页」改成一行胶囊(状态图标 + 工具名 + 耗时 + 停止),点按仍打开同一个工具详情页。
  • 胶囊只钉当前这一轮的最新一个工具,只在回复生成期间出现;折叠开启时不出现(步骤已经在消息列表里)。
  • 挂载条件和底部留白改走同一个判定(floatingOverlayBlocks),回复结束立刻收回留白——之前回复结束后列表底部会留着 79dp 空白。
  • 外观设置里失效的「工具预览窗口」开关移除(缩略图没了,开关不再控制任何东西)。
  • 子代理条的工具 chip 补齐常用工具名(grep、抓取网页、记忆、子代理),不再直接显示原始工具名。

PR-6(P0-6 / P1-6)

  • 会话顶栏「…」菜单按 快捷 / 会话 / 工具 / 设置 四段分组。
  • 窗口宽度 ≥600dp 时,终端、浏览器、对话文件三个高频入口提升为顶栏直接图标;窄屏仍在菜单的「快捷」段里。
  • 手机宽度新增会话抽屉:顶栏左侧按钮或屏幕边缘滑动打开,直接切换会话,不用再退回整页会话列表。抽屉、双栏侧栏、整页列表是同一个列表组件、走同一条切换路径。

测试

  • 新增 ToolActivityPillTest(7 个):胶囊投影(折叠开关、子代理卡排除、批量子卡按父 id 匹配)与耗时格式化。
  • 本机沙箱无 JDK,编译与全量单测交由 CI(pr-check)验证。

未做

  • P1-4 锚点菜单、P1-5 消息操作常驻、PR-4(持久化/动画/主题化)、PR-5(拆文件)按计划留待后续。

tall-1997 and others added 4 commits October 13, 2026 23:09
…ompact session drawer

PR-3 (P0-4, P0-5): the floating tool overlay above the composer becomes one
quiet capsule — status icon, tool title, elapsed, stop — instead of the
38dp full-width bar with its 100x65 preview thumbnail and chevron paging.
The pill pins the latest tool of the streaming turn only, and the mount
gate and the data pipeline now share one projection (floatingOverlayBlocks)
that also honours the show-floating-bar pref and the streaming state, so
the bottom reserve collapses to 20dp the moment the turn ends instead of
keeping a 79dp dead gap. Fold-on mode stays single-channel (no pill at all).
The now-inert "Tool Preview Window" appearance switch is removed; the
sub-agent chip's tool titles cover the common tools (grep, web_fetch,
memory, sub-agents) so they no longer fall through as raw tool names.

PR-6 (P0-6, P1-6): the chat "..." menu is grouped under section headers
(quick / session / tools / settings) and the three high-frequency entries
(terminal, browser, chat files) promote to direct top-bar icons from 600dp
up, staying in the menu's quick section below that. Compact width gains a
modal session drawer owned by ChatSplitScaffold: edge-swipe or the nav-slot
button opens the same SessionListScreen the two-pane sidebar uses, so chat
switching goes through the pane navigator in all three presentations and no
longer requires popping back to the full list screen.
…Class package, positional args on function-type call

- ChatScreen.kt: add the MinisMenuSectionHeader import (4 call sites
  referenced it with only MinisMenu/MinisMenuDivider imported).
- ChatScreenHelpers.kt: WindowSizeClass lives in
  androidx.window.core.layout, not androidx.compose.material3.adaptive
  (matches the import ChatSplitScaffold already uses).
- ChatSplitScaffold.kt: the listPane slot is a function TYPE; named
  arguments are prohibited on its call sites. Pass `embedded`
  positionally (true in the drawer, false in the pane/sidebar).
…r through the detailPane slot

- ChatAssistantMessageUI.kt: TextOverflow was imported twice (lines 25 and
  92) — ambiguous import error.
- ChatSplitScaffold.kt: openSessionDrawer is a LOCAL of
  ChatSplitScaffold, but the Route-level detailPane lambda referenced it
  (unresolved). Add onOpenSessionDrawer as the 7th parameter of the
  detailPane function TYPE; the scaffold passes
  `if (twoPane) null else openSessionDrawer` at its internal call site,
  and the Route lambda forwards it to ChatScreen unchanged.
@tall-1997
tall-1997 merged commit 37c31c5 into main Oct 13, 2026
1 check passed
@tall-1997
tall-1997 deleted the feature/chat-pill-menu-drawer branch October 16, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant