Version 0.9.717 (April 17, 2026)

New Features

  • Common: Unified Pro Tier Across All Apps: Pro is now a single $9/mo subscription that unlocks every PebbleFlow app — Chrome, Desktop, and Mobile — instead of separate app-tier buckets. Platform ($14/mo) is repositioned as "Pro + infrastructure" (local server, API access preview, Messaging).
  • Common: Pro Mobile Tier: A mobile-only Pro plan is available for $2.99/mo, sold directly in the App Store and Play Store. The in-app purchase itself is the entitlement — no separate license needed.
  • Common: Ask-User Tool for Human-in-the-Loop: The agent can now pause mid-run and surface a four-way decision dialog (approve, approve with notes, reject, reject with notes). Your notes flow back to the model as plain-English guidance that overrides the proposed plan — no new cycle fires, the agent continues in place.
  • Common: In-App Guide Search: Search the user guide directly from the Document menu. Results deep-link to pebbleflow.ai/guide, preserving the existing redirect flow.
  • iOS: Monthly/Yearly Paywall Toggle: The iOS Subscribe sheet now lets you switch between Monthly and Yearly billing before purchase.
  • Desktop: Auto-Updates on Windows and Linux: The Tauri desktop app now ships with the updater enabled, so Windows and Linux builds can receive updates in place instead of requiring a manual reinstall.
  • Web: Tabbed Search Across Guide and Blog: The marketing site's guide and blog layouts now include a search bar with tabbed scope switching — title matches rank above body matches, and the active tab auto-switches to where the results are.
  • Web: Dedicated Linux Install Page: The install page routes Linux users to /install/linux, which lays out AppImage, .deb, and .rpm choices with per-distro commands.
  • Web: Stable Download Routes: /download/macos, /download/linux, and /download/windows are now stable, edge-worker-backed URLs that always resolve to the latest release — no website rebuild required per release.

Improvements

  • Common: In-App Support Ticketing: Support requests now route through the in-app ticket flow as the primary path, with clearer credit-error messaging pointing you to the right place when something goes wrong.
  • Common: Smarter Google OAuth Re-Auth: Google tools now verify the scopes actually granted by Google and trigger a just-in-time re-authorization prompt when a 403 indicates a missing scope, instead of silently failing.
  • Common: Full Drive Scope for Google Writes: Write actions against Google Drive now request the full drive scope so edits to documents you didn't create succeed instead of hitting permission errors.
  • Common: Image Generator Model Descriptions: The image generation tool surfaces a description for each available model so it's easier to pick the right one for the task.
  • Common: More Accurate Slate Artifact Messages: When a tool creates or updates a Slate artifact, the model no longer claims the artifact is "displayed in the editor" — the wording now reflects what actually happens.
  • Common: Better Dynamic Tool Selection from Tabs: The tab-context hint now emits tool IDs, so the dynamic tool selector can actually apply context-based selection rules that depend on which tools are available.
  • Common: Voice Costs Attributed to Threads: Streaming TTS (ElevenLabs, Resemble) and STT (ElevenLabs Scribe) usage now rolls up as voice cost on the conversation where it happened, matching the existing one-shot synthesis path.
  • Extension: Login Subtitle Emphasizes Local Agents: Small copy update on the login screen.

Bug Fixes

  • Desktop: Linux File Picker Restored: Fixed the file picker failing on Linux in the Tauri desktop app.
  • Desktop: Version Reporting Wrong: Fixed the Tauri desktop app reporting an incorrect version string in the UI and telemetry.
  • Desktop: Quieter Linux Audio and Clearer Errors: Suppressed PipeWire log noise on Linux, surfaced OpenRouter errors instead of swallowing them, restored the API toggle read path, and fixed an incorrect parity banner.
  • Common: Gmail Body Extraction Lost Links: Reversed the Gmail extraction precedence to try link-preserving markdown first, then fall back to plain text only when the markdown output is empty — emails no longer lose links in the common case.
  • Common: Public API Settings Not Persisting: Fixed the Public API toggle and access token failing to save on some setups, and ensured these settings remain strictly local rather than syncing to the cloud.
  • Common: Archive and Rename Felt Laggy: Delete, archive, unarchive, and rename now update the UI optimistically so the list reflects the change immediately instead of waiting for a server round-trip.
  • Common: Archive Deletes Didn't Sync: Fixed archive deletions being applied directly to storage, bypassing the protocol path — they now propagate across clients like every other thread action.
  • Common: Agenda Showed False "Missing Scopes": Fixed the reminders/agenda widget reading a stale tool-context profile right after you granted Google Calendar scopes, so it flagged missing scopes while tools worked fine. The UI now reads the fresh profile, and a refresh auto-runs the incremental-scopes consent flow sequentially across any connected Google accounts that still need it — no need to open the sync dialog to find "grant access".
  • Common: Google Tool Calls Rejected with "Unknown name exclusiveMinimum": Fixed Gemini rejecting tool calls whose parameter schemas used numeric exclusiveMinimum / exclusiveMaximum bounds — these are now stripped before sending to Google's restricted OpenAPI subset.
  • Common: Remote MCP Servers Without DCR Failed to Connect: Fixed adding remote MCP servers that don't support Dynamic Client Registration (e.g. Slack): the client now respects RFC 9728 protected-resource-metadata, follows authorization_servers to the AS host when it differs from the resource host, and stops fabricating a /register endpoint that doesn't exist.
  • Server: Tester-Tier Users Rejected by Gated Endpoints: Fixed organizations, hub, admin, and provisioned-key endpoints rejecting users whose effective tier (from licenses) was higher than the stale tier snapshotted into their auth token. Gated endpoints now evaluate the effective tier consistently with /api/auth/me.
  • Extension: Identity-Sync Ping-Pong Loop: Fixed conflicting identities between the extension and relay server looping forever on IDENTITY_SYNC. The extension now acks once against the same conflicting remote, warns that you must sign out on one side to resolve, and resets on disconnect / match / remote adoption.
  • Common: Gemini Flash TTS Couldn't Be Selected or Configured: Fixed Gemini Flash TTS (voice) being unusable end-to-end — selecting it reverted on settings close, and the API key field appeared to not accept typing. The provider is now a first-class TTS option: selection persists, the API key + voice picker save correctly, and synthesis uses an SSE streaming endpoint so audio playback can begin before the full utterance finishes generating.
  • iOS: New-Thread UI Didn't Switch: Fixed the iOS app failing to switch the active view to a newly created thread, and fixed a related modelName ReferenceError that could crash the composer.
  • iOS: Startup Crash on Optional Storage Hook: Fixed an iOS crash when storage.primeSettingsCache wasn't available during startup — the call is now guarded.
  • Common: Tier-Audit Discrepancies After Pricing Reshape: Fixed six pricing and feature inconsistencies surfaced by the tier audit, so entitlement gates, upgrade prompts, and feature flags now agree across the extension, website, and mobile apps.

iOS App Store Compliance

  • iOS: External-Signup CTAs Hidden in Onboarding: Onboarding no longer shows calls-to-action that point users off-device for account creation or paid upgrades.
  • iOS: Credit Purchase UI Hidden: Credit purchase surfaces are hidden on iOS per Apple's §3.1.1 rules; subscriptions route through StoreKit instead.
  • iOS: Support and Credit-Error Wording Updated: The /support page and credit-error messaging have been reworded on iOS to meet Apple's guidelines on external purchase references.

Version 0.9.716 (April 12, 2026)

New Features

  • Common: SQL Database Tool: Attach SQLite databases to conversations and query them with SQL. Results can be rendered as live dashboards in Slate artifacts.
  • Common: Calendar Invitations and Google Meet: Creating calendar events now sends invitation emails to attendees and can automatically add a Google Meet video link.
  • Common: Per-Tool Provider Routing: Route individual tools (image generation, search, PDF OCR, etc.) to specific providers via Settings, instead of everything going through the default model.
  • Common: Conversation Sharing: Share conversations as Markdown or plain text.
  • Common: 14-Day Platform Trial: Start a 14-day Platform tier trial from the extension UI or the website account page. Pro subscribers are also eligible.
  • Common: ZDR Quick-Filter in Model Picker: New button in the model selector dropdown to quickly filter for zero-data-retention models.
  • Common: Simplified Settings: Settings now opens in a streamlined Simple view by default, showing just the essentials. Switch to Advanced mode anytime to see everything.
  • Common: Free Google Gemini Access: Bring your own Google AI Studio key to use Gemini 2.5 Flash for free — Google's free tier is now available to all users, no paid plan needed.
  • Common: Baseten Self-Hosted Models: Connect your own Baseten deployments to use self-hosted models directly in PebbleFlow.
  • iOS: WhisperKit On-Device Speech-to-Text: Dictation now runs fully on-device via WhisperKit — audio never leaves the phone.
  • Android: On-Device Whisper STT: Speech-to-text via whisper.cpp runs fully on-device on Android with microphone permission flow.
  • Android: GPU-Accelerated Moonshine STT: On GPU-capable Android devices, dictation can run on Moonshine with sub-second inference. English only; whisper.cpp remains the multilingual fallback.
  • Web: Sign in with Apple on Account & Hub Pages: Apple Sign-In is now available on the website account and hub pages.

Improvements

  • Common: Better PDF Export: Exporting a PDF from Slate now produces a true PDF file instead of opening the print dialog, so you get a clean document every time.
  • Common: Google Slides Full Text: Requesting slide text without specifying a page now returns text from all slides in the presentation.
  • Common: Smarter Web Search: Google search results are now extracted with better structure, capturing titles, snippets, and links more reliably after recent Google layout changes.
  • Common: Kokoro Text-to-Speech on All Platforms: The Kokoro voice option now appears on iOS, macOS, and Android — previously it was hidden on native apps.
  • Common: Cleaner Credit Balance Display: Account balance for prepaid and bring-your-own-key setups now shows your actual balance without confusing "Limit" framing.
  • Common: Higher-Fidelity PDF to Word Conversion: PDF→DOCX export now uses a dedicated Document view in Slate, producing Word files that more faithfully preserve layout and structure from the source PDF.
  • Web: Quieter Account and Auth Pages: Google Analytics and the cookie consent banner are suppressed on account and auth pages for a cleaner sign-in flow.

Bug Fixes

  • Common: Settings Search Didn't Navigate: Fixed the settings search dropdown and deep links failing to jump to several sections (API Access, Private Sync, Backup & Restore, Voice, and others) — the target category stayed collapsed so nothing scrolled into view.
  • Common: OAuth Prompts in Sub-Agents: Fixed OAuth authorization and tier-upgrade prompts being silently dropped when triggered from a sub-agent, which broke connect flows mid-run.
  • Common: Ollama Model Not Saved After Onboarding: Fixed the Ollama model you selected during onboarding not persisting afterward.
  • Common: UI Chunks Failed to Load During Rate Limiting: Fixed static UI assets being rate-limited alongside API requests, causing blank screens or missing panels until refresh.
  • Common: Composer-Preprocessed Attachment Metadata Lost: Fixed attachment metadata being dropped on the server for documents preprocessed in the composer before being sent to the model.
  • Common: Free Time Counted Attended Events as Busy: Fixed the agenda free-time calculation marking you busy during events you only attended — only events on your own calendar are now counted.
  • Common: Google Search Results Broken: Fixed web search returning empty results after Google changed their search page layout.
  • Desktop: Windows/Linux Login Out of Sync with Other Platforms: Fixed the Tauri desktop login flow diverging from Chrome/macOS/iOS — including incorrect tier detection and being unable to log back in after signing out.
  • Desktop: Public API Blocked the Desktop UI: Fixed the desktop app's own UI being blocked by API authentication when the Public API setting was enabled.
  • Common: Google Docs OAuth Errors Hidden: Fixed Google Docs operations silently failing when authentication expired instead of showing a clear error.
  • Common: Settings Panel Crash: Fixed the settings panel crashing when restoring a provisioned API key.
  • Common: Google Drive Sync Duplicating Documents: Fixed Google Docs being duplicated on every sync run instead of updating in place.
  • Common: Google Drive Sync Inline Code Lost: Fixed inline code formatting being lost when syncing documents to Google Docs.
  • Common: Gemini Thinking Extraction: Fixed thinking/reasoning content not being captured correctly from Gemini model responses.
  • Common: Profile Switch Stale Data: Fixed switching between profiles sometimes showing conversations from the previous profile until a manual refresh.
  • Common: Task Scheduler "Method Not Found" Error: Fixed scheduled tasks throwing errors every 60 seconds in certain setups.
  • Common: Text Insertion Newlines in Google Docs: Fixed literal \n appearing in text insertions instead of actual newlines.
  • Common: Google Account Hint on Tools: Fixed Google tools sometimes using the wrong Google account for API calls.
  • Common: Settings and Thread Import Round-Trip: Fixed settings and thread exports not importing back correctly.
  • Common: Sub-Agent Token Usage: Fixed sub-agent token usage not being counted in the parent conversation.
  • Common: Messaging Bridge Reply During Retry: Fixed messaging bridge replies failing when the assistant retried a response.
  • Common: Slate Redline Positioning: Fixed redline deletions landing at the wrong position when markdown was present.
  • Common: Browser Connection Survives Sleep/Wake: Fixed "No browser connected" errors after the computer sleeps or sits idle for long periods.
  • Common: Scheduled Tasks Survive Service Worker Sleep: Fixed recurring tasks stopping after long idle periods.
  • macOS: Safari Google Search Failures: Fixed Google search not working in the Safari extension on macOS.
  • iOS: Mobile App Access: Fixed the iOS app incorrectly requiring a paid plan — the mobile app is now available to all users.

Version 0.9.715 (April 3, 2026)

New Features

  • Common: Hub Delivery System: First-party tool definitions, mode configs, and MCP catalog are now prepared to be delivered from the cloud hub instead of being hardcoded in the bundle, with local caching and offline fallback in preparation for community launch.
  • Common: Single-Tab Mode for Browser Tools: New per-mode browser tab policy reuses a single tab for all navigation in a conversation, preventing tab accumulation during messaging-heavy workflows like WhatsApp.
  • Common: API Integration Binary Uploads: The api_integration tool now supports binary file uploads and direct local file uploads via presigned URLs, instead of always JSON-stringifying request bodies.
  • Common: Credential Management via Tool: Save, list, and delete API credentials programmatically through the api_integration tool, previously only possible through the Settings UI.
  • macOS: Audio Input Device Selection: Choose which microphone to use for voice input — lists all available audio devices and persists your selection.
  • Android: OAuth Recovery on Low Memory: Android OAuth flows now survive activity recreation when the system kills the app for memory, recovering the auth session seamlessly.
  • Common: 3-Layer Mobile CSS Architecture: New mobile-responsive CSS system with platform, layout, and component layers, ensuring consistent UI across phone, tablet, and desktop viewports.

Improvements

  • Extension: Incremental OAuth via Tab: Incremental scope requests now open a full browser tab instead of a popup, fixing hangs on accounts that require interactive consent.
  • Common: MCP Tool Schema Quality: All MCP tools now pass a quality lint test verifying complete schemas, proper descriptions, and consistent parameter definitions.
  • Extension: Auto-Close Browser Tabs on Stop: Browser tabs opened by the assistant are now closed when a run is stopped, and OAuth Safari windows are closed on macOS.
  • Android: Toolchain Upgrade: Android build upgraded to AGP 9.1, Kotlin 2.2.10, and Gradle 9.3.1.

Bug Fixes

  • Common: Google Docs Table Positioning: Fixed mutations landing in wrong positions when tables precede the target text in Google Docs.
  • Common: Page Content Footer Stripping: Fixed page content extraction incorrectly stripping footer elements from captured pages.
  • Common: Web Browsing Pagination: Fixed pagination broken for page 2+ when no explicit maxLength was specified.
  • Common: Content Script Fallback: Fixed page content extraction failing silently by falling back to executeScript when the content script is unavailable.
  • Common: PDF Rendering for URL-Ingested Documents: Fixed PDF native rendering failing for documents ingested via URL.
  • Common: Gemini Tool Call Parsing: Fixed double-quoted keys in LLM tool call arguments causing parse failures with Gemini models.
  • Common: Amazon Nova Compatibility: Fixed tool_call messages rejected by Amazon Nova due to blank text fields.
  • Common: Agent Run Not Terminating: Fixed agent runs not calling endRun reliably in service worker context, leaving browser tabs and state uncleaned.
  • macOS: Voice Audio Resume: Fixed voice audio not resuming after macOS app sleep or dock minimize.
  • macOS: Screenshots Not Appearing: Fixed macOS screenshots not appearing in the assistant UI due to incorrect context detection.
  • macOS: Location Not Working: Fixed location broken in Safari and native macOS app by adding CoreLocation bridge and fixing IP fallback.
  • macOS: Location Entitlement Missing: Fixed missing location entitlement and increased native location timeout.
  • iOS: File Picker Broken: Fixed file picker not opening in iOS WKWebView by adding the runOpenPanel delegate.
  • Extension: OAuth Scope Over-Granting: Removed include_granted_scopes from web popup and post-login OAuth paths to prevent unintended scope inflation.
  • Extension: OAuth Consent Screen Skipped: Fixed OAuth scope elevation skipping the consent screen during incremental scope requests.
  • Desktop: Console Window Visible on Windows: Fixed console window appearing when launching the Tauri sidecar on Windows.
  • Desktop: Windows Build Broken: Fixed node binary path resolution and flattened node_modules for Windows Tauri builds.
  • Server: Duplicate Webhook Processing: Fixed webhooks being processed multiple times when multiple clients were connected.
  • Server: Promotion Codes on Credit Purchases: Disabled promotion codes for credit purchases in Stripe checkout.

