Skip to content

Release 0.7.0-alpha.1#130

Merged
huhamhire merged 61 commits into
masterfrom
dev
Jun 26, 2026
Merged

Release 0.7.0-alpha.1#130
huhamhire merged 61 commits into
masterfrom
dev

Conversation

@huhamhire

Copy link
Copy Markdown
Owner

发布 0.7.0-alpha.1(预发布 / alpha)。从 dev 汇入 master,合并后在 masterv0.7.0-alpha.1 tag 触发 release.yml 出包。

发版前置(已完成)

  • ✅ 版本号:apps/desktop/package.json 0.7.0-dev0.7.0-alpha.1,已 npm install 同步 lockfile
  • ✅ CHANGELOG:Unreleased 改名为 [0.7.0-alpha.1] - 2026-06-26,另起空 Unreleased,补 compare 链接
  • ✅ 校对:覆盖自 v0.6.0 以来合入 dev 的要点

本版重点

  • 主题与外观:深色 / 浅色主题切换、编辑器配色主题、自定义等宽字体与字号
  • AI 评审运行参数:评审任务并发、上下文长度、Agent 策略(自动追问 / 代码建议数量)
  • PR 列表未读标记
  • Agent 对话:提问引用附带显示、思考 markdown 排版、/merge 指令
  • 本机 agentic CLI 编排提速(chat 通道短路)
  • 代码平台接入层领域化重构(行为不变)

详见 CHANGELOG [0.7.0-alpha.1] 段。

校对待办(合并前可选补充)

  • 24e0ab8 reviewer 头像栈右侧展示「我的评审」头像与角标:属 0.6.0 头像栈特性的小增量,当前 CHANGELOG 未单列;如需收录可在合并前补一条 Added。

tag 名须与版本一致:v0.7.0-alpha.1(含 - 后缀,release.yml 自动标 prerelease、不抢占 Latest)。

🤖 Generated with Claude Code

huhamhire and others added 30 commits June 24, 2026 09:02
0.6.0 发布后开启下一开发周期。用 -dev 预发布后缀标记开发态、与正式版区分
(语义化版本合法,0.7.0-dev < 0.7.0 且 > 0.6.0,不影响更新检测)。同步 lockfile。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
发布流程记下:正式发版后 dev 切到下一版 `-dev` 预发布号标记开发态,
仅作开发标记不打 tag,发版时再改成目标号;说明其 semver 合法且不影响更新检测。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
对应里程碑 #6。三层切分:core 只声明业务契约(领域接口 + 各领域抽象基类 +
传输端口 + 可选 helper),连接 / 传输实现归各平台包自负;按 PR 操作 / 评论 /
用户媒体 / 连接拆分领域并组装到根 client;可降级方法就近声明、根聚合出对外能力
描述符。含代理配置统一进连接层、对外形状「内部分组 + 外部扁平」取舍与分阶段落地。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 0。新增内部包 @meebox/platform-core,作为平台连接层的契约层:
- 定义传输端口 PlatformTransport(get/post/put/del/paginate/getBinary 等
  三平台同构的最小连接能力)与统一连接配置 PlatformConnectionConfig;
- 连接配置统一携带 proxy,经注入的 ProxyFetchFactory 一次解析有效 fetch,
  替代各调用点手拼,core 不依赖 undici;
- 提供可选传输 helper(buildUrl / fetchWithTimeout / parseNextLink / collect /
  extractApiMessage / resolveConnectionFetch),供平台传输实现按需组合。
在 desktop 依赖与 electron-vite internalPackages 登记新包。暂未改动各平台
实现,行为零变化。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 1(GitHub)。GitHubClient 改为 implements PlatformTransport,通用样板
(超时 / URL 拼接 / 错误消息提取 / Link 分页 / 有效 fetch 解析)复用 @meebox/platform-core
helper;GitHub 特有部分(鉴权头 / 限流提示 / 可信资产域 / search / patch)保留。
GitHubClientOptions 改为统一连接配置别名。公开方法签名不变,GitHubAdapter 零改动,
适配器测试全过,行为等价。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 1(GitLab + Bitbucket)。两平台 client 改为 implements PlatformTransport,
通用样板(超时 / URL 拼接 / 有效 fetch 解析;GitLab 另含错误消息提取 / Link 分页)复用
@meebox/platform-core helper;平台特有部分保留(GitLab:PRIVATE-TOKEN / 资产 host 鉴权
模式 / API 二进制端点;Bitbucket:start/limit 分页 / avatar 路径二进制 / 附件协议解析)。
ClientOptions 改为统一连接配置别名,公开方法签名不变、各 Adapter 零改动,适配器测试全过。

