@qilin-agent/client-ui-conversation 3.1.6 → 3.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.i18n.yaml CHANGED
@@ -18,8 +18,8 @@
18
18
  en: d8ce61119083b24f
19
19
  zh: cc48467a09417108
20
20
  /qilin-agent-client-ui-conversation/shell-and-standard-props:
21
- en: 35d9937809b1a50c
22
- zh: 26beb8575dd96d3f
21
+ en: f689d239a47cd93b
22
+ zh: b80f9e6f0e8f8ec6
23
23
  /qilin-agent-client-ui-conversation/temporary-composer-entries:
24
24
  en: f8c9adabf654cc14
25
25
  zh: 67790ddec09a3421
package/README.md CHANGED
@@ -60,6 +60,8 @@ The resident `conversation.header` entry keeps the root-scoped `conversation.hea
60
60
 
61
61
  View selection is deterministic: a registered persisted selection wins, otherwise registered `chat` wins, otherwise no View renders. It never chooses the first registered View. The roster hides the `trajectory` View while `ctx.configForms.developerTools` is off, and follows that preference so the tab returns when Developer tools are turned back on. Shell phase combines Session lifecycle with the active-target set; no target-specific snapshot is read by the shell.
62
62
 
63
+ While the root-scoped `conversation.session.header.views.actions` list has registrations, a **More conversation views** button follows the View tabs. It opens a menu of that list's registrations; each receives `entries` (Views outside the header with `id`, `label`, `pinned`, and `active`; Chat is never listed), `onOpen(id)`, `onPinnedChange(id, pinned)`, and `onDismiss()`. The header keeps one in-memory unpinned list for every Session, puts registered Chat first, and keeps the bar and More visible while every other View is unpinned; plugin reload resets the choices and legacy saved values are ignored. The header budgets the row width (48px for More and padding, 120px per tab) and observes the row with one ResizeObserver, falling back to the initial width when none exists; long labels truncate with a full-name tooltip, and the launcher highlights and names a folded active View.
64
+
63
65
  The shell reads the persisted View preference before rendering when a Session first binds or a cached Session becomes current, activates the registered preferred View or Chat fallback, and activates later tab or focus selections before committing them to the store. A blank Session still omits the `conversation.view` slot; no unselected target is activated.
64
66
 
65
67
  Active transcripts in the main occurrence expose content-width drag handles in their uncovered side gutters; embedded occurrences omit them. A View that paints into a gutter raises only its concrete painted element above the handle; transparent full-width wrappers stay below so they do not claim empty gutter. This requires the path between that element and the Conversation body to remain outside an intermediate stacking context; the shipped Chromium behavior is pinned by the browser scenario. Chat applies the rule to table elements, while its column-bounded tool cards need no raise. Wheel motion over a handle still scrolls the transcript, while Ctrl+wheel remains a browser zoom gesture. The sticky composer intentionally owns its full footer band, which is not a resize target; an already-captured drag lifts its indicator until release ([decision](../../../.agents/notes/implemented/bug-fix/2026-09-14-transcript-width-handle-layering.md)).
package/README.zh.md CHANGED
@@ -60,6 +60,8 @@ target package 通过 declaration merge 扩展 snapshot 与 Location data map,
60
60
 
61
61
  View 选择规则固定:有效且已注册的持久化选择优先,其次是已注册的 `chat`,否则不渲染 View;绝不选择第一个已注册 View。`ctx.configForms.developerTools` 关闭时,roster 隐藏 `trajectory` View,并跟随该偏好,在开发者工具重新打开时让标签页回来。Shell phase 只组合 Session lifecycle 与 active-target set,不读取任何 target-specific 快照。
62
62
 
63
+ root 作用域的 `conversation.session.header.views.actions` list 有注册项时,View 标签之后出现**更多会话视图**按钮。它打开的菜单以该 list 的注册项为行;每个注册项接收 `entries`(头部之外的 View,含 `id`、`label`、`pinned` 与 `active`;不含 Chat)、`onOpen(id)`、`onPinnedChange(id, pinned)` 与 `onDismiss()`。头部为所有 Session 保存同一份内存已收起列表,把已注册的 Chat 放在首位,并在其余 View 全部收起时仍保留标签栏与更多按钮;插件重载重置选择,不读取旧存储值。头部按行宽预算分配(更多按钮与内边距 48px,每标签 120px),用一个 ResizeObserver 观察标签行;环境没有该观察器时按初始宽度计算。长标题截断并附全名提示;当前 View 被折叠时启动按钮高亮并在提示中显示其名称。
64
+
63
65
  Session 首次绑定或缓存的 Session 成为 current 时,shell 会在渲染前读取持久化 View 偏好,激活已注册的偏好 View 或 Chat fallback,并在后续 tab 或 focus 选择写入 store 前先激活对应 target。blank Session 仍不渲染 `conversation.view` slot;未选中的 target 不会激活。
64
66
 
65
67
  主 occurrence 的活跃 transcript 只在未被内容覆盖的两侧沟槽中提供正文宽度拖拽条;嵌入式 occurrence 省略这些拖拽条。View 如果绘制进沟槽,只将具体的可见元素提到拖拽条上方;透明的全宽包装层保持在下方,不会占用空白沟槽。该规则要求此元素与 Conversation body 之间不能引入中间堆叠上下文;浏览器场景固定了交付 Chromium 的行为。Chat 将该规则用于表格元素,其限定在阅读列内的工具卡片无需提高层级。指针位于拖拽条上时,滚轮仍会滚动 transcript,Ctrl+滚轮则保留为浏览器缩放手势。粘滞 composer 刻意拥有完整的底部区带,该区域不是宽度调整目标;已捕获的拖拽会将指示线提高到松开为止([决策](../../../.agents/notes/implemented/bug-fix/2026-09-14-transcript-width-handle-layering.zh.md))。