Skip to content

ui : add the models manager - #29583

Merged
allozaur merged 10 commits into
masterfrom
allozaur/ui/models-manager
Oct 9, 2026
Merged

allozaur merged 10 commits into
masterfrom
allozaur/ui/models-manager

Conversation

@allozaur

@allozaur allozaur commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Overview

Demo

Screen.Recording.2026-10-09.at.10.13.23.mp4
Screen.Recording.2026-10-09.at.10.15.33.mp4

Features

  • New Manage models dialog: one table of every model the server can serve — one row per repo with expandable quants, sections (loaded → downloading → favorites → local → hidden), sortable columns (name/context/status, sleep-aware), search and context/capability/modality filters (only modalities present are offered).
  • Row actions in a drawer: favorite, load/unload, delete from disk, hide/unhide, download pause/resume; downloads get their own section with a progress bar; a partly hidden repo splits its quants across the hidden and local blocks.
  • Model configuration pane as a side drawer: full model info and chat template, plus Start a new chat (loading the model first) / Use in this chat and load controls; on a phone the model information dialog stands in for the pane.
  • Reworked model selector (ModelsSelector): owns the shared picker state and renders the desktop dropdown and the phone drawer as equal surfaces — provider-aware grouping, favorites and loaded pinned on top (listed once), hidden models filtered out, windowed lists with show more, provider mark + org avatar in the trigger; falls back to the manager on single-model servers, and a phone with one model still gets the drawer.
  • Reasoning effort becomes its own control beside the selector with a fully transparent trigger (no background, no hover fill, any state); MCP servers move from the add menu to the sidebar rail.
  • Mobile experience: add actions in a drawer (sharing its labels with the desktop dropdown via constants), floating model action bar, context gauge in a drawer.
  • New settings: Hugging Face Hub metadata (off by default — no fetches and no avatars when off), group-models-by-family, capabilities-in-selector, org-name display (renamed + migrated).

Architecture / logic

  • New shared data layer: modelsStore composes list, selection, loading, recents (manual picks only), favorites, hidden and group-open state, all persisted to localStorage; status store feeds download progress (and the delete-from-disk action resolves through its cancel endpoint).
  • HF Hub details cached per repo with request dedup (404s cached, failures retried; failed base-model lookups not cached), warmed for a capped slice (12) and fetched per row only near the viewport; local file paths never query the Hub; avatars load in CORS mode with a per-org retry cooldown, search icons ride the server's CORS proxy.
  • Selector state derived in one hook, with the chat-form model concerns (conversation sync, modality tracking) extracted into useChatFormModel; both surfaces and the assistant-message badge share it.
  • Shared model components extracted (avatar, capabilities, context, load control, row actions) reused by both surfaces; new UI primitives (drawer/sheet via vaul-svelte, toggles, collapsible sections, grouped list, near-viewport helper).
  • ModelOption enriched with contextLength, draftSidecars (from --model-draft args) and chat-template-based capability fallback; family grouping, list windowing and manager helpers (groupModelFamilies, groupModelQuants, splitHiddenQuants, hasActiveFilters, statusRank) live in tested utils.
  • Settings gained a versioned migration for the renamed org-name key; tools/ui/README.md documents the new structure and the drawer dependency.

Requirements

  • I have read and agree with the contributing guidelines
  • AI usage disclosure: YES, pi:llama.cpp/DeepSeek-V4.1-Flash / pi:zai-org/GLM-5.3-Flash

@allozaur allozaur changed the title allozaur/ui/models manager ui : add the models manager Sep 28, 2026
@allozaur
allozaur added this pull request to stack #29589 September 28, 2026 14:47
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from 4bc9615 to 6226aae Compare September 28, 2026 14:48
@allozaur
allozaur removed this pull request from stack #29589 September 28, 2026 15:21
@allozaur
allozaur added this pull request to stack #29594 September 28, 2026 15:24
@allozaur
allozaur removed this pull request from stack #29594 September 29, 2026 04:55
@allozaur
allozaur added this pull request to stack #29630 September 29, 2026 04:56
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from 6226aae to dde5615 Compare September 29, 2026 08:45
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from dde5615 to 07fa3c0 Compare September 29, 2026 10:05
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from 07fa3c0 to 67e3f55 Compare September 29, 2026 10:27
@allozaur
allozaur removed this pull request from stack #29630 September 29, 2026 10:42
@allozaur
allozaur added this pull request to stack #29646 September 29, 2026 10:43
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from 67e3f55 to df80072 Compare September 29, 2026 12:02
@allozaur
allozaur removed this pull request from stack #29646 September 29, 2026 12:14
@allozaur
allozaur added this pull request to stack #29653 September 29, 2026 12:15

@allozaur allozaur left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Besides the comments for the files, there's one regression vs what we used to have some time ago — i can't see the draft sidecar badges in the model id in models selector and models manager