Version 0.9.714 (March 29, 2026)

New Features

  • Common: Redesigned Onboarding: New onboarding screen presents 6 clear AI access paths, making it easier for new users to understand their options for connecting to AI providers.
  • Common: PDF from Markdown: New documents created from scratch can now be exported as PDF, converting markdown content to formatted PDF output.
  • Common: Unified Google OAuth: Google account connection now uses a single verified OAuth app with all scopes, replacing the previous multi-app setup. Simpler connection flow with fewer prompts.
  • Common: Save to Slate Meta-Parameter: Tools can now output directly to a slate document via the _save_to_slate parameter, capturing structured results without copy-paste.
  • Common: Slate Anchor Links: Chat messages with slate references now include clickable anchor links that scroll to the relevant section within the document.
  • Common: Sandbox Data Bridge: HTML artifact sandboxes can now dynamically access slate data via a postMessage bridge, enabling live dashboards and interactive visualizations.
  • Common: Tier Badges: Settings, tools, and automation features now display tier badges showing which access level is required, giving expanded-access users visibility into gating.
  • macOS: Native Speech-to-Text (WhisperKit): On-device speech recognition via WhisperKit and CoreML, replacing browser-based STT with a faster, private, native implementation.
  • macOS: Sparkle Auto-Update: Production-ready automatic updates for the macOS app and Safari extension via Sparkle, with appcast feed and delta updates.
  • macOS: Native Tab Context: AppleScript-based tab context extraction provides the macOS app with awareness of frontmost browser tabs.
  • macOS: Voice Hotkey Streaming: Voice hotkey now shows a real-time streaming overlay during recording with automatic WhisperKit model loading.
  • Safari: Native Messaging: Safari extension now communicates with the macOS app via native messaging instead of HTTP polling, improving responsiveness and reliability.
  • iOS/Android: Native Save Dialogs: JSON export now uses native save dialogs (NSSavePanel on macOS, SAF on Android) instead of broken blob downloads.
  • Web: Teams Landing Page: New /teams page with team and enterprise messaging for prospective customers.
  • Web: Blog Section: New blog section on the PebbleFlow website.
  • Web: Free Trial Activation: Account page now supports free trial activation with aligned onboarding flow.
  • Common: Shared Drive Support: Google Picker and all Drive API calls now support shared drives, enabling access to team-shared documents.

Improvements

  • Common: Adaptive Greeting: Adaptive greeting now riffs on custom welcome messages instead of ignoring them, preserving the user's personalized tone.
  • Common: OAuth Callback Cleanup: OAuth callback tabs now auto-close with a countdown timer instead of staying open.
  • Common: OAuth Guidance: When a tool needs an account connection, the error message now includes actionable guidance on which account to connect.
  • Common: Drive Sync Force-Rewrite: Drive Sync workflow now supports a force-rewrite option for re-syncing all files.
  • macOS: Unified Debug Log Viewer: Debug log view now aggregates server, Swift, and UI logs into a single chronological stream.
  • macOS: Bucketed Settings Storage: Server storage adapter refactored to bucketed architecture with robust migration, persistent markers, multi-profile atomicity, and first-writer-wins conflict resolution.
  • macOS: Notarized Safari Extension: Safari extension is now signed with Developer ID and notarization-compatible entitlements, removing the "Allow Unsigned Extensions" requirement for distributed builds.
  • iOS: Default to Apple Reminders: iOS and macOS now default to Apple Reminders and fetch them in the sync view automatically.
  • Common: OAuth Scope Elevation: Incremental scope requests no longer display all 22 scopes — only the newly requested scopes are shown, with cleaner account selection prompts.
  • Common: Google Account Auto-Retry: When a document returns 404, other connected Google accounts are automatically tried before surfacing an error.
  • Common: Settings Deep-Link Navigation: All settings sections are now properly registered for search and deep-link navigation.

Bug Fixes

  • Common: Tool Misrouting: Fixed tools being misrouted when models use colon-separated tool:action format in their responses.
  • Common: Table Cell Formatting: Preserved formatting and links in table cells and cleared inherited list numbering that leaked between cells.
  • Common: Slate Highlight Scroll: Fixed highlight scrolling in TipTap editor for background tabs, preview mode, and native views using reliable ProseMirror-based positioning.
  • Common: Code Block Text Search: Fixed fallback to text search when structural block mapping fails for code blocks in slate documents.
  • macOS: Settings Lost on Mode Switch: Global settings (API keys, connections) are no longer cleared when switching modes on macOS/iOS — an explicit allowlist now controls which settings reset.
  • macOS: Storage Purge Parity: Full storage purge now clears all state fields consistently, matching chrome.storage.local.clear() behavior. Profile deletion and retention cleanup also route through buckets correctly.
  • macOS: Settings Concurrency: Settings reads in applyModeDefaults now acquire the lock first, preventing race conditions. Storage stats read from buckets instead of stale flat cache.
  • macOS: Migration Robustness: Storage migration retries on failure, uses persistent completion markers, and cleans up stale pre-migration data automatically.
  • macOS: MCP Server Zombie Processes: MCP server child processes are now properly terminated when the macOS app quits.
  • macOS: Calendar/Reminders in Agenda: Fixed Apple Calendar events and Reminders not appearing in the agenda modal.
  • macOS: Google OAuth Flow: Fixed Google login failing in macOS WKWebView by routing OAuth through the relay server web flow.
  • macOS: Sign-Out Navigation: Fixed sign-out not returning to the login screen on macOS.
  • macOS: Remote Access Auth: Fixed 401 error on set-remote-access endpoint by removing incorrect auth requirement.
  • Server: WhatsApp Reply Delivery: Fixed WhatsApp replies not posting back to WhatsApp and only staying in the PF chat thread.
  • Server: WhatsApp Relay-Back Timeout: Extended WhatsApp relay-back timeout from 120s to 10 minutes and fixed resolution on generation errors.
  • Server: Private Sync Reauth: Fixed private sync reauthentication flow, server-side OAuth guard, and sign-out cleanup on macOS.
  • Server: Local Folder Sync Auth: Fixed 401 auth error on local/network folder sync operations.
  • Server: Google Session Re-Auth: Unlock dialog now triggers re-authentication on Google session expiry instead of showing a dead-end error.
  • Safari: Extension Signing: Fixed Safari extension appearing as unsigned by using release entitlements without get-task-allow for Developer ID signed builds.
  • Common: OAuth Account Mismatch: Fixed OAuth creating mismatched connections by properly creating new connections instead of overwriting existing ones with different accounts.
  • Common: OAuth Scope Inflation: Fixed mismatched connections inheriting the original account's scopes, causing unintended scope over-granting.
  • Common: Thread List Wipe: Fixed STATE_UPDATE timeout/retry using wrong field name, which could wipe the thread list.
  • Common: Tier Badge Accuracy: Fixed tier badges incorrectly showing "Tester" on free-tier features.
  • Common: Settings Panel Overflow: Fixed flex overflow in settings panel card rows causing layout issues.
  • Server: Private Sync API Key Loss: Fixed private sync losing API keys when syncing between devices.
  • Server: Messaging Bridge: Fixed archived chats, stop button, and mode selection in the messaging bridge.
  • macOS: Custom Mode Settings Lost: Fixed custom mode settings being silently lost on macOS/iOS due to a no-op save path.
  • macOS: OpenRouter Headers Blocked: Fixed relay CORS blocking OpenRouter attribution headers on macOS/iOS.
  • macOS: Tab Context Switching: Fixed tab context not updating when switching between browser tabs.

Version 0.9.713 (March 28, 2026)

New Features

  • Common: Sub-Agents: Full sub-agent system with persistent named agents, conversation history, parallel execution (committee pattern), sequential and interjection modes, abort cascade, and dedicated UI rendering with chronological status tracking.
  • Common: MCP Tool Approval: Registered MCP tools now appear in the tool approval system, giving users visibility and control over which MCP tools agents can invoke.
  • macOS: Sidepanel Push Mode: Sidepanel now supports push mode alongside overlay, with 425px default width and docked width persistence across sessions.
  • Server: WhatsApp Rich Messages: WhatsApp connection now supports location sharing, contacts, reactions, and sticker messages in addition to text and media.
  • Server: API Key Encryption at Rest: API keys stored in relay D1 storage are now encrypted at rest. Server-side OAuth keys are deleted after being saved locally.

Improvements

  • Common: Model Alias Display: Sub-agent tool call arguments now show annotated model aliases for easier identification.
  • Common: BYOA Connection Priority: Expanded-scope OAuth requests now prefer BYOA alternate connections over Basic connections, reducing unnecessary re-auth prompts.
  • Common: Thought Signature Preservation: Thought/reasoning signatures are now preserved correctly for both OpenAI Responses API and Gemini multi-turn tool calling flows.
  • macOS: Debug Log Propagation: Debug logging toggle now propagates to the Node.js server subprocess.
  • Common: Bengali Language Support: Platform and website now support Bengali, plus trademark disclaimer and media post updates on the website.

Bug Fixes

  • Common: Safari/WKWebView Streaming: Polyfilled ReadableStream async iteration for kokoro-js, fixing TTS streaming failures in Safari and WKWebView.
  • Common: Custom Mode Creation: Fixed stale React closure causing custom mode creation to fail on first attempt.
  • macOS: Agent Storage Mutations Lost: Agent subprocess storage mutations (mode creation, settings, skills) were silently lost on macOS due to missing persistence bridge.
  • macOS: Clipboard Copy: Fixed clipboard copy failing silently in macOS WKWebView.
  • macOS: WASM/WebGPU in WKWebView: Forced WASM backend for TTS/STT and local ONNX paths in macOS native app — CDN cross-origin imports and WebGPU JSEP module imports fail in localhost WKWebView.
  • macOS: Transport Request Collisions: Fixed requestId collision breaking tool approval on macOS, plus improved MCP display names.
  • macOS: WhatsApp Auto-Reply: Fixed end-to-end wiring for WhatsApp auto-reply on macOS relay server, including thread visibility.
  • iOS: Voice Dictation Stuck: Fixed voice dictation stuck in recording state when stopRecording cleanup was bypassed.
  • Safari: Browser Commands Timeout: Fixed Safari browser commands timing out due to hanging WebExtension APIs after service worker suspension.
  • Safari: Heartbeat Stale Check: Skip heartbeat stale check for Safari HTTP-polling browsers to prevent false disconnects.
  • Server: Private Relay Stability: Fixed Durable Object hibernation, idle timeout (1006), reconnect delays, stale socket handling, and zombie readyState issues. Eliminated split-brain between serverState and ctx.state.
  • Server: Webhook Broadcast: Webhooks now broadcast to all server sockets after DO hibernation wake, working around zombie readyState.
  • Server: MV3 Messaging Race: Fixed lazy-init messaging bridge race condition on webhook arrival preventing MV3 service worker crashes.
  • Server: Webhook Verify CORS: Routed webhook verify test through server to avoid CORS rejection in browser.
  • Extension: Logout Cleanup: Sign out now correctly clears local relay server session on macOS, detecting localhost context.
  • Common: Security — Thread Isolation: State broadcasts now filter threads by current profile, preventing cross-profile data leakage.

Version 0.9.712 (March 26, 2026)

New Features

  • Common: WhatsApp Connection Diagnostics: Test Connection for WhatsApp now checks webhook subscription status and app secret validity in addition to API token, catching silent delivery failures from Meta.
  • macOS: Native OAuth Flow: macOS app now uses ASWebAuthenticationSession for OAuth instead of browser redirects, with automatic upgrade of stale connections lacking refresh tokens.

Improvements

  • Common: DOCX Search/Replace Robustness: Search and replace in DOCX documents now handles double spaces, non-breaking spaces, smart quotes, numeric entities, and case mismatches. Includes case-insensitive fallback when exact match fails and warnings when multiple instances are replaced.
  • Common: DOCX List Numbering: DOCX export now generates proper Word list numbering (w:numPr) instead of literal bullet characters, so Word recognizes numbered and bulleted lists correctly.
  • Common: Agent Startup Performance: Eliminated 30-50s agent startup delays caused by ghost MCP servers, HTTP readiness timeouts, and redundant model fetches. Model cache is now passed to agent subprocesses.
  • Server: Security Hardening: Command injection fix in URL handler, timing-safe token comparison, Content-Security-Policy header on relay server, rate limiting on session endpoint, CORS restricted to known origins, and parallel E2E broadcast encryption.
  • Server: Webhook Signature Verification: Webhook payloads now use base64-encoded raw body to prevent JSON round-trip corruption that invalidated HMAC signatures.
  • Server: OAuth Token Persistence: Fixed split-brain between server state objects that caused OAuth connections (Google Drive, etc.) to be lost after app restart.
  • macOS: Performance & Stability: Menu-driven tray polling (was unconditional 3s timer), debounced window state saves, non-blocking logging, WKWebView crash recovery with exponential backoff, and memory leak fixes for script message handlers.
  • macOS: Centralized Logging: Relay server output and app lifecycle events now log to ~/Library/Logs/PebbleFlow/ with 10MB auto-rotation, replacing silently dropped output.

Bug Fixes

  • Common: File Picker Instructions: pick_files tool now returns clear instructions for the user instead of a dead UI action signal that silently failed.
  • Server: Active Tab Poll Spam: Active tab polling in relay mode no longer generates endless timeout errors when no browser extension is connected. Uses exponential backoff (30s to 5min) on consecutive failures.
  • Server: CORS for Native App: Fixed 127.0.0.1 origin blocked by CORS whitelist, breaking Google OAuth from macOS native app's WKWebView.
  • Server: Orphaned Agent Processes: Agent subprocesses are now properly cleaned up on server shutdown and uncaught exceptions.
  • macOS: Browser Orchestrator Log Spam: Fixed "Unhandled message type" warnings for browser protocol messages in extension connections.

Version 0.9.711 (March 24, 2026)

New Features

  • Common: Auto-Save Settings: Settings fields now persist as you edit with a 500ms debounce for text fields and immediate save for toggles/selects, preventing data loss on crash or navigation.

Improvements

  • Common: DOCX Numbering Preservation: Tab characters in numbered DOCX sections (e.g., legal documents with "3.2.3 → Heading") are now preserved through the edit round-trip instead of being silently dropped.
  • Common: Smarter Tool Selection: The dynamic tool selector now handles factual queries (business hours, prices, addresses) that need web verification, instead of only matching strict trigger words.
  • Common: Agent Language Changes: Language changes initiated by the agent now apply immediately instead of requiring a manual settings toggle.
  • Common: Multi-Account OAuth Fallback: When the primary Google account lacks required scopes, connected secondary accounts are checked before prompting re-auth. Fixes uncaught errors when secondary account tokens expire.
  • Server: Mode Settings Validation: Server now validates tier permissions when saving settings, preventing free-tier users from persisting pro-tier settings.
  • Common: Security Hardening: DOMPurify sanitization on reasoning preview output, restricted CORS to known origins, HTTPS-first IP geolocation lookup, and tightened web_accessible_resources.

Bug Fixes

  • Common: Google Search Result URLs: Browser Google search now returns structured links with actual URLs. Previously, the agent needed 5 tool calls to extract URLs because AgentMarkdown lost link hrefs from Google's complex nested HTML — now links are extracted directly from the DOM and included in the first search result.
  • Common: Private Sync Infinite Loop: Fixed sync loop caused by manifest backup file writes continuously triggering re-sync. Empty settings objects now propagate correctly across devices.
  • Common: Messaging Bridge Updates: Inbound messages, agent replies, and relay-back responses now broadcast to the UI immediately instead of appearing only after the agent finishes responding.
  • Extension: Private Relay Reconnect: Fixed relay staying disconnected after MV3 service worker restart by falling back to stored enabled state. Also fixed self-replacement race during enable() and identity change reconnect.
  • Extension: Private Relay Race Conditions: Hardened enable/disable races, added unhandled rejection guards on messaging bridge callbacks, and fixed timer leak on settings panel unmount.

