Releases: dttxorg/MiniClarc
Release list
Clarc v2.6.2
MiniClarc 2.6.2
v2.6.1 audit fixes
This release fixes verified regressions from the v2.6.1 audit.
Fixed
- Removed the phase LLM summary pipeline that could keep work alive after chat/window transitions and cause unwanted extra windows or background activity.
- Added a duplicate project-window guard so opening the same project window focuses the existing window instead of creating another one.
- Replaced the silent 200-turn display cap with explicit Show earlier turns / Hide earlier turns controls.
- Fixed focus mode filtering for compacted original messages.
- Added visible error handling for manual context compact failures.
- Reset project-window state when a project window closes.
- Stabilized orphan turn identity and fixed phase comparison edge cases.
- Fixed JSONPath parsing and lookup regressions.
Installation
-
Download
Clarc-2.6.2.dmg. -
Double-click the DMG to mount it.
-
Drag
MiniClarc.appinto/Applications. -
Before first launch, clear the macOS quarantine flag because this build is ad-hoc signed:
xattr -dr com.apple.quarantine /Applications/MiniClarc.app
-
Launch MiniClarc from Launchpad or Finder.
Notes
- This build is ad-hoc signed and is not Developer ID notarized.
- All v2.6.0 folding work remains, but the v2.6.1 per-phase LLM summary feature has been removed.
Clarc v2.6.1
MiniClarc 2.6.1
流式心跳指示器 + 每阶段 LLM 总结
v2.6.0 引入了 Codex 式阶段折叠。v2.6.1 解决两个后续体验问题:生成回复时不知道它在不在干活,以及阶段总结质量。
新增:流式心跳指示器
之前生成回复时只有"正在生成回复…"+一个时间,长时间没文字输出时完全不知道进程是不是卡死了。现在指示器根据当前状态显示不同文案 + 跳动计数器(像 codex 跳数字):
- 思考中 → "思考中…" + "思考 X.Xs"(实时跳动)
- 运行工具 → "运行 Edit…" + "已运行 N 个工具"
- 生成文本 → "正在生成回复…" + "N 字符"(字符数跳动,证明在产出)
- 等待中(等权限等) → "等待中…" + "已运行 N 个工具"
计数器本地以 4Hz 刷新,即使 CLI 暂时没有新 delta 也能看到"活着"的证据。
新增:每阶段 LLM 总结
v2.6.0 的阶段标题在有 taskUpdate 时用 Claude 自己写的标题,没有时回退成"N tools · 首句"——后者信息量低。v2.6.1 给每个完成的阶段生成一句 LLM 总结:
- 用默认模型(不降级 haiku)做一次性
claude -p总结调用,产出 ≤20 词的一句话。 - 在
.result(turn 结束)后后台批量生成,失败静默降级。 - 阶段卡片头部和折叠态的轮次预览优先显示 LLM 总结,没有时回退到派生标题。
- 新增
PhaseSummaryStore缓存(pending/failed 去重),避免同一阶段重复调用。
安装步骤
- 下载
Clarc-2.6.1.dmg - 双击挂载
- 把
MiniClarc.app拖到/Applications - 打开 Terminal,运行(去除 macOS 隔离标记,因本构建为 ad-hoc 签名):
xattr -dr com.apple.quarantine /Applications/MiniClarc.app
- 启动台点 MiniClarc → 弹"无法打开"→ 点"打开"
下载
备注
- 本构建为 ad-hoc 签名(未 Developer ID 公证),首次打开需上面的
xattr命令。 - v2.6.0 的全部改动(折叠修复 + 阶段折叠)保留。
MiniClarc v2.6.0 — 对话折叠重做 + Codex 式阶段折叠
MiniClarc 2.6.0
对话折叠重做 + Codex 式阶段折叠
这是本次发布的核心。之前折叠功能有两个老问题,本次一起修掉并引入 Codex 风格的阶段折叠。
修复
- 「折叠较早消息」设置失效修复:Settings 里的 8/15/30/Off 选项写入
foldThreshold后被代码完全忽略(折叠规则硬编码为"只有最后一轮展开"),改设置毫无效果。本次移除这个无效的设置项及其全部死代码(foldThreshold、foldToggleButton、isOlderCollapsed、messageRows)。 - 最后一轮折叠箭头失效修复:点最后一轮的 ▼ 想收起它时,因为 toggle 逻辑用了错误的默认值,点击没有反应。现在基于实际渲染状态翻转,可正常收起/展开。
- 会话切换折叠状态残留修复:切走再切回一个会话时,上一会话的 per-turn 展开/收起标记会串过来。现在切换会话时清空
collapseOverrides。
新增:Codex 式阶段折叠
折叠态不再显示一句 50 字的文本预览(把整段过程和阶段卡片全抹掉),而是显示阶段标题列表——每个阶段一行:状态图标(✓ 已完成 / ⟳ 进行中 / ✗ 失败)+ 标题 + 时长。展开 turn 后,每个阶段是独立的可折叠块,展开看工具调用 / 思考 / 文本详情,收起只显示阶段头。
- 阶段边界:
taskUpdate块关闭当前阶段并提供标题/状态/时长(这是 LLM 主动发出的"我完成了这坨工作"信号)。 - 回退:LLM 没发
taskUpdate时,按工具调用序列 + 首句文本派生阶段标题(如 "4 tools · 重构 turn 折叠…"),纯文本回复退化为单阶段。 - 默认展开规则(与 TaskProgressStore 一致):进行中 / 失败的阶段默认展开,已完成的阶段默认折叠。
- 保留每轮箭头和「全部折叠」工具栏按钮。
效果:折叠的 turn 仍能一眼看清"这一轮做了什么",不再"一轮之后做了什么完全不知道"。
安装步骤
- 下载
Clarc-2.6.0.dmg - 双击挂载
- 把
MiniClarc.app拖到/Applications - 打开 Terminal,运行(去除 macOS 隔离标记,因为本构建是 ad-hoc 签名):
xattr -dr com.apple.quarantine /Applications/MiniClarc.app
- 启动台点 MiniClarc → 弹"无法打开"→ 点"打开"
下载
备注
- 本构建为 ad-hoc 签名(未 Developer ID 公证),首次打开需上面的
xattr命令。这是与 v2.5.4 一致的发布方式。 - v2.5.4 的全部 32 个 H bug 修复保留。
Clarc v2.5.4
Clarc 2.5.4
修复 Gatekeeper "文件已损坏" 问题
v2.5.3 dmg 是完全未签名的,macOS Sequoia Gatekeeper 会弹"已损坏,请移到废纸篓"。v2.5.4 修复:
.app用codesign --sign -加上 ad-hoc 签名- dmg 本身也 ad-hoc 签名
- dmg 内附
MiniClarc.app/Contents/Resources/Install-Help.txt提示用户首次打开前运行:xattr -d com.apple.quarantine /Applications/MiniClarc.app # 然后右键 MiniClarc.app → 打开
安装步骤
- 下载
Clarc-2.5.4.dmg(11.4MB) - 双击挂载
- 把
MiniClarc.app拖到/Applications - 打开 Terminal,运行:
xattr -d com.apple.quarantine /Applications/MiniClarc.app
- 启动台点 MiniClarc → 弹"无法打开"→ 点"打开"
下载
v2.5.3 → v2.5.4 改动
仅 dmg 签名修复(代码 0 改动)。所有 v2.5.3 的 32 个 H bug 修复保留。
Clarc v2.5.3
Clarc 2.5.3
Bug fixes (32 high-severity)
Data loss / crash
- H-01: streamingTail force-unwrap crash in handlePartialEvent
- H-02: applyCompaction now persists compacted history to disk
- H-07: MainView selectedProject force-unwrap replaced with safe binding
- H-08: SlashCommandManagerView command! force-unwrap replaced with optional binding
- H-09: TerminalProcess marked @mainactor (Swift 6 concurrency + race fix)
- H-10: NSAlert replaced with SwiftUI .alert (URL field now gets focus)
- H-11: InspectorMemoPanel MemoContext now uses @bindable for toolbar re-render
Security
- H-14: find long-form flags (--delete / --exec / --fprint / ...) now blocked
- H-15: git global flags (--no-pager / -C / -c) skipped when locating subcommand
- H-19: bash_allowlist decode failure now backs up to .corrupted-.json
- H-21: GitHub pinned keys now include RSA
- H-22: forkSession regex no longer rewrites nested sessionId
- H-28: parseGitHubOwnerRepo uses URL parsing, rejects evil.com/?ref=github.com/...
- H-31: FileManager.urls(...).first! replaced with guard let
- H-32: NWListener .cancelled state now calls cancel()
Resource / lifecycle
- H-12, H-13: Timer.publish leak fixed in 3 view files (now Task + sleep loop)
- H-16: ClaudeService spawn failure closes all pipe FDs
- H-17: claude.cleanup() and permission.stop() now called from applicationWillTerminate
- H-23: sniffCache has 1000-entry LRU cap
- H-25: PickerExposer now tail-merges CLI appends during rename window
- H-26: PickerExposer single atomic rename (no more double-rename)
- H-27: GitHelper drains stderr in background Task (no more 64KB pipe deadlock)
State machine
- H-03: selectProject persists per-session model/effort/permissionMode to sidecar
- H-04: releaseOutgoingSession rejects placeholder ids
- H-05: SessionMetaStore.save cache now updates AFTER disk write succeeds
- H-06: placeholder pending- cleanup in selectProject / startNewChat / restart
- H-18: ClaudeService.cancel SIGKILL is cancellable, verifies pid is still ours
- H-24: forkSession Date matching uses ms-rounded + uuid tiebreaker
- H-29: JSONPathParser error offsets no longer always 0
- H-30: SettingsView hard-coded labels moved to String(localized:)
Download
Clarc-2.5.3.dmg(11.4MB, unsigned)
v2.5.2 → v2.5.3 改动
仅 bug 修复;turn-block 折叠、context compaction 等功能不变。
Clarc v2.5.2
Clarc 2.5.2
Bug fixes
turn-block 折叠默认规则
- 之前:所有 turn 默认折叠(包括"新出现的对话"),需要手动点 ▶ 展开
- 现在:只有最新的一条 turn 展开,其余全部折叠
- 新 user 消息到来时:上一轮(原 last)自动折叠
- 用户手动点 ▶ / ▼ 切换的 turn 会保留选择(通过
collapseOverrides跟踪) - 工具栏 "全部折叠 / 全部展开" 仍然有效(force 优先级最高)
下载
Clarc-2.5.2.dmg(11MB,未签名)
安装步骤
- 下载 dmg
- 双击挂载,把
MiniClarc.app拖到/Applications - 首次打开:右键 → Open(绕过 Gatekeeper)
- 启动后:选个 project,发 user 消息 → 看到 1 个 turn 展开
- 再发一条 → 上一条自动折叠,新一条展开
- 测试 compaction:点工具栏的 Compact 按钮
v2.5.1 → v2.5.2 改动
仅 turn-block 默认折叠规则;v2.5.1 的所有功能(turn 折叠、context compaction)保留。
Clarc v2.5.1
Clarc 2.5.1
主要功能
Turn-block 折叠(替换 phase fold)
- 每一轮 user + assistant 配对为一个可折叠的 turn
- 历史 turn 默认折叠,显示 30/50 字省略号预览
- 当前进行中的 turn 始终展开
- ▶/▼ 箭头切换,隐式动画
- 工具栏一键全部折叠 / 全部展开
- 完全替换 v2.4.3 的
PhaseSummaryCard抽象(简化数据结构)
Context compaction(对话摘要压缩)
- 工具栏 Compact 按钮或自动 trigger(默认 100k token 阈值)
- 走
claude -p --system-prompt "..." --resume <sid>通道让 LLM 总结历史 - Session JSONL 改写为精简历史,节省后续 token
- UI 通过内存 snapshot 保留原始全部内容,显示 Compact banner
- Banner 显示压缩时间、消息数、token 节省量,summary 可展开
安装
- 下载
Clarc-2.5.1.dmg - 双击挂载,把
MiniClarc.app拖到/Applications - 首次启动: 右键 → 打开(因为未签名,Gatekeeper 会拦截)
- 启动后 Settings → "Fold older messages" 可调折叠阈值(默认 8)
- 自动 trigger: Settings 里
autoCompactThreshold默认 100k,改为 0 禁用
注意事项
- 未签名 / 未 notarize: 仅供个人测试,machine 第一次打开需右键 Open
- 不支持跨设备分发: 测试用,不要发给别人
- v2.4.x 自动更新不会推送此版本(走的是 Sparkle + 签名 + notarize 通道)
已知行为
- 首次 compact 后,banner 一直显示直到 session 删除(压缩是累积的,反复压缩会丢越来越多原始内容 —— 后续会加 UI 开关让用户"重置 compact")
/compactslash 命令没注册(走工具栏按钮;slash bar 后续可接)- autoCompactThreshold 是全局设置(不走 WindowState per-window mirror)
MiniClarc v2.4.4
v2.4.4 — phase 卡片展开修复
修复
- 展开 phase 卡片是「假数据」bug: 之前
PhaseSummaryCard展开后只显示 1 个MessageBubble(仅助理消息的 id),turn 真实内容(user 提问、thinking 块、tool calls、tool results)被丢失。\n\n 根因:AppState.makePhaseSummary内部messageIDs: [message.id]存了单元素数组(line 1404),且chatWithPhases用.first(where:)只取一条。\n\n 修复:makePhaseSummary接收新增的turnMessageIDs: [UUID]参数,存整个 turn 在streamingTail.messages里累积的所有 message id。chatWithPhases改用enumerated().filter()保留原始顺序(user → assistant → tool results 自上而下)。PhaseSummaryCard.message: ChatMessage改为messages: [ChatMessage],展开 body 改为ForEach(messages) { MessageBubble(message: $0) }。
多轮折叠行为确认(用户已问)
- 每轮对话 → 1 张 phase 卡片(从第二轮开始)\n- 每张卡片可独立展开/折叠(自己的
@State var isExpanded)\n- 展开后看到整个 turn 的完整内容: user 提问 + 多个 assistant 子消息 + tool results\n- 几轮对话就有几张 phase 卡片,可以按轮次审计\n\n### 验证
hdiutil attach MiniClarc-2.4.4-arm64.dmg
xattr -dr com.apple.quarantine /Volumes/MiniClarc\ 2.4.4/MiniClarc.app
open /Volumes/MiniClarc\ 2.4.4/MiniClarc.app
```\n\n未签名未公证。MiniClarc v2.4.3
v2.4.3 — phase 模式折叠恢复 + 虚拟化
修复
- phase 模式下折叠按钮不工作: 之前只要
chatBridge.phaseSummaries不为空(任何一次 assistant 回合完成),代码就走 Codex 风格的chatWithPhases路径,完全隐藏了「折叠前 N 条消息」按钮。本版本让折叠按钮在 phase 模式也显示 — 跟 legacy 模式行为一致。点击展开/收起早期 phase。 - 「一键全折叠 phase」按钮: 状态栏(StatusLineView)新增「Collapse all phases」开关。点击时所有
PhaseSummaryCard临时收起(不修改各自的isExpanded状态),再点击恢复。切 session 自动重置。禁用条件:无 phase summary 时按钮灰掉。 - 几百条 phase 后窗口卡顿:
chatWithPhases内部加 100 phase 的虚拟化 cap。超过 100 phase 的 session 只渲染最近 100 个。避免一次 inflate 几百个 MessageBubble + PhaseSummaryCard 导致主线程打满。
验证
hdiutil attach MiniClarc-2.4.3-arm64.dmg
xattr -dr com.apple.quarantine /Volumes/MiniClarc\ 2.4.3/MiniClarc.app
open /Volumes/MiniClarc\ 2.4.3/MiniClarc.app未签名未公证(本机无 Apple Developer ID)。
MiniClarc 2.4.2
MiniClarc — 中文社区增强版
This build is produced by the dttxorg/MiniClarc
hard-fork distribution. It is not an official upstream Clarc release; it
is independently maintained under the same Apache License 2.0. See
FORK.md and
NOTICE in the
source tree for the full attribution.
What's in this build
- All upstream Clarc features carried forward.
- Full Access permission mode (auto-approves every tool call).
- Phase-based auto-collapse for completed thinking / tool_use /
tool_result blocks (final text response stays expanded). - Configurable fold threshold for long chat histories (8 / 15 / 30 / Off).
- Focus Mode fix — no more frozen chat view when focus mode is on.
- i18n — PermissionModal countdown, fold threshold picker, phase labels,
and permission descriptions localized in en / zh-Hans / ko.
Install
- Download
Clarc-2.4.2.zipbelow. - Unzip and drag
MiniClarc.appto/Applications. - On first launch, right-click
MiniClarc.app→ Open → confirm the
Gatekeeper prompt (the build is ad-hoc signed, not notarized with
an Apple Developer ID). - After the first launch, normal double-click works.
- The bundle id is
com.dttxorg.MiniClarc, distinct from upstream
com.idealapp.Clarc. The two can coexist on the same Mac.
Caveats
- Sparkle
SUPublicEDKeyis empty in v2.0.0. Update checks still work,
but signatures are not yet verified. Download only from this fork's
Releases page; do not trust third-party mirrors. - No Apple notarization. macOS Gatekeeper will require the
right-click-open workaround on every fresh install. - This distribution does not track upstream releases 1:1. If you need a
specific upstream feature, file an issue on dttxorg/MiniClarc.
Full Changelog: v2.3.0...v2.4.2