All notable changes to AbstractAssistant will be documented in this file.
- Agent host + durability: new core modules for agent runs and durable state:
agent_host,session_index,session_store,tool_policy,transcript_summary. - CLI:
assistant runfor one-turn agentic runs in terminal;assistant trayas the explicit tray-mode entry. - Tests: added basic + integration coverage for the new host/session/tool-policy/summarization components.
- Reports: added research notes under
reports/(dated 2026-02-04).
- Docs & README: rewritten/updated to reflect the agentic host model, tool approval boundary, and install profiles.
- Dependencies: updated
pyproject.toml(profiles/requirements refined). - Qt bubble UI: significant updates to
qt_bubble.py(input/action controls, tool allowlist UI, voice-mode behaviors, theming).
- Qt chat bubble input actions: Fixed first-open layout race that caused the right-side action buttons to overlap. The action column now deterministically sizes to the input row, keeps strict 1:1 square buttons, and preserves 1px vertical spacing.
- Tray app shutdown: Ctrl+C (SIGINT) and SIGTERM now trigger a clean Qt shutdown path (stop timers, hide tray icon, destroy bubble) instead of an abrupt interpreter exit.
- Voice toggle icon: The mic indicator now defaults to a clearly struck "mic off" icon when Full Voice Mode is disabled (non-listening default).
- Voice mode UI switch: Exiting Full Voice Mode now reliably restores the normal interface; while listening, attachment + tools controls remain available and Send is hidden.
- Voice mode shutdown: Stopping Full Voice Mode now force-stops listening/speaking, turns off TTS, restores Ready (green) status, and prevents late STT/TTS callbacks from flipping the UI back to LISTENING.
ROADMAP.md(removed from the repository).
- Packaging / installability: narrowed the default
abstractcore[...]dependency set to avoid GPU-only stacks (notably vLLM) being installed on macOS, which could breakassistant --helpdue to transitivedatasets/pyarrowincompatibilities.
- Chat History Management: Enhanced message deletion and history dialog handling
- Streamlined message deletion process with improved error handling
- Removed excessive debug output for cleaner user experience
- Enhanced widget management for better performance in history dialog
- Improved UI consistency during message operations
- Better error handling and widget lifecycle management
- Code Cleanup: Removed debug print statements that cluttered console output
- Cleaner codebase with reduced unnecessary logging
- Maintained UI integrity during message deletions
- Enhanced performance through optimized widget management
- Keyboard Behavior: Reversed Enter/Shift+Enter behavior for more intuitive message sending
Enter: Send message (previously required Shift+Enter)Shift+Enter: Add new line without sending (previously just Enter)- Updated both Qt and Tkinter chat interfaces for consistency
- Improved user experience with standard chat application behavior
- macOS App Bundle: Consolidated and improved app bundle creation system
- Merged
setup_macos_app.pyfunctionality intocreate_app_bundle.pyfor cleaner architecture - Enhanced Python environment discovery in launch script for better reliability
- Improved custom icon preservation logic to prevent overwriting user icons
- Fixed app bundle creation for various Python installation methods (pyenv, system, conda)
- Removed redundant files and streamlined packaging structure
- Merged
- Documentation: Updated all documentation to reflect current features and behavior
- Fixed keyboard shortcuts documentation across all guides
- Updated installation instructions with correct app bundle creation commands
- Verified consistency of Python version requirements (3.9+) across all docs
- Corrected outdated references to deprecated modules
- Code Cleanup: Removed deprecated
setup_macos_app.pyafter consolidation- All functionality moved to
abstractassistant/create_app_bundle.py - Updated PyPI packaging to exclude development artifacts
- Cleaner project structure with single app bundle creation entry point
- All functionality moved to
- CRITICAL: Session Persistence: Completely eliminated unwanted session clearing that was destroying chat history
- Sessions now persist when switching providers or models
- TTS mode switching preserves chat history
- Error handling preserves sessions instead of creating new ones
- System tray actions require user confirmation and cannot bypass session control
- Only explicit "Clear" button action in UI destroys sessions
- Separated LLM initialization from session management
- Added
update_session_mode()method for history-preserving mode switches - Fixed automatic session loading that bypassed user control
- Bulletproof session control: NO internal process can clear sessions
- UI Layout: Fixed window resizing when adding/removing file attachments
- Window now dynamically resizes to accommodate file attachment widget
- Base size: 630x196, expands to 630x224 when files are attached (compact)
- Voice mode properly adjusts: 630x120 base, 630x148 with attachments
- Maintains proper positioning relative to system tray after resize
- Session Clearing: Clear session now also clears attached files
- When user clicks "Clear" button, both messages and attached files are cleared
- Updated confirmation dialog to mention attached files will be removed
- Ensures complete session reset including file attachments
- File Chip Styling: Made file attachment chips more compact and space-efficient
- Reduced font size from 10px to 8px for better space utilization
- Decreased border radius from 10px to 6px for tighter appearance
- Minimized padding and margins throughout (50% reduction)
- Smaller remove buttons (16x16 → 12x12) for cleaner look
- Window expansion reduced from +40px to +28px (30% space savings)
- UI Cleanup: Removed unwanted voice control panel extension
- Eliminated the play/pause control panel that sometimes appeared at bottom
- Cleaner interface without unnecessary UI extensions
- Voice controls still available through existing TTS toggle button
- File Attachment Persistence & Visual Indicators: Enhanced file handling for better user experience
- Files now remain attached after sending messages, allowing for easy reuse in follow-up messages
- Added visual file attachment indicators (📎) in chat history dialog showing file count per message
- Enhanced message history structure to track file attachments per message
- Clear session now properly clears both messages and file attachment tracking
- Improved file workflow: attach once, use multiple times until manually removed
- macOS App Bundle: Native macOS application bundle (
.app) with Dock integration and system tray support - Automated App Creation:
create-app-bundlecommand to generate macOS app bundle post-installation - Streamlined Installation:
install.pyscript for one-command macOS setup with app bundle creation - Neural Network Icon: Beautiful AI-inspired icon automatically generated and converted to
.icnsformat
- Cross-Environment Compatibility: Robust Python environment detection supporting pyenv, anaconda, homebrew, and system Python
- Portable Launch Script: Smart Python discovery that works across different users and system configurations
- Error Handling: User-friendly dialog boxes for installation and launch issues
- Documentation: Updated installation guides for macOS App Bundle workflow
- Python Environment Detection: Resolved issues with finding correct Python installation in GUI launch context
- Development vs Production: Launch script now correctly uses installed package instead of development version
- PATH Resolution: Fixed Python executable discovery when launched from Dock vs terminal
- Added
MacOSAppBundleGeneratorclass for programmatic app bundle creation - Enhanced
setup_macos_app.pywith comprehensive Python environment detection - Updated
pyproject.tomlto include app bundle creation tools as console scripts - Improved launch script with fallback mechanisms for different Python installations
- Added proper
Info.plistconfiguration for macOS app bundle standards
# Simple one-command installation for macOS users
python install.py
# Or manual installation
pip install abstractassistant
create-app-bundle- Launch from Applications folder or Dock
- Look for neural network icon in menu bar (system tray)
- All existing CLI options remain available
- File Attachments: Click the 📎 button to attach images, PDFs, Office docs, or data files to your messages. The AI can now analyze documents, images, spreadsheets, and more.
- Clickable Messages: Click any message bubble in the history panel to copy its content to clipboard. A subtle flash confirms the copy.
- Chat History Layout: Reduced text size (17px → 14px), increased bubble width (320px → 400px), and tightened spacing throughout for better readability and more efficient use of screen space.
- Markdown Rendering: Headers, paragraphs, and lists now use minimal spacing to display more content without scrolling.
- AbstractCore 2.4.5: Upgraded from 2.4.2 to leverage universal media handling system with support for images, PDFs, Office documents (DOCX, XLSX, PPTX), and data files (CSV, JSON).
- Added
ClickableBubblewidget with visual feedback for clipboard operations - Enhanced
LLMManagerandLLMWorkerto handle media file attachments - File chips display with type-specific icons and individual remove buttons
- Improved markdown processor with tighter vertical spacing
- Modern Web Interface: Complete replacement of Qt/Tkinter with beautiful HTML/CSS/JavaScript
- Glassmorphism Design: Stunning visual effects with backdrop blur and transparency
- WebSocket Communication: Real-time bidirectional communication between web UI and Python backend
- Responsive Design: Works perfectly on desktop and mobile browsers
- Advanced Settings Panel: Theme selection, temperature control, and token limit configuration
- Smooth Animations: Professional transitions and loading states
- Dark/Light Themes: Automatic system theme detection with manual override
- Web Server: Full aiohttp-based server with WebSocket support
- Real-time Status: Live updates for connection status and processing state
- Modern Typography: Inter font family for professional appearance
- Gradient Buttons: Beautiful send button with hover effects
- Message Bubbles: Elegant chat interface with markdown rendering
- Added
aiohttpandwebsocketsdependencies - Created
WebServerclass with async/await support - Fallback to simple HTTP server if aiohttp unavailable
- Updated system tray to launch web interface instead of Qt bubble
- Maintained backward compatibility with existing configuration
- System Tray Integration: Native macOS menu bar icon with neural network-inspired design
- Modern Chat Bubble UI: Glassy, translucent interface with 1/6th screen size
- Multi-Provider Support: OpenAI, Anthropic, and Ollama integration via AbstractCore
- Toast Notifications: Elegant collapsible notifications with markdown rendering
- TOML Configuration: Modern configuration management with validation
- CLI Interface:
abstractassistantcommand with multiple options - Real-time Status: Token counting and execution status display
- Copy to Clipboard: One-click result sharing
- Keyboard Shortcuts: Cmd+Enter to send, Escape to close
- Error Handling: Graceful fallbacks and user-friendly error messages
- Debug Mode: Comprehensive debugging and logging capabilities
- Universal LLM Support: Works with any provider supported by AbstractCore
- Session Management: Persistent conversation memory
- Modern Design: Dark theme with glassy effects and smooth animations
- Performance Optimized: Threaded operations and efficient resource usage
- Cross-Platform Foundation: Built for future Windows/Linux support
- Modular Architecture: Clean separation of concerns
- Robust Error Handling: Comprehensive exception management
- Configuration Validation: Type-safe configuration with defaults
- Package Structure: Proper Python package with CLI entry points
- Development Mode: Editable installation support
abstractassistant # Launch with default settings
abstractassistant --provider openai # Set provider
abstractassistant --model gpt-4o # Set model
abstractassistant --debug # Debug mode
abstractassistant --config custom.toml # Custom config- TOML-based configuration with validation
- Environment variable support for API keys
- Customizable UI themes and behavior
- Provider and model defaults
- AbstractCore 2.4.0+ for universal LLM support
- CustomTkinter for modern UI components
- pystray for cross-platform system tray
- TOML libraries for configuration management