v0.4.6 — HTML/PDF Previews, Event Adapters & OSS Bug Fixes
Major feature release adding inline HTML and PDF preview rendering, a new unified event adapter architecture for multi-backend support, batch session operations, and fixes for several community-reported issues.
Features
- HTML & PDF inline previews — New
html-previewandpdf-previewcode blocks render rich HTML content and PDF documents directly in chat, with multi-item tab support and fullscreen overlay viewing (0d22069b) - Batch session context menu — Right-clicking during multi-select now shows batch operations (status, labels, flag, archive, delete) instead of single-session actions (61759915)
- Dynamic Codex model discovery — Fetch available models from Codex app-server with 30-min periodic refresh, falling back to hardcoded registry on failure. Support for multiple connections of the same provider type with unique slug generation (1bcb1083)
- Mustache template engine — New template system for dynamic content rendering with
{{variable}}syntax, partials, conditionals, and loops (a779bf83) - Source templates — Sources can now ship HTML templates for branded, consistent rendering of their data via the new
render_templatetool. Templates use Mustache syntax with self-describing metadata headers (992a1a50) - Fast mode feature flag — Moved to shared package for cross-package availability (e8295580)
Bug Fixes
- Chat history empty on macOS login launch — Added Promise-based initialization gate to SessionManager;
GET_SESSIONShandler now awaits init completion to prevent returning empty results during startup race. Fixes #254 (9ed91fbf) - Window not draggable across all panel headers — App menu, session list panel, and panel headers now have consistent drag regions so the window can be moved from any header area. Fixes #255 (e1ed6619)
- Skills can't auto-activate required sources — Added
requiredSourcesfield to SKILL.md frontmatter; skills now declare source dependencies that are auto-enabled before the agent's first turn. Fixes #249 (9ed91fbf) - File links in chat not clickable — csv, pdf, png, and other file types were not matched by the link click handler. Extension list is now derived from
file-classification.tsto stay in sync automatically (a3fa35e4) - source_test reports expired for valid OAuth tokens — Now attempts token refresh before reporting expired, matching the actual connection pipeline behavior (7a9bc9d9)
- Interrupted responses cause LLM confusion — Partial content from stopped/redirected responses now gets a context note injected so the model doesn't misinterpret follow-up messages (8fd1eb7d)
- Oversize icons in workflow selectors and dropdowns — Fixed icon sizing in StyledDropdown and workflow selector components (2c917b88, aef87854)
- Windows Git Bash path not persisted — Detected
CLAUDE_CODE_GIT_BASH_PATHis now saved to config and restored on startup (9ed91fbf) - Per-session env override race condition — Replaced global mutable
optionsEnvwith per-sessionenvOverridesto fixANTHROPIC_BASE_URLrace across concurrent sessions (1bcb1083)
Improvements
- Unified event adapter architecture — Extracted common streaming/event logic into
BaseEventAdapterwith backend-specific adapters for Claude, Codex, and Copilot. Includes newEventQueuefor ordered event delivery (multiple commits) - TodoState → SessionStatus rename — Consistent naming across 54+ files with backward compatibility for existing hook configs and session file migration (e5987124)
- Block spacing improvements — Better visual spacing between content blocks in chat (a0402076)
- Transform tool timeout improvements — More robust timeout handling for data transformation scripts (c03011b6)