Skip to content

test(desktop): cover new-session model selection regression - #4014

Merged
MagicLizi merged 1 commit into
makecindy:mainfrom
MsNBBc3R:fix/issue-4003-new-session-model-switch
Sep 20, 2026
Merged

MagicLizi merged 1 commit into
makecindy:mainfrom
MsNBBc3R:fix/issue-4003-new-session-model-switch

Conversation

@MsNBBc3R

@MsNBBc3R MsNBBc3R commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

为新建对话时选择模型的路由增加回归测试,锁定草稿态应走 handleUnifiedDraftSelect,避免误用已建会话的 maker.setModel 和上下文窗口切换守卫。

变更类型

  • feat 新功能
  • fix 缺陷修复
  • refactor / perf 重构或性能优化
  • docs / test / chore 文档、测试或工程维护
  • 其他:

范围

UI 变化

不涉及 UI 变化,无需截图或录屏。

  • 引用的设计规范:不涉及:仅新增模型选择路由的回归测试,未修改任何生产 UI、交互或文案。

怎么验证的

自动验证

corepack pnpm --filter desktop exec vitest run src/renderer/__tests__/chatInputModelSelectorRouting.test.ts
结果:通过,1 个测试文件、27 个测试通过。

corepack pnpm test:unit:related
结果:通过,apps/desktop 相关单元测试门禁通过。

corepack pnpm --filter desktop run --if-present typecheck
结果:通过。

node scripts/check-pr-design-basis.mjs --body <PR body> --files <changed files>
结果:通过。

手工验证

不涉及:本 PR 只增加源码契约回归测试,不修改运行时行为。

未执行的验证

未执行 Electron 实机验证;本 PR 不修改生产代码或 UI。

风险

风险分类

  • 无已知风险
  • SQLite / migration
  • system prompt
  • 协议兼容
  • 权限 / 安全 / 用户数据
  • 存量插件兼容(批准状态 / 指纹 / manifest 校验 / 安装布局 / 包格式)
  • 原生层 / fingerprint / OTA
  • 跨平台差异
  • 其他:

影响与回滚

  • 影响范围:仅 Desktop Renderer 的回归测试。
  • 回滚 / 降级方式:回滚本测试提交;无运行时影响。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s,见 DCO
  • UI 改动已在「UI 变化」注明引用的设计规范章节(不涉及 UI 则跳过)
  • 未提交凭证、令牌或授权文件
  • 已补充必要文档
  • 已确认测试结果或说明未执行原因

@MsNBBc3R
MsNBBc3R requested a review from a team as a code owner September 6, 2026 14:37
@greptile-apps

greptile-apps Bot commented Sep 6, 2026

Copy link
Copy Markdown

Greptile Summary

This PR adds regression coverage for new-conversation model selection in the desktop renderer.

  • Confirms draft model selection routes through handleUnifiedDraftSelect.
  • Confirms the draft path does not invoke existing-session model mutation or context-window guards.
  • Changes tests only; production behavior is unaffected.

Confidence Score: 5/5

The PR appears safe to merge because it only adds focused regression coverage and introduces no actionable defects.

The added assertions align with the documented transient new-session draft flow and correctly distinguish it from existing-session model switching.

Important Files Changed

Filename Overview
apps/desktop/src/renderer/tests/chatInputModelSelectorRouting.test.ts Adds focused source-contract assertions that preserve draft-only model selection before a session exists.

Reviews (1): Last reviewed commit: "test(desktop): cover new-session model s..." | Re-trigger Greptile

@MagicLizi MagicLizi added the status:ci-running CI 还在跑(review-pr 自动维护,仅展示) label Sep 6, 2026
@MsNBBc3R
MsNBBc3R force-pushed the fix/issue-4003-new-session-model-switch branch from 39dbce1 to 3912b46 Compare September 6, 2026 15:49
@MagicLizi MagicLizi added status:ci-failed CI 失败(review-pr 自动维护,仅展示) status:ci-running CI 还在跑(review-pr 自动维护,仅展示) and removed status:ci-running CI 还在跑(review-pr 自动维护,仅展示) status:ci-failed CI 失败(review-pr 自动维护,仅展示) labels Sep 6, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

