Skip to content

Commit 3eb851f

Browse files
committed
Restructure Settings into tabs (General/Models/Integrations/Chat & Prompts/Voice/Data)
Settings had grown into one long scrolling page as features piled up this session (Ollama, llama.cpp, MCP, Figma, prompt library, voice, diagnostics, etc. all stacked vertically). Reorganized the same content - no new settings, nothing removed - into six tabs using the existing (previously unused) Tabs component: - General: Ollama Server, llama.cpp, Appearance, Language, updates - Models: system specs, Ollama model catalog/search, Hugging Face results, other installed models - Integrations: cloud provider API keys, Figma, MCP servers - Chat & Prompts: chat defaults/generation params, Prompt Library - Voice: TTS/STT settings - Data: export/import, diagnostics This should hold up better as more settings get added, per feedback that the UI needed to scale better rather than just look nicer.
1 parent 5e74277 commit 3eb851f

3 files changed

Lines changed: 314 additions & 268 deletions

File tree

‎README.md‎

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ Beyond chat, Modelforge includes an **agentic mode** — the model can read/writ
4848
- **Screenshot capture** — pick a screen or window from the Attach menu and it's captured and attached as an image, no separate screenshot tool needed. (macOS may require granting Screen Recording permission the first time.)
4949
- **OCR** — extract plain text from any attached image with one click, dropped straight into the composer. Runs fully offline via [tesseract.js](https://github.com/naptha/tesseract.js) after its first use (which needs network access once, to download the ~2MB English text-recognition model).
5050
- **Figma frame import** — add a personal access token in Settings → Integrations, then paste a "Copy link to selection" URL from Figma to fetch that frame as an image, attached like any other screenshot.
51-
- **Prompt library sharing** — export your saved prompts to a JSON file and import one a teammate sent you (Settings → Prompt Library). There's no live sync — it's just a plain file, sent however you like.
51+
- **Prompt library sharing** — export your saved prompts to a JSON file and import one a teammate sent you (Settings → Chat & Prompts). There's no live sync — it's just a plain file, sent however you like.
5252

5353
**Agent mode** — see the [dedicated section](#agent-mode) below.
5454

@@ -57,18 +57,19 @@ Beyond chat, Modelforge includes an **agentic mode** — the model can read/writ
5757
- **GPU offload control** — set how many model layers Ollama offloads to GPU (`num_gpu`) per chat, per project, or as a global default; leave it blank to let Ollama decide automatically.
5858
- **Real Hugging Face search** — typing in the model search box queries the actual Hugging Face Hub API (not just "paste an exact URL"), showing real repos ranked by downloads/likes; expand one to see its actual GGUF files with real file sizes, then either pull it via Ollama or download it directly for the llama.cpp backend. Pasting an exact `hf.co/user/repo` tag or a full URL still works too, for Ollama's own pull mechanism.
5959
- Models with reliable tool/function-calling support are flagged with a 🔧 badge, so picking a good Agent mode model doesn't require guesswork.
60-
- **Custom model storage location** — Settings → Ollama Server → "Model storage location" lets you point downloaded models at any folder (e.g. a larger or faster drive) instead of Ollama's default location. If this app started Ollama, it restarts it automatically with the new location; if Ollama is running outside the app, you're told to restart it yourself.
60+
- **Custom model storage location** — Settings → General → Ollama Server → "Model storage location" lets you point downloaded models at any folder (e.g. a larger or faster drive) instead of Ollama's default location. If this app started Ollama, it restarts it automatically with the new location; if Ollama is running outside the app, you're told to restart it yourself.
6161

6262
**Customization & control**
63+
- **Settings is organized into tabs** (General, Models, Integrations, Chat & Prompts, Voice, Data) instead of one long scrolling page — it holds up better as more settings get added over time.
6364
- English and Turkish UI localization.
64-
- **Theming** — light/dark/system color mode plus a choice of accent colors (default gray, blue, green, purple, orange, rose), in Settings → Appearance.
65+
- **Theming** — light/dark/system color mode plus a choice of accent colors (default gray, blue, green, purple, orange, rose), in Settings → General → Appearance.
6566
- Configurable Ollama host — point at a remote server instead of localhost.
6667
- Data export/import, and one-click "copy diagnostic info" for bug reports.
6768
- **Updates** — packaged builds check GitHub Releases for new versions automatically on launch, plus a manual "Check for updates" button in Settings (also available from the app menu).
6869

6970
**Voice**
7071
- **Voice input** — record a question with the mic button; it's transcribed via OpenAI's Whisper API and dropped into the composer (requires an OpenAI API key in Settings, even when chatting with a local Ollama model).
71-
- **Read aloud** — any assistant reply can be played back through your OS's own text-to-speech voices, with a per-message speaker button, an optional "auto-read every response" toggle, and a voice picker with a test button in Settings → Voice. Works fully offline, no API key needed.
72+
- **Read aloud** — any assistant reply can be played back through your OS's own text-to-speech voices, with a per-message speaker button, an optional "auto-read every response" toggle, and a voice picker with a test button in Settings → Voice tab. Works fully offline, no API key needed.
7273
- Both are start/stop/cancel controllable mid-action — stop a reply from being read, or cancel a recording before it's sent for transcription.
7374
- Not included: fully real-time, bidirectional voice conversation (speaking over the model and having it react instantly, à la OpenAI's Realtime API). That's a different streaming architecture and hasn't been built.
7475

@@ -199,7 +200,7 @@ app/ Electron main process
199200
src/agent-tools.ts Agent mode's file/shell tool implementations (workspace-sandboxed)
200201
src/*-store.ts Settings/sessions/projects/secrets persistence (atomic writes, corruption recovery)
201202
src/rag.ts Chunking + embedding + retrieval for large folder attachments
202-
src/logger.ts Rotating file logs surfaced via Settings → Diagnostics
203+
src/logger.ts Rotating file logs surfaced via Settings → Data → Diagnostics
203204
```
204205

205206
The frontend builds to a single inlined HTML file (`vite-plugin-singlefile`) so Electron can load it directly via `file://` in production, matching how the packaged app actually runs.

‎frontend/src/lib/translations.ts‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,12 @@ export interface Dictionary {
162162
noGgufFiles: string;
163163
pullWithOllama: string;
164164
downloadForLlamaCpp: string;
165+
settingsTabGeneral: string;
166+
settingsTabModels: string;
167+
settingsTabIntegrations: string;
168+
settingsTabChat: string;
169+
settingsTabVoice: string;
170+
settingsTabData: string;
165171
resetToDefault: string;
166172
usingCustomPrompt: string;
167173
dataManagement: string;
@@ -362,6 +368,12 @@ export const en: Dictionary = {
362368
noGgufFiles: "No GGUF files found in this repo.",
363369
pullWithOllama: "Pull with Ollama",
364370
downloadForLlamaCpp: "Download for llama.cpp",
371+
settingsTabGeneral: "General",
372+
settingsTabModels: "Models",
373+
settingsTabIntegrations: "Integrations",
374+
settingsTabChat: "Chat & Prompts",
375+
settingsTabVoice: "Voice",
376+
settingsTabData: "Data",
365377
resetToDefault: "Reset to default",
366378
usingCustomPrompt: "Custom prompt for this chat",
367379
dataManagement: "Data management",
@@ -570,6 +582,12 @@ export const tr: Dictionary = {
570582
noGgufFiles: "Bu depoda GGUF dosyası bulunamadı.",
571583
pullWithOllama: "Ollama ile indir",
572584
downloadForLlamaCpp: "llama.cpp için indir",
585+
settingsTabGeneral: "Genel",
586+
settingsTabModels: "Modeller",
587+
settingsTabIntegrations: "Entegrasyonlar",
588+
settingsTabChat: "Sohbet ve Promptlar",
589+
settingsTabVoice: "Ses",
590+
settingsTabData: "Veri",
573591
resetToDefault: "Varsayılana dön",
574592
usingCustomPrompt: "Bu sohbet için özel istem",
575593
dataManagement: "Veri yönetimi",

0 commit comments

Comments
 (0)