Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project follows Semantic Versioning.
[0.12.2] - 2026-07-04
Section titled “[0.12.2] - 2026-07-04”Changed
Section titled “Changed”- Model capability overrides are now available for Ollama models as well as custom providers, so users can correct incomplete or inaccurate capability metadata reported by the installed model.
- Refreshing the model menu now reloads the Ollama tag list and invalidates cached per-model capability details together.
- Bumped package version to
0.12.2.
- Provider lifecycle requests now resolve one canonical configured base URL; stale legacy/global Ollama URLs migrate once and can no longer split model listing, details, version, pull, unload, warmup, embeddings, and chat across different servers.
- Model details and capability badges now share one failure-aware query contract, preventing a failed capability request from being cached as successful empty model information. Empty Ollama details surface an error and in-place Retry action instead of silently hiding the card.
- Runtime routes now return explicit invalid-payload responses instead of leaving message channels open without a response.
[0.12.1] - 2026-07-04
Section titled “[0.12.1] - 2026-07-04”- Durable SQLite checkpoints for native and prompt-based tool loops, with approval-prompt keepalive and same-request recovery after an MV3 service-worker restart.
- A localized three-step first-run flow covering the local privacy contract, an in-app Ollama connection check with CORS/port guidance, and optional browser permissions.
- Native Anthropic Messages API support for user-added providers, including model discovery, streaming, images, tool calls, and manual model IDs.
- Session tags, explicit message forks, and a local-data inventory with backup and wipe controls promoted into Privacy settings.
Changed
Section titled “Changed”- Provider settings now show only verified Ollama, LM Studio, and llama.cpp built-ins. vLLM, LocalAI, KoboldCPP, and other compatible endpoints use the redesigned custom-provider flow.
- Composer context controls now use one full-height tray for page context, knowledge, web search, files, screenshots, and attachment inspection.
- Settings now use six intent-based tabs; legacy deep links redirect to their new destination.
- RAG ingestion and live-page retrieval now share one chunker implementation.
- Reasoning trace events use isolated activity, tool, and thinking renderers.
- Message edits update in place by default; Fork remains an explicit action.
- Chat-memory indexing is off by default for new profiles.
- Bumped package version to
0.12.1.
0.11.25 - 2026-06-30
Section titled “0.11.25 - 2026-06-30”- Session-title filtering in the chat-session sidebar, with localized empty and clear-search states.
- S4 vector durability smoke coverage: persist a chunk, reload the module graph, and verify similarity search still finds it.
Changed
Section titled “Changed”- Updated shadcn tooling and added restrained scroll fades plus live-status shimmer to existing chat and settings surfaces.
- AI-readable docs now remove MDX
export constdata and SEO-only FAQ markup while preserving the rendered documentation prose. - Bumped package version to
0.11.25.
- Selection Actions now preserve configured model system instructions and requested output language instead of biasing extraction results toward English.
- Message footers use explicit export and delete actions instead of ambiguous ellipsis menus, and chat-memory sources use a primary-colored user icon.
0.11.24 - 2026-06-29
Section titled “0.11.24 - 2026-06-29”- OpenAI-compatible provider round-trip smoke coverage: stream a response, persist the assistant reply, reload the SQLite facade, and assert the reply survives.
- SEO foundation docs: quick start, privacy, FAQ, and Ollama CORS troubleshooting pages, with FAQPage structured data and higher-signal homepage retrieval copy.
Changed
Section titled “Changed”- Local OpenAI-compatible
401/403failures now point users at CORS/origin setup instead of misleading API-key guidance when the provider URL is local. - Docs site upgraded to Astro 7 and Starlight 0.41, with the Mermaid markdown hook moved to Astro’s current markdown processor API.
- Bumped package version to
0.11.24.
0.11.23 - 2026-06-28
Section titled “0.11.23 - 2026-06-28”- An always-visible context-state pill and pre-send context preview covering page tabs, attached files, local knowledge, and web search.
- A live model-tools inventory in Privacy & permissions showing family and browser-permission availability.
- An in-panel provider setup flow for first-run connection failures and empty model lists.
Changed
Section titled “Changed”- RAG, page/tab context, and web results now share one grouped Sources sheet per answer.
- Settings navigation is grouped by user intent while preserving existing tab ids, deep links, and persisted storage keys.
- Technical labels now use plain-language names such as Knowledge & web, Knowledge storage, Page & tabs, and Data & backup.
- Privacy is a first-class settings group with an explicit local-storage overview.
- Streaming follows output without restarting smooth-scroll animations, and returning to the bottom no longer waits 300 ms.
- Queued assistant replies use a stable message-shaped loading skeleton.
0.11.22 - 2026-06-28
Section titled “0.11.22 - 2026-06-28”- Optional, permission-gated tools for recently closed tabs/windows and synced-device sessions. Session reads honor unreadable and never-read URL exclusions.
- Automated 0.10.3 provider-storage upgrade contracts and a
verify:releasegate. - A guarded
tabCapture/offscreen feasibility contract documenting browser and product blockers before capture UI ships.
Changed
Section titled “Changed”- Optional-permission switches now react immediately when access is granted or revoked from browser extension settings.
- Chrome-only manifest permissions are omitted from Firefox builds at generation time.
- Chat header, session selector, semantic search, provider status, embedding status, and export controls use a quieter compact icon treatment.
- The per-session export shortcut no longer occupies the chat header.
- Browser smoke verification no longer calls the deleted Firefox manifest post-processing script.
- Browser automation now serializes TSX callbacks safely, waits for fonts before screenshots, and completes live Chromium/Firefox chat checks.
- Firefox builds declare no extension data collection and no longer emit the missing declaration warning.
0.11.20 - 2026-06-26
Section titled “0.11.20 - 2026-06-26”Consolidated 0.11.x line: the “agent’s hands” features plus a data-integrity hardening pass.
- Permissions & privacy panel (Options + chat popover) with optional, on-demand browser permissions and feature-flag gating.
- Global keyboard shortcut and omnibox (
olc) quick-ask to open and send to the side panel. - Notifications and reminders.
- Page screenshot into vision chats, with optional auto-attach for vision models.
- Browser knowledge: optional RAG over bookmarks/history that honors exclusion scope.
- Per-site content-extraction profiles and tab-group workflows.
- Artifact previews (canvas) with per-artifact downloads.
- Prompt template variables.
- Model-callable tools
save_artifact(write generated text to disk) andcapture_screenshot, plus a multimodal tool-result path. - Per-model and per-family tool governance.
- Session count badge in the chat-sessions sheet header.
Changed
Section titled “Changed”- Long-running model/embedding fetches now time out instead of hanging.
- RAG and background memory context capped to the configured character budget.
- Message-router payloads centrally parsed and validated.
- Alarms permission made optional; removed the unbuilt prompt-chaining flag.
- SQLite durability hardened: foreign keys on (cascade deletes) and an explicit flush path on unload/restart.
- HNSW vector index reloads on service-worker restart and tolerates duplicate ids; vector deletes reconciled across stores.
- “Reset” now wipes provider API keys and no longer skips string-keyed modules.
- Content extraction restores patched
fetch/XHR instead of leaving the host page rewrapped. - Streaming: error path keeps the message id, and abort is keyed per-stream so concurrent chats don’t cancel each other.
- Scoped the per-token re-render storm to the active session.
- Message delete now asks for confirmation.
0.10.3 - 2026-06-20
Section titled “0.10.3 - 2026-06-20”- i18n-backed settings search index that searches translated labels, descriptions, and visible child strings instead of only hand-written headings.
- Ranked settings search with case/diacritic/punctuation normalization, partial-token matching, and typo-tolerant fuzzy matching for common misses like
provder,ollma, and partial queries likeprese. - Search coverage for provider controls, prompt templates, keyboard shortcuts, guides, reset modules, reset danger zone, embedding storage stats, semantic search, cache, ANN, and advanced embedding search controls.
- Cmd/Ctrl+K shortcut on the options page to focus settings search, plus compact placeholder-based search hints for smaller screens.
Changed
Section titled “Changed”- Settings search results now show the matching translated child text with parent context, then deep-link to the owning tab and focus/highlight the concrete control where possible.
useChatnow delegates turn lifecycle work touseChatTurnController, keeping the public hook focused on wiring state into the chat UI.- Chat composer attachment handling, file-upload pipeline work, and provider settings panels were split into smaller focused modules without changing storage keys or public behavior.
- Settings search now finds presets, browser settings, base URL/API key provider controls, prompt/shortcut/guide text, and embedding search internals that were previously missed.
- Search deep links no longer stop at the right tab for many controls; focus IDs were added across settings cards, fields, reset rows, guide rows, shortcut rows, and provider controls.
- Duplicate
search-limit-topkfocus targets between Context and Embeddings were separated so highlights land on the intended control.
0.10.2 - 2026-06-16
Section titled “0.10.2 - 2026-06-16”- Provider-agnostic web search tool (
web_search) for tool-capable models, gated behind device-local settings and exposed as one model-visible tool regardless of backend. Initial backends are SearXNG, Brave Search, and Tavily. - Local SearXNG Docker Compose setup under
searxng/for private development/testing with JSON search enabled. - Web search settings in the Context tab: enable toggle, provider selector, API key/endpoint fields, safe-search, result count, SearXNG page count, beta badge, provider base URL transparency, and test search.
- Chat composer globe toggle for enabling/disabling web search without leaving the chat.
- Settings registry, settings search, per-section reset, preset previews, and one-click presets for common configuration profiles.
- Lenient chat import salvage path that keeps recoverable sessions and reports per-session diagnostics instead of dropping whole imports.
Changed
Section titled “Changed”- Documentation domain moved to
https://www.ollamaclient.in/. - Documentation updated for image input, browser-context tools, and model capability gating.
- Tool guidance now tells models to use
web_searchfor current/time-sensitive facts, include the current date in search planning, and cite returned URLs. - Web-search results are normalized, capped, and treated as untrusted snippets before being returned to the model.
- Web-search sources now split used and unused results, show richer metadata, and keep source identity stable when multiple tool runs return the same URL.
- Web-search backends now support time-range filtering where available and dedupe normalized URLs before result caps are applied.
- Thinking-only tool responses now surface as the visible assistant answer instead of falling through to the generic “no final answer” fallback.
- Ollama and LM Studio provider capability docs now report tool-calling support correctly; Ollama model-level tools still require the model’s reported
toolstag. - Settings batch writes now fail fast if scalar and field-level writes are mixed for the same storage key instead of silently dropping one write.
- Settings
focusURL params are cleaned up after use so tab changes do not retry stale highlights.
0.10.1 - 2026-06-13
Section titled “0.10.1 - 2026-06-13”- Tool calling runtime (foundation): tool-capable models can call internal tools mid-conversation, with the calls and results round-tripped through both provider adapters (Ollama native
tools+tool-role results; OpenAI-compatibletools/tool_calls). Gated on the model’s resolvedtoolCallingcapability — non-tool models are completely unaffected. - Provider-agnostic, MCP-ready architecture: a
ToolSourceabstraction with aToolRegistrythat aggregates sources and routes calls by name. Internal tools are the first source; a future MCP server registers as another source with no change to the adapters, the tool loop, or the UI. - Internal tools, all running locally:
rag_search(past-conversation memory),file_search(uploaded/indexed documents),current_tab(active tab’s readable text, incl. YouTube transcript),list_tabs+read_tab(enumerate and read any open tab by id or title/URL — answer about any tab without adding it through the tab-context UI), andselected_text(most recent page selection). Tab tools inject the content script on demand, so tabs opened before the extension load are read without a refresh. They honor the user’s excluded-URL settings and explain gracefully when a tab is a browser-internal page (chrome://, web store) rather than failing. - Transparency: the chain-of-thought reasoning trace now shows each tool run live (name, running/done/error status, and the sources it looked at), so it is always visible what the extension is doing on the user’s behalf.
Changed
Section titled “Changed”- Tool calls are now inspectable in the reasoning trace: each tool step shows its name, status, the input arguments the model passed, and a preview of the output (or the error / sources / “trimmed” note). The panel auto-expands while a tool is running and collapses once the answer streams.
- Reasoning (“thinking”) is now shown inline and live instead of behind a click-to-open popover. It auto-expands while the model is thinking — so on reasoning models like qwen3, where the long thinking phase used to look frozen with the answer appearing all at once, the live reasoning is now visible and scrolls as it streams; it collapses once the answer starts and can be toggled anytime.
- When tools are offered to a model, the system prompt now names them and tells the model to call them for “current page / this video / my files / open tabs / selected text” questions. Without this, capable models sometimes replied “I can’t access your tabs” instead of calling the tool. (Reasoning-distill models such as deepseek-r1 still tag
toolsbut call them unreliably — prefer qwen3 / llama3.x for tool use.) - Tool results are now trimmed to a configurable per-result character cap (default 10,000) before the model reads them, so a long page, transcript, or document dump no longer balloons the prompt and stalls generation on a laptop. When a result is trimmed it is shown in the reasoning trace (“result trimmed — change limit in Settings → Context”) and the limit is adjustable on the options page.
- Model tool-capability is cached per session instead of re-fetched (
/api/show) on every message, cutting pre-stream latency and request churn. - Each tool call has a 60s timeout; a hung tool degrades to an error result instead of blocking the chat.
- Browser tab access now defaults to on so tab context and the tab tools work out of the box (still toggleable from context settings / options).
- Sending a message now shows the “Thinking…” state immediately. Previously the indicator only appeared after pre-stream work (RAG embedding, vector search) finished, so a slow context build looked like nothing was happening.
read_tabnow treats a stale tab id as recoverable: it refreshes readable tabs and falls back to the active readable tab when possible, instead of surfacing a hard tool error.- Tool-call status icons and labels were tightened so provider health, embedding health, exports, context controls, stop generation, and session drawer actions read correctly at a glance.
- The tool exchange is ephemeral, mirroring RAG context injection: only the final answer and the tool-run trace persist — no schema migration and no new message rows.
- Architecture is MCP-ready: a future MCP server registers as another tool source with no change to the adapters, loop, or UI.
0.9.1 - 2026-06-13
Section titled “0.9.1 - 2026-06-13”- Image / vision input: attach images to a chat message for vision-capable models. Drag-and-drop, file picker, and clipboard paste are supported; staged images appear in the composer’s attachment sheet (reusing the file-attachment UI) and as click-to-enlarge thumbnails in sent messages.
- Image attach is gated on the selected model’s resolved
visioncapability — non-vision models show a clear blocked state pointing at the model-menu capability override. - Provider adapters send images in each provider’s native format: Ollama
images(base64), OpenAI-compatibleimage_urlcontent parts. - Images persist with the chat (reused
filestable, no schema migration) and reopen with previews. - Configurable per-image size cap on the options page (default 10MB). Supported formats are PNG, JPEG, and WebP; HEIC/HEIF shows a specific “export as JPEG/PNG” message. Strings translated into all supported locales.
Changed
Section titled “Changed”- Provider errors now surface a clean, human-readable message in chat instead of the raw provider response body (the raw text is kept for diagnostics only).
- Image attach no longer false-blocks on the first try while the selected model’s vision capability is still being detected.
- Capability override sheet: an external (Chrome-sync) update no longer overwrites unsaved edits, and a failed save keeps the sheet open and surfaces the error instead of failing silently.
- Per-model capability overrides are written through a serialized queue so two rapid saves can’t drop one another.
0.9.0 - 2026-06-13
Section titled “0.9.0 - 2026-06-13”- Model capability detection foundation: a normalized
ModelCapabilitieslayer (text,vision,tool calling,reasoning,context length) resolved per model with asourceandconfidence, layered as user override → model metadata → provider default. - Capability detection across all providers: Ollama
/api/showcapability tags (high confidence), LM Studio modeltype(vlm/embeddings, medium confidence), and provider defaults elsewhere. Unknown capabilities resolve to off — never enabled on a guess. - Per-model capability badges in the model menu (completion, vision, tools, thinking, embeddings) with tooltips, fetched only while the menu is open and cached.
- Manual capability overrides: a Model Capabilities sheet for models whose provider can’t self-report, to declare vision/tools/etc. by hand. Overrides persist per model and are sync-safe. Translated into all supported locales.
Changed
Section titled “Changed”- OpenAI-compatible providers no longer default to
https://api.openai.com/v1; a blank base URL falls back to a local endpoint so a misconfigured provider never silently sends data to a cloud API.
- Reranking no longer silently drops documents that lack an embedding; they keep a neutral score instead of being removed from results.
0.8.0 - 2026-06-10
Section titled “0.8.0 - 2026-06-10”- Selection Actions: selected page text now opens a local AI action toolbar with Summarize, Rewrite, Shorten, Fix Grammar, Explain, Extract Action Items, Translate to English, and Custom Prompt actions.
- Floating result panel with streaming output, retry/cancel, copy, Open in Chat, and preview-first Replace/Insert controls.
- Safe page editing helpers for
input,textarea, and simple single-blockcontenteditableselections. Generated output is inserted as plain text only so page UI and heading/list structure are preserved. - Selection Actions settings for enablement, minimum selected characters, and enabled action list.
- Thinking/reasoning model support in the selection overlay: live “Reasoning…” section with animated pulse indicator auto-expands during streaming and collapses when done.
- Inline model selector in the panel header (same row as title); filters out embedding models; syncs with sidebar model selection.
- Dev-only Theme Lab for tuning sidebar, chat, composer, message, and control tokens live during local development.
- Context preview sheets for selected tabs, RAG sources, and attached files with searchable tab context and scrollable extracted text previews.
- Tab count badge on the context menu icon shows how many tabs are active in the current context.
- Copy button on each RAG source and tab context chunk (inside the sources sheet) for quick content copying.
- Copy button on expanded file attachment previews in the composer attachment sheet.
- Markdown rendering in the selection overlay thinking/reasoning panel during streaming.
Changed
Section titled “Changed”- Selection overlay fully rewritten as a React component (
SelectionOverlayApp) mounted inside the shadow DOM, replacing the prior imperative content-script logic. State is managed by auseReducerstate machine; stream lifecycle is handled imperatively to avoid declarative/imperative conflicts. - Selection overlay panel split into focused sub-components:
PanelHeader,PanelThinking,PanelFooter,SelectionPanel,SelectionToolbar. - Panel uses shadcn
CardandbuttonVariantsfor design-system consistency with the rest of the extension. - Shadow DOM CSS extracted to
overlay-shadow-styles.ts; stream chunk/done/error logic extracted tooverlay-stream.ts; content script reduced from 966 to ~530 lines. SourceAccordionItemrenamed to genericAccordionCardwith an optionalmetadataprop — reusable outside the RAG/source context.MessageSourcesSheetnow usesPreviewSheetas its structural shell, eliminating the duplicated sheet/header layout.PreviewSheetbody wrapped in a bounded flex scroll container so content always scrolls within the sheet height rather than overflowing it.- Accordion item content areas (RAG chunks, tab context) capped at
min(16rem, 40vh)with vertical scroll, matching the attachment preview behaviour. - Sidebar, chat transcript, composer, message footer, run details, and session metrics now use the token-driven compact UI system.
- Chat action buttons now render from shared tooltip/action primitives with smaller icon sizing and compact overflow behaviour.
- Session metrics moved into the chat header as a compact metric trigger with a short popover summary.
- File attachments in the composer now sit in a compact horizontal rail; attachment list and prompt selector dialogs replaced with right-side sheets.
IconBadgecomponent extracted to deduplicate the icon + count badge pattern used across context buttons.- Icon sizes standardised to
icon-xsfor thumbs up/down feedback and source-chunk action buttons. - Chat/session stores, content scripts, provider settings, and selection-action UI split into smaller focused modules.
- Magic-number timeouts extracted into named constants.
- Selection toolbar not reappearing after closing the overlay and re-highlighting text on the same page.
- Shorten, Cancel, and more-menu actions broken in the selection overlay due to a stream lifecycle conflict between a declarative
useEffectcontroller and imperativesetTimeout(startStream)calls. Resolved by removing theuseEffectcontroller entirely. - Selected text now included in the message when opening a selection result in chat, with a separator between the quoted text and the action output.
- Streaming renders in the selection overlay throttled to prevent layout thrash on fast-arriving chunks.
- Shadow DOM CSS variables now isolated from host-page design tokens by pinning all tokens with concrete OKLCH values on the container element.
- Tailwind rem-based sizing fixed on pages with non-standard root font-size (e.g. YouTube) by overriding spacing, text, and radius with absolute
pxvalues. - Toolbar/panel placement corrected for pages that apply CSS
transformto ancestor elements. - Reasoning trace state now distinguishes thinking from answering and avoids duplicate streaming indicators.
- Context injection now respects selected page/RAG state instead of leaking stale context across conversations.
- Chat history now uses the SQLite facade only; the Dexie chat-history fallback has been removed.
- Left border removed from PDF message export cards.
- Extra padding on guides page and prompt list.
- Session metric now centred in the chat header.
- File chip sizing and composer attachment rail layout.
- Embedding models filtered from the panel model selector using the same
isEmbeddingModelcheck as the sidebar.
- Shadow DOM CSS variables now isolated from host-page design tokens (YouTube, etc.) by pinning all tokens with concrete OKLCH values on the container element.
- Tailwind rem-based sizing (
h-7,size-*,gap-*) fixed on pages with non-standard root font-size (e.g. YouTubehtml{font-size:62.5%}) by overriding--spacing,--text-xs, and--radiuswith absolutepxvalues. - All remaining
remvalues in shadow DOM custom CSS replaced withpxso sizing is consistent across all host pages. - Toolbar/panel placement corrected for pages that apply CSS
transformto ancestor elements (creates a shifted fixed-positioning context); drift is measured and compensated after initial placement. - Tooltip dark mode background uses card colour instead of foreground in shadow DOM context.
- Tooltip arrow hidden in shadow DOM.
0.7.3 - 2026-06-02
Section titled “0.7.3 - 2026-06-02”- Standardized error handling across all background handlers, providers, and storage layers with typed error envelopes and centralized
error-handler.ts. - Improved user-facing error display with guidance text mapped to common failure modes (connection refused, model not found, auth errors, etc.).
- System prompt now autosaves on change;
- Astro docs BaseLayout: replaced invalid Tailwind v4
supports-[backdrop-filter]syntax with standardsupports-backdrop-filter. - Theme toggle button on mobile screens: switched from duplicate
idattributes todata-theme-toggle+querySelectorAllso multiple toggle instances work correctly.
0.7.2 - 2026-06-01
Section titled “0.7.2 - 2026-06-01”- YouTube watch pages now extract only the video title and transcript instead of falling back to generic page content.
- YouTube transcript extraction now supports modern transcript panels, legacy segment renderers, and caption-track fallback data.
- Udemy lecture pages now try the transcript panel first and fall back to normal page extraction when no transcript is available.
- Removed stale provider configs, such as OpenAI entries no longer present in the provider UI, from saved provider settings.
- Restored the lockfile dependency resolution for frozen CI installs.
Changed
Section titled “Changed”- Tab-context retrieval now respects the configured maximum context budget during RAG retrieval.
- Local development logging defaults to debug level for easier extraction troubleshooting.
0.7.1 - 2026-05-30
Section titled “0.7.1 - 2026-05-30”- Zod runtime validation across all JSON.parse sites in provider, storage, and prompt-import paths.
- Structured logger (
src/lib/logger.ts) replacing ad-hocconsole.*calls throughout the background, provider, and storage layers. pnpm verifyconvenience script:pnpm typecheck && pnpm lint:check && pnpm test:run.
Changed
Section titled “Changed”- Provider factory: replaced
if/else ifchain withRecord<ProviderId, ProviderConstructor>lookup. - Docs synced: README, AGENTS.md, and docs-src version/LOC references updated for 0.7.1.
- Removed catch-and-silence patterns in provider error handling — all catch blocks now log through the structured logger.
- Chrome extension package localization metadata (
default_locale, manifest__MSG_*substitutions, and_localesmessages) so Chrome Web Store can detect supported languages. - 0.7.0 frontend foundation: app-owned layout, form, settings, and feedback primitives that sit above shadcn/Base UI so preset refreshes do not own product behavior.
- Data-display primitives for repeated provider, model, source, file, metadata, context preview, command item, and info-list patterns.
- React Hook Form-safe controlled wrappers for number inputs, sliders, text inputs, textareas, selects, and switches.
- Internal frontend design-system documentation and visual-smoke screenshot capture for options/sidepanel light, dark, and long-locale checks.
- Selection button overlay that captures selected text and delivers it to the side panel chat via the background port.
- Composer context preview showing selected text before sending.
src/i18n/resources.tsis now build-generated fromsrc/locales/bytools/generate-i18n-resources.ts. It is.gitignoredand regenerated bypnpm prepare(so a fresh install produces it) and bypnpm dev/build/package(which chainpnpm generate:resources &&first)..husky/pre-pushrunning the fullpnpm test:run;pre-commitno longer runs the full suite, onlytest:relatedvia lint-staged. Commits got faster, the safety net moves to push.
Changed
Section titled “Changed”- Embedding test tools split into two standalone
SettingsCardcomponents (EmbeddingTestGeneration,EmbeddingTestSearch) withmodelExistsguard internalized. - Fixed uneven card gap in embedding settings by removing stray spacer text nodes.
- Bumped package version to
0.7.0. - Chrome Web Store locale metadata is now generated from
src/locales/<lang>/translation.jsonextension blocks, makingsrc/localesthe single source of truth for app translations and extension package localization. - Newly synced locale keys now have localized copy across supported languages instead of English fallback text.
- Migrated high-churn settings surfaces to shared layout/settings primitives, including model parameters, context settings, RAG retrieval controls, text splitting, embedding search/limits/generation, storage stats, database management, and search empty states.
- Moved control-density sizing and slider cursor behavior out of global CSS fallbacks and into tokenized utilities / component-level classes.
- Removed dead code:
src/lib/rag/core/(browser-RAG interface scaffolding never wired up), the orphansrc/stores/speech-store.ts(live store issrc/features/chat/stores/speech-store.ts),src/contents/selection-button.tsx,src/background/migrations/rag-quality-migration.ts,src/components/ui/sidebar.tsx,src/scripts/verify-rag.ts,src/contents/i18n-lite.ts(had zero importers; the live selection-button content script carries its own inline translations), and an unregistered provider stub that was never wired into the factory, default providers, or registry. - Pruned 29 unused shadcn primitives from
src/components/ui/and removed the corresponding npm deps (embla-carousel-react,input-otp,react-resizable-panels,recharts,sonner,vaul) — install tree drops by 39 packages. - Removed the blanket
src/components/ui/**lint override inbiome.json; remaining vendored-shadcn a11y exceptions are now per-line//comments inside the offending files. - Manifest (CSP, host permissions, web-accessible resources, gecko settings) is no longer duplicated in
package.json;wxt.config.tsis the single source of truth. - Migrations consolidated under
src/lib/migration/(movedembedding-dimension-migration.tsover fromsrc/background/migrations/, which is now gone). MESSAGE_KEYS.OLLAMAmap trimmed to keys whose string value actually differs fromMESSAGE_KEYS.PROVIDER(8 entries instead of 17). The dispatcher insrc/background/index.tsshed the now-dead duplicatecasearms — those compiled to the same string and were unreachable.- Provider factory: replaced the
if/else ifchain that picked OpenAI-compatible subclasses with aRecord<ProviderId, ProviderConstructor>lookup; collapsedgetProviderandgetProviderWithConfigto share oneinstantiate(config)helper. - TypeScript target bumped to ES2022; surfaced a real latent class-field initialization bug in 5 OpenAI-compatible provider subclasses (
override capabilities = { ...this.capabilities, ... }read the child’s uninitialized slot underuseDefineForClassFields). Each capability merge moved into the subclass constructor. src/types/index.ts(568 lines) split into six domain files (chat,model,messaging,errors,content-extraction,ui-state);index.tsis now a re-export barrel so the 98 existing@/typesimporters keep working.
Removed
Section titled “Removed”*.tsx,types.ts,index.tsfromvitest.config.tscoverageexclude. Coverage reports were hiding every UI component, type file, and barrel. They now reflect reality.
- AGENTS.md, README, and CHANGELOG synced to reflect the actual repo layout and provider list.
0.6.5 - 2026-05-20
Section titled “0.6.5 - 2026-05-20”- Settings deep-links so other surfaces can open the options page at a specific section.
Changed
Section titled “Changed”- Migrated shadcn primitives to the
base-mirapreset on Tailwind v4 across sidepanel and options for consistent design tokens. - Trimmed unused dependencies as part of the shadcn preset migration.
- Chat-stream now handles unexpected runtime-port disconnects without leaving the UI in a stuck loading state.
- Slider behavior and several lint violations introduced during the shadcn migration.
0.6.4 - 2026-05
Section titled “0.6.4 - 2026-05”- Grounding mode plus configurable per-conversation context limits.
- Tab-content extraction wired into chat context.
Changed
Section titled “Changed”- Standardized status styling and replaced ad-hoc emoji status indicators with shared status components.
- Aligned options and sidepanel UI on shared shadcn preset tokens.
- i18n strings added for the extracted-tab context popup and the context-settings screen.
0.6.3 - 2026-05
Section titled “0.6.3 - 2026-05”- Tab-extraction inspector for debugging page content capture.
- Cross-browser verification automation (
pnpm verify:browser-smoke,pnpm verify:browser-automation) covering CSP, manifest permissions, and an optional Ollama connectivity check.
Changed
Section titled “Changed”- Expanded extension CSP to allow remote provider endpoints and added in-UI connection-troubleshooting hints.
- Hardened streaming-message updates against partial-state races.
- Extracted-tab content viewer is now a scrollable modal; extracted HTML is sanitized before display.
0.6.2 - 2026-04-05
Section titled “0.6.2 - 2026-04-05”- Multi-provider model support with explicit provider capabilities and routing for Ollama, LM Studio, llama.cpp, and additional providers (vLLM, LocalAI, KoboldCPP).
- Full backup/export and restore flows with manifest versioning, partial failure reporting, and ZIP-based data migration.
- Enhanced RAG pipeline features: hybrid search, reranking, quality filtering, feedback blending, recency boosting, and memory-aware retrieval.
- Embedding health and rebuild tooling, including progress feedback, dimension health checks, and model status indicators.
- Search UI enhancements with scoped tabs, result grouping, and dedicated search components.
- Print/PDF export entrypoint and improved export flows.
- Expanded i18n coverage across settings, prompts, feedback, and embedding/RAG controls.
- New welcome screen layout with modular hero/status/features components and refreshed onboarding.
Changed
Section titled “Changed”- Embedding strategy and storage now track provider/model metadata, support provider-aware fallbacks, and filter search results by embedding model/provider/dimension.
- Model selection and provider settings refactored with SelectedModelRef, provider migrations, and capability-aware UI.
- Chat UI and input UX refined (message bubbles, toolbar, scroll behavior, loading states, and context menus).
- File upload and extraction pipeline simplified for local PDF/DOCX processing.
- UI system migrated/refined with updated shadcn/base components, Tailwind v4 upgrades, and layout/styling polish.
- Settings layout reorganized with better navigation, more granular controls, and migration tooling.
- Storage migrations updated (provider mappings, embeddings, feedback) with clearer diagnostics and safer defaults.
- Embedding model detection, download, and fallback flows with improved status checks and timeouts.
- RAG pipeline edge cases (full mode, empty results) and search ranking inconsistencies.
- Context menu and background handler stability issues.
- Chat streaming jitter, scroll flicker, and race conditions around message updates.
- Tests updated for new provider and embedding metadata.
0.6.0 - 2026-02-08
Section titled “0.6.0 - 2026-02-08”- Multi-provider support with routing and provider settings (Ollama, LM Studio, llama.cpp).
- Internationalization for provider settings and related UI text.
- RAG enhancements: hybrid search, reranking, quality filtering, async retrieval, and sources UX.
- File attachment viewer in chat.
- Multi-browser build targets via WXT for Chrome MV3 and Firefox MV2.
Changed
Section titled “Changed”- Settings page layout with sidebar navigation, standardized form fields, and improved UI consistency.
- Embedding strategy updates with provider-aware embeddings and enforced fallbacks.
- Model management cleanup, including removal of model pull and embedding download UI.
- Chat streaming and handler refactors for improved behavior and clarity.
- Provider display tweaks (full version labels, model name truncation cleanup).
- Embedding model name normalization and more robust model checks.
- Legacy Ollama base URL synchronization for provider detection.
- Branch navigation logic in chat message footer.
- Minor i18n text cleanup and translation updates.
Documentation
Section titled “Documentation”- Comprehensive docs refresh for v0.6.0, including RAG and WXT migration updates.