This release adds 2 notable features for engineering teams evaluating rollout.
Published 3mo
Developer Productivity
✓ No known CVEs patched
✓ No known CVEs patched in this version
Summary
AI summaryGit awareness adds a polled status bar and sidebar session state, Docker Sandbox isolates Claude Code in a microVM.
Full changelog
Added
- Git awareness. A polled status bar at the bottom of the window shows the
active session's modified-file count with insertion/deletion totals,
commits ahead of upstream, and open pull-request count (with draft split),
each with a hover tooltip for the full file list, push status, or PR
titles. Sidebar session rows mirror the same data in compact form so
every worktree's state is visible at once. (#8, #9, #10) - Project detail view now lists every open pull request for the repository,
pulled viagh pr list. (#10) - Docker Sandbox support: optionally run Claude Code inside a
sbxmicroVM
for hard process isolation. Configurable globally and per-project with a
toggle and optionalsbx runflags. Canopy validates that Docker Desktop
andsbxare installed before enabling. Session resume is automatically
disabled in sandbox mode (session files are ephemeral). A shield icon in
the sidebar indicates sandboxed sessions. - Settings:
ghandsbxCLI path overrides with auto-detection of the
common Homebrew locations. Leave blank to usePATH; set explicitly for
non-standard installs. (#11)
Fixed
- Activity view:
<synthetic>Claude Code harness entries (emitted for API
errors and "No response requested." sentinels) were being counted as
real model calls, polluting the per-model breakdown and session-day
attribution. Filter them at parse time and bump the activity cache
version so existing caches are invalidated on upgrade. - Sidebar git data would occasionally display the previous session's
diffstat/ahead/PR counts immediately after a tab switch. The 10-second
git-status poller now guards against stamping stale data onto the
newly-active session. (#12) - Closing a session no longer leaks its per-session git entries
(sessionDiffStats,sessionCommitsAhead,sessionPRCount). (#12) selectSessionis now a no-op when called with an unknown session id,
so stale notification callbacks (e.g. clicking a banner for a session
that was closed in the meantime) can't clobber the active selection. (#12)performOpenOrSelectSessionnow guardsNSApp.activateagainst a nil
NSApp, which kept the app from crashing in test harnesses that post
the.canopySelectSessionnotification without a runningNSApplication.
Internal
- New characterization tests around
AppState.refreshAllSessionPRCounts
cover the 60-second throttle, theforce:override, the empty-session
early exit, and commits-ahead tracking. (#12) - Terminal output pipeline and notification routing now have direct test
coverage. - CI uploads coverage reports to Codecov; SwiftUI views are excluded from
the coverage report. .worktrees/is now gitignored so local isolation worktrees don't
pollutegit status.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Canopy
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]