同时收敛传输端口:getBinary 从 PlatformTransport 移除——三平台二进制信任模型迥异
(Bitbucket 路径式 + 附件协议、GitHub/GitLab 各自白名单),不属同构最小连接能力,留作
平台传输扩展、由后续 MediaService 领域基类抽象。端口现为纯 JSON 读写 + 分页。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 1(代理统一)。统一连接配置新增 proxyFetch 注入口(由组合根 desktop 提供
undici 实现);resolveConnectionFetch 据 config.proxy + baseUrl host 一次解析有效 fetch。
adapters.ts 不再在 buildOne / buildDraftAdapter 各自 proxyFetchForHost(proxy, host) 预拼
fetch 注入,改为透传 proxy 配置与工厂,由连接层解析——「一个连接 = 一份连接配置(含代理)
= 一次解析」。行为等价(loopback 直连 / 否则挂代理不变),四步全绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 2a(领域契约层)。在 platform-core 定义按业务领域拆分的接口
(PlatformConnection / PullRequestService / CommentService / MediaService)与领域服务
容器 PlatformAdapter;新增共享连接上下文 ConnectionContext(持统一连接封装实例 + 当前
用户缓存)与各领域抽象基类(BaseConnection 等,PlatformDomainService 向子类暴露 transport,
BaseConnection 的用户缓存读写为跨平台共享实现);composePlatformAdapter 把四个领域服务组装
成根容器。纯新增、暂未接线,各平台与消费方零改动。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
把 domains.ts 拆分为可独立维护的文件:context.ts(ConnectionContext /
PlatformDomainService)、features/{connection,pull-request,comment,media}.ts(各领域
接口 + 基类)、adapter.ts(容器 + composePlatformAdapter)。index.ts 对外导出不变,
纯文件组织调整,避免单文件随基类共享逻辑增长而膨胀。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
将设置面板从单列平铺重构为左侧分区导航 + 右侧分区内容:
- 按领域归类现有配置项(常规 / 连接 / AI / 关于),分区元数据驱动、为后续扩展预留
- 新增 Modal lg 尺寸(max-width 880px)+ 定高 720px,切换分区尺寸恒定、右侧内容区独立滚动
- 左侧导航与模态主体同色,仅以分隔线区分
- 四语言新增分区标签 i18n

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(settings): 配置面板改为左右分区定高布局
重构 Phase 2b(GitHub)。把单体 GitHubAdapter 拆为四个领域服务(GitHubConnection /
GitHubPullRequestService / GitHubCommentService / GitHubMediaService,各 extends
platform-core 领域基类),共享一份连接上下文(MutableConnectionContext);GitHubAdapter
退化为薄门面,过渡期委托扁平方法给对应领域服务并暴露 .connection/.pulls/.comments/.media,
消费方迁移前保持可用。

- 连接配置归连接层自管:移除 env 间接层,client(统一连接封装实例)自管 base 归一、
  clone 协议与 web/git host 派生,并提供 getCloneUrl;各服务只持 client。
- 映射就近维护:领域专属映射下沉为各服务私有方法,公共响应类型抽到 types.ts,
  跨领域 mapUser 留在 mappers.ts。

