Thanks to visit codestin.com
Credit goes to github.com

Skip to content

app: add extended settings with tabbed UI#14526

Open
4RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
4RH1T3CT0R7:feature/extended-settings
Open

app: add extended settings with tabbed UI#14526
4RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
4RH1T3CT0R7:feature/extended-settings

Conversation

@4RH1T3CT0R7
Copy link

@4RH1T3CT0R7 4RH1T3CT0R7 commented Mar 1, 2026

Summary

  • Adds ~22 new configuration fields to the desktop app settings, organized into 4 tabs: General, GPU & Performance, Generation Defaults, and Network & Security
  • Refactors the monolithic Settings.tsx into modular tab components using Headless UI TabGroup
  • New settings include: debug logging, keep-alive duration, flash attention, KV cache type, parallel requests, GPU overhead, schedule spread, Vulkan toggle, temperature/top_k/top_p/min_p/repeat_penalty/seed/num_predict defaults, host/port, HTTP/HTTPS proxy, no-proxy, CORS origins, and allowed remotes
  • Backend: extends Settings struct, adds SQLite migration v15→v16, maps new fields to environment variables, extends server restart triggers
  • New UI components: Select dropdown (Headless UI Listbox) and NumberInput with +/- controls

Related PRs

This is Part 1 of 3 in the Ollama Desktop UI improvement series:

  1. This PR — Extended Settings: Tabbed settings UI with ~22 new configuration fields (General, GPU, Generation, Network)
  2. PR app: add monitoring dashboard #14528Monitoring Dashboard: GPU/memory monitoring, loaded models, system tray extensions
  3. PR app: add model manager with batch ops, copy, and per-model settings #14531Model Manager: Full model CRUD, batch ops, copy/alias, per-model settings

Each PR is independent and can be merged separately. Together they transform the desktop app from a chat-only interface into a comprehensive Ollama management tool with full settings control, real-time monitoring, and model lifecycle management.

Changes

Area Files Description
Backend store.go, database.go 22 new fields in Settings struct, SQLite migration
Server server.go Environment variable mappings for new settings
Restart ui.go Extended restart trigger conditions
Settings UI Settings.tsx Refactored into tabbed layout
Tabs GeneralTab.tsx, GpuPerformanceTab.tsx, GenerationDefaultsTab.tsx, NetworkSecurityTab.tsx New tab components
UI Components select.tsx, number-input.tsx New reusable UI components
Types gotypes.gen.ts TypeScript types for new settings fields

Design decisions

  • Generation defaults use nullable types (*float64/*int in Go, number | null in TS) — null means "use model/system default", distinguishing from zero values
  • GPU & Performance tab hides Vulkan toggle on macOS (not applicable)
  • CorsOrigins respects Browser setting — won't override wildcard origins when Browser is enabled
  • All new settings with zero/empty defaults maintain backward compatibility
  • Generation defaults do NOT trigger server restart (applied per-request)

Test plan

  • Open Settings, verify all 4 tabs render correctly
  • Toggle each boolean setting, verify persistence
  • Change GPU/network settings, verify server restarts
  • Change generation defaults, verify they do NOT trigger restart
  • Reset to defaults, verify all fields clear properly
  • Build passes: cd app/ui/app && npm run build
  • TypeScript check passes: npx tsc --noEmit
Screenshot_1 Screenshot_2

Add 22 new configuration fields to the desktop app settings,
organized into 4 tabs: General, GPU & Performance, Generation
Defaults, and Network & Security.

Backend:
- Extend Settings struct with GPU, performance, generation,
  and network fields (store.go)
- Add database migration v15->v16 with new columns (database.go)
- Wire all new settings to environment variables (server.go)
- Add restart triggers for server-affecting settings (ui.go)

Frontend:
- Refactor monolithic Settings.tsx into tabbed layout using
  Headless UI TabGroup
- Add GeneralTab, GpuPerformanceTab, GenerationDefaultsTab,
  NetworkSecurityTab components
- Add reusable Select (dropdown) and NumberInput UI components
- Update generated TypeScript types with new fields
- Generation defaults use nullable types (null = system default)
- Remove unused cloudStatus and inferenceComputeResponse props from GeneralTab
- Align onChange type signature across all tabs to include null
- Show restart-specific amber badge when server restart is needed
- Guard os.Environ parsing against entries without '=' separator
- Prevent CorsOrigins from overriding Browser's wildcard OLLAMA_ORIGINS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant