|
50 | 50 |
|
51 | 51 | ## ✨ Features |
52 | 52 |
|
53 | | -- 🔌 **Local Ollama Integration** – Connect to a local Ollama server (no API keys) |
54 | | -- 💬 **In-Browser Chat UI** – Lightweight, minimal, fast |
55 | | -- ⚙️ **Custom Settings** – Control model parameters, themes, prompt templates |
56 | | -- 🔄 **Model Switcher** – Switch between models in real time |
57 | | -- 🔍 **Model Search & Pull** – Pull models directly in the UI (with progress indicator) |
58 | | - |
59 | | -- 🗑️ **Model Deletion with Confirmation** – Clean up unused models from the UI |
| 53 | +### 🤖 Model Management |
| 54 | +- 🔌 **Local Ollama Integration** – Connect to a local Ollama server (no API keys required) |
| 55 | +- 🔄 **Model Switcher** – Switch between models in real time with a beautiful UI |
| 56 | +- 🔍 **Model Search & Pull** – Search and pull models directly from Ollama.com in the UI (with progress indicator) |
| 57 | +- 🗑️ **Model Deletion** – Clean up unused models with confirmation dialogs |
60 | 58 | - 🧳 **Load/Unload Models** – Manage Ollama memory footprint efficiently |
61 | 59 | - 📦 **Model Version Display** – View and compare model versions easily |
| 60 | +- 🎛️ **Advanced Parameter Tuning** – Per-model configuration: temperature, top_k, top_p, repeat penalty, stop sequences, system prompts |
| 61 | + |
| 62 | +### 💬 Chat & Conversations |
| 63 | +- 💬 **Beautiful Chat UI** – Modern, polished interface built with Shadcn UI |
| 64 | +- 🗂️ **Multi-Chat Sessions** – Create, manage, and switch between multiple chat sessions |
| 65 | +- 📤 **Export Chat Sessions** – Export single or all chat sessions as **PDF** or **JSON** |
| 66 | +- 📥 **Import Chat Sessions** – Import single or multiple chat sessions from JSON files |
| 67 | +- 📋 **Copy & Regenerate** – Quickly rerun or copy AI responses |
| 68 | +- ⚡ **Streaming Responses** – Real-time streaming with typing indicators |
| 69 | + |
62 | 70 |
|
63 | | -- 🎛️ **Tune Parameters** – Temperature, top_k, top_p, repeat penalty, stop sequences |
64 | | -- 🧠 **Enhanced Content Extraction** – Smart extraction with lazy loading support, site-specific overrides, Defuddle integration, and automated YouTube transcript extraction |
| 71 | +### 🌐 Webpage Integration |
| 72 | +- 🧠 **Enhanced Content Extraction** – Advanced extraction with multiple scroll strategies (none, instant, gradual, smart) |
| 73 | +- 🔄 **Lazy Loading Support** – Automatically waits for dynamic content to load |
65 | 74 | - 📄 **Site-Specific Overrides** – Configure extraction settings per domain (scroll strategies, delays, timeouts) |
66 | | -- 🔊 **Advanced Text-to-Speech** – Searchable voice selector, adjustable speech rate & pitch, cross-browser compatibility, and voice testing |
67 | | -- 🗂️ **Multi-Chat Sessions** – Save/load/delete local chats |
68 | | -- 📤 Export Chat Sessions – Export single or all chat sessions as **PDF** or **JSON** |
69 | | -- 📥 Import Chat Sessions – Import single or multiple chat sessions from JSON files |
70 | | -- 🧯 **Declarative Net Request (DNR)** – Automatic CORS handling |
| 75 | +- 🎯 **Defuddle Integration** – Smart content extraction with Defuddle fallback |
| 76 | +- 📖 **Mozilla Readability** – Fallback extraction using Mozilla Readability |
| 77 | +- 🎬 **YouTube Transcripts** – Automated YouTube transcript extraction |
| 78 | +- 📊 **Extraction Metrics** – View scroll steps, mutations detected, and content length |
| 79 | + |
| 80 | +### ⚙️ Customization & Settings |
| 81 | +- 🎨 **Professional UI** – Modern design system with glassmorphism effects, gradients, and smooth animations |
| 82 | +- 🌓 **Dark Mode** – Beautiful dark theme with smooth transitions |
| 83 | +- 📝 **Prompt Templates** – Create, manage, and use custom prompt templates (Ctrl+/) |
| 84 | +- 🔊 **Advanced Text-to-Speech** – Searchable voice selector with adjustable speech rate & pitch |
| 85 | +- 🎚️ **Cross-Browser Compatibility** – Works with Chrome, Brave, Edge, Opera, Vivaldi, LibreWolf, and more |
| 86 | +- 🧪 **Voice Testing** – Test voices before using them |
| 87 | + |
| 88 | +### 🔒 Privacy & Performance |
71 | 89 | - 🛡️ **100% Local and Private** – All storage and inference happen on your device |
72 | | -- 📋 **Copy & Regenerate** – Quickly rerun or copy AI responses |
| 90 | +- 🧯 **Declarative Net Request (DNR)** – Automatic CORS handling |
| 91 | +- 💾 **IndexedDB Storage** – Efficient local storage for chat sessions |
| 92 | +- ⚡ **Performance Optimized** – Lazy loading, debounced operations, optimized re-renders |
| 93 | +- 🔄 **State Management** – Clean Zustand-based state management |
73 | 94 |
|
74 | 95 | --- |
75 | 96 |
|
76 | 97 | ## 🧩 Tech Stack |
77 | 98 |
|
78 | | -- TypeScript |
79 | | -- React + Vite |
80 | | -- Plasmo (for Chrome extension boilerplate) |
81 | | -- Shadcn UI |
82 | | -- Biome (formatter & linter) |
83 | | -- Ollama (local LLM backend) |
84 | | -- Chrome Extension APIs (`declarativeNetRequest`, `storage`, `sidePanel`) |
85 | | -- Defuddle (content extraction) |
86 | | -- Mozilla Readability (content extraction) |
| 99 | +### Frontend |
| 100 | +- **TypeScript** – Type-safe development |
| 101 | +- **React 18** – Modern UI framework |
| 102 | +- **Vite** – Fast build tool |
| 103 | +- **Plasmo** – Chrome extension framework |
| 104 | +- **Shadcn UI** – Professional component library (Radix UI primitives) |
| 105 | +- **Tailwind CSS** – Utility-first styling |
| 106 | +- **Zustand** – Lightweight state management |
| 107 | +- **Dexie** – IndexedDB wrapper for chat storage |
| 108 | + |
| 109 | +### Backend & APIs |
| 110 | +- **Ollama** – Local LLM backend |
| 111 | +- **Chrome Extension APIs** – `declarativeNetRequest`, `storage`, `sidePanel`, `tabs` |
| 112 | + |
| 113 | +### Content Processing |
| 114 | +- **Defuddle** – Advanced content extraction |
| 115 | +- **Mozilla Readability** – Content extraction fallback |
| 116 | +- **highlight.js** – Code syntax highlighting |
| 117 | +- **markdown-it** – Markdown rendering |
| 118 | + |
| 119 | +### Developer Tools |
| 120 | +- **Biome** – Fast formatter & linter |
| 121 | +- **TypeScript** – Strict type checking |
| 122 | +- **Husky** – Git hooks |
87 | 123 |
|
88 | 124 | --- |
89 | 125 |
|
@@ -329,15 +365,24 @@ Here’s what’s coming up next in **Ollama Client**—grouped by priority: |
329 | 365 |
|
330 | 366 | ### Embeddings & Semantic Search |
331 | 367 |
|
332 | | -- [ ] Implement **Hybrid Embeddings**: |
333 | | - - [ ] Default: transformer.js |
334 | | - - [ ] Optional: pull Ollama-hosted(locally) embedding models when toggled |
| 368 | +- [ ] Implement **Ollama Embedding Models**: |
| 369 | + - [ ] Integration with Ollama embedding models (e.g., `nomic-embed-text`, `all-minilm`) |
| 370 | + - [ ] Generate embeddings for chat messages and store in IndexedDB |
| 371 | + - [ ] Semantic search over chat history |
| 372 | + - [ ] Semantic filtering for chat sessions |
335 | 373 | - [ ] Enable **Local RAG** over chats, PDFs, and image text |
| 374 | +- [ ] **Browser Search Feature**: |
| 375 | + - [ ] Contextual search within webpage content |
| 376 | + - [ ] Semantic search over extracted content |
| 377 | + - [ ] Search result highlighting |
| 378 | + - [ ] Search history |
336 | 379 | - [ ] Optional **Web Search Enrichment**: |
337 | 380 | - [ ] Offline-first architecture |
338 | 381 | - [ ] Opt-in Brave / DuckDuckGo API (user-provided key) |
339 | 382 | - [ ] WASM fallback (e.g., tinysearch) when no key |
340 | 383 |
|
| 384 | +> **Note**: Hybrid embeddings with client-side transformers (`@xenova/transformers`) have been tested and show degraded model response quality compared to direct text prompts. The focus will be on Ollama-hosted embedding models instead. |
| 385 | +
|
341 | 386 | ### File Upload & Processing |
342 | 387 |
|
343 | 388 | - [ ] Plain text-based formats: `.txt`, `.md`, `.js`, `.ts` (direct read) |
|
0 commit comments