公开方法签名不变、适配器测试全过、desktop typecheck 通过,行为等价。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
后台业务内部不再硬编码中文状态文案。platform-core 新增统一否决原因码 MergeVetoCode;
MergeVeto 改用 code(中性、不本地化)承载派生原因,summary 退为服务端直给文案(如
Bitbucket)的可选回退。GitHub / GitLab 把派生的合并否决原因归一到码,前端在各 locale
(zh-CN / en-US / ja-JP / de-DE)按 `mergeVeto.<code>` 本地化。GitHub 发往远端的评审
正文 / 撤销说明改用英语中性文案。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
mappers.ts → utils.ts(承载跨领域公共工具方法 mapUser)。PR 领域内 review 决断态到活动
事件类型 / reviewer 状态的嵌套三元 / if-else 改为常量 Record 映射表(ACTIVITY_KIND_BY_STATE
/ REVIEWER_STATUS_BY_STATE),更易读、易维护。行为等价。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 2c(GitLab)。把单体 GitLabAdapter 拆为四个领域服务(GitLabConnection /
GitLabPullRequestService / GitLabCommentService / GitLabMediaService,各 extends
platform-core 领域基类),共享一份连接上下文;GitLabAdapter 退化为薄门面,过渡期委托
扁平方法并暴露 .connection/.pulls/.comments/.media。

- 连接配置归连接层自管:client 自管 base 归一、clone 协议、web/git host 派生与
  getCloneUrl;edition 探测态 approvalsAvailable 落在 client 上,供连接(capabilities)
  与 PR(审批拉取)领域共读。
- 映射就近维护:领域专属映射下沉为各服务私有方法,公共响应类型抽到 types.ts,
  跨领域 mapUser / projectId 放 utils.ts。

公开方法签名不变、适配器测试全过、desktop typecheck 通过,行为等价。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
为 platform-core / platform-github / platform-gitlab 的 features 领域层(连接 / PR /
评论 / 媒体)及 core 的连接上下文、组合器补全多行 JSDoc:每个领域接口、领域基类、平台
服务类及其方法(含私有映射方法)均给出必要的块注释,单行注释一并展开为多行块。纯注释
改动,无代码变更,四步全绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 2c(Bitbucket)。把单体 BitbucketServerAdapter 拆为四个领域服务
(BitbucketServerConnection / BitbucketPullRequestService / BitbucketCommentService /
BitbucketMediaService,各 extends platform-core 领域基类),共享一份连接上下文;
BitbucketServerAdapter 退化为薄门面,过渡期委托扁平方法并暴露 .connection/.pulls/
.comments/.media。

- 连接配置归连接层自管:client 自管 clone 协议、webBase 与 getCloneUrl;各服务只持 client。
- 映射就近维护:领域专属映射下沉为各服务私有方法(版本比较、合并状态、评论 / 锚点映射等),
  公共响应类型抽到 types.ts,跨领域 mapUser 放 utils.ts。
- review 决断态 / 活动 action 映射改常量表,方法补多行 JSDoc。

公开方法签名不变、适配器测试全过、desktop typecheck 通过,行为等价。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
为 platform-core 领域接口(PlatformConnection / PullRequestService / CommentService /
MediaService)、连接上下文接口及各领域基类的方法 / 成员之间补必要空行,提升可读性。纯格式,
无代码与行为变更。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 2d(消费方翻转)。业务层调用从扁平 adapter.method(...) 迁移到领域容器
adapter.<domain>.<method>(...):connection(ping / 当前用户 / 能力 / clone)、prs(PR 操作)、
comments(评论)、media(头像 / 附件)。涉及 pr.ts / poller / app & comments 服务 /
pr-service / repo-mirror / connections-runtime / autopilot 等约 25 处调用点与 FakeAdapter 测试桩。

- 领域字段定名 `prs`(贴合应用「PR」术语,较 `pulls` 更清晰)。
- 退役过渡层:删除三个适配器门面的扁平委托方法、移除 @meebox/shared 的扁平 PlatformAdapter
  接口;各适配器改为 implements @meebox/platform-core 的容器 PlatformAdapter。
- poller 依赖加 @meebox/platform-core;FakeAdapter 改为容器形态(仅实现所测领域)。
- 同步设计草案的字段命名。

公开行为不变,全部契约测试与 poller 测试通过,desktop typecheck/lint/build 全绿。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
清除后台最后一处中文状态文案。Bitbucket 连接探测对低于支持下限的版本不再返回中文 reason
字符串,改以错误码 CF_UNSUPPORTED_VERSION + meta(实际版本 / 最低要求)承载;连接测试结果
经 formatBackendError 解码、前端按 errors.ECF0001 本地化(zh-CN / en-US / ja-JP / de-DE,
带 version / min 插值)。后台业务内部不再含面向用户的中文文案。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
重构 Phase 3(收尾·文档)。arch/01 由旧的单一巨接口叙述更新为新架构:契约层
@meebox/platform-core(领域接口 + 领域基类 + 传输端口 PlatformTransport + 组合器)、
各平台实现层(统一连接封装实例 + 四领域服务)、根领域服务容器(connection / prs /
comments / media);补能力描述符新增字段、合并否决中性码与连接错误码、按新结构的新增平台
步骤、代理统一进连接层。设计草案标记为已落地并归档,指向 arch/01。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
为 arch/01 §1 增补 mermaid 类图,归纳「领域接口 + 抽象基类」契约层与 GitHub / GitLab /
Bitbucket 三平台扩展点(*Adapter 实现容器接口、*Client 实现传输端口)的继承 / 实现关系,
图说要点分条列出。

