Commit Graph

3157 Commits

Author SHA1 Message Date
spencrmartin 560836e953 WIP: Local fine-tuning and testing infrastructure for local models
- Adaptive learning system with feedback collector, performance monitor, model swapper
- LoRA adapter training and GGUF conversion scripts
- Native model provider integration
- UI components: FeedbackToolbar, RatingControls, HubThemeSelector
- Cyberpunk widgets and amber glow effects
- LLM tuning section in settings
- Tabbed chat container improvements
- Various server and execution manager updates
2026-01-30 09:47:52 -05:00
spencrmartin 9988aa0046 Fix LoRA to GGUF conversion script path resolution
- Fixed incorrect path construction that was looking in target/release/../src instead of crates/goose/src
- Added multiple fallback locations for finding the conversion script
- Added proper logging to show which path was found
- Added validation to check if script exists before attempting to run it
- Improved error messages for better debugging

This fixes the 'No such file or directory' error when clicking 'Convert to GGUF' in LLM tuning settings.
2025-12-18 20:38:27 -05:00
spencrmartin 85af19ce4a feat: Add local fine-tuning with LoRA adapters
This commit adds comprehensive support for fine-tuning LLMs locally using LoRA adapters:

## Backend Changes
- Added model training infrastructure (job_manager, trainer, axolotl integration)
- Implemented training data collection and quality scoring
- Created inference server management for serving fine-tuned models
- Added REST API endpoints for training jobs, training data, and inference servers
- Embedded Python training scripts (train_lora.py, serve_lora.py) in binary
- Support for HuggingFace authentication and CPU fallback for memory-constrained systems

## Frontend Changes
- Added Tuning section in Settings with three tabs: Datasets, Jobs, Fine-tuned Models
- Implemented training data collection UI with feedback toolbar
- Added training job management UI with progress tracking
- Created fine-tuned model cards with 'Chat with Model' functionality
- Integrated fine-tuned model display in chat UI (shows model name and base model)
- Auto-start/stop inference servers when chatting with fine-tuned models

## Key Features
- Collect training data from user interactions with ratings
- Start training jobs with configurable parameters
- Monitor training progress in real-time
- View completed fine-tuned models
- Chat directly with fine-tuned models via inference server
- Automatic inference server lifecycle management

## Technical Details
- Uses PEFT (Parameter-Efficient Fine-Tuning) with LoRA
- Supports multiple base models (Llama, Qwen, Mistral, etc.)
- Memory-aware training with CPU fallback
- OpenAI-compatible inference API via Flask server
- Dynamic port allocation for inference servers (8000-9000 range)

This enables users to fine-tune models on their own data without external services.
2025-12-17 18:33:05 -05:00
spencrmartin 3c51fee806 Stabilize ticker animation and remove test notifications - ready for production use 2025-12-15 11:39:37 -05:00
spencrmartin 3de5a832c5 Fix ticker animation loop and reduce test notifications to prevent erratic behavior 2025-12-15 11:36:19 -05:00
spencrmartin 3c6efb2b69 Slow down ticker scrolling speed from 50 to 20 pixels per second 2025-12-15 11:35:04 -05:00
spencrmartin 66930ddbff Add test notifications to debug ticker scrolling issue 2025-12-15 11:31:13 -05:00
spencrmartin 0fbdc5766c Move notification ticker to appear below navigation elements 2025-12-15 11:29:26 -05:00
spencrmartin 5022f4cadf Remove all placeholder text and hide ticker when no notifications exist 2025-12-15 11:25:23 -05:00
spencrmartin d4988d810f Add Matrix readiness check and logging to prevent placeholder notifications 2025-12-15 11:23:37 -05:00
spencrmartin 3fb3d60f65 Remove placeholder ticker items, start with empty notifications 2025-12-15 11:22:04 -05:00
spencrmartin 439b163186 Fix MatrixContext import path in AppLayout 2025-12-15 10:54:19 -05:00
spencrmartin 069c816b8d Connect ticker to real Goose Matrix events and systems
- Imported useMatrix hook to access real Matrix context
- Replaced mock notifications with real Matrix event listeners:
  - Connection status (connected/disconnected/reconnecting)
  - Message notifications from Matrix rooms
  - Room membership changes (user joined/left)
  - Goose collaboration invites and task requests
  - Session waiting notifications
- Added initial state checks for connection status and pending invites
- Proper event listener cleanup to prevent memory leaks
- Now displays actual real-time notifications from Goose's Matrix system
- Maintains all existing Matrix notification functions for external use
2025-12-15 10:46:14 -05:00
spencrmartin 3790f68134 Transform ticker into Matrix notification system
- Extended TickerItem interface with priority, actionable, notification, and invitation types
- Added Matrix-specific notification functions:
  - addSessionInvitation() - for session invites
  - addMessageNotification() - for new messages
  - addSessionJoined/Left() - for user activity
  - addConnectionStatus() - for Matrix connection state
  - addSessionWaiting() - for sessions awaiting participants
- Updated default items to show Matrix notifications instead of system stats
- Added demo notification system in AppLayout with realistic Matrix scenarios
- Focused route notifications on Matrix-related sections only
- Creates authentic collaborative workspace notification experience
2025-12-15 10:43:48 -05:00
spencrmartin 0fafc0f489 Ensure control buttons appear above ticker section
- Updated both overlay and push mode control buttons z-index from z-[9999] to z-[10002]
- Ticker uses z-[10001], so buttons now have higher z-index (z-[10002])
- Ensures menu toggle and new window buttons are always visible and clickable
- Prevents ticker from covering important UI controls when navigation is open
2025-12-15 10:41:34 -05:00
spencrmartin a621b9b8e1 Hide time element from ticker, keep only scrolling content
- Removed time display section from ticker
- Changed scrolling content padding from pl-24 to pl-0 to use full width
- Ticker now shows only the scrolling status messages
- Maintains pixelated styling and retro effects for remaining content
2025-12-15 10:40:30 -05:00
spencrmartin 1dc2079ab3 Show ticker only when navigation is open
- Added conditional rendering: {isNavExpanded && <NotificationTicker />}
- Ticker now appears only when user opens the navigation menu
- Provides clean interface when navigation is closed
- Ticker serves as additional visual element when exploring navigation
2025-12-15 10:38:46 -05:00
spencrmartin d92356f881 Add pixelated styling to ticker for authentic retro look
- Added image-rendering-pixelated class to main container
- Applied ticker-pixelated class to all text elements (time and scrolling content)
- Added image-rendering-pixelated to time display and scrolling content containers
- Added retro scanlines effect overlay for authentic ticker appearance
- Creates crisp, pixelated text rendering like classic electronic tickers
- Maintains app color scheme while adding retro visual effects
2025-12-15 10:38:12 -05:00
spencrmartin 66951a0c87 Convert all ticker text to lowercase
- Updated default ticker items to use lowercase text
- Added .toLowerCase() to all displayed text in ticker component
- Updated AppLayout route names and ticker messages to lowercase:
  - section: hub/chat/settings etc.
  - sidecars active: X
  - mem: X%
  - connections: X
- Updated updateSystemStatus to use lowercase format
- Maintains consistent lowercase aesthetic throughout ticker
2025-12-15 10:37:15 -05:00
spencrmartin 2b7f48df4e Remove image-rendering-pixelated class causing black background
- Removed image-rendering-pixelated class from main container
- This class was applying CSS filters that caused the black background
- Ticker now properly uses bg-background-default with no visual artifacts
- Maintains clean app styling without pixelation effects
2025-12-15 10:35:47 -05:00
spencrmartin 2b9d392d4f Simplify ticker to use single color and normal app styling
- Changed getTypeColor to return text-text-default for all text types
- Updated time display to use text-text-default instead of text-text-muted
- Removed ticker-pixelated class from time display to prevent black background
- All ticker text now uses consistent font-mono text-xs font-medium styling
- Maintains monospace font for ticker aesthetic while using proper app colors
2025-12-15 10:35:03 -05:00
spencrmartin d584cc4675 Update ticker to use proper app color scheme and typography
- Changed color functions to use semantic app colors:
  - success: text-text-success (instead of text-green-400)
  - warning: text-text-warning (instead of text-yellow-400)
  - error: text-text-error (instead of text-red-400)
  - info: text-text-info (instead of text-blue-400)
  - neutral: text-text-default (instead of text-gray-300)
- Updated scrolling text to use normal app typography:
  - Changed from ticker-pixelated to font-mono text-xs font-medium
  - Maintains monospace font but with proper app font rendering
  - Keeps time display pixelated for visual distinction
- Now properly integrates with app's design system and theme switching
2025-12-15 10:33:51 -05:00
spencrmartin ca94c4f49f Fix ticker background to use correct app background
- Changed main container background from bg-background-card to bg-background-default
- Updated scrolling content area to use bg-background-default
- Updated fade effect to use from-background-default
- Now matches the main content area background used throughout the app
2025-12-15 10:31:41 -05:00
spencrmartin 444748d577 Add background color to scrolling content area
- Added bg-background-card to the scrolling content container
- Ensures consistent background color across the entire ticker
- Prevents any transparency issues with the scrolling text area
2025-12-15 10:30:25 -05:00
spencrmartin 4e518cd954 Update ticker to use app's color scheme
- Changed background from black to bg-background-card to match other containers
- Updated border from green to border-border-default for consistency
- Changed shadow from green glow to standard shadow-sm
- Updated time display background to bg-background-muted
- Changed time and bullet point colors to text-text-muted
- Updated cursor color to text-accent for consistency
- Updated fade effect to use background-card color
- Removed green scanlines effect for cleaner appearance
2025-12-15 10:29:54 -05:00
spencrmartin 0ecd513c69 Fix pixelation effect for ticker text
- Enhanced pixelated CSS with !important flags to override global font smoothing
- Added new ticker-pixelated class with aggressive pixelation settings
- Changed font stack to system monospace fonts (SF Mono, Monaco, etc.)
- Forced font size to 10px and disabled all font smoothing
- Added contrast, brightness, and saturation filters for better pixelated appearance
- Applied ticker-pixelated class to all ticker text elements
- Prevented subpixel rendering with transform and backface-visibility
2025-12-15 10:28:53 -05:00
spencrmartin f531b03461 Reduce notification ticker height to 32px
- Changed default height from 48px back to 32px for more compact appearance
- Updated min-height class from min-h-[56px] to min-h-[32px]
- Updated AppLayout to pass height={32} instead of height={56}
- Maintains smaller text size while reducing overall container height
2025-12-15 10:28:01 -05:00
spencrmartin 5c4a5b0f60 Make notification ticker text smaller and more pixelated
- Reduced font size from text-base to text-xs for all ticker text
- Enhanced pixelated effect with font-smoothing disabled
- Added contrast and brightness filters for better pixelated appearance
- Reduced padding to accommodate smaller text
- Applied image-rendering-pixelated class to all text elements
2025-12-15 10:27:27 -05:00
spencrmartin 879d747714 Fix infinite loop in notification ticker
- Removed ticker from useEffect dependencies to prevent infinite re-renders
- Added useCallback to ticker hook functions for stable references
- Limited ticker items to max 20 to prevent memory growth
- Removed debug logs that were causing dependency loops
- Fixed 'Maximum update depth exceeded' React error
2025-12-15 10:23:40 -05:00
spencrmartin 701becaff3 Add minimum height constraints and test file for ticker
- Added min-h-[56px] class and minHeight style to ensure ticker visibility
- Created standalone HTML test file to verify ticker appearance and functionality
- Improved height constraints to prevent ticker from being collapsed
2025-12-15 10:22:21 -05:00
spencrmartin 7087aec178 Increase notification ticker size and visibility
- Increased ticker height from 32px to 56px
- Enhanced font size from text-sm to text-base
- Added stronger border and shadow effects
- Improved time display with larger font and better padding
- Added debug logging to ensure ticker renders properly
- Made ticker more prominent with bold styling throughout
2025-12-15 10:21:43 -05:00
spencrmartin dd21175787 Add Bloomberg-style notification ticker to topbar
- Created NotificationTicker component with pixelated terminal aesthetic
- Added scrolling ticker with time display and system status
- Integrated ticker into AppLayout at the top of all sections
- Added retro CRT monitor effects with scanlines and terminal styling
- Implemented useNotificationTicker hook for dynamic updates
- Added automatic ticker updates for route changes and system events
- Styled with green terminal colors and monospace fonts for Bloomberg terminal feel
2025-12-15 10:19:22 -05:00
Spence 63beb2d93b Spence/channels prop otherusers (#6056) 2025-12-10 16:09:03 -05:00
Spence 17dfeb29ec Spence/navigationcustomization (#6050) 2025-12-10 12:38:04 -05:00
Spence 564351cfa2 Spence/peers refactorcont (#6016) 2025-12-08 10:44:12 -05:00
spencrmartin 82c0925c06 Add enhanced debugging for Matrix room ownership
- Add fullRegistry logging to see complete ownership mapping
- Create debug script for Matrix room ownership analysis
- Enhanced logging shows all room-to-session mappings
- Script helps identify duplicate registrations and ownership conflicts
- Provides clearMatrixRegistry() function for manual cleanup
2025-12-05 17:37:57 -05:00
spencrmartin 06090970da Fix Matrix message isolation: prevent messages appearing in wrong tabs
- Replace hasExplicitMatrixRoomId check with room ownership validation
- Only the tab that owns a Matrix room (registered in globalMatrixListenerRegistry) processes messages
- Each Matrix room can only have one designated owner tab at a time
- Prevents Matrix messages from leaking to other Matrix tabs for different rooms
- Maintains proper message isolation between Matrix tabs
2025-12-05 17:34:16 -05:00
spencrmartin ecba53b8a7 Fix session isolation while preserving localStorage
- Keep localStorage for tab persistence across app restarts
- Generate unique session IDs for each restored tab to prevent conflicts
- Each tab gets temp_restored_[timestamp]_[random] session ID on restore
- Backend sessions are created properly for each tab
- Maintains tab state (titles, types, Matrix properties) while ensuring isolation
2025-12-05 16:57:54 -05:00
spencrmartin 244642a6a7 Fix session isolation: prevent shared session IDs across tabs
- Disable localStorage restoration to prevent session ID conflicts
- Always start with fresh tabs and unique session IDs
- Clear localStorage on app start to ensure clean state
- Each tab now gets a truly unique backend session ID
- Fixes messages appearing in wrong tabs due to shared sessions
2025-12-05 16:56:29 -05:00
spencrmartin 7bc0a836eb debug: add extensive logging to track session ID isolation issues 2025-12-05 16:50:32 -05:00
Spence 5333640a9c Spence/channels fix roomcreation (#6003) 2025-12-05 16:32:31 -05:00
Spence 8297942293 Spence/channels fixes (#6002) 2025-12-05 11:49:09 -05:00
Spence bafb951553 Add navigation overlay mode with full implementation (#5982) 2025-12-04 11:53:31 -05:00
spencrmartin b9d7f8a634 Add detailed debugging to Matrix room history message detection
- Enhanced getRoomHistory method with comprehensive logging
- Added detailed message type detection debugging
- Log current user ID, message processing steps, and final categorization
- Added message type breakdown summary for troubleshooting
- This will help identify why user messages aren't appearing after reload
2025-12-03 16:55:17 -05:00
spencrmartin c39b9a3ca3 Fix Matrix room history message type detection
- Ensure user messages from self are properly categorized as 'user' type
- Only categorize messages as 'assistant' if they have explicit Goose markers or are from other users
- This fixes the issue where user's own messages weren't appearing in conversation history
- Improved message type detection logic to be more precise and reliable
2025-12-03 16:48:04 -05:00
spencrmartin 5db7d65819 Ensure 1:1 session mapping for Matrix Spaces and Rooms
- Updated createSpace method to automatically create session mappings
- Updated createRoom method to automatically create session mappings
- Both Matrix Spaces and regular rooms now have guaranteed 1:1 relationship with Goose sessions
- Session mappings ensure Matrix room history and Goose session history stay synchronized
- This enables proper session loading when navigating to Matrix rooms/spaces
2025-12-03 16:45:54 -05:00
spencrmartin 42421f2a06 Implement Matrix Spaces navigation and room creation
- Update MatrixService to support Matrix Spaces with isSpace, roomType, and isPublic properties
- Add SpaceChild interface for representing space hierarchy
- Implement space navigation with drill-down into sub-spaces and back navigation
- Add contextual room/space creation (create spaces at top level, rooms within spaces)
- Update ChannelsView to show only Matrix Spaces instead of all non-DM rooms
- Add breadcrumb navigation and space content display
- Include empty tiles for creating new rooms within spaces
2025-12-03 16:33:31 -05:00
Spence 4e302227b8 Spence/vision channelsfix (#5960) 2025-12-03 10:21:14 -05:00
Spence 46b9b714fe Spence/channels (#5952) 2025-12-02 13:33:24 -05:00
Spence cc945effdd feat: add configurable navigation position (top/left/bottom/right) (#5945) 2025-12-02 10:37:12 -05:00