- Create Gtk.Application subclass with unique ID
- Implement window creation on activation
- Support multiple instances (new window per launch)
- Style with Libadwaita
- Create empty window titled "LLM Chat"
- Set default window size to 600x700
- Verify window independence between instances
- Test application launch from CLI with multiple instances
-
Center window on screen (Known GTK4 issue - window positioning unreliable)
- Implement vertical box layout hierarchy
- Create ScrolledWindow for message history
- Set up input area box with proper proportions
- Configure TextView with:
- Dynamic height adjustment
- Enter vs Shift+Enter handling
- Minimum/maximum line limits
- Add Send button with keyboard shortcut
- Verify UI responsiveness at different window sizes
- Implement Message class with:
- Sender type (user/assistant/error)
- Content storage
- Timestamp tracking
- Create message queue system
- Add input sanitization pipeline
- Build MessageWidget components:
- CSS styling classes
- Alignment logic
- Content formatting
- Implement auto-scroll behavior
- Connect message submission to display system
- Create LLMProcess controller class
- Implement async subprocess execution
- Set up stdout/stderr capture system
- Develop CLI command builder with:
- Basic command construction
- Model parameter handling
- System prompt injection
- CID management
- Template support (-t)
- Template parameters (-p)
- Model options (-o)
- Create streaming response parser:
- Response buffer system
- Clean prompt character (">") from responses
- Add typing indicators
- Implement cancellation support
- Implement argument parsing:
- Set up argparse with:
- --cid: Conversation ID
- -s: System prompt
- -m: Model selection
- -c: Continue last conversation
- -t: Template selection
- -p: Template parameters
- -o: Model options
- Create config dictionary from parsed args
- Pass config to LLMProcess constructor
- Update LLMProcess to use config for llm chat command
- Set up argparse with:
- Create ErrorWidget components:
- Warning icon integration
- Styling hierarchy
- Error message formatting
- Implement error capture system for:
- Subprocess failures
- Invalid CIDs
- Model errors
- Add status bar with:
- Connection indicators (via window title)
- Model name display
- Create retry mechanism for failed messages (need to see how that looks like on the cli)
- Implement graceful degradation for critical errors (what errors?)
- Set up GSettings schema (what for?)
- Create model selector dropdown (where?)
- Implement system prompt editor (where?)
- Add conversation ID tracking
-
Build SQLite storage system:-
Message schema design - CID-based conversation tracking
- Auto-save implementation (usando persistencia nativa del LLM)
-
- Template support
- Create history navigation controls (where?)
- Add "New Conversation" button (where?)
- Implement CSS for:
- Message bubble styling
- Error state visuals
- Apply GNOME HIG spacing rules
- Add accessibility features:
- Screen reader labels
- Keyboard navigation
- Enter to send
- Shift+Enter for newline
-
Ctrl+C to cancel(unsupported by llm) - Escape to minimize
- Input focus on window open
- Create loading animations
- Implement keyboard shortcuts overlay
-
Verify touchpad gesture support
- Create test suite for:
- Message serialization
- Subprocess execution
- Error handling paths
- Perform cross-version Python testing
- Validate GNOME HIG compliance
- Test persistence across restarts
- Verify multi-instance resource isolation
- Write install instructions
- Create user guide for:
- Basic usage
- Keyboard shortcuts
- Troubleshooting
- Generate API documentation
- Add inline docstrings
- Create contribution guidelines
- Implement conversation search
- Add message editing
- Create export/import functionality
- Develop system tray integration
- Add notification support
- Create Flatpak package