Changeset 0.13.1 (#65)

This commit is contained in:
2026-02-25 23:56:27 +00:00
parent 8292a6efa8
commit 113b98ace4
24 changed files with 1565 additions and 24 deletions

View File

@@ -36,8 +36,13 @@ v0.11.0 Extension Foundation (browser tier) ✅
┌───────┴──────────────┐
│ │
v0.12.0 File Handling v0.13.0 Web Search
+ Vision + Tools Expansion
v0.12.0 File Handling v0.13.0 Admin Panel
+ Vision Refactor (fullscreen)
│ │
│ v0.13.1 Web Search
│ + url_fetch
│ │
└───────┬──────────────┘
v0.14.0 Knowledge Bases (embedding role + file storage + pgvector)
@@ -426,7 +431,7 @@ OpenAI streaming usage race fix.
---
## v0.10.2 — Summarize & Continue + Role Cleanup
## v0.10.2 — Summarize & Continue + Role Cleanup
First consumer of the utility model role. User-triggered conversation
compaction — not automatic (that's v0.15.0).
@@ -603,15 +608,81 @@ File input into chat — table stakes for serious use.
---
## v0.13.0 — Web Search + Tools Expansion
## v0.13.0 — Admin Panel Refactor
The admin modal has grown to 12 tabs in a horizontal overflow strip. Adding
search provider config, KB management, and workflow settings would make it
worse. Replace the modal with a fullscreen admin panel.
Depends on: nothing (frontend-only, no API changes).
**Layout** (modeled after Open WebUI's admin panel):
- Fullscreen overlay (or `/admin` route) replaces the modal
- Top bar: 4 category tabs (horizontal)
- Left sidebar: section tabs within the active category
- Main content: full viewport width for the active section
**Category → Section mapping:**
| Category | Sections | Current tabs absorbed |
|----------|----------|---------------------|
| **People** | Users, Teams | Users, Teams |
| **AI** | Providers, Models, Personas, Roles | Providers, Models, Presets, Roles |
| **System** | Settings, Storage, Extensions | Settings, Storage, Extensions |
| **Monitoring** | Usage, Audit, Stats | Usage, Audit, Stats |
- [x] Fullscreen admin layout: top categories + left sidebar sections
- [x] Migrate all 12 existing tab contents into new layout (no API changes)
- [x] Category → section routing with URL hash or state (e.g. `#admin/ai/models`)
- [x] Responsive: sidebar collapses on narrow viewports
- [x] Keyboard shortcut: `Esc` returns to chat
- [x] Admin button in sidebar opens fullscreen panel (replaces modal trigger)
- [ ] Remove old `adminModal` HTML + CSS
- [x] Preserve all existing `loadAdmin*()` functions — new layout calls same loaders
- [x] Roles moved from People → AI category
- [x] Presets → Personas label rename (UI only, API/data unchanged)
- [x] Banner-aware: admin panel respects `--banner-top/bottom-height`
- [x] CSS design token cleanup: ghost variables, hardcoded colors → tokens
- [x] Global form element theming (bare selects/inputs inherit theme)
- [x] Zoom scaling: admin panel + side panel respect appearance slider
- [x] CI fix: `TruncateAll()` includes `platform_policies` + `global_config`
---
## v0.13.1 — Web Search + URL Fetch
Built-in tools that extend the tool framework shipped in v0.11.0.
Admin configuration lives in the new admin panel (System → Settings or AI → Providers).
- [ ] `web_search` tool: search provider abstraction (SearXNG, Brave, DuckDuckGo)
- [ ] `url_fetch` tool: retrieve and extract content from URLs
- [ ] Sidecar or direct HTTP from backend (configurable)
- [ ] Results injected into context
- [ ] "Research X and save to my notes" workflow
Depends on: admin panel refactor (v0.13.0) for config UI, tool framework (v0.11.0).
**Search provider abstraction:**
- [x] `SearchProvider` interface: `Search(ctx, query, maxResults) → []SearchResult`
- [x] DuckDuckGo provider (no API key required — default, works out of the box)
- [x] SearXNG provider (self-hosted, fits airgapped story, configurable endpoint)
- [x] Admin config: select active provider, set endpoint/API key, result count
- [x] Provider config stored in `global_config` as `search_config` key
- [x] Runtime apply on save (no restart required) + load on startup
**Tools:**
- [x] `web_search` tool: calls active search provider, returns title + snippet + URL
- [x] `url_fetch` tool: HTTP GET + content extraction (HTML→text, SSRF protection)
- [x] Results injected into context as tool results (existing tool framework handles this)
- [ ] Rate limiting / concurrency control per-provider
**Tool categories + toggle:**
- [x] `ToolDef.Category` field: search, notes, utilities, browser
- [x] `disabled_tools[]` per-request filtering (completion + regen + edit paths)
- [x] `GET /api/v1/tools` endpoint: returns `[{name, description, category}]`
- [x] Chat-bar tools toggle popup: category-level enable/disable
- [x] localStorage persistence of disabled state
- [x] `ToolDef.DisplayName` field: human-readable name for UI (e.g. "Search" not "web_search")
- [x] Sub-menu per category: expand-in-place to show individual tools
- [x] Tri-state category checkbox: all on / all off / indeterminate (partial)
- [x] Per-tool toggle within categories (child checkboxes)
**Future providers** (abstraction supports but not in v0.13.1):
- Brave Search (API key), Tavily, Kagi, SerpAPI, Google PSE
---