Version 0.9.710 (March 22, 2026)

New Features

  • Common: Zero-Day Risk (ZDR) Enforcement: Live ZDR data sync with an enforcement toggle for OpenRouter — view provider count breakdowns and block models flagged with zero-day risks.
  • Common: Tool Call Healing: Weak models that emit XML tool calls inside reasoning blocks are now automatically detected and healed, improving reliability across non-frontier models.
  • Common: Unified Token Lifecycle: Symmetric OAuth token refresh across all platforms (extension, server, macOS, iOS) via a unified TokenLifecycleManager, with proactive refresh before expiry.
  • iOS: Composer Icon Scaling: Composer action icons now scale 1.18x on iOS for better tap targets, with a dedicated native-ios body class for platform-specific styling.

Improvements

  • Common: Slate Proposed Changes: Navigation between proposed changes, hover-based accept/reject, and counter updates now work correctly in the Slate editor.
  • Common: Slate Selector Dropdown: The slate type selector now uses an inline dropdown instead of a portaled popover, fixing z-index and positioning issues.
  • Common: Propose Change Full Replacement: propose_change now allows full document replacement for small documents (500 characters or fewer) instead of requiring partial edits.
  • Common: Voice Send Waits for Transcription: Pressing Send/Enter while recording now waits for the transcription to complete before sending, preventing empty or partial messages.
  • Common: Private Sync Setup Flow: Passphrase dialog now auto-shows after OAuth during private sync setup, streamlining the onboarding flow.
  • Common: BYOA Registry Refresh: BYOA provider registry now re-initializes after private sync downloads new credentials, ensuring imported connections are immediately usable.
  • Common: Terminology Consistency: "Cloud Sync" renamed to "Private Sync" in user guide content with a terminology guard test to prevent regression.
  • Server: Private Relay Stability: Compatibility date updated, Durable Object crash handling improved, and MV3 reconnect logic hardened for reliable long-lived connections.
  • Server: Private Sync Settings Excluded: Private relay settings are no longer included in cloud sync payloads, preventing cross-device relay config conflicts.

Bug Fixes

  • Common: SVG Image Handling: SVG files are no longer sent as image_url to providers, which caused HTTP 400 errors on models that don't support SVG format.
  • Common: Private Sync Race Conditions: Fixed messaging relay failures caused by race conditions during private sync initialization. Sync loop and quarantine logic hardened.
  • Common: Private Sync Data Deletion: Cloud data deletion and audit now work correctly after disabling private sync.
  • Common: Model Matching Contamination: Fixed cross-family model matching in the auto-adjust system that could incorrectly map models across provider families.
  • Common: Dynamic Tool Selector: Hardened the dynamic tool selector prompt to prevent agent-like reasoning that could cause tool selection failures.
  • Common: Validation Error Messages: Required field validation now returns focused error messages instead of generic failures.
  • Extension: Private Relay WebSocket Drops: Fixed WebSocket connections dropping after ~60 seconds due to MV3 service worker suspension. Keepalive and reconnect logic improved.
  • Extension: Google OAuth Incremental Scopes: Fixed OAuth scope expansion using launchWebAuthFlow in extension context instead of failing silently.
  • Extension: Relay Toggle Settings Reload: Suppressed unnecessary settings reload when toggling the relay, preventing UI flicker and diagnostic noise.
  • Server: Durable Object Hibernation: Fixed WebSocket close handling after Durable Object hibernation that could leave connections in a stale state.
  • Server: Messaging Credential Persistence: Messaging credentials now persist immediately on change instead of waiting for the next save cycle.
  • iOS: Stale WebSocket Callbacks: WebSocket handlers are now cleared on close, preventing stale callbacks from firing after reconnection on iOS.
  • Desktop: NSIS Installer Upload: Windows NSIS installer now uploads correctly via API to draft releases.

Version 0.9.709 (March 21, 2026)

New Features

  • Common: Slack Messaging Adapter: New Slack Events API adapter for the messaging bridge with bot signature verification, media download support, and settings UI configuration.
  • Common: Slate File Roundtrip: Open and save local files directly in Slate with filesystem handle persistence and hash-based dirty tracking. New "Load File" button in the slate selector dialog preprocesses documents and opens them with the correct editor.
  • Common: Slate File Menu Restructure: File type menu reorganized into Documents, Renderable (HTML/Vega/Mermaid), and Code & Data categories with auto-detection on rename.
  • Common: Remote Browser App: Remote browser clients can now fetch sidepanel assets via the private relay, enabling browser-based access without the extension installed.
  • Common: Device Identity in Private Relay: Relay clients now show a human-readable device name. When displaced by another device, the UI shows which device replaced you.
  • Common: Composer Mic Chip Redesign: Microphone button redesigned as a visible chip/pill with clear recording state indicator, 44px minimum touch targets for mobile, and voice overlay rendered over the input area.
  • Common: User Guide Link: User guide now linked from the Documentation & Legal settings section.
  • iOS: BYOA Setup Gate: BYOA wizard on mobile now shows a message directing users to set up Private Apps on desktop, since the 8-step browser flow is unworkable on mobile.
  • Server: Login Challenge: Email-based 6-digit MFA verification for login, with consent tracking and session revocation.

Improvements

  • Common: Private Sync Settings-First: Settings now sync before conversations, ensuring tokens and config are available immediately while bulk thread sync continues in the background.
  • Common: WebSocket Request Correlation: WebSocket and private relay transports now properly await server responses instead of resolving immediately, fixing 40+ UI operations on macOS sidepanel and relay clients (Drive audit, Ollama test, MCP operations, etc.).
  • Server: Webhook Signature Verification: Webhook signature verification moved to route-level app secret for cleaner architecture.

Bug Fixes

  • Common: WhatsApp Response Delivery: Fixed agent responses being silently swallowed instead of sent back to WhatsApp. The messaging relay-back path now logs diagnostic details when delivery fails, making future issues immediately diagnosable.
  • Common: Thinking Block Signatures Across Models: Fixed "Invalid signature in thinking block" errors when switching from a non-Claude model to Claude with thinking mode. Reasoning format detection now defaults to 'unknown' instead of misidentifying as Anthropic format.
  • Common: Slate Editability for New Documents: New DOCX, PDF, RTF, and XLSX slates now correctly open in their editors instead of rendering as static HTML.
  • Common: Slate Export Fallback: New documents without original binary data now export gracefully — XLSX falls back to CSV, RTF to HTML conversion, PDF to browser print.
  • Common: Sandbox Preview Rendering: Fixed blank HTML and Vega previews caused by sandbox origin mismatch in postMessage targeting.
  • Common: Track Changes Column Offsets: Deletions in tracked changes now correctly map HTML-to-text offsets, fixing mispositioned changes in TipTap.
  • Common: Private Sync Auth Recovery: Expired or revoked OAuth tokens during sync now auto-trigger re-authorization instead of requiring manual reconnect.
  • Common: Voice Streaming Draft Indicator: Voice transcript overlay now shows "Preview" status with reduced opacity to signal the text is interim until recording stops.
  • Common: MCP Tools on Native Platforms: Local MCP server tools are now properly registered on macOS, Windows, and Linux — previously the handler started the MCP process but never fetched or registered its tools.
  • Common: Slate Context Chip Update: Active tab context chip now refreshes from storage when a slate tab's title changes after loading from Drive or GitHub. Dark mode title input text is no longer unreadable.
  • Extension: Chrome Stub Polyfill: Chrome browser tabs at localhost with window.chrome but no extension APIs now get proper stub injection instead of being skipped.
  • Extension: Relay Client Bundle Crash: Fixed import.meta.env crash in relay-client IIFE bundle by defining build-time environment variables.
  • Extension: Remote App Login: Remote browser app login cleaned up with Google OAuth as the primary method and email/password as a collapsed secondary option.

Version 0.9.708 (March 19, 2026)

Improvements

  • Common: Generating Indicator Coordination: Per-message typing dots now coordinate with the thread-level fallback indicator, eliminating duplicate bouncing dots during generation. Dots now persist during reasoning and tool execution phases, only hiding once the final answer starts streaming.
  • Common: Streaming Cursor: A blinking cursor now appears at the end of streaming text, providing a clear visual indicator that the response is still being generated.
  • Common: Reasoning Preview Formatting: Collapsed reasoning blocks now render inline bold and italic formatting instead of raw markdown syntax.
  • Common: Slate Document Listing: list_slates now correctly shows content size for DOCX, PDF, and XLSX files that were loaded via lightweight thread queries. Listings also include workflow guidance for editing DOCX and XLSX documents.
  • Common: Private Sync Settings Section: Private Sync settings are now in their own dedicated section for clearer organization, separated from general settings.
  • Extension: Connections Settings Restructured: The Private Relay section is reorganized into two clear subsections — Private Relay (remote access toggle, always visible) and PebbleFlow Bridge (local MCP servers and system tools). The remote access toggle no longer requires the Bridge to be running.
  • Desktop: Tauri Unified Binary: Windows/Linux desktop app consolidated from compile-time variants into a single binary with runtime tier gating — sidepanel visibility determined by subscription tier at runtime.

Bug Fixes

  • Extension: Private Relay Without Bridge: Private relay now connects independently without the PebbleFlow Bridge app. Previously, authentication was only initialized by the Bridge connection, leaving extension-only users (including Linux/Windows) unable to receive messaging webhooks or use remote access.
  • Extension: Google OAuth Routing: Fixed OAuth popup failures on Chrome by skipping getAuthToken when unavailable and falling back to BYOA credentials. COOP popup resilience prevents blank windows on restrictive sites.
  • Common: ElevenLabs Streaming STT: Fixed voice transcription dropping or failing when ElevenLabs streaming encounters connection interruptions. Native app voice input now falls back gracefully.
  • iOS: External Links in WKWebView: Links that should open in Safari now correctly open externally instead of loading inside the app's WebView.
  • Common: Ad-Blocker Orphaned Rules: Fixed dynamic DNR ad-blocking rules persisting after service worker restarts. disableAllBlocking now directly queries and removes orphaned rules even when the blocker instance is null.
  • Common: License Sync on Profile Switch: Switching profiles now syncs the license from the server, ensuring tier-gated tools refresh immediately instead of requiring a restart.
  • Common: Token Refresh Before Provisioning: Expired OAuth tokens are now refreshed before provisioning API keys, preventing silent failures. Fresh servers can now adopt existing identity connections.
  • Web: Mobile Menu on iOS Safari: The hamburger menu on the marketing website is no longer transparent on iOS Safari.
  • Common: React-18 Batching Race: Thread-level generating indicator added as a fallback for cases where React-18 state batching prevented per-message typing dots from appearing.

Version 0.9.707 (March 17, 2026)

Improvements

  • BYOA Reconfigure Pre-Fill: Reconfiguring an existing Google or Microsoft Private App now pre-fills the client secret and tenant ID, so you don't have to re-enter them.
  • Model List Sorting: Models within each provider group now sort by release date (most recent first), ensuring consistent ordering across platforms.

Bug Fixes

  • Private Sync Auth Recovery: OAuth token failures (expired sessions, revoked tokens, Chrome profile tokens) during private sync initialization now surface correctly to the UI instead of silently entering an error state.
  • Slate Tracked Changes Reliability: 10 trust-critical fixes for tracked changes — revision merge race condition, diff base persistence across all update paths, DOCX export formatting preservation, HTML tag stripping for TipTap matching, accept/reject-all ordering, and convergence fixes for entity escaping and tag regex matching.
  • Slate Data Integrity: Fixed pasted images writing to a dead local cache, cloud source metadata not persisting, and BroadcastChannel fallback for live AI updates in relay/mobile mode.
  • Slate Security: Fixed XSS injection in image viewer and replaced wildcard postMessage origins with scoped extension URLs.

Version 0.9.706 (March 16, 2026)

New Features

  • Provider Error Banners: When an AI provider returns an error (402 payment required, missing API key, rate limit), an actionable banner now appears with clear instructions instead of a generic failure message.

Improvements

  • DOCX Cross-Span Editing: The propose_change tool now correctly handles search/replace operations that span across multiple formatting runs (e.g., partially bold text). Intent is passed through so the agent can make contextual edits.
  • PDF Save Performance: Native PDF save is significantly faster — redundant parsing eliminated, import modules cached, and unnecessary operator cleaning skipped.
  • Mode Name in Messaging: The messaging settings mode selector now displays the mode's branding name instead of the internal ID.

Bug Fixes

  • Google OAuth Token Refresh: Fixed "Unauthorized" errors when refreshing Google OAuth tokens that could block Calendar, Gmail, and Drive access.
  • Provisioned Key Error Message: Users with provisioned API keys no longer see a misleading "Add funds" error — the message now explains the actual issue and next steps.
  • Concurrent Thread Race Condition: Fixed a race where switching threads during generation could cause GENERATION_COMPLETE/ERROR events to apply to the wrong thread.
  • Revision History Restore Button: The restore button in Slate's revision history now correctly appears when the current content has diverged from the selected revision.
  • Double OAuth Popup: New Chrome extension users no longer see two OAuth popups when signing in for the first time.

Version 0.9.705 (March 15, 2026)

New Features

  • Settings Category Grouping: 19 settings sections are now organized into 5 collapsible categories for progressive disclosure. Agent Modes section shows cross-cutting indicator with navigation links to affected sections (Tool Config, Model Config, Appearance). API Provider section opens by default with model capability warning.

Bug Fixes

  • Agenda Sync Duplicate Calendars: Google Calendar accounts no longer appear twice in the Sync tab when both a login (identity) connection and a Private Connection exist for the same email. Connections are now deduplicated before rendering.
  • i18n Settings Categories: Settings category labels are now translated across all supported languages.

Version 0.9.704 (March 14, 2026)

New Features

  • Microsoft 365 Integration Foundation: Microsoft scope routing, Graph API client, and account service with BYOA support. Scope hierarchy definitions and tool-scope registry extensions for Microsoft provider. Microsoft added as a relay-proxied provider.
  • Rich Inline Rendering (RIR): New codec architecture for rendering rich content inline in chat messages. Includes HTML, Markdown, and DOCX codecs with an extensible codec interface.
  • PDF Structure Tree & Layout Analysis: Tagged PDF structure tree parser for semantic document understanding. Heuristic paragraph grouping for untagged PDFs provides fallback layout analysis. Image replacement/insertion and content overflow detection.
  • Messaging Mode Selection: Messaging bridge settings now include a default mode selector, letting the agent respond in the right personality when handling inbound messages.

Improvements

  • Provider Rate Limit Retry: All LLM providers now automatically retry on 429 (rate limit) and 529 (overloaded) responses with exponential backoff, instead of immediately failing. Up to 3 retries with jitter.
  • Google OAuth Scope Superset Matching: Write scopes now satisfy read scope requirements (e.g., drive covers drive.readonly). Prevents unnecessary re-authorization when a broader scope is already granted.
  • BYOA Full-Scope Initial Auth: When a Private Connection is needed, the initial auth flow now requests all necessary scopes upfront instead of prompting twice (once for basic, once for expanded).
  • Google 404-to-Expanded-Access Promotion: When a BYOA connection gets a 404 on a Google Workspace file, the error is promoted to an expanded access prompt instead of a dead-end error message.
  • Messaging Credentials Private Sync: Messaging bridge credentials now sync across devices via E2E encrypted private sync instead of being device-specific. Sync manifest bumped to v10.
  • OAuth Wait Extended Timeout: BYOA and expanded access OAuth flows now get a 5-minute timeout (up from 2 minutes), giving users enough time to complete Google Cloud Console steps.
  • Sparkle Framework Signing: macOS distribution builds now properly sign Sparkle framework nested binaries in inside-out order, fixing notarization failures.
  • Tauri Node Binary Bundling: Tauri configs now bundle the Node.js binary as a resource for Windows/Linux sidecar execution.
  • Messaging Settings Search: Messaging bridge section is now discoverable via the settings search bar with keywords like "whatsapp", "telegram", "webhook".
  • Settings Relay Forwarding: Settings saves are now forwarded to the relay server via WebSocket bridge, ensuring messaging credentials and other config changes reach the server's state file.

Bug Fixes

  • Slate Currency vs Math: Dollar amounts like $9/mo in markdown tables are no longer misinterpreted as LaTeX inline math delimiters. The math regex now respects escaped currency dollars.
  • Conversation Page ToastProvider: Pop-out conversation tabs were missing ToastProvider, causing toast-dependent features to silently fail. Provider tree now matches sidepanel.

Version 0.9.703 (March 14, 2026)

New Features

  • Google Picker Integration: Full Google Drive file picker with popup/iframe hybrid, multi-view filters (Docs, Sheets, Slides, PDFs), and drive reference chips in the composer. Files picked through the Google Picker are automatically granted drive.file access.
  • Google Sheets Native Sync: Open Google Sheets in Slate with full cell-level round-trip editing. The Sheets codec converts spreadsheet grid data to TipTap HTML tables and back, with conflict detection via Drive modifiedTime. Supports reading, batch cell updates, and structural changes (add/delete sheets, merge cells).
  • Google Slides Read-Only View: Google Slides presentations render in Slate with slide thumbnails and extracted text content for searchability.
  • Gmail Batch Fetch & Markdown Conversion: Gmail tool now fetches message metadata in batches (up to 100 at a time) instead of one-by-one, with a 5-minute label name cache and automatic HTML-to-markdown body conversion for cleaner LLM consumption.
  • Selection Overlay: "Add to prompt" button appears when selecting text on any webpage, letting you quickly add selected content to the conversation.
  • Relay Overlay Manager: Agent overlay commands now route through the browser extension, enabling agent-driven UI overlays on the active webpage.
  • Inline Quick-Tasks Model Picker: Quick tasks model selection is now embedded directly in the model picker dropdown instead of a separate menu.
  • Slate DOCX Export from Google Drive: Google Docs loaded in Slate now export as DOCX (via readFileContentAsBinary), activating the full TipTap visual editor with tracked changes instead of opening as plain markdown.
  • Private Connection Setup Wizard: Improved BYOA wizard with a dedicated "Add Test User" step matching the current Google Cloud Console flow. Consent screen substeps now follow Google's actual 4-step accordion. Email instructions are personalized when the user's identity is known.
  • Private Connection Promotion Banner: When the agent needs expanded Google scopes (Gmail, Calendar, etc.) and no Private Connection exists, an animated banner appears with a one-click path to the setup wizard. The agent stays paused while the user completes setup and automatically resumes when the connection is saved.
  • Export Fidelity Warnings: Before exporting a document to a different format (e.g., PDF to DOCX), a fidelity dialog warns about potential formatting losses with severity-categorized items (info, warning, critical).
  • PDF Annotation Extraction: PDF text annotations and markup are now extracted and preserved during document processing and reconstruction.
  • Reminders Calendar Sync: Reminders modal now supports calendar sync with expanded access gating.

Improvements

  • Google Docs Sync Fidelity: Improved formatting span extraction with proper tag matching (handles self-closing tags, mismatched nesting) and conflict detection for concurrent edits.
  • Private Sync Account Mismatch Detection: The sync settings account dropdown now detects when the configured sync email doesn't match any connected Google account and shows a "not connected" indicator with the option to switch.
  • Teams/Enterprise Effective Tier: License validation now uses effectiveTier from team/enterprise delegation, ensuring correct feature access when a user's tier is inherited from a team plan.
  • "Private App" renamed to "Private Connection": All user-facing references now use "Private Connection" instead of "Private App" — clearer for non-developers who don't associate OAuth integrations with "apps".
  • Google OAuth Scope Alignment (drive.file): All elevated Google Drive scopes (drive, drive.readonly, documents.readonly, spreadsheets.readonly, presentations.readonly) are now replaced with the narrower drive.file scope for non-BYOA users, matching Google's verified app requirements. BYOA users retain full scopes.
  • Gmail Permissions Visible in Scope Selector: Gmail read, compose, and modify scopes are now visible to all users in the Google Permissions editor under "Highly sensitive permissions" instead of being hidden behind BYOA-only. These scopes are approved on the consent screen and requested via JIT when Gmail tools need them.
  • Google Picker Consent Recovery: When Google permissions are revoked externally (e.g., from Google Account settings), the app now auto-detects stale scopes, invalidates them, re-authorizes, and retries — instead of silently failing with 403 errors.
  • Agent Google Drive Guidance: Tool error messages and empty-result hints now instruct the agent to tell the user to click the + button in the composer and select Google Drive, instead of suggesting unavailable tool actions.
  • Slate Drive Picker Simplified: Slate's "Load from Google Drive" now loads files directly, skipping the sidepanel-style "Work with in Drive" vs "Add to conversation" choice screen.
  • Official Google Drive Logo: Drive chips and the attachment menu now use the official Google Drive logo instead of the generic green triangle.
  • Unified Model Picker: Helper model selection falls through to the default model, with a single consolidated model dropdown.
  • DOCX Non-Text Element Passthrough: DOCX reconstruction preserves non-text elements (images, charts, embedded objects) that aren't part of the text editing flow.
  • PDF Multi-Segment Line Editing: PDF WYSIWYG editor handles lines split across multiple text segments.
  • Auth Rate Limit Increased: Auth endpoint rate limit raised from 10/min to 30/min to accommodate rapid OAuth token exchanges during BYOA setup.
  • OAuth Token Endpoint Reclassified: OAuth token exchange moved from auth rate limit bucket to general, preventing throttling during multi-scope authorization flows.

Bug Fixes

  • iOS Modal Stacking: Fixed crash when presenting file pickers or slate overlays while another modal (e.g., browser overlay) was already showing. Pickers and overlays now present on the topmost view controller.
  • Slate Line Range Validation: get_slate_content now returns a clear error when startLine is beyond the document length instead of silently returning empty content.
  • Server Path Traversal: Storage keys are now validated against directory escapes, preventing path traversal attacks on the sync storage endpoint.
  • Ad Blocker Regex Cap: DNR converter now caps regex rules at Chrome's 1000-rule limit and drops large bounded quantifiers that exceed RE2's memory limit, preventing extension install failures.
  • OAuth Timeout on Expanded Access: Fixed 120-second timeout when the agent needs expanded Google scopes (Gmail, Calendar). The pending OAuth wait now extends to 5 minutes for BYOA setup, and completing the connection in settings automatically resumes the paused agent.
  • Chat UI Freezes: Fixed overlapping async intervals and silent broadcast errors that could freeze the chat interface.
  • Cloud Sync Download Batch: Fixed TypeScript null-check errors in the cloud sync download batch handler.
  • Service Worker Dynamic Imports: Converted dynamic imports to static imports for Chrome MV3 service worker compatibility.
  • BYOA-Only Scope Enforcement: convert_to_google_doc and convert_to_google_sheet actions now correctly require only drive.file instead of broad editor write scopes.
  • Drive Chip Format: Three-segment format for drive reference chips with proper BYOA-only scope gating.
  • Google Picker CORS: Picker now hosted on the private relay to resolve cross-origin issues with the popup scope flow.

Version 0.9.701 (March 6, 2025)

Improvements

  • Ollama Context Window Indicator: Context window usage circle now renders for Ollama models by querying the /api/show endpoint for num_ctx, instead of relying on OpenRouter's model list which doesn't include local models.
  • Ollama Tool Calling: Fixed dynamic tool selection for Ollama — passes tool_choice through to the API (supported since Ollama v0.5.1), disables think mode when tools are active to prevent corrupted JSON, and falls back to a lightweight non-streaming helper model when the primary model doesn't support tool calling.
  • OpenRouter Reasoning Cache: Fixed reasoning text being cleared prematurely by the streaming provider. Cache lifecycle is now owned by agent-runner at iteration boundaries, consistent with Anthropic and Google providers.
  • PDF WYSIWYG Reliability: Global text alignment handles PDF.js splitting operators across multiple TextItems. Block editing disabled on unmatched spans (annotation/header text) to prevent export errors. CMap 2-byte decoding no longer corrupts Word-generated PDFs with 1-byte ASCII fonts. Operator matching bounds check prevents out-of-range indices on empty text items.
  • Desktop Platform Detection: Dynamic tool selector uses localFolderSync capability instead of pebbleflowReminders for desktop detection, and appleScript/appleNotes instead of Calendar/Reminders for macOS detection (Calendar/Reminders are cross-Apple via EventKit).

Version 0.9.700 (March 5, 2025)

New Features

  • File Manager: Full file management system with nested folders, user tags, starring, and a dedicated File Manager UI. Organize attachments into folder hierarchies, filter by type (screenshots, AI images, photos), search, sort, and view files in grid or list mode. Thread auto-tagging links files to conversations. Private sync support via manifest v9.
  • Local Folder Sync: Bidirectional sync between local filesystem folders and the File Manager. Mutation-driven resync automatically propagates deletes, bulk deletes, and moves to disk with a 2-second debounce. Subfolder move detection relocates files on disk when reorganized in PebbleFlow. Navigating into any subfolder within a sync tree triggers auto-resync.
  • Cross-Filetype Tracked Changes: Unified accept/reject workflow across DOCX, PDF, and Markdown. DOCX edits are now recorded as tracked changes with the same diff engine used by Markdown and code slates. PDF tracked changes integrate with the visual editor. resolve_tracked_changes action lets the agent programmatically accept or reject revisions.
  • PDF WYSIWYG Editing: Direct text editing on rendered PDF pages with document-matched styling. Text layer links edits to source content-stream operators via textItemIndex for surgical reconstruction on export. Includes plainText baseline for change detection.
  • DOCX Rendering Fidelity: Rich DOCX preview with paragraph alignment, hyperlinks, font color/size, line spacing, indentation, and table cell shading. Code view shows markdown conversion for token-efficient LLM consumption.
  • Universal Messaging (internal testing only): Send and receive messages through WhatsApp, Telegram, and Slack with local-first privacy. The agent can compose and send messages, list conversations, and reply to threads — all routed through your own device.
  • Google Meet Integration: Multi-action meeting recall tool with list_meetings (discover recent meetings with date range filtering) and get_meeting (fetch transcripts). Threaded through the full OAuth/JIT/scope-approval pipeline with credentials vault support.
  • Gmail Send Email: Direct email sending via Gmail API, gated behind high-risk tool approval. Per-action risk level overrides allow send_email to require explicit confirmation while draft actions stay at medium risk.
  • Microsoft BYOA: Bring Your Own App support for Microsoft 365. Register Azure AD app registrations for Microsoft OAuth connections. Multi-provider BYOA registry (Google + Microsoft) with tenant ID support and a 3-step Azure Portal setup wizard.
  • Poe Provider: New LLM provider integration for Poe, with model listing, provider-grouped model selector, vision/tools/reasoning capability detection, and pricing display.
  • What's New Dialog: API-served content pipeline delivers release notes and user guide pages. Async what's-new dialog shows version highlights on update.
  • Private Sync Account Selector: Choose which Google account to use for private sync, instead of defaulting to the primary account.
  • Native TipTap Diff Marks: Replaced the separate marked.js rendering overlay for AI revision previews with native ProseMirror marks (DiffAdded/DiffRemoved). Revisions now render as inline tracked changes with consistent typography, plus chunk-level accept/reject targeting.
  • Mermaid Diagrams: Live Mermaid diagram rendering in code blocks within Slate's TipTap preview mode.
  • Fuzzy Section Search in Help Tool: Help tool now supports fuzzy matching when searching for specific sections within documentation pages.

Improvements

  • File Manager UX Polish: Folder sync icon indicators, delete confirmation dialogs, shift-click range selection, toolbar wraps instead of overflowing at narrow widths, and fixed tag persistence across reloads.
  • Responsive Composer Layout: Three-zone flex layout prevents the new-thread button from being pushed off-screen at narrow widths. Mode and model selectors use staggered text-hiding breakpoints. Custom agent and AI chip icons replace generic defaults.
  • Settings UX: Reordered sections for better flow (Personalization → Credentials → Tool Approvals → Agent Modes → Tool Configuration → Skills Library → Tool Servers → Document Processing → Voice).
  • Revision State Integrity: Fixed corruption when deleting large content blocks during active AI revisions — sourceContent immutability, chunk relocation threshold raised to 0.7, stale chunks auto-rejected, and version history integrity checks.
  • Agent Loop Reliability: Fixed abort controller race condition where old runs could delete new run's controller. Cancel signal now propagates into queued tools. Orphaned running states broadcast errors instead of leaving blank messages.
  • Interjection Handling: Unified getActiveBranchMessages traversal on server and UI to skip interjections consistently. Fixed response disappearing after follow-up when streaming parentId pointed at the interjection instead of the user message.
  • macOS Native Stability: Fixed restart race condition with process epoch tracking, URLSession leak on reconnect, and LineBuffer data race between pipe handler and stop.
  • Google Sheets Fix: create_table now writes column header names instead of leaving the first row blank.
  • Middleware Cleanup: Extracted requireAuth middleware from 10 inline auth checks across apple-routes, mcp-routes, and attachment-routes.
  • Image Type Filtering: File Manager distinguishes screenshots, AI-generated images, and user photos with separate filter options and distinct icons.
  • Mode/Model Picker Parity: Equalized font weight and icon stroke between mode picker and model picker.
  • Beta Tier Gating: Credentials vault gates beta features behind tier checks.
  • CIDFont Re-Encoding: PDF reconstruction supports CIDFont encoding with ToUnicode CMap tables and identity fallback for characters not in the map.
  • PDF Export Renamed: "Download" renamed to "Export" across the PDF workflow for clarity.

Bug Fixes

  • PDF Text Disappearing: Fixed PDF view text vanishing on blur and garbled content when exporting from WYSIWYG editing.
  • PDF Tracked Changes Routing: Prevented PDF tracked changes from routing through the unified diff engine, which corrupted PDF-specific operator data.
  • PDF Export Integrity: PDF download now fails loud with diagnostics instead of silently falling back to markdown export.
  • Markdown Table Line Breaks: <br> tags in markdown tables now render as actual line breaks instead of literal text.
  • DOCX Tracked Deletions Preserved: Fixed DOCX tracked deletions being stripped when toggling between visual and code view.
  • Tracked Changes on Stored Markdown: Fixed propose_change on markdown slates showing no redlines when loaded from storage.
  • Reject Reverts Content: resolve_tracked_changes with reject now properly reverts content for markdown and code slates.
  • Slate Save Loop: Fixed infinite save loop triggered when track changes was active.
  • Messaging Stability: Fixed routing, reply threading, profile handling, queue resilience, webhook signatures, sender sanitization, and payload limits.

Version 0.9.662 (February 27, 2025)

New Features

  • Bring Your Own App (BYOA): Use your own Google OAuth credentials instead of PebbleFlow's built-in app. Multi-app support lets teams share a single OAuth client across the organization while keeping individual API keys. BYOA connections auto-detect stale tokens and prompt reauth.
  • Wikilink Navigation: Obsidian-style double-bracket wikilinks between Slate documents for building interconnected knowledge bases. Click a wikilink to navigate between Slates instantly.
  • Skills Menu: Tab-to-use skill insertion, dynamic height dropdown, inline editing with variable chips, and a shared SkillForm component for full CRUD from the composer.
  • DOCX Download: Download Slate markdown and text documents as DOCX files with tracked changes preserved.
  • Table Auto-Populate: insert_component now auto-fills table cells from structured data, eliminating empty placeholder tables.
  • Gemini 3.1 Flash: Added as an image generator model option alongside existing Gemini, FLUX, and Seedream models.
  • Google Drive Save for All Accounts: Save to Google Drive is now available for any connected Google account, not just the primary one.
  • Unified Diff Engine: Complete rewrite of Slate's change-tracking diff system (phases 0–7) with TOCTOU safety, caching, per-change accept/reject widgets, and mobile tap-to-toggle support.

Improvements

  • Adaptive Private Sync: Sync polling rate adjusts dynamically based on activity. Download-only lock optimization reduces contention.
  • OAuth Email Capture: Google OAuth always includes identity scopes so the user's email is captured on every connection, fixing blank emails on some accounts.
  • Security Hardening: Hardened OAuth PKCE flows, agent subprocess boundaries, and per-account brute-force lockout for repeated failed authentication attempts.
  • Browser Chip Layout: Browser selector chips are smaller and wrap instead of overflowing the container.
  • Registry-Driven Image Providers: Replaced hardcoded image provider list with a dynamic registry, making it trivial to add new models.
  • Content i18n Pipeline: Unified hash-tracked content sync for all documentation pages with incremental translation support.

Bug Fixes

  • Math Expressions in Preview: Fixed math expressions being corrupted when switching from TipTap preview to code view.
  • Wikilinks in Preview: Fixed wikilink syntax being stripped when toggling between TipTap preview and code view.
  • Thread Messages Disappearing: Fixed thread messages being stripped by STATE_PATCH or vanishing when switching models mid-conversation.
  • Interjection Orphans: Fixed orphaned parentIds after interjection message filtering causing render errors.
  • Private Sync Infinite Loop: Resolved infinite sync loop caused by concurrent collection item clock conflicts and thread_data_ prefix pollution.
  • BYOA Edge Cases: Fixed BYOA config not restoring on clear, async save races, extension using dead localhost popup instead of launchWebAuthFlow, and stale issuedByClientId precedence.
  • Private Sync Scope Recovery: Fixed private sync unlock failing silently when Google Drive scopes were expired or missing.
  • Duplicate Skills: Prevented duplicate skills from appearing after private sync merges.
  • Tracked Changes Routing: Wired get_tracked_changes and get_comments into SlateTool action routing so the agent can read revision state.
  • DOCX Download Source: Fixed downloadAsDocx using stale artifact contents instead of live editor state.
  • Smart Model Name Abbreviation: Fixed long model names overflowing the compact picker with intelligent abbreviation.
  • Markdown Link Rendering: Fixed chrome-extension: and pebbleflow: URLs being blocked in rendered markdown links.
  • Thread Creation Speed: Halved thread creation time by eliminating redundant settings cascade lookups.
  • Chrome Tab Title: Restored dynamic Chrome tab title based on the active conversation thread.
  • Adaptive Greeting Tokens: Bumped max_tokens for adaptive greetings to prevent truncation with reasoning models.

Version 0.9.661 (February 25, 2025)

New Features

  • Agent Interjection: Guide the AI mid-run by typing a message and pressing Enter while it's working. The agent sees your guidance at its next decision point and adjusts course — no need to cancel and restart. An amber-badged send button appears alongside the stop button when you have text to send.
  • API Tool Management: The API integration tool now supports save_tool, list_tools, and delete_tool as first-class actions, making it easy to manage agent-discovered APIs directly from conversations. Free users see GET and list_tools; Pro users get the full set.
  • Live Token Counter: Token and cost usage now updates in real time during streaming, displayed in each message footer. Specialized costs (image generation, web search) fold in incrementally as each tool completes.
  • Auto-Expand Tool Cards: Tool cards automatically expand when they start receiving streaming arguments or need approval, and auto-collapse on successful completion. Errors and denied tools stay expanded for review.
  • Monaco Diff Editor: Slate code revisions now use Monaco's native inline diff editor with per-change accept/reject buttons, replacing the previous custom decoration system.

Improvements

  • Private Sync Auth Recovery: Private sync errors from expired or revoked Google tokens now show actionable "Reconnect Google" and "Grant Permissions" buttons instead of a passive error message. Reconnection requests the correct Drive permissions and pre-selects the right Google account.
  • Private Sync Multi-Account: Private sync now authenticates against the Google account matching the config email instead of falling back to whichever account was connected first. Fixes syncing to the wrong Drive when multiple Google accounts are connected.
  • Brand Refresh: New river blue and rock grey color palette derived from the PebbleFlow logo, replacing the previous purple theme across the entire app and website.
  • OAuth Security: Google, GitHub, and Slack OAuth client secrets removed from the extension package. Token exchange now routes through a secure Cloudflare relay proxy, eliminating secrets from client code.
  • Faster Startup: Attachment content (images, extracted text) is now loaded on demand instead of at boot, significantly reducing initial load time for conversations with many attachments.
  • Faster Streaming: Context window usage now streams via the fast broadcast path instead of round-tripping through storage, giving real-time updates without async I/O per agent loop.
  • Private Sync Speed: Google Drive file ID cache is persisted across restarts, eliminating a full file listing API call on first sync cycle.
  • Unified Streaming Render Path: Streaming and final content now flow through a single render path, eliminating the flash when generation completes and preserving interjection messages.
  • Cross-Model Switching: Switching between AI providers mid-thread (e.g., Gemini to Claude) no longer causes "Invalid signature in thinking block" errors. Foreign reasoning artifacts are automatically flattened to narrative text, preserving context without incompatible cryptographic signatures.
  • Disabled Tool Guidance: When the AI tries to use a disabled tool, it now receives actionable suggestions (similar enabled tools, how to enable) instead of a generic "not found" error.
  • Responsive Composer Layout: Composer toolbar uses staggered progressive disclosure — mode selector, model selector, settings, agenda, and help icons appear as space allows instead of being clipped.
  • Settings Color Coding: Settings sections now use a 3-color system — accent tint for customization sections, alternating neutrals for the rest — for clearer visual grouping.
  • Onboarding Errors: Free key provisioning now shows descriptive error messages below action buttons instead of silently failing.
  • AI Provider Settings: Renamed "API & Provider" section to "AI Provider" for clarity.
  • Extended Free Trial: Pro trial period extended from 7 days to 14 days, giving new users more time to explore Pro features.
  • Optimistic Branch Switching: Switching between message branches and reloading messages now updates the UI instantly instead of waiting for storage round-trips.
  • MCP Tool Configuration: Schema auto-correct and improved MCP tool configuration for more reliable tool setup.

Bug Fixes

  • Per-Message Costs: Individual message costs now cumulatively match the thread header total. Helper, OCR, image gen, and search costs are attributed to individual messages instead of only the thread summary.
  • Interjection Rendering: Interjection messages now render as compact amber annotations inline in the assistant timeline instead of being lost when generation completes.
  • Loop Detection: Fixed false-positive repetition detection on citation-heavy responses where URLs naturally repeat 3+ times.
  • Slate Diff Alignment: Fixed redline/greenline misalignment in preview mode for multi-line chunks where the overlay loop advanced by only 1 line regardless of chunk span.
  • Slate Deletion Positions: Fixed double-counting of insertion shift causing deletions to render after their paired insertions instead of before.
  • Private Sync Fixes: Fixed JIT scope request not firing across code-split chunks and infinite sync loop after uploads.
  • Onboarding Flow: OAuth flow now completes onboarding properly, hyphenated mode IDs are supported in trigger detection, and 0 days remaining no longer coerces to null.
  • Password Reset: Resetting password via email link now verifies the email address. Added resend-verification endpoint for users with expired verification emails.
  • License Tier: Users with admin-granted tier but no license row are no longer stuck on the upgrade gate.
  • Settings Scroll: Clicking the brain icon for a learned page now scrolls to the correct settings section instead of stopping short due to lazy-loaded sections above.
  • Monaco Disposal: Fixed diff editor model disposal order to prevent dangling references and Monaco showing through TipTap preview.
  • Walkthrough Targeting: Walkthrough steps now skip elements hidden by responsive container queries instead of spotlighting a 16x16 pixel at the top-left corner.
  • Kokoro TTS: Fixed text-to-speech broken in the extension — ONNX runtime detection failed in offscreen documents, causing "no available backend found" errors.
  • Custom API Tool Save: Fixed saving agent-discovered APIs as custom tools crashing in the extension due to forbidden dynamic import() in Service Worker context.
  • Boot Performance: Fixed session migration running on every settings access (20+ times at boot), causing unnecessary disk writes and slower startup.
  • Duplicate Storage Broadcasts: Suppressed double storage change notifications in relay/server mode that could cause UI flicker.
  • Cairn Texture Recovery: Fixed texture generation failing when the in-memory world cache was evicted between load and render, and fixed renderer showing black for attachment-backed textures.
  • Security Patches: Updated fast-xml-parser (DoS via DOCTYPE entity expansion) and tar (hardlink escape vulnerability).
  • MV3 Compliance: Replaced CDN-loaded vega-embed with local vendor bundles, ensuring all chart rendering code passes Chrome Web Store remote code policy.
  • Vega-Lite Charts: AI now generates Vega-Lite visualizations directly in Slate instead of CDN-loaded HTML, enabling interactive charts without remote script dependencies.
  • Google Drive Save: Fixed 403 errors when saving to Google Drive from Slate caused by stale OAuth scope checks in non-agent Drive handlers.
  • New User Onboarding: Fixed onboarding screen being skipped entirely for new users when an API key was auto-provisioned during login.
  • OpenRouter OAuth Popup: Fixed "Connecting..." spinner stuck indefinitely when popup blockers silently killed the OAuth window.
  • Trial Banner Copy: Trial banner no longer claims models are gated by tier — updated to accurately describe Pro features (write access, image generation, custom modes).
  • DOCX Review Toolbar: Fixed toolbar flickering when showing document review controls by deferring scroll until initial visibility.
  • Add to Prompt Overlay: Fixed overlay logo blocked by Content Security Policy and background opacity not matching theme.
  • Message Edit/Reload State: Fixed in-memory state going stale after editing a message, reloading a response, or switching branches.
  • Server Login Hang: Fixed WebSocket storage operations failing during the server login flow. Auth is now decoupled so the local session works immediately while server identity resolves in the background.
  • WebSocket Connection Hang: Fixed a race condition where AUTH_STATE: ready arriving during initial WebSocket connection could orphan the auth promise, preventing the connection from ever completing.

Version 0.9.655 (February 19, 2025)

New Features

  • Slack Integration: Connect your Slack workspace to enable AI-powered Slack tools with full OAuth V2 authorization
  • API Tool Credentials: Agent-discovered APIs can now be saved as custom MCP tools with stored credentials, enabling reuse across conversations
  • Saved API Badge: Agent-created API tools display a "Saved API" badge in settings for easy identification
  • Conversation Import: Import conversations from ChatGPT, Claude, Gemini, Perplexity, and Grok — upload your export file and PebbleFlow converts it with full message history, attachments, and metadata

Improvements

  • Learned APIs Nesting: Learned API tools are now grouped under a collapsible section in settings for cleaner organization
  • PebbleFlow Branding: Built-in tools now display the PebbleFlow icon for visual consistency
  • Browser-Aware Links: URLs opened by the agent now launch in the browser you've selected in settings
  • Slate Cloud Load: Loading a Slate document from Google Drive now triggers a JIT OAuth prompt instead of failing with a cryptic error

Bug Fixes

  • DOCX Editing: Fixed paragraph run regex matching across nested spans, causing content corruption when editing formatted DOCX text
  • Search/Replace Safety: Restored structural HTML pattern guard lost during refactoring — prevents edits from corrupting XLSX/DOCX internal markup
  • Tool Approval Loop: Fixed race condition causing repeated approval prompts for the same tool within a single agent run
  • Stale Identity: Fixed stale user identity not clearing on 401 during license sync, with logout escape on returning-user onboarding

Version 0.9.651 (February 17, 2025)

New Features

  • Minimum-Privilege Permissions: Google Workspace tools now request only the exact scopes needed for each action instead of broad access. Reading emails requests read-only; creating events requests only calendar write access.
  • Enhanced Permission Dialog: The just-in-time authorization dialog shows exactly what permissions are being requested, why they're needed, and whether the operation is read-only or read-write
  • Permission Selector: When manually connecting a Google account, you can choose which services (Calendar, Gmail, Drive, Docs, Sheets, Slides) and access levels (read-only vs read-write) to grant upfront. Edit Permissions button on existing connections.
  • Image Results: Generated images and screenshots now render prominently between collapsed process steps and the final answer, eliminating the need to expand tool calls to see visual output

Improvements

  • Private Sync Safety: Concurrent edits now download for merge instead of uploading, lock refresh verifies ownership, and manifest merge prevents data loss from premature trash operations
  • P2P Sync Removed: Eliminated P2P real-time sync, removing 100+MB of wasteful WebSocket traffic and improving extension performance
  • Settings Performance: Settings panel memoization and collapse context isolation for faster rendering
  • DOCX Rendering: Improved paragraph rendering, numbering, and style support in the document parser

Bug Fixes

  • Google Docs Scope: Fixed "insufficient authentication scopes" error when indexing Google Docs — index_document needed write scope for named ranges
  • Google Docs Read: Fixed read_document and get_document_info failing when only Docs scopes were granted — these actions also need Drive read access
  • Calendar Copy: Fixed copy_event action missing from the scope registry, preventing JIT permission requests
  • API Key Persistence: Fixed BYOK API key being silently lost when saveCustomMode crashed the settings save path during Pro trial activation
  • Settings Reload Race: Fixed unsaved API key being wiped when collapsing/expanding settings sections triggered a storage reload cycle
  • Chrome Identity Cancellation: Fixed user cancellation during incremental scope requests not being distinguished from errors, and auth method now correctly transitions after obtaining a web OAuth refresh token
  • Private Sync Overwrite: Fixed private sync overwriting recent turns when concurrent edits occurred
  • Viewport Screenshots: Stopped surfacing viewport screenshots above final response text
  • Agent Coordination: Fixed 7 issues across turn coordination, perception, and state management
  • Track Changes: Fixed track changes mode broken after slate decomposition due to dual-state variable desync
  • File Manager: Delete and download actions now available in all modes, not just orphaned files
  • MCP Tool Names: Fixed tools using internal server IDs instead of human-readable names
  • Agenda Tool: Fixed sync card always showing missing permissions, wired into Google OAuth connection system

Version 0.9.642 (February 16, 2025)

Improvements

  • New Document Creation: New DOCX, XLSX, PDF, and RTF files created from the "New File" dropdown are now fully editable with tracked changes support and proper
  • Gemini Stability: Added reasoning repetition detection to automatically break Gemini thought loops and prevent leaked thinking text from appearing in chat
  • Image Handling: DNG raw photo previews now respect EXIF orientation for correct display preventing distortion on uploaded images.

Bug Fixes

  • New Document Editability: Fixed blank documents created via "New File" being rendered as static previews instead of editable rich text editors
  • API Key Detection: Switching to your own API key (BYOK) now takes effect immediately without requiring a page refresh
  • Screenshot Stability: Fixed attachment ID handling to prevent screenshot data from being lost or corrupted
  • Tab Grouping: Fixed crash when browser had non-normal windows (e.g., devtools, popups)
  • Console Noise: Removed unnecessary llms.txt probing that was spamming 404 errors
  • Tool Timeouts: Removed fragile keepalive workarounds that could interfere with long-running tool calls like 4k image generation with Gemini
  • Prompt Caching: Fixed multimodal content (images/screenshots) being dropped during prompt cache optimization

Internal

  • Significant codebase quality improvements across error handling, type safety, and architectural layering
  • Modularized core document parser into focused, maintainable modules

Version 0.9.641 (February 14, 2025) - Happy Valentine's Day!

Improvements

  • Model Selector Tier Medals: Replaced hardcoded recommendation badges with 5 API-driven tier medals (Best for PebbleFlow, Quality, Reliability, Speed, Value) showing gold/silver/bronze rankings directly from benchmark data
  • Skills System: Skills are now have a restore defaults button to re-add built-in skills
  • Prompt Caching: Further optimized prompt caching for cost savings

Bug Fixes

  • Browser Compatibility: OAuth login and auto-connection now work in Vivaldi and other non-Chrome browsers
  • Cost Tracking: Fixed race condition where cancelling a run could clobber cost and usage data; cost/usage data is now preserved on cancelled and errored runs
  • Private Sync: Rewrote purgeAllStorage to nuclear clear, fixed sync listener race, consolidated private sync UI
  • i18n: Added missing translation initialization to conversation.html popup page
  • Security: Patched dependency vulnerabilities (qs, @casl/ability, axios, markdown-it)
  • Benchmarks Page: Migrated benchmarks page backend to Cloudflare auth

Version 0.9.65 (February 13, 2025)

