Skip to content

fix(sidebar): 搜索钉住白条上下等距,不再贴住输入框上沿(建议稿) - #3829

Open
sakiko-toyokawa wants to merge 1 commit into
makecindy:mainfrom
sakiko-toyokawa:pr/sidebar-search-spacing
Open

fix(sidebar): 搜索钉住白条上下等距,不再贴住输入框上沿(建议稿)#3829
sakiko-toyokawa wants to merge 1 commit into
makecindy:mainfrom
sakiko-toyokawa:pr/sidebar-search-spacing

Conversation

@sakiko-toyokawa

@sakiko-toyokawa sakiko-toyokawa commented Sep 3, 2026

Copy link
Copy Markdown

这次改了什么

摘要

展开侧栏搜索有查询时,搜索行会 sticky 钉住并衬一条 --cmd-palette-bg 白底(供结果列表从下方滚过时遮挡)。但这条白底只有 pb-2.5(下方 10px 内边距)、顶部 0 内边距——白条顶边直接贴住搜索框上沿,上下距离不对称(用户反馈:「白框上面是贴着的,距离不一样」)。

本 PR 建议钉住态白底上下等距:补 pt-[4px] 的同时把负 margin 等量加深为 -mt-[10px] 抵消,搜索框视觉位置不变、打字不跳位;白条上扩后仅遮住上一行底部约 2px(位于行内文字/图标之下,肉眼不可感)。

