Releases: logancyang/obsidian-copilot
Release list
3.3.3
Release v3.3.3
This patch brings a fresh Gemini model, squashes a nasty Copilot Plus freeze, and makes it much easier to verify your dev build is actually loaded in Obsidian. Thanks to @logancyang and @zeroliu for the quick turnaround!
- Gemini 3.5 Flash is now a built-in model β Google's latest generally-available Gemini model (
gemini-3.5-flash) is now available out of the box, enabled by default with Vision and Reasoning support. It replaces the oldgemini-3-flash-previewentry. Your existing default model (google/gemini-2.5-flashon OpenRouter) is unchanged. - Copilot Plus no longer freezes when you apply your license key β Multiple concurrent initializations were bouncing
chainTypeAtombetweenLLM_CHAINandCOPILOT_PLUS_CHAINindefinitely. Applying your key now fires a single clean rebuild. - New
npm run test:vaultcommand for developers β Builds and hot-reloads the plugin into your test vault, with a build timestamp stamped into the plugin name so you can confirm you're running the right build.
PRs included
- #2492 feat(models): add GA gemini-3.5-flash builtin @logancyang
- #2478 fix(chain): stop writing chainType back inside setChain (apply-Plus freeze) @zeroliu
- #2477 Add npm run test:vault for fast worktree-to-vault plugin reload @zeroliu
Generated by the release agent.
3.3.2
Release v3.3.2
This patch is all about stability and speed. Claude Opus 4.7+ now works correctly with adaptive thinking on both direct Anthropic and AWS Bedrock, project-mode file ingestion is fixed, Quick Ask no longer crashes on @-mention, and the plugin is 75 KB lighter thanks to a clean dependency deduplication.
- π§ Claude Opus 4.7+ adaptive thinking is fixed β Adding
claude-opus-4-7(or any Opus 4.7+) as a model and enabling reasoning used to return a 400 error because the plugin was sending the legacythinking.type=enabledshape, which Opus 4.7+ no longer accepts. It now correctly sendsthinking.type=adaptiveand requests a summarized display so the thinking block appears in chat. Both the direct Anthropic and AWS Bedrock code paths are fixed. (@logancyang) - π Project-mode file ingestion is fixed β PDFs, images, audio files, and Office docs added to a project's source files were silently failing to upload because Obsidian's CORS-bypass path can't handle native
FormDatastreams. The upload path now usesrequestUrlwith a manually-constructed multipart body, matching how the rest of the plugin talks to Brevilabs. (@zeroliu) - π¬ Quick Ask no longer crashes on
@-mention β Opening the Quick Ask panel and typing@to mention a note was crashing with "useApp() called outside of AppContext.Provider". Fixed by wrapping the panel's React root in the sameAppContextthat the main chat view uses. (@zeroliu) - β‘ 75 KB smaller bundle β
@langchain/communityis dropped (Jina embeddings now run against a hand-rolled Obsidian-native client), andopenaiis bumped to v6 to eliminate a duplicate copy of the SDK that was sneaking in alongside@langchain/openai. The plugin is now around 3.3 MB. (@zeroliu) - π΄ Clearer error when a Bedrock model ID is missing its inference-profile prefix β If you configure a bare regional Bedrock model ID (e.g.
anthropic.claude-sonnet-4-6without aglobal.,us., etc. prefix), the error used to surface as raw JSON. It now shows a plain-English message pointing you to Settings β Models and listing the four valid prefix forms. (@logancyang) - π§Ή React state management cleanup β 56
setState-in-useEffectanti-patterns were replaced with idiomatic React patterns across 21 files. Side effects include: the token-count badge in chat now updates correctly after regeneration, chain/setting toggles in ChatInput no longer flash stale state, and the draggable quick-command modal no longer resets your resize when content grows. (@zeroliu)
More details in the changelog:
Improvements
- #2460 chore(deps): remove unused deps and dead code to shrink bundle @zeroliu
- #2463 chore(deps): drop @langchain/community + bump openai to v6 to dedupe SDKs @zeroliu
- #2467 chore(react): centralize React root creation via createPluginRoot helper @zeroliu
- #2469 Remove dead ChainFactory and chain validation helpers @zeroliu
- #2470 style(css): expand #ccc to 6-digit hex format for consistency @zeroliu
Bug Fixes
- #2399 fix(brevilabs): rewrite uploads via requestUrl multipart (W8/9) @zeroliu
- #2454 chore(lint): fix no-direct-set-state-in-use-effect violations @zeroliu
- #2466 fix(quick-ask): provide AppContext to overlay panel @zeroliu
- #2471 fix(anthropic+bedrock): adaptive thinking + summarized display for claude-opus-4-7+ @logancyang
- #2472 fix(bedrock): explain inference-profile requirement when AWS rejects on-demand model ID @logancyang
Generated by the release agent.
3.3.1
Copilot for Obsidian - Release v3.3.1 π
This release is all about keeping your API keys safe and your plugin running smoothly everywhere. API keys can now be stored in Obsidian's built-in Keychain so they never touch data.json, the encryption toggle is removed (it was more trouble than it was worth), and a wave of reliability fixes ensures chat works correctly on mobile, in popout windows, and with Plus mode. Underneath, @zeroliu landed nineteen back-to-back PRs of code-quality work β tightening ESLint, eliminating ~395 any types, swapping out unmaintained dependencies, and modernizing the React layer. Huge thanks to both @Emt-lin (Keychain) and @zeroliu (codebase hardening) for carrying this release. π
β οΈ Requires Obsidian 1.11.4+. TheminAppVersionis bumped from 1.7.2 to 1.11.4 because the Keychain feature relies on Obsidian'sapp.secretStorageAPI, which only exists in 1.11.4 and later.
- π API keys now live in the Obsidian Keychain β Fresh installs automatically store all API keys in Obsidian's vault-scoped Keychain instead of
data.json. Existing users can opt in at any time via the new "API Key Storage" section in Advanced Settings. A guided migration wizard walks you through the move, and keys are stripped fromdata.jsonthe moment migration completes. Each device has its own Keychain, so re-entering keys on a new device is expected. (@Emt-lin)- The Advanced Settings panel shows your current storage mode and surfaces a clear warning if a synced vault arrives on a device whose Keychain is empty.
- A "Delete All Keys" option purges secrets from both the Keychain and
data.jsonin one go. - The Reset Settings button no longer touches API keys. Use "Delete All Keys" if you want them gone.
- π« Encryption toggle removed in favor of the Keychain β With API keys moving to the Obsidian Keychain, the standalone "Enable Encryption" toggle is no longer needed and has been retired. It also didn't survive a sync to mobile cleanly, which caused intermittent chat failures for some users. Migrate to the Keychain for proper secret storage; existing encrypted blobs are still decrypted transparently on read so nothing breaks. (@logancyang)
- Mobile users whose vault contained desktop-encrypted keys now see a startup notice listing exactly which fields need to be re-entered.
- π± Image send on mobile is fixed β Sending images was broken for all mobile users since 3.3.0 due to a missing Buffer polyfill. Fixed. (@logancyang)
- β¨οΈ Quick Command shortcuts and icons restored β The Cmd+Enter (Replace) and Cmd+Shift+Enter (Insert) shortcuts in the Quick Command result modal were broken if any global Obsidian hotkey was bound to Cmd+Enter. Fixed, and the inline shortcut glyphs are back too. (@zeroliu)
- π§ Plus mode: no more surprise getFileTree calls β When you have a note attached in context, the planner no longer fires a
getFileTreetool call before answering. (@logancyang) - π·οΈ Settings version chip and Reset button are visible again β Obsidian's own CSS was hiding them. Fixed. (@logancyang)
- π‘οΈ Supply-chain attestations for release assets β Release artifacts are now cryptographically signed and published to Sigstore's transparency log. (@logancyang)
- π§Ή Major codebase hardening pass β @zeroliu landed a sustained ESLint and type-safety campaign across the repo: ~395
anytypes removed, dozens of type-aware rules turned on, unsafe assignments/returns/member-access/arguments locked down, floating promises explicitly handled, deprecated dependencies swapped, dead CSS removed, the globalappreference replaced with auseApp()hook, and a long tail of smaller wins. See the full PR list below.
More details in the changelog:
Improvements
- #2364 feat(keychain): migrate API key storage to Obsidian Keychain @Emt-lin
- #2431 ci(release): publish artifact attestations for release assets @logancyang
- #2448 refactor(react): replace global
appwith useApp() hook @zeroliu
Bug Fixes
- #2457 fix(plus): planner skips getFileTree when active note is attached @logancyang
- #2455 fix(keychain): empty-keychain banner, reset modal copy, lifecycle reset @logancyang
- #2446 fix(encryption): deprecate encryption toggle; fix mobile chat failure on desktop-encrypted keys @logancyang
- #2445 fix(settings): restore version chip + reset button hidden by Obsidian h1 CSS @logancyang
- #2443 fix(mobile): import Buffer from the polyfill so image send works on mobile @logancyang
- #2442 fix(quick-command): restore Cmd+Enter shortcut and shortcut hint icons @zeroliu
Code Quality (@zeroliu)
- #2453 chore(lint): fix no-array-index-key and other React lint warnings
- #2452 chore(eslint): enable no-explicit-any; fix ~395 violations
- #2451 chore(styles): drop dead CSS, reduce !important, fix duplicate selectors
- #2450 chore(lint): fix deprecation and template-literal lint warnings
- #2449 chore(icons): drop deprecated lucide Youtube icon; reuse Globe
- #2447 chore(deps): swap unmaintained/legacy deps per e18e module-replacements
- #2444 chore(types): tighten any types and fix langchain getType deprecation
- #2441 chore(eslint): enable no-unnecessary-type-assertion and no-misused-promises
- #2440 chore(eslint): enable @typescript-eslint/no-unsafe-argument and fix violations
- #2439 chore(eslint): enable @typescript-eslint/unbound-method
- #2438 chore(eslint): enable no-unsafe-member-access; fix 124 violations
- #2437 chore(eslint): enable @typescript-eslint/no-floating-promises
- #2436 chore(eslint): enable @typescript-eslint/no-unsafe-return
- #2435 chore(test): type test mocks to satisfy @typescript-eslint/no-unsafe-call
- #2434 chore(eslint): enable no-unsafe-assignment for tests
- #2433 chore(eslint): remove redundant non-TS rule overrides
- #2424 chore(lint): enable 4 type-aware quick-win rules and fix violations
Troubleshoot
- If models are missing, navigate to Copilot settings -> Models tab and click "Refresh Built-in Models".
- Please report any issue you see in the member channel!
Generated by the release agent.
3.3.0
Release v3.3.0
The headline of this release is a big one: your projects now live as notes in your vault, not buried in data.json. Update and your existing projects migrate automatically. Everything else in this release is quality and polish: a 1.8 MB bundle reduction, mobile support declared official, fresh built-in models, and a wave of reliability fixes for Korean/CJK input, Miyo, Ollama, popout windows, and more!
- π Projects are now vault notes β Project configurations are migrated out of the plugin's
data.jsonand into your vault as regular markdown files. On first launch after the update, Copilot reads your existing projects and writes them to vault files automatically. You can see, edit, and version-control your project configs like any other note! Any projects that can't be migrated are backed up to anunsupported/subfolder so nothing is lost. (@Emt-lin) - π± Mobile support is now official β Copilot is no longer desktop-only in the plugin manifest. Chat, Vault QA, and Plus modes all work on Obsidian Mobile, and the plugin now properly declares
minAppVersion: 1.7.2so users on older Obsidian builds get a clear message rather than a cryptic runtime error. (@logancyang) - β‘ Bundle shrinks by 1.8 MB β Cohere and Mistral models now route through OpenAI-compatible endpoints instead of their own SDKs, trimming the plugin from ~5 MB down to ~3.3 MB. Faster loads, especially on mobile! Note: if you had a custom
baseUrlsaved for a Cohere model, clear it in the model settings so Cohere falls back to the correct compatibility endpoint. (@logancyang) - π‘ Latest built-in models (May 2026) β Built-in model list updated: GPT-5.5, GPT-5.4-mini, Claude Opus 4.7, Gemini 3.1 Flash-Lite (now GA), and Grok 4.3 are all available out of the box. Click "Refresh Built-in Models" in settings if you don't see them yet. (@logancyang)
- π§ GitHub Copilot codex models use the Responses API β Codex-family models accessed through GitHub Copilot now correctly route to the
/responsesendpoint. Previously they were hitting/chat/completionsand failing with HTTP 400. (@Keryer) - β¨οΈ Enter key delay fixed for Korean/CJK input β A 100ms timeout in the IME composition handler was making Enter feel sluggish when confirming Korean, Japanese, or Chinese input. Removed. (@octo-patch)
- ποΈ Deleted files respect your trash preference β When Copilot deletes a chat history file, project file, system prompt, or custom command, it now uses Obsidian's trash setting (system trash / vault
.trash/ permanent) instead of always deleting permanently. Recoverable! (@zeroliu) - π€οΈ Miyo path fixes for cross-vault and remote setups β Two Miyo fixes ship together: vault-folder-prefixed paths are now sent to the related-notes endpoint (fixing cross-device disambiguation), and the vault folder-name prefix is stripped from indexed paths (fixing broken links in "List Indexed Files"). (@wenzhengjiang)
- π Ollama respects the CORS setting β Ollama requests now route through
safeFetchwhen "Enable CORS" is toggled, matching what every other OpenAI-compatible provider does. Fixes mobile (WKWebView) requests tohttp://Ollama hosts. (@zeroliu) - πͺ Popout window reliability β Chat in a popout window now creates DOM nodes in the correct window. Typing into the chat input after dragging the leaf between windows works without reopening the view. Pills, typeahead menus, the Quick Ask overlay, and inline citation links all render correctly in popouts. (@zeroliu)
- π§ Think-section rendering fix β A bug where indented code blocks inside
<think>sections consumed the closing</div>tag and displayed it as literal text has been fixed. Affects models likegoogle/gemma-4-31b-itthat use indented bullet-point reasoning. (@trulyshelton)
More details in the changelog:
Improvements
- #2324 feat: migrate project storage from data.json to vault files @Emt-lin
- #2402 perf(deps): route Cohere & Mistral through OpenAI-compat (-1.8 MB bundle) @logancyang
- #2396 chore(models): bump built-in models to latest (May 2026) @logancyang
- #2425 chore(manifest): bump minAppVersion to 1.7.2 and declare mobile support @logancyang
- #2406 fix(popout): document ownership and selection listener fixes (W4/9) @zeroliu
- #2405 fix(vault): respect user trash preference via FileManager.trashFile (W7/9) @zeroliu
- #2404 chore(providers): adopt non-deprecated LangChain APIs + type cleanup @zeroliu
- #2403 chore(types): tighten types and replace TFile/TFolder casts @zeroliu
- #2401 chore(popout): window-global API swaps for timers, globalThis, base64 @zeroliu
- #2400 chore(styles): replace element.style with Tailwind + CSS vars @zeroliu
- #2398 chore(deps): bump deps ahead of scorecard cleanup @zeroliu
- #2358 docs(ai): unify AGENTS.md and CLAUDE.md @capyBearista
Bug Fixes
- #2393 fix(miyo): send portable folder-prefixed path to related-notes endpoint @wenzhengjiang
- #2390 fix(miyo): strip vault folder-name prefix from indexed paths @wenzhengjiang
- #2382 fix(ollama): route through safeFetch when enableCors is set @zeroliu
- #2367 fix: remove 100ms IME timeout that delayed Enter key for Korean/CJK input @octo-patch
- #2343 fix: prevent from being consumed by indented code blocks in think sections @trulyshelton
- #2320 fix: use /responses for GitHub Copilot codex models @Keryer
- #2408 fix: broken tests @zeroliu
- #2407 chore(promises): explicit handling of floating promises @zeroliu
Troubleshoot
- If models are missing, navigate to Copilot settings -> Models tab and click "Refresh Built-in Models".
- Please report any issue you see in the member channel!
Generated by the release agent.
3.2.9-beta.0
Prerelease v3.2.9-beta.0
This is a beta release for testing the project storage migration, mobile support declaration, and a wave of reliability fixes before they ship in 3.2.9. Please report any issues in the Discord member channel with the version number in your report title.
- π Projects now live in your vault, not data.json β Project configurations are migrated from the plugin's
data.jsoninto your vault as regular markdown files. Your projects and their settings transfer automatically on first load. This is a significant storage change β testers please verify your projects come through intact and project chat history loads correctly. (@Emt-lin) - π± Mobile support is now officially declared β Copilot is no longer desktop-only. The plugin now works on Obsidian Mobile (minAppVersion 1.7.2). If you're a mobile user, now is the time to test! (@logancyang)
- β‘ Bundle shrinks by 1.8 MB β Cohere and Mistral models now route through the OpenAI-compatible endpoint instead of their own SDKs, cutting the plugin bundle from ~5 MB down to ~3.3 MB. Faster loads, especially on mobile. (@logancyang)
- π§ GitHub Copilot codex models use the Responses API β Models like
gpt-4.1ando4-miniaccessed through GitHub Copilot now use the/responsesendpoint as required. (@Keryer) - β¨οΈ Enter key delay fixed for Korean/CJK input β A 100ms IME timeout was causing a noticeable delay when confirming input with Enter in Korean, Japanese, and Chinese. Removed. (@octo-patch)
- π€οΈ Miyo path portability fixes β Two Miyo fixes land together: vault-folder-prefixed paths are now sent to the related-notes endpoint (fixing cross-vault disambiguation), and the vault folder-name prefix is stripped from indexed paths (fixing search result links). (@wenzhengjiang)
- π Ollama respects CORS setting for all requests β Ollama requests now go through
safeFetchwhenenableCorsis set, matching the intended behavior for custom Ollama setups. (@zeroliu) - π§ Think-section
</div>parsing fix β A bug where</div>tags were consumed by indented code blocks inside think sections has been fixed. (@trulyshelton) - π‘οΈ Codebase quality hardening β A large wave of ESLint rule enablements (Obsidian API rules, security rules, type-aware rules) and corresponding fixes landed across the W0-W9 scorecard series. No behavior changes for users, but the codebase is now significantly more defensively typed and free of unsafe patterns. (@zeroliu)
What to Test
- Project migration: Open the plugin after updating. Confirm all your projects appear in the Projects list and project chat history loads. Check that project files appear as notes in your vault.
- Mobile: If you use Obsidian Mobile, install the prerelease and confirm basic chat, model switching, and search all work.
- Korean/CJK input: Confirm Enter key no longer has a 100ms lag when confirming IME input in the chat box.
- Miyo: If you use Miyo, test related-notes and search to confirm paths resolve correctly.
- Ollama with CORS: If you run Ollama with
enableCors: true, confirm requests still go through correctly. - Bundle size: Confirm Cohere and Mistral models still work correctly after the SDK routing change.
How to Install the Prerelease
- Download
main.js,manifest.json, andstyles.cssfrom this prerelease's GitHub release page. - Replace the same three files in your vault's
.obsidian/plugins/copilot/folder. - Reload the plugin (Settings β Community Plugins β toggle Copilot off and back on, or restart Obsidian).
- Report issues with the prerelease version number
3.2.9-beta.0in the title so we can track them.
To return to the stable release: reinstall the plugin from Obsidian's community-plugin browser.
Generated by the prerelease agent.
3.2.8
Release v3.2.8
A small but handy patch release adding a global search toggle for Miyo so you can search across everything you've indexed, not just your current vault!
- Search everything in Miyo, not just your vault β A new "Search everything in Miyo" toggle (on by default) lets Miyo search across all indexed content instead of scoping results to your current vault folder. When you turn it off, searches are scoped to your vault and you'll see the folder identifier displayed so you know exactly what's being searched. (@wenzhengjiang)
Improvements
- #2353 feat(miyo): add toggle to search all indexed content @wenzhengjiang
Troubleshoot
- If models are missing, navigate to Copilot settings -> Models tab and click "Refresh Built-in Models".
- Please report any issue you see in the member channel!
Generated by the release agent.
3.2.7
Release v3.2.7
A focused patch release with Miyo server compatibility fixes and a small debug table cleanup!
- π§ Miyo now uses your vault name β not the full path β Copilot sends your Obsidian vault folder name (instead of the absolute local path) when talking to Miyo, making it work correctly whether your Miyo server is local or remote. The outdated "Remote Vault Folder" setting has been removed since it's no longer needed. (@wenzhengjiang)
- π Miyo API alignment: folder names and relative paths β Internal Miyo requests now use
folder_name(matching the updated server API) and send vault-relative file paths for document indexing, keeping Copilot in sync with the Miyo server protocol. (@wenzhengjiang) - π οΈ Cleaner search debug table β The redundant row-index column has been removed from the search results debug log, and columns are now ordered more usefully: path, index type, modified time, score, explanation. (@logancyang)
Improvements
(none)
Bug Fixes
- #2342 Use vault name for Miyo requests @wenzhengjiang
- #2348 refactor(miyo): rename folderPath to folderName and fix parse-doc path @wenzhengjiang
- #2349 refactor(miyo): rename folder_path to folder_name @wenzhengjiang
- #2344 fix(debug): remove idx column from search results debug table @logancyang
Generated by the release agent.
3.2.6
Release v3.2.6
A solid patch release focused on Miyo remote server improvements and a handy OpenRouter prompt caching toggle!
- π§ Miyo remote server support, polished β Several improvements land together for users running Miyo on a remote machine. You can now set a Remote Vault Folder path so Copilot sends the correct path to your remote server (instead of your local path). The settings UI is cleaner too: "Vault Name" is now "Remote Vault Path (Optional)" and "Custom Miyo Server URL" is now "Remote Miyo Server URL (Optional)", both defaulting to blank so local users see no change. An indicator under the Enable Miyo toggle shows you the effective vault path and whether it resolves as local or remote. (@wenzhengjiang)
- π± Miyo stays off on mobile without a remote server β On mobile, where local service discovery is unavailable, Miyo now quietly disables itself unless you've configured a Remote Miyo Server URL. No more silent failures! (@wenzhengjiang)
- π Miyo folder API refactor β Under the hood, Miyo integration now uses the new folder-based API, using your vault path as the folder root and translating paths back to vault-relative paths. Index refreshes now notify you that the folder index is refreshing in Miyo. (@wenzhengjiang)
- βοΈ OpenRouter: per-model prompt caching toggle β If you use an OpenRouter endpoint that doesn't support
cache_controlheaders (like Zero Data Retention endpoints), you can now turn off prompt caching per model in the model edit dialog. Prompt caching stays on by default for everyone else. (@logancyang)
More details in the changelog:
Improvements
- #2334 feat(miyo): add remote vault folder path override for remote servers @wenzhengjiang
- #2326 feat(miyo): rename vault name to remote vault path and align with server API @wenzhengjiang
- #2318 feat(openrouter): add per-model toggle for prompt caching @logancyang
Bug Fixes
- #2331 Refactor Miyo integration for folder API @wenzhengjiang
- #2328 feat(miyo): disable miyo on mobile without a remote server URL @wenzhengjiang
Generated by the release agent.
3.2.5
Release v3.2.5
A packed patch release with Composer V2 editing, Azure provider unification, drag-to-insert wikilinks, Obsidian Bases support, LM Studio Responses API, and a wave of agent, search, and UI improvements!
- Composer V2: smarter file editing β The new
editFiletool replacesreplaceInFileas the primary targeted-edit tool, bringing more reliable and precise in-file edits. (@wenzhengjiang) - Drag relevant notes into your editor β Drag notes and sources from the Copilot chat panel directly into any editor to insert wikilinks instantly. (@logancyang)
- Azure OpenAI and Azure Foundry unified β Both Azure providers are now merged into a single, cleaner Azure provider. (@logancyang)
- Obsidian Bases support β
base:createcommand,.baseactive note support, and a new read-onlyobsidianBasesCLI tool. (@logancyang) - LM Studio: Responses API with KV cache reuse β Faster, more efficient conversations with local models. (@logancyang)
- Gemini Embedding 2 preview support (@logancyang)
- GitHub Copilot Chat supports tool calling (@Emt-lin)
- Automatic file renaming to match topic titles (@somethingSTRANGE)
- OpenRouter prompt caching via cache_control (@logancyang)
- Miyo: customizable vault name, remote backend mobile re-indexing, license auth header (@wenzhengjiang)
- CLI tool upgrades: daily/random read tools, reasoning summaries, enhanced instructions, daily note template fixes (@logancyang)
- Agent & search fixes: inline citations, query dedup, answer source priority, expanded search limits (@logancyang)
- UI & UX polish: Quick Ask panel positioning, LaTeX rendering, Ollama numCtx, "None" system prompt option (@Emt-lin, @logancyang)
- Local model fixes: stripped leaked special tokens;
vault.readin agent tool paths (@logancyang, @yu-zou) - YouTube transcript fix: both classic and modern DOM structures supported (@Emt-lin)
- Tiktoken CDN timeout defense-in-depth fix (@logancyang)
Generated by the release agent.
3.2.4
Release v3.2.4
A patch release with Gemini stability fixes, Miyo improvements, and mobile/UI polish.
- π οΈ Gemini fixes β Fixed streaming crash and agent loop silently stopping mid-conversation. If Gemini was cutting out on you, this should fix it! (@logancyang)
- π οΈ Fix: "Connection error" for Copilot Plus users β Resolved TLS certificate errors that caused connection failures on some systems. (@logancyang)
- π§ Miyo improvements β Custom server URL for remote setups, confirmation dialog before clearing index, and smoother enable flow. (@wenzhengjiang)
- π± Mobile & UI fixes β Floating layers close properly on mobile, tables render correctly in chat, and stale selected text no longer bleeds into follow-up messages. (@Emt-lin)
- β‘ Infinite scroll in chat history β Chat history now loads progressively as you scroll. Much snappier for long histories! (@logancyang)
- π§ Misc fixes β System prompt reset, template syntax hints, Qwen 3.5 search compatibility, Ctrl+Enter shortcut, custom model button layout. (@logancyang)
- π Minor: User-facing documentation added (@logancyang), improved web tabs test coverage (@somethingSTRANGE)
Improvements
- #2251 Add infinite scroll pagination to ChatHistoryPopover @logancyang
- #2229 Add custom Miyo server URL setting for remote deployments @wenzhengjiang
- #2211 Add confirmation dialog before clearing Miyo index @wenzhengjiang
- #2256 Add automated release workflow on PR merge @logancyang
- #2254 Add user-facing documentation @logancyang
- #2252 Rename docs to designdocs and nest todo folder @logancyang
- #2239 Improve test coverage for context webTabs parsing @somethingSTRANGE
Bug Fixes
- #2255 Fix: use safeFetch for Copilot Plus to bypass browser TLS errors @logancyang
- #2249 Fix: upgrade @langchain/google-genai to fix Gemini streaming crash @logancyang
- #2247 Fix: prevent silent agent loop termination with Gemini @logancyang
- #2246 Fix: allow resetting default system prompt to built-in @logancyang
- #2245 Fix: improve system prompt template syntax hints @logancyang
- #2243 Fix: normalize string booleans in localSearch schema for Qwen 3.5 @logancyang
- #2234 Fix: Add Custom Chat Model action button crowding @logancyang
- #2228 Fix: skip redundant eligibility check when enabling Miyo @wenzhengjiang
- #2226 Fix: chat panel table rendering and third-party plugin compatibility @Emt-lin
- #2223 Fix: close Radix portaled layers when mobile drawer hides @Emt-lin
- #2222 Fix: exclude non-recoverable segments from L2 promotion @Emt-lin
- #2220 Fix: restore Ctrl+Enter text-replacement shortcut in command modal @logancyang
π€ Generated with Claude Code