Improvements

  • MiniMax M2.5 Benchmarks: Full benchmark suite completed — tool accuracy 91%, trustworthiness 95% (rank #2), composite rank #5 with gold value tier
  • Model Intelligence API: Increased default response limit from 100 to 500, ensuring all models with earned badges are visible to clients

Bug Fixes

  • Missing Model Badges: Fixed 35 models with earned tier badges (gold/silver/bronze) not appearing in the extension model list — including Claude Opus 4.6 (gold composite), Claude Sonnet 4.5 (silver composite), and Claude Haiku 4.5 (bronze composite). Root cause: API defaulted to returning only 100 models sorted by trustworthiness, but tiers were computed from all 367 models. Models outside the top 100 by trustworthiness had their badges silently dropped.

Version 0.9.64 (February 12, 2025)

Improvements

  • Ollama Provider Parity: Full feature parity with OpenRouter — abort signal support, error handling, reasoning details, resolved model ID, and think-tag processing via streaming mixin
  • AbortSignal Propagation: Subprocess SIGTERM/SIGINT now cancels in-flight LLM API calls
  • Build-Time Schema Validation: Settings schema validation at build time catches missing SETTING_METADATA entries
  • Platform Capabilities Caching: Cached for performance instead of recomputed on every access
  • Website i18n: Trust page and pricing refactor translations synced across all 22 locales

Bug Fixes

  • Website Authentication: Replaced legacy Supabase auth with direct Cloudflare Worker API calls for Google sign-in, email login, signup, and password reset
  • Stripe Checkout Locale: Fixed "Invalid locale" error on checkout and portal by mapping navigator.language (e.g. en-US) to Stripe-supported locales with fallback to auto
  • Password Minimum Length: Synced 12-character minimum across server signup, password reset, and website reset page
  • Private Sync Profile Dedup: Login now detects and removes duplicate profiles caused by earlier sync bugs
  • State Manager Init Race: Fixed initialization race condition in state-manager
  • Agent Subprocess Cleanup: Zombie subprocess cleanup on agent termination
  • Tab Group/Storage API Guards: Proper guards for tab group and storage APIs across platforms
  • Geolocation Error Handling: Graceful handling of geolocation permission errors
  • OAuth Refresh Locking: Prevents concurrent OAuth token refresh attempts
  • Settings Save Mutex: Concurrent settings saves no longer clobber each other
  • Agent JSON Parse Isolation: Malformed agent output no longer crashes the parser
  • Thread Search Race: Fixed race condition in thread search results
  • Streaming Version Staleness: Checks for stale version during streaming responses
  • Content Script Timeouts: Added timeouts for content script message passing
  • Context Pruning for Multimodal: Improved context pruning when multimodal content is present

Version 0.9.63 (February 12, 2025)

Bug Fixes

  • Private Sync Mode Variables: Fixed legacy settings migration running on every sync cycle, silently overwriting recent local edits (e.g., mode variable changes) with stale Drive data

Version 0.9.62 (February 12, 2025)

New Features

OpenRouter OAuth One-Click Setup

  • PKCE Key Creation: New one-click OpenRouter OAuth flow lets users create and link an API key without leaving PebbleFlow
  • Redesigned Onboarding: Streamlined onboarding and upgrade flows with OpenRouter OAuth integration
  • Privacy Warning: Free models onboarding option now displays a clear privacy/training data warning

Granular Private Sync

  • Per-Item Sync: MCP servers, tool approvals, profiles, skills, modes, overrides, and reminders now sync at the individual item level instead of overwriting entire collections
  • Per-Key Settings Sync: Settings sync granularly per key, preventing remote overwrites of unrelated local changes
  • Deduplicated Reads: In-flight WebSocket storage reads are deduplicated to reduce unnecessary network traffic

Improvements

  • Mode Settings UX: Overrides now auto-save, and Restore Defaults correctly restores deleted mode variables
  • Responsive Composer: Skills button collapses to icon-only at narrow widths; removed layout spacer from Skills section
  • Support Tickets: Build version and datetime are now included automatically
  • Slate Search: New search_document action added to the Slate tool

Bug Fixes

  • Google Slides/Sheets OAuth: Now throws proper OAuthAuthorizationRequiredError instead of returning setup text, enabling just-in-time authorization
  • Configuration Tool UI Refresh: Agent mutations via the configuration tool now broadcast STORAGE_CHANGED so the UI updates immediately
  • Tool Approval Modal: Fixed React hooks ordering violation (useMemo above early return)
  • Localhost HTTPS: API integration tool now handles self-signed certificates for local HTTPS servers
  • Mode Variables Persistence: Fixed i18n getter properties not materializing before storage, causing variables to vanish on reload
  • Slate Thread Safety: Resolved race condition in Slate tools that caused duplicate slates during parallel AI turns
  • Slate DOCX: Fixed deletion visibility and baseline corruption in tracked changes
  • Private Sync Stability: Eliminated bouncing and vanishing edits from sync conflicts

Version 0.9.61 (February 10, 2025)

Improvements

Slate Editor i18n

  • Translated Toolbar & Menus: All Slate editor toolbar buttons, context menus, and dialog strings are now fully translated

Bug Fixes

  • OAuth Fetch Timeouts: All OAuth token exchange and refresh requests now have a 15-second timeout, preventing infinite hangs on network stalls
  • GitHub Private Email: Fixed GitHub connection failing when the user's profile email is private (now fetched from /user/emails API)
  • OAuth Connection Dialog: Generalized OAuth connection dialog and fixed multiple token/connection bugs
  • Password Length Consistency: Synchronized 12-character minimum password requirement across all signup and reset surfaces

Version 0.9.6 (February 8, 2025)

New Features

Internationalization (20+ Languages)

  • Full i18n Support: PebbleFlow is now available in 20+ languages including English, Spanish, French, German, Japanese, Korean, Chinese, Arabic, Hebrew, Hindi, and more
  • RTL Language Support: Full right-to-left layout for Arabic, Hebrew, and Urdu
  • UI Language Setting: Choose your preferred language in Settings — all UI elements, tool labels, and status messages are translated

Improvements

Settings Panel Performance

  • Lazy-Loaded Sections: Settings panel sections now load on-demand, reducing initial render time
  • Modular Storage: Settings are stored in granular per-section keys instead of a single monolithic blob, improving read/write performance
  • Typed Getters: Internal settings access uses strongly-typed getters with change granularity tracking

Slate Track Changes Reliability

  • 17 Revision Manager Fixes: Comprehensive hardening of the track changes system across diff computation, acceptance, rejection, and persistence
  • Plain Text Diffing: Redline changes now diff plain text instead of raw markdown, producing cleaner and more accurate change highlights
  • Persistent User Changes: User-made tracked changes now survive page refresh
  • Race Condition Fix: Force-bake tracked changes before save to prevent data loss

Bug Fixes

  • Service Worker Crashes: Replaced 112+ dynamic import() calls with static imports to prevent Chrome service worker crashes
  • Mode Welcome Messages: Fixed language, provisioned key detection, and persistence issues in mode welcome messages
  • Google Tool Account Selection: Account picker now dynamically reflects actually connected accounts
  • DOCX Nested Lists: Fixed display markers and export corruption for nested list round-trips
  • LaTeX Math Rendering: Fixed currency dollar escaping breaking LaTeX math expressions starting with numbers
  • Tab Group Creation: Deferred lazy tab group creation until the web browsing tool is actually used
  • Agenda OAuth: Re-throw OAuth errors so just-in-time authorization triggers correctly
  • Settings Persistence: Added missing metadata entries for 6 settings that silently failed to save

Version 0.9.5 (February 6, 2025)

Security Hardening

  • Content Script Origin Validation: Messages from web pages to the extension are now restricted to pebbleflow.ai origins only, with strict same-origin checks preventing cross-origin message injection
  • CSP Tightened: Removed development-only localhost script sources from the extension pages Content Security Policy
  • Auth Response Scoping: Extension auth responses are now sent to the specific page origin instead of broadcasting to all frames

Version 0.9.4 (February 4, 2025)

New Features

Multilingual Speech-to-Text

  • Language Selection: Choose your STT language in Settings for accurate non-English voice input
  • 90+ Languages Supported: Works with Whisper and ElevenLabs for comprehensive language coverage

Real-Time Voice Activity Detection

  • Low-Latency VAD: New Silero VAD v5 integration detects speech in real-time with minimal delay
  • Smarter Recording: Recording automatically starts and stops based on voice activity
  • Reduced False Positives: Better distinction between speech and background noise

Suggestions Visibility Toggle

  • Hide/Show Suggestions: New toggle to hide AI follow-up suggestions when you want a cleaner interface
  • Persistent State: Your preference is saved and remembered across sessions

Improvements

Track Changes Auto-Bake

  • Diff-Based Tracking: More efficient change tracking using diff algorithms
  • Auto-Save: Changes are periodically saved to prevent data loss during long editing sessions
  • Snapshot on Exit: Exiting track changes mode automatically bakes all pending changes

Enhanced Provider Streaming

  • Gemini Improvements: Better streaming and reasoning capabilities for Google Gemini models
  • Consistent Behavior: Unified streaming behavior across OpenRouter and native providers

Version 0.9.3 (January 31, 2025)

New Features

Guided Onboarding Walkthrough

  • Interactive UI Tour: New step-by-step walkthrough guides new users through every part of the interface after entering their API key
  • Three Phases: Covers the composer (11 steps), settings panel (7 steps), and mode system (5 steps)
  • Spotlight Effect: Each step highlights the relevant UI element with a focused spotlight
  • Conversational Onboarding: AI-guided profile building to personalize your experience from the start

Prompt History

  • Access Previous Prompts: Your recent prompts are saved and can be accessed in the composer
  • Quick Reuse: Easily reuse or modify previous messages

Ad Blocker Levels

  • Granular Control: Ad blocking now supports multiple levels instead of just on/off
  • Choose Your Protection: Select the level of blocking that works for your browsing needs

DOCX Review Toolbar

  • Track Changes Controls: New toolbar when viewing Word documents with tracked changes
  • Accept/Reject Actions: Easily review and resolve document edits

Improvements

Thread Retention Settings

  • Configurable Cleanup: Set how long to keep old threads before automatic cleanup
  • Storage Management: Better control over your conversation history

PebbleFlow Animation

  • Performance Optimizations: Smoother animation with improved rendering
  • Wetness Effects: New visual overlay showing water saturation
  • Direct Particle Rendering: Cleaner visuals with optimized particle drawing

Profile Switching

  • Enhanced State Management: More reliable profile switching with improved protocol handling
  • Better Sync: Profile changes sync correctly across the extension

Google Calendar

  • Token Management: Improved access token handling for calendar operations
  • More Reliable Sync: Better OAuth flow for calendar integration

Version 0.9.2 (January 26, 2025)

New Features

Ad & Tracker Blocking

  • Built-in Ad Blocker: Block ads and trackers using the Ghostery engine with MV3-compatible declarativeNetRequest
  • Toggle in Settings: Enable or disable ad blocking from the Settings panel
  • Filter List Updates: Automatic caching of filter lists for reliable blocking

Just-in-Time Google Permissions

  • Incremental Authorization: Google tool permissions are now requested only when needed, not upfront
  • Clearer Scope Management: Missing scopes trigger helpful error messages with options to grant access
  • Better Privacy: Only request the specific Google scopes required for each tool

Improvements

PebbleFlow Animation

  • Enhanced Physics: Improved particle dynamics with better elevation, speed, and density forces
  • Smoother Flow: Particles now follow channel direction on spawn, reducing clumping
  • Realistic Stacking: Particles stack naturally when blocked by pebbles or dams

Google OAuth Flow

  • Faster Sign-In: Now prioritizes ID token retrieval for faster authentication
  • Improved Reliability: Better token handling reduces auth failures on non-Chrome browsers

Onboarding & Settings

  • Preview Mode: Test onboarding flows without clearing user data
  • Cleaner Free Tier: Removed deprecated provisioned API key restoration UI

Internal

  • Minigame System: New MinigameContainer infrastructure for interactive intro experiences
  • Hidden Easter Egg: Minigame visibility state persisted across sessions

Version 0.9.1 (January 25, 2025)

New Features

Interactive Water Simulation

  • PebbleFlow Intro: New interactive fluid simulation on the loading screen - watch water flow through a dynamic S-shaped channel
  • Draggable Pebbles: Move pebbles around to redirect water flow and create dams
  • Sediment Dynamics: Realistic erosion and deposition - fast water picks up sediment, slow water deposits it
  • Theme-Adaptive: Water colors automatically match your chosen theme tint

Vega/Vega-Lite Chart Support

  • Interactive Visualizations: View and edit Vega and Vega-Lite charts directly in Slate
  • Data Visualization: Create bar charts, line graphs, scatter plots, and complex multi-layer visualizations
  • Spec Editing: Edit the JSON specification and see changes rendered in real-time

Mermaid Diagram Support

  • Diagram Types: Create flowcharts, sequence diagrams, class diagrams, state diagrams, and more
  • Live Preview: Edit Mermaid syntax with instant visual preview
  • Export Options: Diagrams render as SVG for crisp output at any size

File Creation Templates

  • Quick Create Menu: New dropdown menu when creating files in Slate with templates for common file types
  • Template Categories: Markdown, code files, data formats, diagrams, and more
  • One-Click Start: Jump straight into a new document with the right structure

Improvements

API Error Handling

  • Visual Notifications: API errors now display as dismissible toast notifications
  • Auto-Dismiss: Non-critical errors (like cancellations) automatically clear after a few seconds
  • Clearer Messages: Better error messages help identify and resolve issues faster

Platform Capabilities

  • Smart Feature Detection: Features that require specific platforms (like Apple Calendar on macOS) are now detected automatically
  • Graceful Fallbacks: Tools adapt to your environment rather than failing silently
  • Apple Tool Improvements: Apple Reminders now supports uncomplete and list actions

Safari & Non-Chrome Browsers

  • Better OAuth Flow: Improved browser detection for Google sign-in
  • Fallback Mechanism: Non-Chrome browsers now have a more reliable authentication path

Version 0.9.0 (January 22, 2025)

New Features

Automatic Data Cleanup

  • Storage Management: Old threads and attachments are automatically cleaned up based on your retention preferences
  • Configurable Policies: Set how long to keep data before automatic cleanup

GitHub Sync

  • Backup to GitHub: Sync your PebbleFlow data to a GitHub repository for backup and cross-device access
  • Smart Conflict Resolution: Changes from multiple devices are automatically merged without data loss
  • Selective Sync: Control which data is synced with .gitignore-style patterns

GitHub Tool

  • AI GitHub Integration: The AI can now interact with GitHub on your behalf - create issues, browse repositories, manage pull requests, and more
  • Repository Browsing: Ask the AI to explore codebases, find files, and understand project structure

Improvements

Browser Automation

  • Enhanced Page Interaction: More reliable clicking, scrolling, and form filling on complex web pages
  • Smarter Tool Selection: The AI now picks the right tools for each task more accurately

Document Handling

  • Better Word Documents: Improved handling of tables, lists, and formatting in DOCX files
  • Google Slides: More control over slide formatting, shapes, and layouts

Settings & UI

  • Expanded Settings Panel: More configuration options with better organization
  • Improved Thread List: Better sorting and filtering of your conversations
  • Location Permission: Clearer flow when granting location access for location-based queries

Version 0.8.9 (January 19, 2025)

New Features

Google Slides Integration

  • AI-Powered Presentations: New Google Slides tool allows the AI to create, read, and modify slide presentations
  • Full Slide Control: Create slides, add text boxes, images, shapes, and tables
  • Template Support: Use built-in templates or work from blank presentations
  • Collaborative Editing: Works with your existing Google account connection

Improvements

Code Quality

  • TypeScript Fixes: Cleaned up type errors and unused imports across the codebase
  • Test Coverage: Updated test fixtures to match current type definitions

Version 0.8.8 (January 17, 2025)

New Features

Resemble.ai Text-to-Speech

  • Professional Voice Synthesis: New Resemble.ai integration for high-quality AI voice generation
  • Streaming Audio: Real-time audio streaming for responsive voice output
  • Configurable Voices: Select from multiple professional voice options
  • Truncation Warnings: Clear feedback when long text is truncated for synthesis

Calendar Sync Service

  • Background Sync: Automatic calendar synchronization with Google Calendar
  • Incremental Updates: Only changed events are synced for efficiency
  • Alarm-Based Scheduling: Reliable sync scheduling using Chrome alarms

Improvements

Desktop App (Electron)

  • Wake Detection: System now detects when your Mac wakes from sleep and refreshes OAuth tokens automatically
  • Improved Reliability: OAuth connections stay fresh even after extended sleep periods

Rich Composer Input

  • Enhanced Composition: Improved message input with better formatting support
  • Tab Autocomplete: More responsive tab reference suggestions

Version 0.8.71 (January 15, 2025)

New Features

Thread Search

  • Search Your Conversations: New search box in the thread list to quickly find threads by title or content
  • Instant Filtering: Type to filter - matching threads appear immediately with search highlighting
  • Smart Debouncing: Search is optimized to not lag even with hundreds of threads

Physics Simulation Tool

  • AI-Powered Physics: New physics tool lets the AI perform physics calculations and simulations
  • Projectile Motion: Calculate trajectories, predict collisions, and solve motion problems
  • Structural Analysis: Analyze stress, beam bending, buckling, and stability of structures
  • Material Properties: Built-in database of common engineering materials (steel, aluminum, wood, concrete, etc.)
  • Physics Formulas: Kinetic energy, momentum, force, impulse calculations

Cairn World Builder Enhancements

  • Physics Engine: Full Rapier3D physics integration for realistic simulations
  • Joints & Constraints: Create hinges, sliders, ball joints, and fixed connections between bodies
  • Sensors & Triggers: Define sensor regions that detect when objects enter/exit
  • Character Controller: First-person character with gravity, jumping, and collision response
  • Game Mode: Real-time physics with fixed timestep for interactive exploration

Improvements

Private Sync v2

  • Incremental Sync: Each thread and attachment is now synced individually rather than as one large file
  • Faster Sync: Only changed items are uploaded, dramatically reducing sync time for large libraries
  • Better Conflict Handling: Per-item vector clocks enable more precise merge resolution
  • Reduced API Calls: Smart diffing means fewer Google Drive API requests

Sync Reliability

  • Extension/Server Parity: Fixed attachment storage to properly track vector clocks on both platforms
  • Tombstone Filtering: Deleted profiles are now correctly hidden on both extension and server

Version 0.8.70 (January 14, 2025)

New Features

Private Sync (Free Tier)

  • Cross-Device Sync: Sync your threads, settings, and attachments across all your devices via Google Drive
  • End-to-End Encryption: All synced data is encrypted with your passphrase before leaving your device
  • Automatic Background Sync: Changes sync automatically every 30 seconds with smart debouncing
  • Conflict Resolution: CRDT-style vector clocks ensure changes merge correctly across devices

Improvements

Private Sync Efficiency

  • Reduced Polling: Sync interval increased from 3s to 30s to reduce API calls
  • Smart Debouncing: Waits 10 seconds after changes settle before syncing
  • In-Flight Protection: Threads being actively processed by the AI are excluded from sync until complete

Version 0.8.69 (January 14, 2025)

New Features

Slate Revision Navigation

  • Navigate Between Changes: New navigation buttons to jump between pending revision chunks in the editor
  • Change Counter: Visual indicator shows current position (e.g., "2 of 5") within pending revisions
  • Keyboard Shortcuts: Use Alt+Up/Down to quickly navigate between chunks without leaving the keyboard

Improvements

Document Processing

  • Remote OCR Fallback: When local PDF text extraction fails or produces poor results, documents are automatically processed via cloud OCR for improved accuracy
  • Processing Status: Real-time feedback shows when documents are being processed remotely

Reasoning Model Support

  • Multi-Turn Reasoning: Better caching of reasoning details across conversation turns, improving continuity for extended thinking models
  • Cleaner Messages: Internal system notes are now stripped from rendered messages, preventing instruction leakage

Version 0.8.68 (January 11, 2025)

New Features

Long-Term Memory

  • Context Persistence: AI now maintains long-term memory across conversations, remembering important context about your preferences and workflows
  • Usage Tracking: Enhanced tracking of token usage and costs with detailed logging

Model Intelligence

  • Smart Model Selection: New model intelligence features help identify optimal models based on your usage patterns
  • Ranking System: Models are ranked by performance and value metrics

Improvements

Storage Reliability

  • Cross-Platform Storage: Model cache, tool approvals, and learned pages now work reliably across extension, server, and LAN modes
  • Auth Timeout: Fixed potential hang when connecting to relay server - now times out gracefully after 5 seconds instead of waiting indefinitely
  • Settings Load Speed: Settings and model picker now load faster after extension reload

Content Pagination

  • Proper Page Sizing: Web page content is now split based on the actual model's context window (e.g., 131k tokens), not a hardcoded default. This means you see larger page chunks and fewer pages when using high-context models.

Bug Fixes

  • API Key Persistence: Fixed issue where OpenRouter API key would be "forgotten" after briefly enabling then disabling LAN mode

Version 0.8.67 (January 7, 2025)

New Features

Kokoro TTS - Local Neural Text-to-Speech

  • High-Quality Voices: Kokoro is a local neural TTS model with natural-sounding speech across multiple voices
  • No API Key Required: Runs entirely on-device using WebGPU/WASM - no cloud services or API keys needed
  • Multiple Voices: Choose from American, British, and other accent options with male/female variants
  • Long Text Support: Properly handles long text via streaming synthesis - no more cutoffs at 30 seconds
  • Clean Speech: Automatically strips markdown formatting (bold, italics, etc.) before speaking

Improvements

Voice Settings

  • Unified Voice Section: TTS and STT settings consolidated in a cleaner layout
  • Voice Preview: Test selected voice before using it

Version 0.8.66 (January 7, 2025)

Improvements

Settings Panel Search

  • Filter Search: New search box at the top of Settings to quickly filter sections by keyword
  • Instant Results: Type to filter - matching sections appear immediately
  • Keyboard Friendly: Search is auto-focused when opening settings

MCP Server Reliability

  • Startup Verification: MCP servers are now verified as running before returning success
  • Better Error Messages: When MCP servers crash during startup, the actual error is shown instead of generic failure
  • Fixed Examples: Corrected example package names to use @modelcontextprotocol/server-* (not @anthropic/mcp-server-*)

macOS App Authentication

  • Self-validating Tokens: Fixed 401 errors when adding MCP servers before WebSocket state sync
  • Faster Auth: HTTP endpoints no longer require waiting for WebSocket connection

Version 0.8.65 (January 6, 2025)

New Features

ElevenLabs Voice Integration (BYOK)

  • Cloud TTS: High-quality text-to-speech using ElevenLabs - choose from multiple voices and models
  • Cloud STT: Scribe transcription with real-time streaming (~150ms latency) and 90+ language support
  • Voice Selection: Browse and select from ElevenLabs voice library directly in Settings
  • Model Options: Choose between Flash v2.5 (ultra-fast ~75ms), Turbo v2.5, or Multilingual v2 (best quality)
  • Bring Your Own Key: Uses your ElevenLabs API key - no additional cost from PebbleFlow

Multilingual Whisper Model

  • Whisper Tiny Multilingual: New local STT option supporting 99 languages (~39MB download)
  • Same Size as English-only: Same compact 39MB size as Whisper Tiny English
  • Language Detection: Automatically detects spoken language

Google Docs Enhanced Reading & Writing

  • Markdown by Default: Text is now formatted as markdown by default when writing. Use useMarkdown: false for plain text insertions that preserve existing formatting.
  • Rich Formatting: Converts markdown headings, bold, italic, strikethrough, and links to native Google Docs styles
  • Lists & Tables: Supports ordered/unordered lists with nesting and markdown tables
  • Suggestion Tracking: Pending suggestions shown with semantic tags: <ins>added text</ins> for insertions, <del>removed text</del> for deletions. Adjacent tags indicate replacements.
  • Inline Comments: Comments appear inline with author attribution: <comment author="Name" on="quoted text">content</comment> with nested <reply> tags for threads

Improvements

Gemini Extended Thinking

  • Improved Thought Signatures: Better handling of Gemini's thought_signature across streaming chunks, improving extended thinking continuity with multi-turn tool use

Version 0.8.64 (January 5, 2025)

New Features

Google Sheets Cell Metadata

  • Read Hyperlinks & Notes: Use includeMetadata: true to retrieve hyperlinks, notes, and data validation rules from cells
  • Add Hyperlinks: New update_cell_metadata action to add clickable hyperlinks with custom display text
  • Add Notes: Attach notes/comments to cells programmatically
  • Data Validation: Create dropdowns, number ranges, text validation, and custom formula rules on cells

Safari Tiling (macOS)

  • Smart Window Positioning: When opening links from the sidepanel, Safari windows automatically position next to the sidepanel for easy side-by-side browsing
  • Screen Space Optimization: Tiling logic calculates optimal Safari placement based on available screen space
  • Re-tile on Mode Change: Safari windows automatically reposition when the sidepanel changes modes

Copy/Paste in macOS Sidepanel

  • Full Copy/Paste Support: Copy and paste now works reliably in the macOS sidepanel app
  • System Keyboard Shortcuts: Standard ⌘C/⌘V shortcuts work as expected

Improvements

macOS Server Reliability

  • Signal Handling: Improved handling of pipe signals to prevent unexpected app termination
  • Restart Reliability: Server stop and restart operations are now more reliable with proper cleanup
  • Connection Stability: Better handling of OAuth token refresh with retry logic and exponential backoff

Safari Extension

  • Stable Browser IDs: Safari extension now generates stable browser IDs to prevent duplicate entries during reconnections
  • Cleaner Reconnection: Server-side browser registration uses client-provided stable IDs for cleaner reconnection handling

Model Selector

  • Scroll to Selected: When opening the model dropdown, it now automatically scrolls to the currently selected model

Tab References in macOS App

  • Works in Sidepanel: Tab references and context now work in the native macOS sidepanel, not just the Chrome extension

Version 0.8.63 (December 31, 2025)

New Features

Voice Output (Text-to-Speech)

  • Read Aloud: AI responses can now be read aloud using Microsoft Edge TTS
  • Auto-Play Option: Enable automatic reading of new AI responses in Settings
  • Speed Control: Adjust playback speed from 0.5x to 2x
  • Pause/Resume: Control playback with pause and resume buttons on each message

Local Speech-to-Text (Whisper)

  • Whisper Upgrade: Opt into local Whisper transcription for more accurate voice input
  • Model Download: Download the Whisper Tiny model (~40MB) for offline use
  • Privacy: Audio processed locally, never sent to external servers
  • Fallback: Falls back to Web Speech API if Whisper unavailable

Unified Agenda Tool

  • Single Tool: New agenda tool consolidates calendar and reminder operations
  • Multi-Provider: Works with Google Calendar, Apple Calendar, Apple Reminders, and PebbleFlow reminders
  • Simpler for Agents: One tool interface for all scheduling needs

Improvements

Settings Panel

  • Persistent Collapse State: Section open/closed states are now remembered across sessions
  • Voice Settings: New section for configuring TTS and STT preferences

Version 0.8.62 (December 31, 2025)

New Features

DOCX List Support

  • Numbered Lists: Word documents with numbered lists now render correctly with proper formatting
  • Bulleted Lists: Bullet point lists are preserved and displayed accurately
  • Nested Lists: Multi-level list indentation is maintained in the HTML preview

CSV Export for Spreadsheets

  • Export as CSV: XLSX files can now be exported as CSV for easy data extraction
  • Format Selection: Choose between XLSX or CSV when downloading spreadsheet attachments

Version 0.8.61 (December 30, 2025)

New Features

Tool Approval Workflow

  • Interactive Approval: Certain tools now require user approval before execution - you'll see a modal asking to approve or deny the action
  • Status Tracking: Tool executions now show 'pending approval' and 'denied' states in the timeline
  • Safe by Default: Sensitive operations wait for explicit user consent before proceeding

Current Location Variable

  • {{currentLocation}}: New variable for adding your current location context to prompts
  • Geolocation Permission: Requires browser geolocation permission when first used
  • Context Aware: Great for location-based queries like "restaurants near me" or travel planning

Batch Thread Management

  • Multi-Select Mode: Toggle selection mode to pick multiple threads at once
  • Batch Delete: Delete selected threads in a single action
  • Batch Archive/Export: Archive or export multiple threads simultaneously

Image Viewer in Slate

  • Dedicated Viewer: Images now open in a full-screen viewer within Slate
  • Zoom Controls: Zoom in/out and pan around large images
  • Download Option: Quick download button for saving images locally

Improvements

Reasoning Display

  • Better Aggregation: Model thinking/reasoning blocks are now properly combined without duplication
  • Cleaner Display: Reasoning content from extended thinking models displays more reliably

Ollama Integration

  • Streaming Reasoning: Real-time streaming of reasoning/thinking content from local Ollama models
  • Better Model Handling: Improved compatibility with Mistral models and strict message ordering requirements

Attachment Management

  • Orphaned File Cleanup: New dialog in Settings to manage orphaned attachments that aren't linked to any thread
  • Assign to Thread: Move orphaned attachments to existing threads
  • Bulk Deletion: Clean up orphaned files to free up storage space

Slate Defaults

  • Markdown by Default: When creating a new Slate without specifying type, markdown (.md) is now the default format

Version 0.8.6 (December 19, 2025)

New Features

Wait Action for Browser Automation

  • Discrete Wait Types: New wait action in browser automation with 4 specialized wait modes:
    • timeout - Simple delay (default 1000ms, max 30000ms) for basic timing
    • selector - Wait for element to appear or disappear (useful for spinners/loaders)
    • network_idle - Wait for fetch/XHR requests to settle (extension-only)
    • animation - Wait for CSS animations and transitions to complete
  • Smart Element Visibility: Selector wait checks display, visibility, opacity, and offsetParent for accurate visibility detection

Improvements

Browser Automation Architecture

  • Unified Script Execution: New executeInPage abstraction ensures consistent behavior across Chrome extension and relay/server contexts
  • MAIN World Execution: Proper MAIN world script execution for operations that need to intercept page-level JavaScript (fetch, XHR)
  • Graceful Degradation: Extension-only features now provide helpful error messages with alternatives when used in relay mode

Bug Fixes

OAuth Token Refresh

  • Chrome Extension Token Refresh: Fixed stale token issue where Chrome's cached OAuth tokens weren't being refreshed properly. Tokens are now verified and stale tokens are cleared before retry.
  • PKCE Authorization Flow: OAuth popup now uses authorization code flow with PKCE instead of implicit flow, enabling proper refresh token support without requiring a client secret.
  • Direct Token Refresh: Connections with refresh tokens can now be refreshed directly using Google's token endpoint, without requiring a backend server.
  • Token Validation: Added token verification step to catch revoked/invalid tokens early and trigger automatic re-authentication.

Version 0.8.5 (December 19, 2025)

New Features

Apple Calendar Integration

  • Native Calendar Access: New Apple Calendar tool provides fast, native access to your macOS calendars via EventKit
  • Unified Agenda: Combined view of reminders and calendar events from all connected accounts (Google Calendar + Apple Calendar)
  • Multi-Account Support: Pull events from multiple Google Calendar accounts and Apple calendars simultaneously

Learned Pages

  • Smart Page Learning: Teach PebbleFlow about specific websites by capturing their structure
  • URL Pattern Matching: Learned patterns automatically apply to similar pages on the same site
  • DOM Snapshot Storage: Captured page structures help the AI better understand and interact with complex web apps

RTF Document Support

  • Rich Text Editing: Upload and edit RTF (Rich Text Format) documents directly in Slate
  • Bidirectional Conversion: Convert between RTF and HTML while preserving formatting
  • Export Options: Download edited documents as RTF for use in Pages, Word, or other word processors

Improvements

Desktop App Security

  • Relay Authentication: Secure HMAC-SHA256 authentication between extension and desktop server
  • Per-User Tokens: Auth tokens are now tied to user identity for multi-user security
  • Protected Endpoints: All sensitive API endpoints now require authentication

Performance

  • Swift Helpers: Native Swift binaries for Apple Reminders, Calendar, and Notes provide 10x faster access than AppleScript
  • Direct Callers: When running in desktop context, Apple tools bypass HTTP relay for lower latency
  • Shared Utilities: Consolidated relay API client eliminates code duplication

Bug Fixes

  • Calendar Event Deduplication: Events appearing in multiple calendars are now properly deduplicated in the unified view
  • Prompt Caching: Fixed cache control markers being stripped during token estimation

Version 0.8.45 (December 18, 2025)

New Features

  • Image Deduplication: When you upload the same image multiple times in a conversation, the AI now recognizes it as a duplicate and references the original instead of processing it again. This saves context tokens and helps the AI understand you're referring to the same image.

Improvements

  • Document Deduplication: Improved cross-source document matching - the same document content is now recognized whether it comes from a user upload, Gmail attachment, or web page ingestion.

Bug Fixes

  • PDF Auth Errors: Fixed issue where authentication errors (401, 403) when fetching protected PDFs were being masked as generic extraction failures. The actual auth error is now properly surfaced with helpful guidance.

Version 0.8.44 (December 18, 2025)

Bug Fixes

  • Reload/Regenerate Button: Fixed issue where clicking reload on an assistant message would show the old response instead of the new one being generated. The UI now properly switches to the new branch during streaming.

Improvements

  • Context Window Management: More conservative token estimation (3 chars/token) now used consistently across all pagination and context calculations, reducing the chance of context overflow errors with large web pages.

Version 0.8.43 (December 17, 2025)

Improvements

Timeline & Reasoning Display

  • Auto-Collapse on Completion: Reasoning blocks and process timeline now automatically collapse when generation finishes, keeping the conversation clean while still accessible
  • Intermediate Thoughts Visible: Agent's "thinking out loud" between tool calls is now displayed inline in the timeline, giving better insight into the agent's decision-making process
  • Tool Action Labels: Tool calls now show the specific action in the label (e.g., "Web Browse → click" instead of just "Web Browse")

Tool Results

  • Screenshot Display Fix: Screenshots and images no longer auto-expand in tool results - only rendered text content (like search results) auto-expands

Bug Fixes

  • Ollama CORS: Fixed connection issues when using Ollama from the Chrome extension - CORS headers are now automatically handled

Version 0.8.41 (December 15, 2025)

Improvements

  • Type Safety: Server storage adapter now uses proper TypeScript types instead of any for threads, skills, profiles, MCP servers, and license info
  • Build System: Backup directory is now opt-in via PEBBLEFLOW_BACKUP_DIR environment variable (no longer hardcoded)

Version 0.8.4 (December 15, 2025)

New Features

DNG/RAW Image Support

  • Camera RAW Files: Upload DNG (Digital Negative) files directly from your camera or photo library
  • Automatic Preview Extraction: Embedded JPEG previews are extracted from RAW files for fast processing
  • Preserve Original Quality: Original RAW data is preserved while AI works with the high-quality preview

Improved Image Handling

  • Server-Side Compression: Large images that exceed local compression limits are now processed by the desktop server
  • Better Error Feedback: Visual error indicators (red border, alert icon) when image processing fails
  • Graceful Fallbacks: Compression automatically falls back to server when offscreen document is unavailable

Improvements

  • Shared Agent Architecture: Unified agent runner shared between extension and desktop server for consistent behavior
  • Protocol Handler Consolidation: Storage and message handling now uses shared protocol handlers

Version 0.8.3 (December 13, 2025)

New Features

Native Mobile Apps

  • Android App: Native Kotlin app (android-app/) with WebView + native bridge channels (CalendarContract, SAF/photo picker, AlarmManager, OkHttp streaming)
  • Shared UI: Mobile apps use the same React UI as the web extension for consistent experience
  • iOS + Android: Native Swift (iOS) and native Kotlin (Android) with matching bridge APIs

Improvements

  • Identity Synchronization: Improved sync of license and profile data between extension and desktop server
  • Attachment Management: Better handling of attachments in LAN/relay mode
  • Extension Client Tracking: Desktop server now tracks connected extension clients with timestamps

Removed

  • Swift Relay App: macOS relay functionality now fully handled by native app server (introduced in 0.8.2)

Version 0.8.2 (December 12, 2025)

New Features

Cross-Platform Desktop Server

  • PebbleFlow Server: New Electron-based desktop application replaces the macOS-only Swift relay app
  • Windows Support: Native Windows installer (NSIS) and portable executable
  • Linux Support: AppImage and .deb packages for Linux distributions
  • Menu Bar Integration: System tray/menu bar app with status indicators and quick controls

Platform-Specific Script Execution

  • Unified Script API: New /api/script endpoint auto-detects platform and uses the appropriate script engine
  • PowerShell on Windows: Execute PowerShell scripts for system automation on Windows
  • Bash on Linux: Execute shell scripts (bash/sh/zsh) on Linux systems
  • AppleScript on macOS: Existing AppleScript/JXA support preserved

Cross-Platform Helpers

  • Desktop Notifications: Display notifications using native APIs on all platforms
  • Clipboard Access: Read and write clipboard contents cross-platform
  • Active Window Detection: Get the foreground application/window title
  • System Info: Retrieve OS, CPU, and memory information

Improvements

  • Automated Build Pipeline: Version, icons, and licenses sync from main project during build
  • Smaller Distribution: Removed redundant mobile app codebases in preparation for unified builds

Version 0.8.1 (December 11, 2025)

New Features

Flexible Sign-In Options

  • Multiple Authentication Methods: Sign in with Google OAuth, email/password, or license key - choose what works best for you
  • Account Linking: Link your Google account to an existing email/password account for seamless access across methods

Custom OAuth for MCP Servers

  • Bring Your Own OAuth Credentials: For MCP servers that require pre-registered OAuth clients, you can now provide your own client ID and secret
  • Dynamic Token Refresh: OAuth tokens are automatically refreshed, ensuring uninterrupted connections to MCP servers

Improvements

  • Document Processing Indicators: Clear visual indicators when processing PDFs, Word documents, and Excel spreadsheets
  • Settings Navigation by Tier: Settings panel now intelligently shows relevant options based on your subscription tier
  • Better OAuth Error Handling: Improved error messages when MCP server OAuth discovery fails

Version 0.8.0 (December 10, 2025)

New Features

MCP Server Browser & Management

  • Browse MCP Servers: Search and install MCP servers from both the MCP Registry and npm directly within Settings
  • Local MCP Servers: Run MCP servers locally on your machine via the relay app for enhanced privacy and control
  • Credential Resolution: MCP servers can now pull credentials from the Credentials Vault for secure authentication
  • Health Monitoring: Automatic health checks for connected MCP servers with status indicators

Profile Management

  • Multiple Profiles: Create and switch between multiple user profiles
  • Profile Switcher: Easy-to-access dropdown for switching profiles in the composer
  • Profile Deletion: Remove profiles you no longer need

Google Account Selection

  • Account Choice Dialog: When connecting Google services, choose between your Chrome profile account or add a different Google account
  • Web OAuth Flow: Option to authenticate via web browser for accounts not signed into Chrome

Enhanced Browser Agent

  • Go Back Action: Agent can now navigate back in browser history
  • ARIA Snapshot: Capture accessibility tree snapshots for more efficient page analysis with fewer tokens

Mobile Apps

  • iOS App: Native iOS client for accessing PebbleFlow on your local network
  • Android App: Native Android client with server discovery and WebView caching

Multi-Device Sync

  • Device Identity: Each connected device/extension is tracked with its own identity
  • State Synchronization: Real-time state sync across multiple connected extensions
  • Web Client Authentication: Secure authentication for web clients connecting to the relay

Improvements

  • LLM Provider Key Management: Manage API keys for various LLM providers directly in the Credentials Vault
  • MCP Tool Images: MCP tools that return images now display inline in the conversation
  • PDF Text Detection: Improved detection of garbled/spaced-out text in PDF extraction with confidence assessment
  • CORS Bypass for Images: Images are now fetched via offscreen document to bypass CORS restrictions

Bug Fixes

  • Generation State Tracking: Improved final state capture to ensure generation completion is accurately detected

Version 0.7.8 (December 7, 2025)

New Features

Excel Spreadsheet Support

  • XLSX Import: Upload Excel spreadsheets (.xlsx) directly to your conversations
  • Data Extraction: Spreadsheet content is parsed and made available to the AI for analysis
  • Round-Trip Editing: Edit spreadsheets in Slate and export back to XLSX format

What's New Dialog

  • Update Notifications: After updating PebbleFlow, a "What's New" dialog automatically shows release notes for the new version
  • Version-Specific Notes: See exactly what changed in your update, with formatted feature lists and improvements
  • Non-Intrusive: Dialog only appears once per update, and doesn't show on first install

Version 0.7.6 (December 3, 2025)

New Features

Word Document Support with Tracked Changes

  • DOCX Import: Upload Word documents (.docx) directly to your conversations
  • Tracked Changes Visible: See insertions (green) and deletions (red strikethrough) with author and date on hover
  • Comment Support: Comments are highlighted in yellow with tooltips showing comment text and author
  • Slate Editing: View and edit DOCX content in the slate with full tracked changes styling
  • Dark Mode Support: All tracked change and comment styles work in both light and dark themes

Version 0.7.4 (December 2, 2025)

New Features

FLUX Image Generator

  • AI Image Generation: Generate images from text descriptions using FLUX AI models via OpenRouter
  • Image Editing: Edit existing images in your conversation by providing the attachment ID and editing instructions
  • Multi-Reference Support: Combine elements from up to 10 images with flux.2-flex model
  • Multiple Models: Choose from flux.2-pro (fast, default) or flux.2-flex (max quality)
  • Automatic Storage: Generated images are saved to your conversation and displayed inline
  • Cost Tracking: Image generation costs are tracked separately and added to thread totals

Version 0.7.3 (December 1, 2025)

New Features

Enhanced Model Selector

  • Unified Model Picker: Consistent model selection experience across composer and settings
  • Privacy Indicators: Shield icon shows models with Zero Data Retention (ZDR) - your prompts won't be used for training
  • Vision Support: Eye icon indicates models that can analyze images
  • Recommended Models: Star icon highlights recommended choices (Claude Haiku 4.5, Claude Sonnet 4.5)
  • Cost Transparency: See pricing per million tokens directly in the model list - easily spot free models
  • Icon Legend: Quick reference in settings explains what each indicator means

Version 0.7.2 (December 1, 2025)

New Features

PDF Document Ingestion

  • Upload PDFs Directly: Attach PDF documents to your messages - they're automatically processed via Mistral OCR
  • High-Quality Text Extraction: Tables, figures, equations, and formatting are preserved as Markdown
  • Agent Document Ingestion: Agents can process PDF URLs they encounter while browsing using the new ingest_document action
  • Persistent Storage: Extracted content is stored for future reference without re-processing costs

Bug Fixes

  • Large Image Attachments: Images over 5MB are now automatically compressed before sending to LLM APIs, fixing "image exceeds 5 MB maximum" errors with providers like Google/Gemini

Version 0.7.0 (December 1, 2025)

New Features

Multi-Thread Support

  • Run Multiple Agents Simultaneously: You can now have up to 3 threads running at the same time
  • Visual Running Indicators: Animated dots appear next to thread titles in the sidebar when that thread is actively generating
  • Background Processing: Agents work in the background without stealing focus - browse freely while they work
  • Thread Isolation: Each thread tracks its own tabs and state independently

Agent Non-Interference

  • Stay in Control: When an agent opens tabs or navigates pages, it won't steal your focus if you've moved to a different tab
  • Smart Tab Awareness: Agents only work with tabs they created or started with, never following you to new tabs mid-run

Apple Integration (macOS)

  • Apple Notes: Read, create, search, and organize notes across folders - AI can help draft and edit notes directly
  • Apple Reminders: Manage to-do lists and reminders - create, complete, and organize tasks with AI assistance

Version 0.6.5 (November 30, 2025)

New Features

AI Follow-up Suggestions

  • Smart Prompts: After the assistant responds, AI-generated follow-up suggestions appear to help continue the conversation
  • Context-Aware: Suggestions are based on the conversation context and what you might want to do next

Improvements

LAN Relay Settings

  • Display Network Address: When connected to the relay server, Settings now shows the actual IP address and .local hostname for easy mobile device connection
  • Simplified Instructions: Connection info appears automatically once the server is running - no need to check the terminal

Version 0.6.4 (November 29, 2025)

Bug Fixes

Slate Revision System

  • Word-Level Accept/Reject: Individual word changes can now be reliably accepted or rejected without breaking subsequent changes
  • Stable Change Tracking: Fixed issue where accepting a change would cause other pending changes to become unclickable
  • Markdown Rendering in Preview: Change previews now render markdown formatting (bold, italic, etc.) instead of showing raw asterisks
  • Infinite Loop Fix: Fixed browser hang when accepting pure text additions
  • Complete Diff Display: Change preview now shows all deleted and added words, not just minimal differences

Version 0.6.3 (November 26, 2025)

New Features

  • Basic User Default Experience: New users now start as basic users instead of admin
  • License Key Upgrade: Added prominent "Upgrade to Pro" button in Settings to unlock admin features with a license key
  • Simplified Onboarding: Cleaner first-time user experience focused on core functionality

Version 0.6.2 (November 26, 2025)

Bug Fixes

  • Generation Timeout Recovery: Fixed silent failures during long Slate operations where the UI would show "generating" indefinitely
    • Backend now tracks activity during generation and times out after 2 minutes of no progress
    • Streaming chunks, tool execution, and agent decisions all reset the timeout
    • Automatic recovery when service worker restarts mid-generation (orphaned state detection)
    • Error message displayed to user when timeout occurs instead of silent hang

Version 0.6.1 (November 26, 2025)

New Features

Thread Import/Export

  • Export Selected Threads: Toggle selection mode to pick specific threads to export
  • Export All Threads: One-click export of all conversations with attachments
  • Import from File: Import threads from exported JSON files
  • Selective Import: Choose which threads to import from a file
  • Duplicate Detection: Automatically detects threads that already exist with option to skip or overwrite
  • Attachment Support: All images, PDFs, and files are included in exports
  • Archived Thread Support: Both active and archived threads can be exported/imported

Improved Prompt Caching

  • Better cache hit rates for long conversations with Claude models
  • Dynamic caching strategy adapts to conversation length

Google Workspace Integration

  • Google Drive: Search, create, copy, move, share files and folders
  • Gmail: Read emails, manage labels, create drafts (safety-first: drafts only, no auto-send)
  • Google Calendar: List calendars, query events, create/update/delete events, find free time slots
  • Inline Authorization: Authorize Google access directly from chat without visiting Settings

Web Browsing Improvements

  • New click_coordinates action for clicking elements by screen position
  • URLs now open in new tabs by default (prevents tab overwriting)
  • Tabs automatically grouped per conversation thread
  • Better CSS selector detection for reliable element clicking

Model Selection

  • Model selector moved to composer area for quick switching
  • Model persists globally across mode switches
  • Vision-capable models marked with eye icon

Streaming UI

  • Tool parameters display as they stream in
  • Progressive display of reasoning/thinking blocks
  • "Generating..." status indicator during response

Token Usage & Cost Tracking

  • Shows input, output, reasoning, and cached tokens
  • Displays cost per message and cumulative thread cost

UI Improvements

  • Mode Selector Available to All Users: Non-admin users can now switch between modes in Settings
  • Collapsible Settings Sections: Settings panel sections can be collapsed/expanded for easier navigation
    • AI & Model Configuration (LLM Provider, API Key, Model, Temperature, Max Iterations)
    • Personalization (Personal Instructions, Profile Variables)
    • Agent Mode Configuration (Mode Selector, Variables, Instructions, Branding, Tools, MCP Servers)
    • Appearance settings
    • Backup & Restore
    • Documentation
  • Mode-Specific Theme Colors: Each built-in mode now has a default color scheme
    • Shopping Agent: Green
    • Travel Agent: Blue
    • Helper Agent: Pink
    • PebbleFlow (General): Purple
  • Chromatic Mode: Enable color rotation to gradually cycle through the spectrum
  • Theme Override Management:
    • Visual indicator shows when theme is customized (won't be lost on mode switch)
    • "Save as Mode Defaults" button (admin) persists theme as the mode's new default
    • "Reset to Mode Defaults" restores original mode theme colors
  • New PebbleFlow branding and icon
  • Mode selector moved to composer area
  • New thread button shows mode selection dropdown
  • Thread list toggle in composer top bar
  • Vignette border effect on controlled browser tabs
  • Floating stop button on controlled tabs
  • Dropdown menus properly position near screen edges

Bug Fixes

  • Model selector updates immediately after settings change
  • New user onboarding now correctly launches Helper Agent
  • Settings panel no longer crashes with malformed custom variables
  • Tab group names update when thread title changes
  • Slate accept/reject widgets positioned correctly
  • Extended thinking works with more models (Haiku 4.5, Gemini, etc.)
  • Fixed "maximum 4 cache_control blocks" error

Version 0.3.4 (November 24, 2025)

New Features

Text Selection Context

  • "Add to Prompt" button appears when selecting text on webpages
  • Selected text shown as chips in composer with page context
  • DOM location captured for precise agent interaction

Google Calendar Integration

  • Full calendar management (list, create, update, delete events)
  • Smart availability search across all calendars
  • Natural language time parsing ("tomorrow", "next week")

Bug Fixes

Slate Mode

  • Accept/Reject buttons no longer hidden behind editor content
  • Word-level diff highlighting (not entire lines)
  • Multiple propose_change calls now accumulate correctly
  • View toggle no longer "bounces back" unexpectedly

Rebrand

  • Renamed from "ContextFlow" to "PebbleFlow"

Version 0.3.0 (November 22, 2025)

New Features

Mobile & LAN Access

  • LAN Server: Access PebbleFlow from any device on your local network
  • Conversation Sidebar: Open conversations in a browser tab for larger screen real estate
  • Mobile Export: Export conversations as standalone HTML for offline viewing

Bug Fixes

  • Fixed critical message branching logic bug
  • Fixed archived thread operations

Version 0.2.0 (November 21, 2025)

New Features

Extended Thinking Support

  • Claude models now support extended thinking/reasoning blocks
  • Collapsible reasoning UI to view model thought process
  • Reasoning details cached for multi-turn continuity

New LLM Providers

  • Ollama Integration: Run local LLMs through Ollama
  • Provider selection in settings panel

Image Format Support

  • HEIC/HEIF Support: Apple image formats automatically converted for compatibility

UI Improvements

  • Tools menu auto-saves on close
  • Better settings panel organization

Bug Fixes

  • Variable autocomplete positioning improved

Version 0.1.x (Previous Releases)

Core Features

  • Multi-model AI chat (OpenRouter, Anthropic, OpenAI, Ollama)
  • Browser automation and web scraping
  • Slate for code and document editing
  • MCP server integration
  • Screenshot and vision capabilities
  • Voice input
  • Thread management and branching
  • Profile and mode system