Commit Graph

3113 Commits

Author SHA1 Message Date
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
Spence 2863217f44 fix: update Hub background matrix nodes and text colors (#5913) 2025-11-28 11:54:17 -05:00
Spence f7822116bb fix: auto-create and show new tab when submitting from Hub (#5912) 2025-11-28 11:23:39 -05:00
Spence 331abd5ff0 Spence/vision background (#5906) 2025-11-27 20:55:12 -05:00
Spence 04d10cd30d Spence/vision marketplace (#5904) 2025-11-27 13:33:34 -05:00
Spence e926293921 Spence/vision peers (#5894) 2025-11-26 13:45:05 -05:00
Spence dcc446d3a0 Spence/vision toolcalls2 (#5891) 2025-11-26 12:42:03 -05:00
Spence ff2b8ceb3f Spence/vision tabs (#5890) 2025-11-26 10:23:32 -05:00
Spence 81787ab382 Spence/vision chatinput (#5878) 2025-11-25 14:56:49 -05:00
spencrmartin 93fba464f3 Revert "Vision gui (#5872)"
This reverts commit 76e6e5f325.
2025-11-25 13:25:37 -05:00
Spence 76e6e5f325 Vision gui (#5872)
Co-authored-by: Thomas Petersen <thomasp@BLKFYD79LLC2M.local>
2025-11-25 09:54:23 -05:00
spencrmartin 17d8a6370d Fix extension loading in AgentManager and various UI improvements
- Add extension loading to AgentManager::get_or_create_agent() to ensure extensions are loaded from config when creating new agents
- Fixes issue where extensions weren't coming online in alpha (showing 0 enabled)
- Add detailed logging for extension loading success/failure
- Various UI improvements to sidecar and chat components
2025-11-24 13:09:17 -05:00
spencrmartin d44531c19a Preserve comment gutter space when sidecar is open
- Add pr-16 (64px) right padding to messages in condensed mode
- Position badge at right-2 instead of right-0 -mr-12
- Badge stays within message bounds, visible in gutter
- Prevents text from extending into comment gutter area
- Maintains consistent spacing with/without sidecars
2025-11-23 09:14:01 -05:00
spencrmartin e50787c241 Add smooth animations to comment interactions
- Badge appears with fade-in and zoom-in (200ms)
- Badge scales up on hover (105%) and down on click (95%)
- Drawer slides in from top with fade (200ms)
- Comment input wrapper animates in smoothly
- Active:scale-95 provides tactile click feedback
- All transitions use duration-200 for consistency
- Creates polished, responsive feel
2025-11-23 09:11:24 -05:00
spencrmartin 4986493876 Add yellow highlight to selected text while creating comment
- Show yellow highlight overlay on selected text during comment creation
- Uses same yellow highlight style as existing comments
- Slightly more opaque (40% vs 30%) to indicate active selection
- Highlight persists while comment input is open
- Provides visual feedback of what text is being commented on
- Matches existing comment highlight appearance
2025-11-23 09:06:37 -05:00
spencrmartin 2f920c0b96 Show only comment input when clicking 'Add comment' badge
- Track which badge was clicked (existing vs new)
- Existing badge shows full drawer with all comments
- New 'Add comment' badge shows only comment input
- No existing comments shown when adding new comment
- Cleaner UX for creating new comment threads
2025-11-23 09:00:48 -05:00
spencrmartin 1d3859279a Show separate 'Add comment' badge for new selections
- Existing comments badge stays at first comment position
- New selection shows separate 'Add comment' badge at selection position
- Both badges can be visible simultaneously
- Prevents existing badge from jumping when making new selection
- New badge hidden when drawer is expanded
2025-11-23 08:59:00 -05:00
spencrmartin 87c4994f3c Remove blue comment button that appears on text selection
- Comment out the floating blue comment button
- Selection still triggers badge appearance via onSelectionChange
- Cleaner UI - badge is the only comment trigger
- Removes duplicate comment creation UI
2025-11-23 08:57:55 -05:00
spencrmartin e3c73fe9ba Use subtle text style for comment badge icon and text
- Change text-text-prominent to text-text-subtle for icon
- Change text-text-prominent to text-text-subtle for count and 'Add comment' text
- More subtle, less prominent appearance in UI
- Maintains text-text-muted for resolved indicators
2025-11-23 08:57:16 -05:00
spencrmartin 82cc04c730 Keep comment badge on single line with whitespace-nowrap
- Add whitespace-nowrap to prevent text wrapping
- Add flex-shrink-0 to icon to prevent squishing
- Ensures 'Add comment' text stays on one line
- Badge maintains compact appearance
2025-11-23 08:56:38 -05:00
spencrmartin 56176b6ad4 Show 'Add comment' text in badge when no comments exist
- Badge shows 'Add comment' when totalComments is 0
- Shows count when comments exist
- Clearer call-to-action for new comment threads
- Maintains icon + text layout consistency
2025-11-23 08:55:44 -05:00
spencrmartin c2d50102bd Condense multiple comment threads into single badge with total count
- Show one badge per message instead of one per comment thread
- Badge displays total count of all comments on the message
- Positioned at first comment's highlight location
- Drawer shows all comments when expanded
- Cleaner UI when message has multiple comment threads
- Badge count includes all top-level comments and replies
2025-11-23 08:55:02 -05:00
spencrmartin 147b8955b2 Position comment badges in right gutter aligned with highlights
- Badges now positioned absolutely at highlight Y position
- Appear in right gutter (right-0 -mr-12) in condensed mode
- Each badge positioned by its comment's highlight location
- Drawer expands from badge position, not bottom of message
- Maintains visual connection between highlight and comment
- Same positioning logic as full mode, just in gutter instead of margin
2025-11-23 08:53:55 -05:00
spencrmartin 796c45b1cb Make comment drawer overlay without affecting message layout
- Drawer now absolutely positioned (doesn't push messages down)
- Positioned top-full right-0 from badge
- Added shadow-xl for better visual separation
- High z-index (z-50) to overlay other content
- No vertical layout shift when expanding/collapsing
- Messages stay in their original positions
2025-11-23 08:52:45 -05:00
spencrmartin e0504287d3 Position comment badge on right side with drawer expanding below
- Badge now positioned on right side of message
- Drawer expands below badge (not inline with it)
- Fixed width container (384px) aligned right
- Remove absolute positioning from badge
- Better visual hierarchy and alignment
2025-11-23 08:51:38 -05:00
spencrmartin 0b668f0cc4 Replace slide-in panel with inline expandable drawer for condensed comments
- Add CommentDrawer component that expands inline like an accordion
- Badge click expands drawer below message (no layout shift)
- Smooth 200ms height transition with max-height 600px
- Collapsible header with chevron up/down indicator
- Stays within message flow - better UX than panel
- Remove unused CommentPanel, CommentPanelContext, CommentPanelLayout
- Update GooseMessage to render condensed comments inline
- Uses app design tokens throughout
2025-11-23 08:50:51 -05:00
spencrmartin e01827faa7 Replace modal with slide-in panel for condensed comment mode
- Add CommentPanel component that slides in from right like mini-sidecar
- Add CommentPanelContext for global panel state management
- Add CommentPanelLayout wrapper to shift chat content left when panel opens
- Update MessageComments to use panel instead of modal
- Smooth 300ms transitions for panel and content shift
- Uses app design tokens for consistent styling
- Better UX - no backdrop overlay, content stays visible
2025-11-23 08:46:45 -05:00
spencrmartin f02accbf38 Add responsive comment system with condensed mode for sidecars and small screens 2025-11-23 08:41:48 -05:00
spencrmartin 70b7ef8945 Update tooltip changes in TabBar 2025-11-23 08:29:26 -05:00
spencrmartin f9900e99ba Fix Matrix notification 'Open Chat' to load history automatically
- Wait for existing session mappings instead of creating duplicate recipe sessions
- Clear empty cache entries to force reload from backend
- Skip backend loading for temp_ sessions (like new_ sessions)
- Auto-reload after 15 seconds if history doesn't load (increments reloadCount to force remount)
- Expose useChatStream cache globally for debugging and cache clearing
- Add detailed logging throughout the flow for debugging

This fixes the issue where clicking 'Open Chat' on a Matrix notification would show a blank chat that required manual reload (Cmd+Shift+R) to see the conversation history.
2025-11-21 16:02:50 -05:00
spencrmartin ac0dcea0e7 Improve tab clickability and close button interaction
- Add 24px invisible tap target above tabs for easier clicking
- Increase close button size and padding for better usability
- Set close button z-index to 100 to prevent draggable area conflicts
- Remove tab separator lines to accommodate extended tap target
- Increase bottom accent bar from 2px to 3px for better visibility
2025-11-21 15:41:09 -05:00
spencrmartin 93e7e48d89 Move user badge to the left side of avatar container
- Changed from right: -20px to right: 20px
- Badge now appears inside the avatar container, to the left
- Creates an overlapping effect with the Goose dot
2025-11-21 15:22:16 -05:00
spencrmartin 63fab5fd74 Push user badge 8px further to the right
- Changed from -right-3 (-12px) to right: -20px
- This adds 8px more distance from the Goose dot avatar
- Creates more visual separation between the two avatars
2025-11-21 15:21:40 -05:00
spencrmartin 6148f18c99 Move user badge to the right side of Goose avatar
- Changed position from bottom-0 right-0 to top-0 -right-3
- Badge now appears to the right of the Goose dot avatar
- Creates a side-by-side appearance with the user indicator
2025-11-21 15:20:34 -05:00
spencrmartin e2d447e2bf Adjust user badge position to align with Goose dot avatar
- Changed from -bottom-1 -right-1 to bottom-0 right-0
- Removed mt-1 class and used inline style for marginTop
- Badge now appears at the exact bottom-right corner of the avatar container
2025-11-21 15:18:56 -05:00
spencrmartin 03d6256c19 Add user badge to Goose messages from collaborators
- Display Goose dot avatar as main avatar for all assistant messages
- Add small user badge in bottom-right corner for collaborator messages
- Badge shows user's avatar if available, or initial letter on colored background
- Header shows 'Goose (username)' for collaborator messages
- This clearly indicates the message is from another user's Goose instance
2025-11-21 15:18:01 -05:00
spencrmartin 8138bbeef4 Fix Matrix room context detection for message filtering
- Check targetRoomId (not sessionId) to determine if in Matrix room context
- sessionId can be a backend session ID even when in a Matrix room
- Use isInMatrixRoomContext based on targetRoomId starting with '!'
- This correctly allows messages from other users in the same Matrix room
2025-11-21 15:16:36 -05:00
spencrmartin 8b9d64e102 Fix Matrix room message filtering logic
- Changed condition from (isMatrixRoom ? true : isSessionMatch) to (isMatrixRoom || isSessionMatch)
- For Matrix rooms, only room IDs need to match (not session IDs)
- Each user has their own backend session ID, so checking session match was incorrectly blocking messages
- This allows messages from other users in the same Matrix room to display properly
2025-11-21 15:15:23 -05:00
spencrmartin 73647c9624 Add enhanced logging for Matrix message sender information
- Log full sender details (userId, displayName, avatarUrl) when processing messages
- Log complete message object being sent to onMessageSync
- This will help debug if sender info is properly flowing through to display
2025-11-21 15:07:58 -05:00
spencrmartin eaa39ca49e Fix Matrix message deduplication - only mark as processed after successful display
- Moved processedMessages.current.add() to AFTER onMessageSync call
- Prevents messages from being marked as processed when they fail to display
- Fixes issue where messages were skipped due to premature deduplication
2025-11-21 15:03:43 -05:00
spencrmartin a3d371b86c Fix Matrix message streaming - only send complete messages once
- Added sentToMatrixRef to track sent messages and prevent duplicates
- Only send messages when chatState is Idle (streaming complete)
- Format messages as goose-session-message: for proper parsing by receivers
- Prevents 429 Too Many Requests errors from sending during streaming
2025-11-21 14:42:28 -05:00
spencrmartin 904b43d4fc Show loading state only for existing chats with messages
Check message_count from backend session to determine if chat
has existing messages. Only show loading indicator if messages
need to be loaded. New chats (message_count = 0) show empty
state immediately with popular topics.

This prevents showing a loading spinner for brand new Matrix
chats that have no message history to load.
2025-11-21 14:22:16 -05:00
spencrmartin 05b936fb61 Fix existing Matrix tab loading state
When switching to an existing Matrix tab that's still loading,
ensure the backend session is created and loading state is cleared.

Previously, clicking 'Open Chat' would switch to an existing tab
but leave it in a loading/blank state if the async session creation
hadn't completed yet.
2025-11-21 14:20:43 -05:00
spencrmartin 8a81a9988b Fix Matrix notification system and add loading states
- Fix Goose assistant response spam: suppress role='assistant' notifications
- Fix stale tab state: use fresh shouldSuppressNotification calls
- Remove buggy legacy /pair suppression logic that checked sender ID
- Fix 'Open Chat' to check existing tabs before navigating
- Add Matrix room ID display in SessionListView
- Optimize MatrixSessionService to defer heavy loading until needed
- Add loading state for Matrix chat initialization
- Improve loading indicator visibility in BaseChat2

Fixes notification spam, incorrect suppression, and blank chat states.
2025-11-21 14:18:52 -05:00
spencrmartin b7db0dde93 Fix: Show pending Matrix invites in all tabs, fetch from server
- Updated TabbedChatContainer to show pending invites in all tabs (not just Matrix tabs)
- Added getPendingInvitedRooms() method to MatrixService to fetch invites directly from Matrix server
- Exposed getPendingInvitedRooms() in MatrixContext for easy component access
- Updated PendingInvitesInHistory to fetch from Matrix API and merge with local storage
- Matrix server data now takes precedence over local storage for accuracy

Fixes issue where pending collaboration invites weren't showing in regular chat tabs
2025-11-21 13:32:20 -05:00