Skip to content

Latest commit

 

History

History
140 lines (130 loc) · 4.68 KB

todo.md

File metadata and controls

140 lines (130 loc) · 4.68 KB

LLM Frontend Project Checklist

Phase 1: Application Foundation

  • 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)

Phase 2: Core UI Layout

  • 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

Phase 3: Message Handling

  • 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

Phase 4: LLM Integration

  • 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

Phase 5: Error Handling & Status

  • 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?)

Phase 6: Configuration & Persistence

  • 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?)

Phase 7: UI Polish

  • 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

Testing & Validation

  • 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

Documentation

  • Write install instructions
  • Create user guide for:
    • Basic usage
    • Keyboard shortcuts
    • Troubleshooting
  • Generate API documentation
  • Add inline docstrings
  • Create contribution guidelines

Stretch Goals

  • Implement conversation search
  • Add message editing
  • Create export/import functionality
  • Develop system tray integration
  • Add notification support
  • Create Flatpak package