๐ Major New Features
Terminal Session Management Overhaul
- โจ Decoupled terminal sessions architecture with new
HeadlessTerminalSessionclass - ๐ฏ Fast session switching by decoupling terminal sessions from views for improved performance
- ๐ Active terminal sessions control with toolbar button and popover showing running session count
- ๐ Enhanced session lifecycle management with proper start/stop tracking and state synchronization
- ๐ก๏ธ Race condition prevention with
recentlyStoppedmechanism to avoid session resurrection issues - ๐ Improved scrollback management with dynamic pin/unpin support and aggressive memory optimization for background sessions
- ๐พ Optimized data flushing with chunked processing and typing-aware flush windows for better responsiveness
Dock File Handling
- ๐ Folder drag-and-drop support - drop folders onto Dock icon to create new projects
- ๐ฏ DockOpenCoordinator for managing new project requests from Dock operations
- ๐ Enhanced Info.plist with
CFBundleDocumentTypessupport for folder document types - ๐ Improved session resumption logic to accommodate embedded terminal preferences from Dock launches
Menu Icon System Infrastructure
- ๐จ Core menu icon support with asset images and system images
- ๐ Dark mode inversion support for ChatGPTIcon and other provider icons
- ๐ Standardized 14x14pt icon size for consistent menu item appearance
- ๐ง Extended SplitMenuItem.Kind to accept
systemImageandassetImageparameters - ๐ฏ Provider icons in menus - ChatGPT, Claude, and Gemini icons now appear in menu items
Terminal Selection Enhancements
- ๐ Menu-based terminal selection for Resume operations (embedded vs external terminal profiles)
- ๐ฏ Embedded terminal integration in Resume and New Session menus when available
- โ๏ธ Terminal profile support for task context session launches
- ๐ Enhanced menu items with terminal selection options in TaskListView and SessionListColumnView
๐จ UI/UX Improvements
Menu Bar Enhancements
- ๐จ Dynamic icon updates based on usage data and menu state
- ๐ Appearance observation to regenerate menu bar icon when system appearance changes (including wallpaper-based tinting)
- ๐ Real-time menu updates when menu is open to reflect current usage data
- ๐ฏ Improved icon rendering with adaptive colors (white/black) based on menu bar button appearance
- ๐ Enhanced Retina rendering with 4x/6x scale for better anti-aliasing
- ๐ Refreshable usage items with clickable refresh action in menu
Conversation Timeline
- ๐ฏ Improved sticky header interaction by moving gesture handlers to inner content
- ๐ Better tap area and visual indication for expand/collapse state
- ๐ฑ๏ธ Enhanced hover effects with proper content shape for better interaction
Task List View
- ๐จ Enhanced context menus with icons and improved organization
- ๐ Menu-based session creation with terminal selection options
- ๐ Improved "Collaborate with" menu with provider icons and terminal profile selection
- ๐ฏ Better menu item labels with system icons for consistency
Active Terminal Sessions Control
- ๐ Toolbar button displaying active session count with badge
- ๐ Popover interface for quick access to running terminal sessions
- ๐ Real-time updates via notifications and polling (1.5s interval)
- ๐ฏ Session list showing terminal keys and start times
Split Controls
- ๐จ Enhanced menu rendering with icon support
- ๐ง Improved menu item consistency across the application
๐ง Technical Improvements
Architecture
- ๐๏ธ HeadlessTerminalSession for decoupled terminal session management
- ๐๏ธ TerminalSessionManager refactoring from view-based to session-based architecture
- ๐ฆ DockOpenCoordinator for centralized Dock file/folder handling
- ๐ Notification-based state synchronization for terminal sessions updates
- ๐ Active sessions query API with
getActiveSessions()andgetActiveSessionsCount()methods
Performance Optimizations
- โก Optimized scrollback management with dynamic size adjustment (1,000 lines minimum for background, restored to target when attached)
- ๐พ Memory optimization by aggressively shrinking scrollback for background sessions
- ๐ Improved data flushing with chunked processing (8KB max drain, 12 chunks max)
- โฑ๏ธ Typing-aware flush windows (80ms) for better responsiveness during user input
- ๐ Faster session switching by keeping sessions alive when not visible
Code Quality
- ๐งน Removed view dependencies from TerminalSessionManager
- ๐ Improved error handling and state management
- ๐ Enhanced logging for terminal session lifecycle events
- ๐ก๏ธ Thread safety improvements with
@MainActorannotations for Dock handlers
๐ Bug Fixes
Terminal Session Management
- ๐ง Fixed session resurrection race condition preventing immediate restart of stopped sessions
- ๐ฏ Improved terminal display priority to show focused session's terminal first
- ๐ Fixed visibleTerminalKeyInDetail() to correctly identify active terminal
- ๐ก๏ธ Enhanced stopEmbedded() to support both session ID and terminal key
UI Fixes
- ๐ฏ Fixed sticky header gesture handling in ConversationTimelineView
- ๐ฑ๏ธ Improved hover interaction with proper content shape
- ๐ Fixed dark mode visibility for menu bar icons with appearance-based color adaptation
Thread Safety
- ๐ก๏ธ Added @mainactor to dock folder drop handlers for thread safety when handling drag-and-drop operations
๐ Change Statistics
- Files Changed: 25 files
- Code Changes: +2,083 / -573 lines (net: +1,510 lines)
- New Files:
services/DockOpenCoordinator.swift(60 lines)services/HeadlessTerminalSession.swift(365 lines)views/ActiveTerminalSessionsControl.swift(291 lines)
- Major Refactoring: TerminalSessionManager architecture overhaul
- Major Additions: Terminal session decoupling, Dock file handling, menu icon system
Upgrade Recommendation: This release introduces a major terminal session management overhaul that significantly improves performance and user experience. The new decoupled architecture enables faster session switching and better resource management. Users will benefit from the new active terminal sessions control, improved menu icons, and Dock file handling capabilities. The scrollback optimization reduces memory usage for background sessions while maintaining full history when sessions are active.