Skip to content

feat(sidebar): 伙伴筛选增加全部与都不显示 - #7826

Merged
MagicLizi merged 1 commit into
makecindy:mainfrom
zqchris:cindy/sincere-cohen
Oct 29, 2026
Merged

MagicLizi merged 1 commit into
makecindy:mainfrom
zqchris:cindy/sincere-cohen

Conversation

@zqchris

@zqchris zqchris commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

这次改了什么

摘要

伙伴筛选首项由「不限来源」改成「全部」,新增「都不显示」,方便只查看个人任务。仍可选择单个或多个伙伴查询其任务;桌面、iOS、Android 行为一致,包含五种语言文案。

变更类型

  • feat 新功能

范围

  • 关联 Issue / 需求:用户要求伙伴筛选提供「全部」「都不显示」并保留具体伙伴。
  • 本 PR 包含:菜单、筛选逻辑、账号隔离的偏好持久化、多语言、现有回归用例及设计规范同步。
  • 明确不包含:归档修复、伙伴生命周期、服务端、置顶条目筛选豁免变更。
  • 用户可见变化:选择「都不显示」后隐藏伙伴创建及例行/IM 任务,保留个人任务;切回具体伙伴或全部即可恢复查看。
  • 是否存在 breaking change:无;默认仍为全部,旧选择继续兼容。

UI 变化

  • 引用的设计规范:docs/design-rules/DESIGN.md §Desktop and Mobile task creator filters、§Select / Dropdown;复用现有菜单行、选中标记、语义主题与移动端原生菜单,不增加样式分支。
  • 截图来源:单页验证 pnpm ui:check --page teammate-task-filter --case default --theme all --locale all,macOS · Electron 42.11.12(Chromium 148.0.7778.280,与 Cindy 同一渲染内核);真实组件与主题,场景数据,不是登录账号下的完整 Cindy
  • 版本:d58c58d7d3c3(含未提交改动)
  • 结果:10/10 个场景通过
  • 页面 teammate-task-filter:light / dark · zh-CN / zh-TW / en / ja / ko · 840×640
    • default:Legacy choice migration → one Cindy across computers → unrestricted → single/multiple/reset; archived creator avatar
    • 未覆盖:Live cross-device transport and host database reads; task/roster snapshots are fixture data. Pinned exemptions remain in the full sidebar.
    • 场景替换的模块(未验证):src/renderer/features/bots/useRemoteBots、src/renderer/features/bots/botStore、src/renderer/features/device-link/useMachineSwitcher、src/renderer/features/cc-agent/hooks/useRemoteHostProjectOrders

单页验证截图 1/2
单页验证截图 2/2

截图与设备验收在提交前完成;随后同步主干,仅引入独立的远程桌面和置顶排序修复,本功能代码及截图场景未变。

怎么验证的

自动验证

  • Desktop:pnpm --filter desktop exec vitest run src/renderer/__tests__/useSidebarFilter.test.ts src/renderer/features/cc-agent/sidebar/__tests__/SidebarFilterPopover.test.tsx src/renderer/features/bots/__tests__/botFollowMark.test.tsx --maxWorkers=1:133 项通过,3.27 秒。
  • Desktop 消费者:pnpm --filter desktop exec vitest run src/renderer/__tests__/onlineDeviceHeaders.test.tsx src/renderer/__tests__/botGroupLampRendering.test.tsx --maxWorkers=1:73 项通过,5.79 秒。
  • Mobile:pnpm --filter mobile exec vitest run src/__tests__/homeChromeMenus.test.ts src/__tests__/homeViewPreferenceStore.test.ts src/__tests__/homeDisplaySettings.test.ts --maxWorkers=1:45 项通过,1.94 秒;共享条目保留调整后 homeDisplaySettings 23 项再次通过,1.72 秒。
  • pnpm --filter desktop run typecheck、pnpm --filter mobile run typecheck:通过。
  • pnpm check:i18n、pnpm check:i18n-glossary、git diff --check:通过。
  • 主干同步后再次运行 useSidebarFilter / SidebarFilterPopover 定向测试与 i18n 检查。

测试价值(均扩展已有文件,无新增测试文件;上述为批次总耗时,未另测各文件独立启动耗时):

文件 规则及覆盖缺口 / 最小失败输入 / tier
useSidebarFilter.test.ts none 偏好往返及切换;none + 伙伴 a 应成为 [a];unit
SidebarFilterPopover.test.tsx 新菜单入口接到真实回调,点「都不显示」应调用 setCreatorsNone;component
botFollowMark.test.tsx none 排除实际伙伴创建任务及名册缺失的 routine/channel,保留个人任务;unit/component
homeChromeMenus.test.ts none 菜单勾选及切回单伙伴,none + cindy 应成为 [cindy];unit
homeDisplaySettings.test.ts 混合个人/伙伴列表只留下个人,未知共享条目与置顶继续保留;unit
homeViewPreferenceStore.test.ts none 保存读取及跨账号隔离;unit
onlineDeviceHeaders.test.tsx / botGroupLampRendering.test.tsx 仅同步 filter fixture 接口,无新增用例;原消费者回归通过

