# Ticket Summary — UI Fixes + Ollama Bundling + Theme Toggle **Branch**: `feat/ui-fixes-ollama-bundle-theme` --- ## Description Multiple UI issues were identified and resolved following the arm64 build stabilization: - `custom_rest` provider showed a disabled model input instead of the live dropdown already present lower in the form - Auth Header Name auto-filled with an internal vendor-specific key name on format selection - "User ID (CORE ID)" label and placeholder exposed internal organizational terminology - Refresh buttons on the Ollama and Dashboard pages had near-zero contrast against dark card backgrounds - PII detection toggles in Security settings silently reset to all-enabled on every app restart (no persistence) - Ollama required manual installation; no offline install path existed - No light/dark theme toggle UI existed despite the infrastructure already being wired up Additionally, a new `install_ollama_from_bundle` Tauri command allows the app to copy a bundled Ollama binary to the system install path, enabling offline-first deployment. CI was updated to download the appropriate Ollama binary for each platform during the release build. --- ## Acceptance Criteria - [ ] **Custom REST model**: Selecting Type=Custom + API Format=Custom REST causes the top-level Model row to disappear; the dropdown at the bottom is visible and populated with all models - [ ] **Auth Header**: Field is blank by default when Custom REST format is selected (no internal values) - [ ] **User ID label**: Reads "Email Address" with placeholder `user@example.com` and a generic description - [ ] **Auth Header description**: No longer references internal key name examples - [ ] **Refresh buttons**: Visually distinct (border + background) against dark card backgrounds on Dashboard and Ollama pages - [ ] **PII toggles**: Toggling patterns off, navigating away, and returning preserves the disabled state across app restarts - [ ] **Theme toggle**: Sun/Moon icon button in the sidebar footer switches between light and dark themes; works when sidebar is collapsed - [ ] **Install Ollama (Offline)**: Button appears in the "Ollama Not Detected" card; clicking it copies the bundled binary and refreshes status - [ ] **CI**: Each platform build job downloads the correct Ollama binary before `tauri build` and places it in `src-tauri/resources/ollama/` - [ ] `npx tsc --noEmit` — zero errors - [ ] `npm run test:run` — 51/51 tests pass - [ ] `cargo check` — zero errors - [ ] `cargo clippy -- -D warnings` — zero warnings - [ ] `python3 -c "import yaml; yaml.safe_load(open('.gitea/workflows/auto-tag.yml'))"` — YAML valid --- ## Work Implemented ### Phase 1 — Frontend (6 files) **`src/pages/Settings/AIProviders.tsx`** - Removed the disabled Model `` shown when Custom REST is active; the grid row is now hidden via conditional render — the dropdown further down the form handles model selection for this format - Removed `custom_auth_header: "x-msi-genai-api-key"` prefill on format switch; field now starts empty - Replaced example in Auth Header description from internal key name to generic `"x-api-key"` - Renamed "User ID (CORE ID)" → "Email Address"; updated placeholder from `your.name@motorolasolutions.com` → `user@example.com`; removed Motorola-specific description text **`src/pages/Dashboard/index.tsx`** - Added `className="border-border text-foreground bg-card hover:bg-accent"` to Refresh `