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 等功能不变。