手工验证

  • Desktop 单页真实组件:全部 7 条 → 都不显示仅个人 1 条 → 单/多伙伴 → 重置;本地/远程伙伴、例行及 IM 场景,10 个主题/语言组合通过。
  • iOS 模拟器:当前 worktree sincere-cohen / 分支 cindy/sincere-cohen 的 Metro 8081,深色中文,依次选择全部、都不显示、Cindy,菜单与摘要正确。sim-whoami 核实原生 fingerprint 匹配。
  • Android 模拟器 emulator-5554:旧包 fingerprint 不匹配后从当前 checkout 重建并安装 Debug APK(assembleDebug 成功);Baguette 核实 matchesLocal=true。浅色英文实际点选 Hide all、Cindy、All,重启后 Hide all 持久化正确。
  • 两端使用本 worktree 的 --mock 场景数据,开发 build label 为 cindy/sincere-cohen@d58c58d7d+24b72046b0;非生产账号。验收后模拟器和本任务 Metro 已退出。

未执行的验证

整仓完整单测交 CI。未验证 Windows、实体手机及真实跨设备传输;本次不修改这些链路。手机未穷举五语言/双主题,桌面单页已覆盖全部组合。

风险

风险分类

  • 其他:本地伙伴筛选偏好新增 none 值。

影响与回滚

  • 影响范围:任务列表内容筛选;置顶保持原有豁免。无数据库 migration、协议、原生配置或运行时权限变更;存量插件影响:无。
  • 回滚 / 降级方式:回退本提交;旧版遇到 none 值自动回到全部,不丢任务或伙伴数据。

提交前检查

  • 已 review 完整 diff
  • 每个 commit 都带 DCO 签名(git commit -s)
  • UI 改动已注明引用设计规范
  • 未提交凭证、令牌或授权文件
  • 已同步受影响的设计文档
  • 已确认测试结果并说明未执行项

Signed-off-by: Chris <4436110+zqchris@users.noreply.github.com>
@zqchris
zqchris requested a review from a team as a code owner October 29, 2026 08:02
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review 🔄 Running since 2026-10-29T08:24:53.633653Z d8d6e5c Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] 本次修改看起来可以合并,未发现需要修复的问题。

Summary

本次修改为桌面和手机的伙伴筛选增加「都不显示」,并将「不限来源」改为「全部」。

  • Desktop sidebar filters can hide teammate tasks while keeping personal tasks visible.
  • Mobile home filters can hide teammate tasks while keeping personal tasks visible.

Reviews (1) · Last reviewed commit: "feat(sidebar): add hide-all teammate tas..." · Reviewed by Greptile

@zqchris

zqchris commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@xd-bobo xd-bobo left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Approved by compliance check: CI passed and no blocking reviews.

@MagicLizi MagicLizi added status:needs-human 需要人工处理(必需检查门 / 要手动批 CI,review-pr 自动维护,仅展示) touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示) labels Oct 29, 2026
@MagicLizi

Copy link
Copy Markdown
Contributor

PR #7826 独立代码审查报告(standard 档)

  • PR: feat(sidebar): 伙伴筛选增加全部与都不显示 #7826 —— feat(sidebar): 伙伴筛选增加全部与都不显示
  • head: d8d6e5cb02787661e64b8078d648abf723f37886;base: 5f0b5f42b46969c3ac21b0cd798a07e36b46e8fd(main);diffHash: a69767e6c2214837168ac5eb02b70c84360602f8d5264d1bb9c25511b723694e
  • 作者: zqchris(维护者);审查账号: magiclizi(维护者,非作者)

Findings

  • 无 P0/P1。本次审查没有发现可证实的阻断问题,不发送 P2。
  • 非阻断提醒(不计入 findings):bot 静默期按超时放行,copilot-pull-request-reviewer 与 chatgpt-codex-connector(Codex review 仍显示 running)尚未对当前 head 表态,其意见可能在合并后才到;Greptile 已审 5/5 无问题(https://github.com/makecindy/cindy/pull/7826#issuecomment-6491355872)。

Rule coverage — 读取的规则文件及逐项结论

规则 逐项结论
AGENTS.md(仓库边界、Git 交付、安全底线) 单一目的 feat;无凭证入库;不触碰服务端/协议/更新器;DCO 由 DCO check 通过佐证
docs/dev-rules/development-workflow.md(P0/P1/P2 口径、验证真实性) 按口径判级:本次 0 P0/P1;PR 描述的验证命令均已实测复跑(见 Verification),未发现描述不实
.github/PULL_REQUEST_TEMPLATE.md 三大段(改了什么/怎么验证的/风险)齐全,变更类型、回滚方式、提交前检查如实(format.formatPass=true)
docs/design-rules/DESIGN.md(UI 强制)§Desktop and Mobile task creator filters、§Select / Dropdown、§10 双模式门槛 菜单复用现有 SelectMenuItem / DropdownMenuItem / 勾选图标 / 语义 token(--msg-assistant-text 等),无硬编码颜色、无自造组件;「全部/都不显示/从都不显示点伙伴=只看该伙伴/取消最后一项回全部/Reset 清除该维度」逐条与实现一致(nextCreatorsAfterToggle、resetContentFilters→setCreatorsAll、mobile filter.reset);PR 同步更新 DESIGN.md 该节正文,与实现无冲突、未借改判据为自身开脱;双模式经 pnpm ui:check light/dark × 5 语言 10/10 场景截图佐证
docs/design-rules/cindy-design-system.md 复用既有菜单行、头像、勾选样式,无设计系统违例
docs/dev-rules/engineering-conventions.md(含 i18n 落地) 新增 filterCreatorsNone / filterHideAllTeammates 与改值的 filterCreatorsAny / filterAnySource 在 en/zh-CN/zh-TW/ja/ko 五语言齐全;pnpm check:i18n(14257 key 一致)与 pnpm check:i18n-glossary(无新增违规)通过;UI 文案术语未越过术语表裁决
docs/dev-rules/mobile-development.md(冷更边界) 仅改 apps/mobile/src TS/JSON 与 i18n,未触碰 app.json/app.config.js/eas.json/apps/mobile/package.json/plugins//modules/,不改变 runtime fingerprint,不触发冷更
docs/dev-rules/remote-and-mobile-adaptation.md 仅本地首页展示筛选与偏好读写,未新增 IPC/推送事件,不涉 workdir/agent 进程/会话数据链路
docs/dev-rules/credentials-and-local-storage.md 偏好持久化复用既有 owner 隔离存储(desktop readSidebarOwnerStorage、mobile homeViewPreferenceStore),无新落盘路径、不含凭证
docs/product-rules/core-product-principles.md / task-and-conversation-naming.md 功能落在既有筛选维度扩展,未把流程塞进 Core;改动文案未触碰任务/对话/消息命名边界

固定问题(rule-map):① 单一目的,描述/diff/测试一致 ✓;② 共享符号读方全查(matchesTaskCreators 3 处调用方、FilterCreators 全部消费点、mobile HomeTeammateFilter/filterSharedHomeRows/normalizeTaskTeammateSelection 消费点,'none' 分支均显式处理,Array.isArray 收口防 'none'.includes 误判)✓;③ 权限/用户数据安全可回滚(旧值兼容:旧版本读到 '"none"' 自动回 'all',数组格式不变)✓;④ 未放松安全边界、无新增依赖、无新数据流向 ✓;⑤ UI/i18n/Mobile 路径均有测试证据 ✓;⑥ 未把流程塞进 Core ✓;⑦ UI 证据(2 张 ui:check 截图)与 diff 一致,无 DESIGN.md 硬伤 ✓;⑧ 未触碰原生配置,无冷更 ✓;⑨ 0 P0/P1,结论通过 ✓。

Verification — 实际运行的命令、结果、未执行项及原因

均在 PR head worktree(detached d8d6e5c)实际运行,落盘完整日志并取命令自身退出码:

命令 退出码 结果
pnpm install --frozen-lockfile --prefer-offline 0 依赖就绪(worktree 独立 node_modules)
pnpm --filter desktop exec vitest run src/renderer/__tests__/useSidebarFilter.test.ts src/renderer/features/cc-agent/sidebar/__tests__/SidebarFilterPopover.test.tsx src/renderer/features/bots/__tests__/botFollowMark.test.tsx --maxWorkers=1 0 133/133 通过
pnpm --filter mobile exec vitest run src/__tests__/homeChromeMenus.test.ts src/__tests__/homeViewPreferenceStore.test.ts src/__tests__/homeDisplaySettings.test.ts --maxWorkers=1 0 45/45 通过
pnpm --filter desktop exec vitest run src/renderer/__tests__/onlineDeviceHeaders.test.tsx src/renderer/__tests__/botGroupLampRendering.test.tsx --maxWorkers=1 0 73/73 通过(消费者回归)
pnpm check:i18n 0 5 语言 14257 key 一致(1385 处存量警告)
pnpm check:i18n-glossary 0 无新增违规(18 处待裁决术语存量告警)
pnpm --filter desktop run --if-present typecheck 0 通过
pnpm --filter mobile run --if-present typecheck 0 通过
  • CI(GitHub):全部 check 通过——client-ci(Linux 1/44/4、Windows 1/44/4、Windows runner and database checks、Desktop Git integration、verify、verify-checks)、pr-design-basis、DCO、Greptile Review(gate.ci.status=pass)。
  • 未执行项:heavy 档专项与 security-scan.mjs 不适用(tier=standard,security 阶段一扫描已 pass、0 命中);整仓全量单测交 CI;未做 Windows/实体机验证(PR 已如实声明未验证项)。
  • 合并门提示:GitHub mergeStateStatus=BLOCKED 系必需检查门「required_status_checks」未按其绑定 integration 上报结果所致(review 与 CI 双源均全绿,16/16 check completed success),非作者可处理,按 structural admin route 由受保护脚本守卫处理。

Intent alignment

  • 描述来源:PR body(https://github.com/makecindy/cindy/pull/7826,2026-10-29 经 context 读取;关联需求:用户要求伙伴筛选提供「全部」「都不显示」并保留具体伙伴)。无讨论 issue、无历史修改要求 thread。
  • 初始实现:当前可见历史为单 commit d8d6e5cb02787661e64b8078d648abf723f37886(父 = base 5f0b5f42b46969c3ac21b0cd798a07e36b46e8fd),即初始实现批次与待合并 head 为同一提交,已实际读取其完整 diff 与关键调用路径。更早的开发 revision(PR 提到的截图版本 d58c58d7d3c3)已被压缩/改写进该提交,旧 revision 无法独立核验,如实注明;无多轮 Codex/Greptile 修复提交可改变原目标(Greptile 一轮无 findings,Codex 未产出 findings/threads)。
  • 待合并 head:d8d6e5cb02787661e64b8078d648abf723f37886(同上)。
原目标/初始行为 最终行为与影响 代码/提交证据 变化依据或待确认问题
伙伴筛选首项「不限来源」= 默认全显 改为「全部」,语义不变 d8d6e5c : apps/desktop/src/renderer/i18n/locales/*/common.json filterCreatorsAny、apps/mobile/src/i18n/locales/*/devices.json filterAnySource PR 描述明确要求;纯文案改值
新增「都不显示」:隐藏伙伴创建及例行/IM 任务、保留个人任务 桌面 matchesTaskCreators 'none' 分支、mobile createHomeContentFilter 'none' 分支,置顶保持既有豁免 d8d6e5c : botFollowScopes.ts:224、homeContentFilters.ts:37-39、测试 botFollowMark.test.tsx/homeDisplaySettings.test.ts PR 描述明确要求;与 DESIGN.md 更新后正文一致
保留具体伙伴单选/多选 数组语义不变;'none' 点伙伴 = 只看该伙伴 nextCreatorsAfterToggle、homeDisplayActionPatch、homeChromeMenus.ts:351 PR 描述与 DESIGN.md 明确
兼容旧偏好 旧值读写兼容('"none"' 旧版回 'all'、数组格式不变)、账号隔离持久化 sidebarFilterCore.ts:151-157、homeViewPreferenceStore.ts:123,203 + 既有回归测试 PR 描述明确;测试覆盖
  • 结论:一致,无偏离。核心目标(全部/都不显示/保留具体伙伴、桌面与移动端一致、五语言文案、偏好持久化与兼容)均在最终 diff 中落实,且有测试与 UI 证据;未发现为过审而扩范围、削弱或替换原目标的改动。

Overall

pass —— 没有 P0/P1。原意一致性复核完成且无待裁定的核心方向问题;建议在 bot 意见后到的提醒下合并(见 Findings 非阻断提醒)。

@MagicLizi
MagicLizi merged commit 71bd4e8 into makecindy:main Oct 29, 2026
16 checks passed
@MagicLizi

Copy link
Copy Markdown
Contributor

合了。「都不显示」这档把伙伴任务和例行/IM 干净地挡在外面、个人任务照常留着,旧偏好值的兼容处理和五语言同步也做得很齐——谢谢,筛选器这下真正够用了。

@MagicLizi MagicLizi removed the status:needs-human 需要人工处理(必需检查门 / 要手动批 CI,review-pr 自动维护,仅展示) label Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

touches:product-ui 改动碰到产品 / UI 面(review-pr 自动维护,仅展示) touches:rules 改动碰到规则 / 规范文档(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants