Skip to content

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.

  • 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.
  • Tab-context retrieval now respects the configured maximum context budget during RAG retrieval.
  • Local development logging defaults to debug level for easier extraction troubleshooting.
  • Zod runtime validation across all JSON.parse sites in provider, storage, and prompt-import paths.
  • Structured logger (src/lib/logger.ts) replacing ad-hoc console.* calls throughout the background, provider, and storage layers.
  • pnpm verify convenience script: pnpm typecheck && pnpm lint:check && pnpm test:run.
  • Provider factory: replaced if/else if chain with Record<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 _locales messages) 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.ts is now build-generated from src/locales/ by tools/generate-i18n-resources.ts. It is .gitignored and regenerated by pnpm prepare (so a fresh install produces it) and by pnpm dev/build/package (which chain pnpm generate:resources && first).
  • .husky/pre-push running the full pnpm test:run; pre-commit no longer runs the full suite, only test:related via lint-staged. Commits got faster, the safety net moves to push.
  • Embedding test tools split into two standalone SettingsCard components (EmbeddingTestGeneration, EmbeddingTestSearch) with modelExists guard 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.json extension blocks, making src/locales the 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 orphan src/stores/speech-store.ts (live store is src/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 in biome.json; remaining vendored-shadcn a11y exceptions are now per-line // biome-ignore comments inside the offending files.
  • Manifest (CSP, host permissions, web-accessible resources, gecko settings) is no longer duplicated in package.json; wxt.config.ts is the single source of truth.
  • Migrations consolidated under src/lib/migration/ (moved embedding-dimension-migration.ts over from src/background/migrations/, which is now gone).
  • MESSAGE_KEYS.OLLAMA map trimmed to keys whose string value actually differs from MESSAGE_KEYS.PROVIDER (8 entries instead of 17). The dispatcher in src/background/index.ts shed the now-dead duplicate case arms — those compiled to the same string and were unreachable.
  • Provider factory: replaced the if/else if chain that picked OpenAI-compatible subclasses with a Record<ProviderId, ProviderConstructor> lookup; collapsed getProvider and getProviderWithConfig to share one instantiate(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 under useDefineForClassFields). 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.ts is now a re-export barrel so the 98 existing @/types importers keep working.
  • *.tsx, types.ts, index.ts from vitest.config.ts coverage exclude. 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.
  • Settings deep-links so other surfaces can open the options page at a specific section.
  • Migrated shadcn primitives to the base-mira preset 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.
  • Grounding mode plus configurable per-conversation context limits.
  • Tab-content extraction wired into chat context.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Comprehensive docs refresh for v0.6.0, including RAG and WXT migration updates.