Anubis OSS v3.6 — Run history management + Browse Ollama models in-app
A focused user-experience release since v3.5. The two biggest UX papercuts — "I can't see or delete benchmarks past the most-recent 20" and "discovering Ollama models is buried" — both go away. Plus the leaderboard becomes a one-click affordance with optional fully automatic submission.
New: Run history management (closes #26)
The History window is now genuinely usable.
- Filter bar above the list: Model, Backend, Status dropdowns (auto-populated from loaded sessions) plus a segmented Show: 50 / 200 / 500 / All picker that re-loads on change. The 20-row ceiling is gone — "All" caps at 100k rows.
- Multi-select via SwiftUI List's native ⌘-click and ⇧-click. Detail panel renders when exactly one row is selected.
- "Select All Filtered" (or "Deselect All" when everything's already selected) plus "Delete N Selected" in the toolbar — distinct from "Clear All" so you can prune subsets without nuking everything. Example workflow: filter to Status = Cancelled → Select All Filtered → Delete N Selected → only the cancelled rows go away.
- Context-menu delete is selection-aware — right-click a row that's part of a ≥2 selection to bulk-delete the whole set; right-click outside the selection to delete just that row.
- "Clear All" confirmation rewritten to be honest that it nukes everything in the DB regardless of filter / row limit.
- Status bar reads "X of Y sessions" when filters are active.
New: Browse Ollama models from the benchmark view
No more guessing what to type into the pull dialog.
- "Browse Models" toolbar button (Ollama backend only) opens a sheet that fetches `https://ollama.com/library\` directly. ~25 top models on first open; search input hits `/search?q=…` after a 300 ms debounce.
- Each card shows name, description, capability chips (tools / vision / thinking / embedding), available sizes as buttons, pull count, last-updated.
- Click a size button to start the pull — runs through the existing `/api/pull` plumbing with progress UI.
- "Installed" badge on entries you already have locally.
- 24 h client-side cache; Refresh button bypasses it.
- The existing "Pull Model" button (typed-name flow) is unchanged and remains the answer for HuggingFace identifiers, custom tags, and non-Ollama backends.
Fixed: Cancel actually cancels the model pull
Clicking Cancel in the pull dialog used to dismiss the sheet but leave the download running silently in the background. The cancel now propagates all the way down — the `URLSession.bytes` read stops, the HTTP connection closes, and the partial blob stays on disk so a re-pull resumes from where it stopped (Ollama's standard behavior).
Leaderboard upload — prominent + optional auto-submit
The leaderboard exists but most users didn't know it. Two changes:
- Toolbar upload button is now a state machine: idle (run a benchmark first) → "Submit to Leaderboard" (completed run, never submitted, with a subtle visual emphasis) → "Submitting…" (with progress spinner) → "Submitted ✓" (green) → "Retry Submit" (orange, with the server error in the tooltip if anything failed).
- Settings → Community Leaderboard: display-name field + a default-off "Auto-submit completed runs" toggle. When enabled, every successful run (and every rep of a group) auto-uploads in the background with no further interaction. Toggle disables itself until a display name is set.
Polish
- Parameters + Performance/Thinking sections in the benchmark dashboard now default to expanded so first-time users see the N-runs stepper, seed strategy, and Ollama Thinking picker without discovering the chevrons. Once collapsed, the preference persists.
- New (i) button next to the Thinking picker opens a popover that consolidates: what Auto / On / Off each do, that only Ollama exposes a `think` field (so the picker hides on OpenAI-compat backends), and what to do when a model rejects the field.
- Submissions from a group rep now carry full group context to the leaderboard server — sample count, repetition index, seed strategy, and mean ± 95% CI for tokens-per-second, TTFT, and J/Tok. The leaderboard page renders the "±CI · N reps" line under the headline tok/s on group rows; the explorer exposes the group aggregates as sortable columns; the expanded detail panel has a full "Group context" section. Server schema (migration v7) backs all of this.