数值依据(已按 #3833 review 意见更新):初稿曾按用户即时反馈取 5px(不在 spacing scale 上);现对齐 DESIGN.md §5 Spacing System 的 scale,采用 4px(scale 相邻档 4/6px 中取更贴近原视觉比例的 4px,负 margin 同步重算,输入框位置与滚动段间距不变)。实现结构与 token 用法不变。

变更类型

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

范围

  • 关联 Issue / 需求:维护者确认:PR #3829 侧栏搜索钉住白条上下间距 #3833(维护者确认讨论)
  • 本 PR 包含:
    • SidebarTopNav.tsx:搜索钉住态白底条上下等距(新 PINNED_SEARCH_CLASS 常量)
    • machineSwitcherMenu.test.ts:同步该段样式的源码契约断言(改为钉常量定义 + 行尾归一化)
  • 明确不包含:搜索交互/行为变更、popover 形态(rail 搜索弹窗)变更、设计 token 调整、localDb 测试夹具修复(已按 review 意见拆出为独立 PR)
  • 用户可见变化:搜索时搜索框上方出现 4px 白底留白(原为 0,直接贴住),搜索框位置与其它行为不变
  • 是否存在 breaking change:无

UI 变化

  • 引用的设计规范:docs/design-rules/DESIGN.md §5 Spacing System——4px 为 scale 内档位;白底条沿用 --cmd-palette-bg 语义 token,无硬编码颜色,Light/Dark 双模式均由 token 生效(两种模式均已实机目检,见下)。

几何实测(Windows dev 沙箱,CDP 取 getBoundingClientRect,Light/Dark 各一次):

修复前:白底条顶=186(=搜索框顶,0 间距),底=228(框底+10px)
修复后:白底条顶=182(框顶-4px),底=222(框底+4px),搜索框位置不变
Dark:白底条背景 rgba(21,21,21,0.8)(= --cmd-palette-bg 深色值),几何一致

上一行覆盖取舍(#3833 第 2 点)

白底条上扩 4px 后,相对上一行(自动化/插件等导航行,行高 32px)底部覆盖约 2px:

  • 覆盖区域位于行内文字/图标的字形框之下(文字垂直居中,字形框下缘距行底 ≥8px)
  • 白底色(--cmd-palette-bg)与侧栏底色同族,仅 alpha 0.9 遮罩,hover 胶囊底边 2px 被近色覆盖,实机(Light/Dark、上一行 hover)目检无可感差异
  • 替代方案(不覆盖上一行)需要输入框下跳 4px 或打破行距 rhythm,得不偿失

怎么验证的

自动验证

pnpm test:unit:related
结果:desktop related 218 文件 / 5454 用例全 PASS(含本 PR 契约测试 machineSwitcherMenu.test.ts 36 用例);另有一次 runner 汇总中 codexMicroGuardCore.test.ts 出现 EPERM symlink 抖动(Windows Temp 建链权限,与本次改动无关、文件无改动,CI Linux 不受影响)

pnpm --filter desktop typecheck
结果:通过

pnpm exec vitest run src/renderer/__tests__/machineSwitcherMenu.test.ts
结果:36 passed

手工验证

  • 平台:Windows dev 沙箱,展开侧栏 → 搜索行输入查询 → 钉住态目检
  • Light 模式:白条上下各 4px 对称、输入框不跳位、上一行无可感遮挡 ✅
  • Dark 模式:同几何,白底条呈深色遮罩,上一行可读性无影响 ✅
  • 上一行 hover、清空查询收起、滚动边界:无跳位、无残留背景 ✅

未执行的验证

  • origin/main 基点上的全量单测未在本地重跑(worktree 未装依赖);2 个改动文件在原基点与 main 间内容一致(cherry-pick 与 copy 均无漂移),CI 会跑完整 pnpm test:unit 兜底。

风险

风险分类

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

影响与回滚

  • 影响范围:Desktop 展开侧栏搜索钉住态的视觉间距(4px 级别)。
  • 回滚 / 降级方式:revert 单提交即可,无数据/协议影响。

提交前检查

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

@sakiko-toyokawa
sakiko-toyokawa marked this pull request as ready for review September 3, 2026 03:09
@sakiko-toyokawa
sakiko-toyokawa requested a review from a team as a code owner September 3, 2026 03:09
@greptile-apps

greptile-apps Bot commented Sep 3, 2026

Copy link
Copy Markdown

Greptile Summary

本 PR 调整展开侧栏搜索框的吸顶背景间距,并同步相关源码契约测试;同时修复三个 localDb 测试夹具与当前 sessions schema 不一致的问题。

  • 将吸顶搜索背景改为上下各 5px,并通过负上边距保持输入框视觉位置
  • 将吸顶样式提取为 PINNED_SEARCH_CLASS
  • 为三个手工创建的 sessions 测试表补充 writable_dirs

Confidence Score: 5/5

未发现需要阻止合并的具体问题,本 PR 看起来可以安全合并。

搜索吸顶样式变更与描述中的实机几何验证一致,三个数据库改动也仅使测试夹具与当前正式 schema 保持同步。

Important Files Changed

Filename Overview
apps/desktop/src/renderer/components/sidebar/SidebarTopNav.tsx 提取并调整搜索吸顶样式,使背景上下留白对称,同时维持搜索框原有视觉位置。
apps/desktop/src/renderer/tests/machineSwitcherMenu.test.ts 更新源码契约断言,以验证新的吸顶样式常量及其条件应用。
apps/desktop/src/main/localDb/tests/orcaTeamStore.test.ts 为当前 schema 测试夹具补充缺失的 writable_dirs 列。
apps/desktop/src/main/localDb/ipc/tests/sessionAutoTitlePersist.test.ts 为会话自动标题测试的手工数据库 schema 补充 writable_dirs
apps/desktop/src/main/localDb/ipc/tests/sessionsRestoreIfArchived.test.ts 为归档会话恢复测试的手工数据库 schema 补充 writable_dirs

Reviews (1): Last reviewed commit: "fix(sidebar): 搜索钉住白条上下等距,不再贴住输入框上沿" | Re-trigger Greptile

@MagicLizi MagicLizi added touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) awaiting-discussion 等待维护者讨论(review-pr) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 3, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

这条 PR 调整了侧栏搜索钉住时白底条的上下间距,属于用户看得见的外观变化,需要维护者确认后再合。请维护者直接在本 PR 上 Approve;若要修改请 Request Changes,作者改完后再 Approve 即放行。讨论 issue:#3833

展开侧栏搜索有查询时,搜索行 sticky 钉住并衬 --cmd-palette-bg 白底,
但白底条只有 pb-2.5、顶部 0 内边距 —— 白条顶边直接贴住搜索框上沿,
与下方 10px 不对称(用户反馈「白框上面是贴着的,距离不一样」)。

按 review 意见对齐 DESIGN.md §5 spacing scale:钉住态改为上下各 4px
内边距,同时负 margin 等量加深(-mt-[10px])抵消 pt,输入框视觉位置
不变、打字不跳位;白条上扩后仅遮住上一行底部约 2px(行内文字之下,
且白底近侧栏底色,肉眼不可感)。

machineSwitcherMenu.test.ts 的 SidebarTopNav 源码契约同步改为钉
PINNED_SEARCH_CLASS 常量定义,并做行尾归一化(Windows CRLF checkout)。

Signed-off-by: sakiko-toyokawa <203236246+sakiko-toyokawa@users.noreply.github.com>
@sakiko-toyokawa

Copy link
Copy Markdown
Author

已按 #3833 的分析意见更新(force-push e3ef2fd):

  1. 间距对齐 spacing scale:5px → 4px(DESIGN.md §5 scale 内档位),负 margin 同步重算为 -mt-[10px],输入框位置与滚动段间距不变;上一行覆盖从约 3px 降到约 2px。
  2. 上一行覆盖取舍:已在 PR 正文补充论证(字形框之下 + 近色遮罩 + Light/Dark 实机 hover 目检无可感差异)。
  3. 双模式实机目检:Light 与 Dark 均已在 Windows dev 沙箱目检通过(Dark 下白底条呈 rgba(21,21,21,0.8) 深色遮罩,几何一致)。
  4. localDb 夹具修复已拆出为独立 PR:test(desktop): 补齐 localDb 夹具缺失的 sessions.writable_dirs 列 #3842
  5. 契约测试继续钉住最终 padding/margin 组合,并做了行尾归一化(Windows CRLF checkout 下不断言)。

MagicLizi pushed a commit that referenced this pull request Sep 3, 2026
#3587 给 sessions schema 新增 writable_dirs 列后,drizzle 的全列查询
会让三个手工 CREATE TABLE 的测试(orcaTeamStore / sessionAutoTitlePersist /
sessionsRestoreIfArchived)报 no such column。按兄弟夹具
sessionsUpdate.test.ts 已有写法补上该列,恢复 related 门禁。

从 PR #3829 拆出:与侧栏 UI 建议稿正交,独立放行。

Signed-off-by: sakiko-toyokawa <203236246+sakiko-toyokawa@users.noreply.github.com>
Co-authored-by: sakiko-toyokawa <203236246+sakiko-toyokawa@users.noreply.github.com>
@sakiko-toyokawa

Copy link
Copy Markdown
Author

@MagicLizi 能否帮忙对这次 client-ci 重跑一次 failed jobs?本 PR 的改动本身不是失败原因——这次只改了 SidebarTopNav.tsx + machineSwitcherMenu.test.ts(搜索钉住白条间距),而失败分片里挂掉的都是与改动无关、对时序敏感的 main 进程用例:

  1. Linux (2/2)reviewer/__tests__/reviewOwnerLiveness.test.ts — close 掉临时 TCP 端点后探测仍返回 'unknown'(端口释放时序竞争导致探测超时,见 reviewOwnerLiveness.ts 的 socket timeout 分支)。
  2. Windows (1/2)__tests__/windowsPackagedInstanceBarrier.test.ts — 真实拉起子进程探互斥锁,probe 阶段超时(约 7.6s)。

这两个测试模块在 PR base 与当前 main 之间没有任何改动,同一次 run 里其余 1.5 万+ 用例均通过,DCO / verify-checks / check:pr-design-basis / Desktop Git integration 也是绿的。我在 fork 侧没有目标仓库 admin 权限、无法自行触发重跑,麻烦 Lizi 帮忙 re-run 确认一次,谢谢 🙏

@MagicLizi

Copy link
Copy Markdown
Contributor

命中 UI 路径(apps/desktop/src/renderer/components/sidebar/SidebarTopNav.tsx)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范

@sakiko-toyokawa

Copy link
Copy Markdown
Author
image

@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 5, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

@sakiko-toyokawa 👋 这个 PR 现在在等维护者确认,确认之前流程不会合并它 —— 不是卡住了,也不是在等你再改一版(你推的改动流程都读到了,判的就是最新一版代码)。

  • 在拦的是:维护者确认门(产品 / UI 变更)。
  • 讨论 issue:维护者确认:PR #3829 侧栏搜索钉住白条上下间距 #3833
  • 通过方式只有一个:维护者在本 PR 上 Approve。维护者觉得要改会直接 Request Changes,那时候球才回到你手里。
  • 这期间如果还有 review 意见没处理完、CI 没过,照常修就行,不影响这条等待。

这条是流程自动发的状态提醒(同一版代码只发一次),不用回复。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-discussion 等待维护者讨论(review-pr) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants