feat(desktop): add default permission mode for new chats - #3429
feat(desktop): add default permission mode for new chats#3429Tommy00748 wants to merge 2 commits into
Conversation
Add a "default permission mode for new chats" setting that lets users choose between Auto-review and Full access for newly created chats. - newMakerDraft: add newChatDefaultPermissionMode override + permissionModeChosenByVendor marker - Settings -> General: NewChatDefaultPermissionSection with PermissionSelector + restore-default - useCCSessions: read the global default instead of hardcoding auto on create - i18n: en/zh-CN/zh-TW/ja/ko Signed-off-by: Tommy00748 <Tommy00748@gmail.com>
|
| Filename | Overview |
|---|---|
| apps/desktop/src/renderer/state/newMakerDraft.ts | 新增默认权限持久化及显式选择跟踪,但旧数据迁移会丢失显式选择语义,且新字段缺少枚举成员校验。 |
| apps/desktop/src/renderer/hooks/useCCSessions.ts | 会话创建增加全局权限缺省值;现有调用方均显式传值,因此当前路径不会被意外改变。 |
| apps/desktop/src/renderer/components/settings/NewChatDefaultPermissionSection.tsx | 新设置组件复用现有权限选择器和恢复默认控件,公开 auto 与 bypassPermissions 两档。 |
| apps/desktop/src/renderer/components/settings/SettingsView.tsx | 将新权限设置区块接入通用设置页。 |
| apps/desktop/src/renderer/tests/newMakerDraft.test.ts | 覆盖默认值、持久化、重置和非字符串脏值,但未覆盖升级前已有显式 vendor 权限再修改全局默认的迁移场景。 |
Prompt To Fix All With AI
### Issue 1
apps/desktop/src/renderer/state/newMakerDraft.ts:697-701
**迁移后会覆盖旧权限选择**
当升级前的用户已为某个 vendor 显式选择非默认权限时,旧数据没有 `permissionModeChosenByVendor` 标记,因此这里会将其视为未显式选择并用全局默认值覆盖。用户修改全局默认后,原有逐 vendor 权限会被静默替换并持久化,例如 `acceptEdits` 会被放宽为 `bypassPermissions`,导致后续新对话使用错误权限。
### Issue 2
apps/desktop/src/renderer/state/newMakerDraft.ts:350-353
**权限值缺少枚举校验**
这里将 localStorage 中的任意字符串强转为 `PermissionMode`,专用 setter 也只验证字符串类型。未知值会继续写入 vendor 草稿并传给会话创建流程,而选择器只会将其归一化后展示,造成界面显示与实际持久化权限不一致,并把不受支持的权限值传给下游。
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(desktop): add default permission mo..." | Re-trigger Greptile
Address Greptile review: Issue 1 - Migration: legacy data lacks permissionModeChosenByVendor, so an explicit vendor permission (e.g. acceptEdits) could be silently overwritten by the global default. In sanitize, tag any vendor whose persisted permission is non-seed (non auto/plan) as explicitly chosen so the global default never overrides it. Issue 2 - Validation: only accept known permission-mode enum values in sanitize and the setter; unknown strings normalize to the seed default instead of leaking into the vendor draft and session creation. Signed-off-by: Tommy00748 <Tommy00748@gmail.com>
|
Re-triggering Greptile review on the latest commit. |
|
👋 Hi maintainers — first-time contributor here, and this PR is blocking on first-run CI approval. Feature: adds a "default permission mode for new chats" setting (Auto-review / Full access), so users don't have to switch permissions manually on every new chat. Tracks issue #3428. What changed:
Greptile raised 2 points, both addressed in the latest commit
Verification (all green locally):
The |
|
@Tommy00748 👋 这个 PR 还有 2 条 review conversation 没 resolve(apps/desktop/src/renderer/state/newMakerDraft.ts),auto-review 因此暂时跳过、没法继续审查 / 合并。 如果你已经按评论改完或回应了,请到对应 thread 上点 Resolve conversation;全部 resolve 后,下一轮 auto-review 会自动重新审查这个 PR。 |
|
这个 PR 新增了「新建任务默认权限」设置,属于产品行为变化,需要维护者确认后再合。 请维护者在本 PR 上 Approve 放行;如果要改,请 Request Changes,作者改完后再 Approve。 |
|
命中 UI 路径(apps/desktop/src/renderer/components/settings/NewChatDefaultPermissionSection.tsx / apps/desktop/src/renderer/components/settings/SettingsView.tsx / apps/desktop/src/renderer/hooks/useCCSessions.ts 等)但 description 未附界面效果证据——建议补充改动后效果:截图/录屏,或改动后界面的 HTML 页面(```html 代码块、.html 附件或在线预览链接),便于确认界面符合 DESIGN.md 设计规范。 |
|
补充 UI 依据(回应 review-pr 的 ui-evidence-notice): 设置的视觉与交互复用现有组件,没有自建样式:
未附实机截图的说明:我没有运行 Cindy 桌面端的实机环境,无法产出真实运行截图/录屏;上面列出的是可核对的代码级复用证据(同样的组件与 token 已在现有设置页使用)。若维护者需要,我可以把改动后的界面渲染成 HTML 示意,但真实像素效果仍以实机为准。 |
|
@MagicLizi 想请你帮忙看一下这个 PR 能否放行。 总结一下目前的进展和状态:
现在卡在产品 gate(issue #3431)需要维护者确认放行,以及首次贡献者的 CI 需要批准运行。如果方便的话,请在此 PR 上 Approve 放行,或告诉我还有什么需要调整的?谢谢 🙏 /cc @makecindy/maintainers |
|
@Tommy00748 👋 这个 PR 目前与 请在本地 merge 最新的 |
这次改了什么
摘要
新增「新建对话默认权限」设置项,让用户统一控制新对话的权限模式(自动审批 / 完全访问),避免每次新建对话手动切换。
变更类型
feat新功能fix缺陷修复refactor/perf重构或性能优化docs/test/chore文档、测试或工程维护范围
newChatDefaultPermissionMode全局 override +permissionModeChosenByVendor显式选择标记NewChatDefaultPermissionSection(PermissionSelector + 恢复默认)UI 变化
PermissionSelector/DefaultOverrideControls与settings-section-*semantic tokens,末行 hint 用settings-section-sublabel。仅实现 Light 模式实机验证,Dark 复用 themed token 未实机目检。怎么验证的
自动验证
手工验证
未执行的验证