Skip to content

feat(web): open the model picker with a configurable shortcut - #470

Merged
Qiyuanqiii merged 4 commits into
mainfrom
Qiyuanqiii/model-picker-shortcut
Oct 27, 2026
Merged

Qiyuanqiii merged 4 commits into
mainfrom
Qiyuanqiii/model-picker-shortcut

Conversation

@Qiyuanqiii

Copy link
Copy Markdown
Member

聊天输入框支持 Ctrl/⌘+Shift+M 直接打开模型列表,无需先进入模型设置子菜单。打开列表保留草稿,不自动切换模型;原有不可用模型、键盘导航和 Esc 焦点恢复继续生效。

设置里的“打开模型选择器”可以改键、清除或恢复默认。新默认键不会占用已有自定义绑定;输入法组合、快捷键录制、弹窗、其他菜单、代码编辑器和终端继续接收自己的按键。当前页面无模型控件或没有模型控制权限时不拦截快捷键。

基于 #457,保持未合并,按依赖顺序审阅。

验证:35 项聚焦组件测试和生产构建通过;Windows Chrome 用同一真实 Go API、SQLite、聊天与草稿完成原版/新版对照、改键/恢复、纯文本和 Markdown 输入验证。390px 模型菜单宽342px且位于视口内。Meta仅组件事件验证;基线聊天滚动区域已有的横向溢出由独立 #441 处理,本 PR 不改该样式。

变更前

按键没有打开模型菜单

变更后

直接打开模型列表并保留草稿

真实改键、窄屏截图与完整验证范围

@Qiyuanqiii
Qiyuanqiii merged commit be823f4 into main Oct 27, 2026
13 checks passed
@Qiyuanqiii
Qiyuanqiii deleted the Qiyuanqiii/model-picker-shortcut branch October 27, 2026 18:16
Qiyuanqiii pushed a commit that referenced this pull request Oct 28, 2026
Model switching became a first-class mid-thread action (#470), but the
transcript never says which model produced which reply. Thread the model
identity (provider / model, already recorded on model-call events) through
the activity projection, the thread transcript, and the HTTP view as an
additive omitempty field, then join it per attempt in the web narrative
projection and show it as muted attribution on durable replies.

No behavior change beyond the new read-only field and badge; live streaming
entries stay unattributed until their call record is durable.
Qiyuanqiii pushed a commit that referenced this pull request Oct 28, 2026
Model switching became a first-class mid-thread action (#470), but the
transcript never says which model produced which reply. Thread the model
identity (provider / model, already recorded on model-call events) through
the activity projection, the thread transcript, and the HTTP view as an
additive omitempty field, then join it per attempt in the web narrative
projection and show it as muted attribution on durable replies.

No behavior change beyond the new read-only field and badge; live streaming
entries stay unattributed until their call record is durable.
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