v1.20

Document Query Reuse, OAuth Slots, & Editor Polish

June 4, 2026

v1.20 makes repeated document queries faster, improves file and folder attachment workflows, tightens browser and connector behavior, adds more flexible OAuth model slots, and polishes Editor and File Browser controls.

📄 Documents & Attachments

  • Document query index reuse — Repeated document_query calls in the same chat context now reuse an existing vector database instead of re-parsing and re-embedding the document each time.
  • Context isolation preserved — Index reuse stays scoped to the chat context so separate contexts remain isolated.
  • Folder attachments in the chat composer — Dropped or selected folders are flattened into regular file attachments while preserving basename display and existing multi-file upload behavior.
  • Clearer attachment actions — Attachment menu actions now open file inputs directly with clearer Attach files and Attach folder labels.

🌐 Browser & Connector

  • Browser tab reuse guidance — Browser prompts and plugin docs now tell agents to list and activate existing tabs by URL or title before opening new host-browser tabs.
  • Secure post-login redirection — After login, users return to their originally requested page with same-origin validation that also rejects backslash-based open redirect attempts.
  • Bounded page connector history replay — Long chat histories are replayed in small WebSocket frames instead of one oversized payload, preserving cursor semantics.
  • Tailscale Remote Control CSRF origins fixed — Active Remote Control URLs are normalized before CSRF allowlisting, including Funnel URLs with paths or trailing slashes.
  • WebSocket origin validation tightened — WebSocket checks now trust only the currently active Remote Control origin, including Docker split-process tunnel service URLs.

🔐 OAuth

  • OAuth model slots can switch providers — Main and Utility model slots now have provider dropdowns, allowing multiple connected OAuth accounts to be used independently with model search scoped per slot.
  • OAuth dummy keys hidden until connected — Unconnected OAuth providers no longer display placeholder API keys, and runtime dummy keys are gated on actual connection status.
  • Inline pending controls — Device-code, manual callback, and setup controls now appear under the provider card that started the flow, keeping pending state anchored to the right account.
  • GitHub device-flow polling honored — OAuth polling now respects provider intervals, carries slow_down updates forward, and observes expiration times, fixing GitHub Copilot device-code completion.

📝 Editor & File Browser

  • Manual Editor open behavior fixed — Manual Editor launches open the file browser from the active project context, falling back to the workdir, and stay on the empty start page instead of auto-creating blank Markdown files.
  • Editor toolbar polished — The preview/source toggle moved to the left toolbar cluster, a dedicated Save button was added on the right, and rename/close remain in the overflow menu.
  • Editable file browser paths — The file browser path bar supports direct directory navigation with graceful fallback on invalid paths.
  • Optional last-directory memory — File Browser can optionally remember the last successful directory.