diff --git a/README.md b/README.md index 3017b3b..cc6b631 100644 --- a/README.md +++ b/README.md @@ -52,5 +52,116 @@ Manual test (çalıştığını doğruladık)

## Roadmap -- [x] -- [ ] +- [x] Use reference trees +- [x] Dark/Light themes +- [x] Copiable code blocks +- [x] Regenerate +- [x] Enter input with your voice -Speech to text(online or local)- +- [ ] + +``` +-For Nerds- + +1. Chat management +Create new chats (chat_1.json, chat_2.json, …) +Switch between chats +Delete chat (with confirmation) +Rename chat (popover) +Pin/unpin chats (📌) +Sorting: pinned first, then most recently modified + +2. Persistent settings (config.json) +Remember last opened chat (last_chat) +Dark/light theme (dark_mode) +Pinned chats (pinned_chats) +Model list (ai_models) +Per-chat model mapping (chat_models) +Store OpenRouter key (open_router_key) +Mic mode online/offline (is_mic_online) +Online STT model (stt_model_online) +Offline whisper.cpp paths (whisper_cpp_bin, whisper_cpp_model) + +3. Sidebar UI +Collapse/expand sidebar (☰) +Toggle Chats list +Toggle AI Models list + +4. Model management (per chat) +Separate active model per chat +Selecting a model assigns it to the current chat +LRU behavior: recently chosen model moves to top +Delete models (cannot delete the last remaining model) +If a model is deleted, affected chats fall back to default (self-heal) +“AI Models +” to add a model (dialog + OpenRouter models link) + +5. Message selection mode +Click to select one or multiple messages +Selection counter bar +Clear selection (✕) +Selected bubbles get an outline + +6. Reference trees (reference chain expansion) +Expands used_refs recursively (references of references) +Ensures context (including images/refs) isn’t lost +Stores: +used_refs (indices sent to AI) +refs_groups (UI reference preview groups) + +7. Reference trees (reference chain expansion) +Expands used_refs recursively (references of references) +Ensures context (including images/refs) isn’t lost +Stores: +used_refs (indices sent to AI) +refs_groups (UI reference preview groups) + +8. Regenerate (♻) +Appears only when exactly one bubble is selected +If user bubble: re-asks the same prompt +If bot bubble: finds preceding user prompt + rewrites a similar answer +Regenerated prompts are marked (regen) with a distinct style +Keeps reference trees during regeneration + +9. Copy (📋) +Appears only on the single selected bubble +If message contains copy ... copy, copies only the inner block +Otherwise copies full message + +10. Code block detection +Messages wrapped by copy markers render as a code-style block +Code block includes a “Copy” button overlay + +11. Image sending / preview +Supports a pending image preview before sending +Saves image path into chat history +Shows a small image preview in message bubbles +Clears preview after sending + +12. Typing indicator +Animated “Thinking…” while AI is running +Removed when response arrives + +13. Scroll behavior +Floating scroll-to-bottom button (↓) appears when not at bottom +Clicking scrolls to bottom and re-enables auto-scroll +Button visibility updates based on scroll position +(You also tuned behavior to scroll only on regenerate) + +14. Input shortcuts +Enter to send +Shift+Enter for newline +Added: Ctrl+C / Ctrl+V / Ctrl+X / Ctrl+A + +15. Voice-to-text input +🎤 to start recording, ⏹ to stop +Uses pw-record if available, otherwise arecord (Linux) +After stop, transcribes (offline/online) and appends text into input + +16. Offline STT (whisper.cpp) +Uses whisper-cli + ggml-tiny.bin for low CPU transcription +Reads .txt output (stdout fallback) + +17. Online STT (OpenRouter) +If is_mic_online: true, transcribes via OpenRouter +Sends base64 WAV as input_audio +Model selected via stt_model_online +```