按本仓约定(过程性设计文档落地后移除、结论沉淀进各篇核心设计——参见 docs/adr 的处理)
删除 docs/design/platform-layer-refactor.md;arch/01 去掉对草案的链接,platform-core
注释(transport.ts / codes.ts)对草案章节的引用改指 arch/01 对应小节。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Unreleased 增 Changed 一条(按要点缩进):代码平台接入层基于领域设计重构(行为不变),
按四领域拆分、连接与代理配置统一收口、连接状态提示本地化。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
合并 dev(含 #122 配置面板左右分区布局),CHANGELOG 的 Unreleased 两条 Changed 并列保留。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
refactor(platform): 平台连接层按领域容器化重构(里程碑 #6
为主题切换打基础,将散落的颜色配置归纳为标准色 + 视觉变体的三层结构:
- _palette.scss:原始标准色(按色相 family 组织),唯一色值真相源
- _theme.scss:语义 → 标准色映射,发射为 :root CSS 自定义属性,运行期可整体换主题
- _tokens.scss:把语义 SCSS 变量桥接到对应 var(--token),各样式文件使用处零改动
使用处的 rgba($base, a) 半透明叠加改走 rgb(var(--rgb-base) / a) 通道变量。
暗色主题严格保持像素级一致(编译产物核对:语义值、通道三元组、:root 块均与重构前等价)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
新增主题偏好(跟随系统 / 浅色 / 深色),设置页常规分区即时切换、写盘持久化:
- 复用三层 token 体系新增浅色配色([data-theme=light] 覆盖语义变量,VS Code Light+ 取色)
- 偏好经 config.appearance.theme 驱动,渲染层解析为 data-theme,'跟随系统' 随 OS 实时切换
- localStorage 缓存首帧主题,避免浅色用户启动闪深色
- Monaco 编辑器与 Mermaid 图随主题在浅 / 深间同步,保持界面整体一致

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
设置页常规分区新增「编辑器」配置,两项均即时生效、写盘持久化:
- 编辑器配色主题:可选跟随应用(默认)或 Monaco 内置主题(浅 / 深 / 高对比深 / 高对比浅)
- 编辑器等宽字体:自定义字体族,同步覆盖编辑器内容与全应用等宽文本(diff / 评论 / 代码块)
渲染层经共享 store 把编辑器外观下发到 Monaco 组件,免逐层透传;字体经 CSS 变量驱动 $font-mono。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 编辑器配色主题增至 17 种:除内置(浅 / 深 / 高对比)外,内置 GitHub、Monokai、Dracula、Nord、Night Owl、Solarized 等常用主题(取色自 monaco-themes、就地内置)
- 主题以专名展示、不做国际化翻译(与语言项 endonym 同理)
- 新增编辑器字号配置(限合理范围 8~32px、默认 14),编辑器与行内代码片段一并生效

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 编辑器 / 缓存目录 / Agent 目录配置上方加分割线,与其他配置项分组
- 配置项上下间距加大;左侧分类导航字号 / 图标放大、图标与文案间距放宽;设置面板尺寸收窄
- 编辑器字体输入单独成行铺满(自由输入、可逗号分隔多字体,作 font-family 前缀拼到内置栈前)
- 编辑器主题「跟随应用」项去括号注释并做本地化;其余主题名仍按专名不翻译

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
huhamhire and others added 28 commits June 25, 2026 10:52
并排是用户意向,Monaco 在宽度不足时会自动降级为 inline/统一布局(prop 仍为
并排)。此前按 prop 把删除红标画到左侧 original 编辑器,降级后 original 不可见
→ 红标全丢、滚动条只剩新增绿色。

改为按实际渲染模式判定:读 Monaco 反映实际模式的 .monaco-diff-editor 根节点
side-by-side class,降级时把红标改画到可见的 modified 编辑器左道;并监听布局
变化(rAF 合并、待 class 稳定后再读),跨断点切换时实时重画。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 最大化此前未可靠落盘:只走 resize 防抖,最大化后随手关窗常在防抖前退出、关窗的
  异步写又被进程退出打断 → 状态丢失。改为最大化/还原即时回写,关窗走同步写兜底;
  下次启动恢复最大化态。
- 默认 1280×800 与最小 960×600 为 DIP,高 DPI 缩放后工作区可能更小,窗口被撑到
  最小值溢出屏幕。改为把期望尺寸 clamp 进当前显示器工作区、据此压低最小尺寸并居中。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- palette 改按来源系列命名($vscode-* / $tw-* / $material-*),让混源显式:
  vscode 系=编辑器 chrome/中性/accent/git 装饰,tw 系=通用语义状态,material 系=
  目录树文件状态图标(单独保留)。git 装饰、树图标、品牌 logo 为 carve-out,不收敛。
- 系列内收敛:删冗余近似色(#707070→gray-500、$gray-0→$white)与 off-palette 一次性
  色(pending→tw-amber、posted/success→tw-green)。
- 主题层 34 处手抄 rgba 改为从 palette 原色派生 #{rgba($var,a)},恢复单一真相源
  (改原色浅底自动跟随),顺带修正 git-added-bg 的 199→201 漂移。
- _tokens.scss 桥接层与使用处零改动;仅 success/pending/posted 等极少数浅底有可感
  知微调,余皆像素一致。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
全局操作 toast(审批/合并/发布等失败提示)改为顶部居中,滑入方向同步翻转为
自上方滑入。原底部位置在 diff 视图下会与状态栏/横向滚动条叠压。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 提问引用:AgentMessage 新增持久化 referencedContext,带 Diff 选区提问时在用户气泡
  下方折叠展示「引用的代码」;optimistic 回显同步携带(中途输入入队路径不带,避免重载
  闪烁)。评论建议(finding)引用沿用 /ask 复评卡片上的定位徽标。
- 思考过程:思考 / 判读正文改走 markdown 渲染,支持代码块 / 列表 / 换行等预格式化排版。
- /merge:新增 pr-action 类指令,复用 prs:merge(与 PR 头部合并按钮同源)。仅
  mergeStatus.canMerge 时在补全 / 命令菜单出现,触发后弹二次确认才实际合并。
- 四语言 i18n 补齐对应文案。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ConfirmModal 由「按 Enter」打开时(如 chat /merge 提交),按住 Enter 的 OS 自动
重复 keydown 会在监听器挂载后触发 Enter→确认,模态一闪而过、操作被秒确认。改为忽略
repeat 事件,仅响应全新按下;点击 / 重新按 Enter 仍正常确认。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
此前主进程把原生 chrome 写死深色:nativeTheme 强制 dark、Windows titleBarOverlay
与 splash 均硬编码 #1e1e1e,浅色主题下右上角窗控按钮区与启动闪屏仍是深色。

- nativeTheme.themeSource 改为跟随 appearance.theme(system/light/dark),原生细边框
  与窗控深浅随之,system 跟随 OS。
- titleBarOverlay 按有效主题取明/暗两套配色,并监听 nativeTheme 'updated' 在主题切换 /
  系统深浅变化时实时 setTitleBarOverlay(关窗注销;macOS 不涉及)。
- config:setTheme 同步 nativeTheme.themeSource,切主题即时联动原生件。
- splash 按有效主题渲染明/暗配色。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
修复浅色主题下几处沿用暗色假设、未适配浅背景的配色:

- 目录树选中项文件名白字反色:新增主题感知 token --text-on-selected(暗底白、浅底深字),
  替代选中态写死的 text-on-accent(深浅皆白);scope 下拉选中项同修。
- 图标按钮 hover 写死白:改用 --text-primary,浅色下不再让图标消失在浅底 hover 上。
- 类型胶囊(PR Type)暗色写死:pillStyle 只注入 --pill-hue,明/暗两套饱和度与明度交由
  CSS 按主题定,浅色下改浅底深字,不再过深。
- 状态栏未启用胶囊用边框级灰作填充偏深:新增 --chip-neutral(浅色用更浅 #e0e0e0)。

目录树状态点维持鲜明 Material 饱和色(小圆点更醒目),不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- config 新增 agent.strategy 行为开关组(扩展位),首项 auto_followup(默认开)。
- 设置页「AI」分区新增「Agent 策略」section,子项以功能列表呈现(左标题+说明、右侧
  Switch);新增通用 Switch 组件。
- 关闭「自动追问」时评审微流程剔除 judge + asks 两步、直接总结,省一次 judge 调用与
  潜在追问(省 token);手动评审与 AutoPilot 两条路径均生效。
- 保存复用 config:setAgent。
- 顺手清理 review 流程里残留的「PR3:」临时任务标记注释。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- AI 分区拆为「模型」(仅 LLM 连接 + 上下文长度,新增 CpuIcon 图标)与「智能体」
  (记忆目录 + 策略 + 评审并发)两个左栏 tab。
- 文案:Agent 目录 → 记忆目录、Agent 策略 → 策略、策略说明去掉「开关」字样;分区键
  catAi 拆为 catModel / catAgent(四语言)。
- 策略子项列表通用化为 .settings-sublist-*(缩进 + 行首圆点体现从属),右侧控件不限于
  开关,便于后续放下拉 / 滑块等。
- TierSlider 右侧读数 formatValue 改为可选:纯数字无单位(评审并发)且与刻度重复时隐藏。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
拖拽上限与 CSS max-height 由 5 行调到 8 行,超出走输入框内部滚动;拖拽提示文案同步
四语言改为「2-8 行」。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
agent(含自动追问)/ poller / 并发 / 仓库目录等无即时回调的设置项写盘后,渲染层缓存的
boot.config 未同步,再次打开设置页仍读旧值(行为已生效但 UI 陈旧),需整段 boot 重载才更新。
saveAll 成功后回读写盘后的权威 config(含 main 端 clamp)经 onConfigPersisted 同步到
boot.config,一处通用修复覆盖所有无即时回调项。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
config 新增 agent.strategy.max_code_suggestions(2~8,默认 4),一个配置项约束三处:
- /review → PR_REVIEWER__NUM_MAX_FINDINGS(硬上限)
- /improve → PR_CODE_SUGGESTIONS__NUM_CODE_SUGGESTIONS(硬上限)
- /ask → 结构化 <suggestions> 提示层软约束(封顶超量代码建议)

「策略」分区新增下拉行(复用通用 .settings-sublist-*,控件为 select,印证子项控件不限于
开关);下拉宽度对齐其他主配置下拉、纯数值右对齐。四语言 i18n。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
reviewer 头像栈此前过滤掉当前用户;现在在他人头像栈右侧(细分隔线 + 间距、不重叠)加上当前
用户自己的头像 + 评审角标。角标状态取本地决断 pr.localStatus(审批按钮即时更新),approve 绿勾 /
needsWork 琥珀叹号 / 待评审无角标;头像复用其 reviewer 条目,自己作者的 PR 不展示。
抽出 StackAvatar 供栈内项与「我」项共用,hover 出「我的评审 · 名字」(四语言)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: 配置面板优化 — 评审参数/AI 拆分/Agent 策略,及主题·Diff·聊天打磨
GitHub octocat 原硬编码白色 fill,浅色主题白底上不可见。新增语义变量
--github-logo(暗色官方反白、浅色官方近黑),图标经 CSS fill 属性引用。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
语言 / GUI 主题 / 编辑器外观属即时生效项,与整体保存事务正交,从
useSettingsDraft 抽到独立 hook:后者回归纯草稿/整体保存职责,外观自带
error 由 SettingsModal 合并展示。行为不变。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
去掉独立的 GUI 主题项(system/light/dark),改由所选编辑器主题作为唯一
「主题」控制:主题反推浅/深写入 data-theme 驱动语义色板,并从主题色派生
整个 GUI chrome 的结构性配色(背景/前景/边框/选区,带对比度地板)。

- 主题选项加 mode 标注浅/深/auto;auto 跟随系统(深→Dark Modern、浅→
  Light Modern),默认 auto
- 原生窗口 themeSource 由主题反推;移除 appearance.theme 与 config:setTheme
- 设置页「主题」分区改为全局主题选择器,编辑器分区只留字体/字号
- 保留浅/深语义色板(语义色仍随 data-theme 切换)
- i18n 四语言同步

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(settings): 编辑器主题升格为全局主题 + 主题化小改良
max_followup_asks 原错挂在 autopilot 下且 UI 未暴露;移到 agent.strategy
(与 auto_followup 同组,作用于手动自动评审与 AutoPilot 共用的微流程),
并在策略分区新增「追问数量」下拉(1~5,自动追问关闭时禁用)。

- 消费处 flows/review.ts 改读 strategy.max_followup_asks
- useSettingsDraft 接入草稿状态机,随 config:setAgent 一并保存
- i18n 四语言 + 配置参考/arch 文档同步(补全此前缺失的 agent.strategy 段)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(settings): 自动追问数量开放为 agent 策略配置项
跟踪的 PR 在以下情况标未读圆点,打开即清除:新进入待审列表(新分配 /
请求评审)、源分支推新 commit、或有人 @你 / 回复你。

- poller 在 PR 内容变更时拉评论扫描「@我 / 回复我」,维护 lastMentionAt
  游标;commit 未读由 head sha 比对在读取时派生,零额外 API。
- 已读水位独立成 read-state.json,仅 markRead(用户打开 PR)写,与 poll
  周期性重写 index.json 解耦,避免覆盖竞态。
- 早期开发版不做升级兼容(未打开过即未读,不抑制旧存量泛红)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
markRead 此前用 setState 更新器的副作用判断「是否未读」来决定要不要发
IPC,但更新器在渲染阶段才执行、同步读其副作用恒为初值 → 提前 return →
prs:markRead 从未发出、read-state 从未落盘,重启后又判为未读。改为选中即
发 IPC 持久化已读水位。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
原子写「tmp → rename」中,进程在两步之间被强杀 / 退出(如关窗瞬间仍有
in-flight 的异步窗口状态写)会留下 *.tmp 孤儿,跨会话持续累积。新增
sweepStaleTmpFiles,在启动早期、任何写入之前删掉全部 *.tmp——单写者前提下
此刻无 in-flight 写,凡 tmp 皆是上次会话孤儿;绝不在运行期清扫,以免误删
并发写 / rename 重试正在用的 tmp(冲突场景不误删多余文件)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(pr): PR 列表未读标记 + 状态目录临时文件清理
本机 agentic CLI 模式下,编排自有步骤(路由/judge/summary)的 chat 通道
直接调本机 CLI、不再 import pr_agent / litellm。CLI 路径本就绕过 litellm,
无谓拉起整套 import 会给每次 chat 子进程白增数百 ms~1s+ 启动开销,而一个
编排流程要调多次。

- cli/install.py: 子进程逻辑抽成自包含的 run_cli_chat;
  _install_cli_chat_completion(服务 pr-agent 工具 run)改为薄包装委托它,
  工具 run 路径零行为变化。
- chat.py: CLI 模式直接调 run_cli_chat 返回,跳过 pr_agent/litellm import;
  API 模式保持原 litellm 路径(litellm 即 HTTP 客户端、不可绕)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
perf(agent): CLI 模式编排 chat 通道短路绕过 litellm 启动开销
- CHANGELOG 的 Unreleased 改名为 [0.7.0-alpha.1] - 2026-06-26,另起空 Unreleased
- apps/desktop 版本号 0.7.0-dev → 0.7.0-alpha.1,同步 lockfile 与 compare 链接

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@huhamhire huhamhire added the release 发布 PR / 版本发布 label Jun 26, 2026
@huhamhire huhamhire merged commit fbc296e into master Jun 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release 发布 PR / 版本发布

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant