Added logic to spawn the user's login shell to correctly set the PATH environment variable for packaged Electron applications, ensuring access to user-specific binaries and tools. This addresses issues with minimal environment inheritance in packaged apps.
Native meeting transcription that captures mic and system audio, transcribes
live via Deepgram, and generates AI-powered meeting notes.
- Toggle button in toolbar to start/stop meeting transcription
- Dual-stream audio capture: mic (You) + system audio (They) via getDisplayMedia
loopback
- Multichannel Deepgram transcription with diarization for speaker
identification
- Headphone detection with mic gating when using speakers to prevent echo bleed
- Live transcript saved to knowledge/Meetings/rowboat/{date}/ as markdown
- Auto-stop after 2 minutes of silence
- LLM-generated meeting notes prepended above raw transcript on stop
- Calendar event matching: pulls nearby events from calendar_sync to identify
meeting title and participant names
- First-time permissions setup modal on macOS for Screen Recording
- Button only visible when Deepgram is available (logged in or API key
configured)
Added blocks to notes and updated assistant skill with this.
Image blocks — images with alt text and captions
Embed blocks — inline YouTube videos, Figma designs, or link cards
Chart blocks — line, bar, and pie charts from inline data or JSON files
Table blocks — styled data tables with named columns
* Enhance onboarding modal to support multiple paths (Rowboat and BYOK). v1
* new onboarding flow
* Resolve stash merge conflicts: keep both inline-task and billing features
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Refactor billing information structure and API integration
* onboarding ui refactor
* Update import path for getAccessToken in billing.ts to reflect new directory structure
* Implement Gmail integration with Composio, enhancing onboarding flow to support Gmail connection status and API key management. Update ConnectorsPopover and SettingsDialog components to reflect new functionality, including dynamic tab visibility based on Rowboat connection status.
* use composio for calendar
* Enhance onboarding flow to support Google Calendar integration with Composio. Add state management for Google Calendar connection status, loading states, and connection handling. Update UI components to reflect Google Calendar connectivity in onboarding steps.
* Integrate Google Calendar sync functionality with Composio, enhancing the connection handling in composio-handler and oauth-handler. Update onboarding modal and connectors-popover to manage connection states and provide user feedback during the sync process. Implement Composio-based event syncing in sync_calendar.ts.
* Maximize window on ready-to-show event in main.ts to improve user experience by preventing blank screen on launch.
* Enhance WelcomeStep component in onboarding flow with new feature highlights and animations. Introduce icons for memory, connectivity, and privacy features. Update logo display with ambient glow effect and improve user feedback during connection states.
* Refactor voice availability check in App component to trigger on OAuth state changes. Update SidebarContentPanel to enhance billing display with improved styling and clearer upgrade call-to-action.
* Enhance OAuth event handling by notifying the renderer on provider disconnection. Update ConnectorsPopover to listen for OAuth state changes, and refine WelcomeStep component by removing feature highlights and adjusting layout for improved user experience.
* Implement Rowboat model settings in the settings dialog, including loading and saving model configurations based on Rowboat connection status. Enhance chat input component to manage Rowboat connection state and update model loading logic accordingly.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Arjun <6592213+arkml@users.noreply.github.com>
- Add knowledge/Notes/ folder created on startup, pinned to top of sidebar
- New Note/New Folder default to creating inside Notes/
- Move Granola sync state to ~/.rowboat/granola_sync_state.json
- Move Fireflies sync state to ~/.rowboat/fireflies_sync_state.json
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix duplicate tab bug via onNoteCreatedRef (stale closure in recorder.onstop)
- Fix transcription not showing: read file from disk and update editor directly
- Move voice memo type/recorded/path from body to YAML frontmatter (Properties)
- Update note creation agent to detect voice memos via frontmatter
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Meeting notes saved as YYYY/MM/DD/{Title}.md under each source folder
- Sidebar flattens date hierarchy to show "2026-03-15 Title.md" (newest first)
- Empty source folders (granola/fireflies) and empty Meetings folder hidden from sidebar
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Limit Granola sync to 30-day lookback period
- Move Granola and Fireflies sync dirs under knowledge/Meetings/
- Note creation agent links to source meeting notes in activity entries
- Note creation agent links to Gmail threads via web URL
- Add Meetings to note type definitions with recursive tag scanning
- Tagging agent extracts meeting metadata (date, source, attendees, title, topic)
- Clicking Knowledge with no tab open auto-opens Bases view
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix URL construction in composioApiCall to preserve base path (/api/v3)
- Make ZToolkit and ZTool schema fields optional to match actual API responses
- Fix error detection to not trigger on successful responses with null error
- Fix executeAction calls in sync_gmail to use correct request object shape
- Use .successful instead of .success to match ZExecuteActionResponse schema
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* agent slack
* add to settings
* select workspace
* skill changes
* chain commands
* fix: Use Git Bash on Windows instead of hardcoded /bin/sh for command execution
* Refactor command execution shell handling
Replace the getShell() function with EXECUTION_SHELL for consistency in command execution. This change simplifies the code and aligns with the recent updates from the dev branch.
---------
Co-authored-by: Tushar Magar <tushmag@gmail.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>