You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add bottom tools row — right-click any tool in the picker to move it to a
resizable bottom row (side ↔ bottom), with split ratios and height persistence
- Add renderer-side PostHog error tracking (posthog-js) with exception autocapture,
PostHogProvider wrapper, and unified reportError() helper across all IPC handlers
- Add ACP agent auto-update system — checks registry on startup, periodically (4h),
and on visibility change; toasts on success/failure
- Add ACP draft session lifecycle — eager session start during draft phase for
instant MCP probing and config options loading
- Refine island layout — extract spacing/radius into CSS custom properties,
tighter panel gaps, wider resize hit areas, tool picker redesign with
progress ring on tasks icon
- Add "avoid grouping edits" setting — Edit/Write tools render standalone
instead of collapsing into groups
- Remove ChangesPanel and its data layer (superseded by inline turn summaries)
- Add project icon support (emoji/lucide) via sidebar right-click
- Add git:diff-stat IPC for additions/deletions count
- Add per-session ACP analytics properties (agent name, source, launch method)
- Polish branch picker with search, terminal scrollbar auto-hide, glass border
gradient refinements, dark mode tool picker button glow
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.**Renderer process** (`posthog-js` + `@posthog/react` in `src/lib/posthog.ts`):
317
+
- Exception autocapture via `defaults: "2026-01-30"` — auto-hooks `window.onerror` and `window.onunhandledrejection`
318
+
-`PostHogProvider` wraps the app in `main.tsx`
319
+
-`ErrorBoundary.componentDidCatch` → `posthog.captureException()` for React rendering errors
320
+
- Starts opted-out (`opt_out_capturing_by_default: true`), syncs to main process settings via `syncAnalyticsSettings()`
321
+
- Uses same anonymous user ID as main process for cross-process correlation
322
+
323
+
**Error reporting helpers:**
324
+
325
+
-**Main process**: `reportError(label, err, context?)` from `electron/src/lib/error-utils.ts` — combines `log()` + `captureException()` in one call, returns the error message string. Use in all IPC handler catch blocks.
326
+
-**Renderer**: `reportError(label, err, context?)` from `src/lib/analytics.ts` — combines `console.error()` + `captureException()`, returns the message string. Use in hook/component catch blocks.
-**DO NOT use `reportError`**: process kill cleanup (`/* already dead */`), JSON parse fallbacks, audio autoplay blocked, cache parse defaults, cancellation guards, analytics-internal catches (infinite recursion)
303
332
304
333
### Electron Session Handler Patterns
305
334
@@ -323,4 +352,5 @@ The three session IPC handlers share extracted utilities:
323
352
-**Memo optimization** — components use `React.memo` with custom comparators for performance
324
353
-**Component decomposition** — large components are split into focused sub-components in subdirectories (git/, tool-renderers/, mcp-renderers/, sidebar/)
325
354
-**Hook decomposition** — large hooks are split into focused sub-hooks (session/, useEngineBase)
-**Error tracking** — all caught errors in IPC handlers and hooks must use `reportError(label, err)` (not bare `log()`). Benign/expected catches (cleanup, parse fallbacks, cancellation guards) are exempt. See "Error Tracking (PostHog)" section for details.
Copy file name to clipboardExpand all lines: README.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -109,6 +109,18 @@ Projects map to folders on disk. Spaces let you organize projects into named gro
109
109
110
110
Browse and install agents from the ACP community registry directly in the app. Add custom agents by specifying a command, arguments, environment variables, and an icon. All configuration is managed through Settings — no config files.
111
111
112
+
### Plan mode & permission control
113
+
114
+
Work in plan mode to have the agent draft a plan before making any changes. Three permission levels — Ask First, Accept Edits, Allow All — control how much autonomy the agent has. Switch modes at any point without interrupting context.
115
+
116
+
### Background task agents
117
+
118
+
Task agents spawned during a session continue running in the background and are tracked in a dedicated panel. Keep working in other sessions while long-running tasks complete.
119
+
120
+
### Image attachments & annotation
121
+
122
+
Attach screenshots or images directly in the chat. An built-in annotation tool lets you draw, highlight, and mark up images with freehand strokes before sending them to the agent.
123
+
112
124
### Voice input & notifications
113
125
114
126
Voice input via native macOS dictation or an on-device Whisper model (no API key required). Configurable OS notifications for plan approval requests, permission prompts, agent questions, and session completion.
0 commit comments