@MsNBBc3R 👋 这个 PR 已经有 6 天没有 rebase 了。

为了避免合入后出现 CI 未曾验证过的新问题,请在本地 rebase 最新的 origin/main 后重新推送。rebase 后 CI 会自动重跑,全部通过后 auto-review 会在下一轮继续处理。

@MsNBBc3R
MsNBBc3R force-pushed the fix/issue-4003-new-session-model-switch branch from 3912b46 to 5b2cf62 Compare September 20, 2026 18:12
Signed-off-by: MsNBBc3R <MsNBBc3R@users.noreply.github.com>
@MsNBBc3R
MsNBBc3R force-pushed the fix/issue-4003-new-session-model-switch branch from 5b2cf62 to 1fc0526 Compare September 20, 2026 18:14
@MagicLizi MagicLizi added status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) status:ci-running CI 还在跑(review-pr 自动维护,仅展示) and removed status:ci-failed CI 失败(review-pr 自动维护,仅展示) status:awaiting-bot-review 等外部审查机器人表态(review-pr 自动维护,仅展示) status:ci-running CI 还在跑(review-pr 自动维护,仅展示) labels Sep 20, 2026

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Findings

无 P0/P1。

Rule coverage

  • AGENTS.md:仓库边界、PR-first、DCO、提交前门禁。本 PR 只改 Desktop 测试,未跨仓、未改生产代码;HEAD commit 带与 author 一致的 Signed-off-by
  • docs/dev-rules/development-workflow.md:P0/P1 口径、验证真实性。diff 与 PR 描述一致(仅回归测试);未发现红线、崩溃、数据丢失、安全或明显 bug。
  • .github/PULL_REQUEST_TEMPLATE.md:light test 模板;摘要、范围、验证、风险齐全,且与单文件测试 diff 吻合。
  • docs/dev-rules/engineering-conventions.md Review 清单:新增测试为源码契约扫描,无外网、固定端口、共享临时路径或真实子进程;沿用文件既有 normalizeSourceText,不引入跨平台行尾问题;无 IPC/i18n/UI/日志改动。
  • docs/dev-rules/electron-security-and-process-boundaries.md Review 清单:未改 Renderer 特权、preload、IPC、CSP、窗口生命周期。
  • 对照生产接线:ChatInput.tsxhandleUnifiedDraftSelectsessionId || settingsLocked 时直接 return,经 onUnifiedDraftSelect 落草稿;ModelSelector.onUnifiedSelect 仅在 !sessionId && unifiedPanelActive && onUnifiedDraftSelect 时接到该 handler。新增断言与现码一致,且不把已建会话的 maker.setModel / confirmModelSwitchContextGuard 绑到草稿路径。
  • PR 描述吻合度:无夹带私货。无维护者讨论 issue,无需落实讨论要求。
  • 未适用:UI/DESIGN.md、pluginBase、冷更、凭证落盘、协议、数据库。

Verification

  • pnpm install --frozen-lockfile --prefer-offline --prod=false:EXIT=0(审查 worktree 无 node_modules,为跑测试安装)。
  • pnpm --filter desktop exec vitest run src/renderer/__tests__/chatInputModelSelectorRouting.test.ts:EXIT=0;1 file / 27 tests passed。日志:verify-pr-4014/vitest-routing.log
  • pnpm --filter desktop run --if-present typecheck:EXIT=0。日志:verify-pr-4014/typecheck.log
  • CI(context gate.ci.status=pass):全绿。
  • 未执行:pnpm test:unit:related 全量相关单测(定向文件已覆盖本 diff;CI 已绿);Electron 实机(无生产/UI 改动)。

Overall

pass — 没有 P0/P1。

@MagicLizi
MagicLizi merged commit 1dfe609 into makecindy:main Sep 20, 2026
10 checks passed
@MagicLizi

Copy link
Copy Markdown
Contributor

合了。新建对话选模型这条路以前很容易误接到已建会话的切换逻辑,现在测试把草稿直通钉死了——这种接线回归以后再踩会立刻响。

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.

2 participants