Comment thread tools/ui/src/lib/components/app/dialogs/index.ts
Comment thread tools/ui/src/lib/components/app/dialogs/index.ts Outdated
Comment thread tools/ui/src/lib/components/app/models/ModelOrgAvatar.svelte
Comment thread tools/ui/src/lib/services/huggingface.service.ts
Comment thread tools/ui/src/lib/components/app/models/ModelsManager/utils.ts Outdated
Comment thread tools/ui/src/lib/components/app/models/ModelAvatar.svelte
Comment thread tools/ui/src/lib/components/app/models/ModelCapabilityIcons.svelte
Comment thread tools/ui/src/lib/components/app/models/ModelLoadControl.svelte
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from df80072 to ea612b4 Compare September 30, 2026 14:04
@allozaur
allozaur removed this pull request from stack #29653 September 30, 2026 14:09
@allozaur
allozaur changed the base branch from allozaur/ui/shared-model-display to master September 30, 2026 14:09
@allozaur
allozaur added this pull request to stack #29748 September 30, 2026 14:12
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from ea612b4 to 7e26a5d Compare October 1, 2026 06:39
@allozaur
allozaur removed this pull request from stack #29748 October 1, 2026 06:41
@allozaur
allozaur added this pull request to stack #29790 October 1, 2026 07:42
@allozaur
allozaur requested review from ngxson and removed request for ggerganov October 5, 2026 11:52
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from e306eca to 93f884d Compare October 5, 2026 12:22
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch 3 times, most recently from 4ca5a6e to 162dc8f Compare October 6, 2026 16:18
@allozaur
allozaur removed this pull request from stack #29790 October 6, 2026 16:33
@allozaur
allozaur added this pull request to stack #30055 October 6, 2026 16:33
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch 3 times, most recently from dc83a2d to 6d4595d Compare October 8, 2026 12:56
Comment thread tools/ui/src/lib/utils/model-families.ts Outdated
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from 6d4595d to b7f40a7 Compare October 9, 2026 06:17
Add the drawer and sheet overlay components, the toggle and toggle
group, the shared searchable input, the collapsible sections and the
grouped list, and the near viewport helper they position with.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Add the model row pieces shared by the selector and the manager, the
models store with its download status feed, the huggingface and
migration services, and the model utils, enums and constants they
read through.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Group the selector components under their own folder, rework the list
around the provider grouping, add the mobile trigger and the download
item, and derive the selection state in one hook.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Add the manager table with its repo, quant and status rows, the
filters and the toolbar, the row actions in a drawer, the downloads
section, the manage models dialog and the stories and tests.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Move the add actions into a drawer and a sheet, float the model
actions in a bar on a phone, open the context panel in a drawer, and
derive the attachment, reasoning and tools menus in hooks.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Move the mcp servers dialog to the sidebar rail with its menu
entries, even out the dialogs on a phone, and group the mcp and
settings stores behind their own modules.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
The secondary button gets its own look back and the chat add button its
own light surface. Pressable elements get a pointer cursor again, the
font rendering smooths on the app shell, and the agent skills stay out
of prettier's way.

The root layout props probe rework that came with this polish reads the
providers api url and stays with the providers change instead.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
Start a new chat selected the model but left it unloaded, so the chat
opened against a server with nothing in memory. Both CTAs share a load
helper now.

Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
@allozaur
allozaur force-pushed the allozaur/ui/models-manager branch from b7f40a7 to 5e4f00a Compare October 9, 2026 08:12
@allozaur
allozaur merged commit b013e56 into master Oct 9, 2026
6 checks passed
feal87 added a commit to feal87/myllama.cpp that referenced this pull request Oct 9, 2026
Upstream brings the chat API refactor into common_chat_session (PR ggml-org#30210),
the UI models manager (ggml-org#29583), server default port 9931 (ggml-org#30159), and CUDA /
metal / sycl / vulkan / musa fixes.

Conflicts and resolution:
- server-context.cpp: upstream moved message spans into task.apply_chat_session()
  and dropped the per-request message_delimiters JSON round-trip. Keep the fork
  deferred-mtmd loop bound (n_inputs) and pass chat_session.message_delimiters()
  to task.mtmd_delims.
- server-queue.cpp: keep the fork reported_tool_names / base_tool_names /
  markdown_fences bookkeeping and adapt it to upstream's task_result_state()
  free constructor.

Kept the fork MoE expert cache (src/llama-moecache.*); scripts/fork-post-merge.sh
reports no upstream MoE cache leftovers.

Assisted-by: pi (deepseek-flash)
jiangchuanso added a commit to jiangchuanso/llama.cpp-zh-el8 that referenced this pull request Oct 10, 2026
上游 models manager 的两次重构(ggml-org#29583 与 ggml-org#30228)换掉了一批源文本,中文因此静默回退英文:删掉 19 条已无对应源文本的词条(旧模型信息表、旧模型选择器/移动端 sheet、旧附件菜单描述等),并把 3 条改名的补上。

用脚本核对:所有 t('X') 的键都有词条、没有失效词条、没有「原本有 t() 却变回裸字面量」的回归。
jiangchuanso added a commit to jiangchuanso/llama.cpp-zh-el8 that referenced this pull request Oct 10, 2026
上游 models manager(ggml-org#29583/ggml-org#30228)整块新界面此前保持英文,现补上:表格(表头/排序提示/空表/族计数/展开更多)、筛选器(上下文档位、能力与模态开关)、行操作(删除、隐藏、下载暂停/继续,统一在 DropdownMenuActions 这个唯一渲染点接 t())、模型配置面板(状态、加载/卸载/新建对话、删除、详情关闭)、选择器(管理模型、暂停/取消下载、返回全部提供方),以及模型管理对话框、下载确认对话框、markdown 图片失败兜底、推理 token 预算与 3 条设置项。

顺带修好两处结构:DialogConfirmDownload 的说明改用 {name} 占位符走 t();image-error-fallback 的 HTML 兜底串也接上 t()。

核对:所有 t('X') 的键都有词条、无失效词条、无重复键;zh-CN.ts 括号配平;改动的 svelte/ts 无新增诊断(只剩上游既有的 tailwind 类名建议)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation server/ui server

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants