Commit Graph
11277 Commits
Author SHA1 Message Date
Aleksander Grygier 68be9517b4 ui : stop opening the model info dialog on selector open
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 7e9895d4c6 ui : show the assistant model selector for external backends
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier b48698587e ui : stop refetching model props after a failure
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 32ceb1e7a0 ui : persist the active backend and guard server props fetches
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier cfe0d6537e ui : scope the model list to the selected backend tab
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier a8ae60f11e ui : cache the local backend's model list
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier cff4213eac ui : keep models of every enabled backend selectable
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier d72ff1ff2f ui : resolve a conversation's backend before sending
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 3334967829 ui : scope the model list to the active backend tab
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier bd217ff4a9 ui : account for cache tokens on external backends
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 4c0170dfc9 ui : route chat requests through protocol adapters
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 5dd920ebe0 ui : report token stats for external backends
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier d145c15199 ui : aggregate models across backends
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier e3744e7e78 ui : load backend model lists in the background
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 521a677a37 ui : only show the server error when no backend is available
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 12ac92c25b ui : prefetch backend model lists on first selector open
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 0d4128f628 ui : send the model on external backend requests
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 80e0fa3bbc ui : ignore favorites that belong to another backend
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 05cc00a7a0 ui : target the selected model on external backends
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 26042d1c59 ui : skip llama.cpp-only requests and fields on external backends
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier b0f67285d1 ui : honor per-backend chat and models paths
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 6aa2c26f18 ui : switch backends from the models selector
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier b6866d47d2 ui : gate llama.cpp-only features by backend capabilities
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 65a3ed656b ui : stop settings save from clobbering backend config
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier dfcf80f7b3 ui : list models from a backend
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier cfac7cfd13 ui : allow excluding the local backend
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 808cff003e ui : add backend management settings UI
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier a6b0f69a93 ui : add backend presets, CRUD and connection test
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 1c36525771 ui : resolve API requests against the active backend
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier fd3b265ffe ui : add backend store and API base resolution
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 79795f3fba ui : add backend types and constants
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:10:10 +02:00
Aleksander Grygier 6bc13953a8 ui : Improvements
Adds a measured-px height transition to the tool category groups in the
Tools submenu, replacing the bits-ui Collapsible whose conditional
rendering kills the transition. The same technique as the reasoning panel:
the rows stay mounted, the height animates between 0 and the measured
scrollHeight, and visibility keeps collapsed rows out of the tab order.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 12:10:05 +02:00
Pascal 4446688ced ui : resolve bundled icon paths against the app base path
Serve the recommended MCP server favicons and the Hugging Face badge from
the app's base path, not the domain root, so they resolve when the app is
mounted under a path. Also normalizes the safe HTML config indentation.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 12:10:05 +02:00
Aleksander Grygier 7d046fa690 ui : sort reasoning panel attributes
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:09:32 +02:00
Aleksander Grygier 04d7c1eaf9 ui : lighten the model selector rows
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:09:32 +02:00
Aleksander Grygier 8fa7f16e47 ui : cache hugging face hub model data per session
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 12:09:32 +02:00
Aleksander Grygier df1b9d95b2 ui : group the model selector components
Move the four selector surfaces into models/ModelsSelector with their own
barrel, extract the shared reasoning panel and download row, group the option
list helpers under navigation/utils, and add the models selector hook wiring
(in-flight downloads and reasoning menu included).

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 12:09:32 +02:00
Aleksander Grygier 5f2d7ed21c ui : models discover dialog
Add the Models Discover explorer behind a new sidebar action and full-screen
dialog: a searchable HuggingFace GGUF list (org avatars, capability icons,
catalog size ranges) and a detail pane with header, metadata chips, the
sanitized model-card readme and the download area - per-quant action chips
grouped by bit depth, sidecar queuing and a scrollable serve-command preview
with dynamic quant selects. Searchable dropdowns gain sticky headers/footers.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:29 +02:00
Aleksander Grygier 516afbb9b7 ui : render shared model row hints as native titles
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 11:40:29 +02:00
Aleksander Grygier 3870f15875 ui : remember hub avatars that failed to load
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 11:40:29 +02:00
Aleksander Grygier 7f1c9236a4 ui : shared model display primitives
Extract ModelCapabilityIcons (canonical Tools/Reasoning/Vision/Video/Audio
order) out of ModelId and reuse it there, add the shared DialogConfirmDownload
for destructive download actions, the discover org avatar with dark-mode
inversion and the thin download progress bar, and rework ModelId badges to take
thinking/tool-use support directly.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:29 +02:00
Aleksander Grygier f0127f0c0c ui : optional sanitized raw HTML in markdown
Add an allowHtml prop to MarkdownContent: raw HTML found in the markdown is
rendered after DOMPurify sanitization instead of being escaped as literal
text. Default stays escaped.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier 85ecd8ce35 ui : model download pipeline
Track HuggingFace downloads end to end: the server download/cancel endpoints,
a status manager fed by the /models/sse download progress events, and a
models-discover store holding the catalog and detail state for the discover
view. Downloaded and in-flight entries are excluded from the loadable model
list.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier 31fc7a0f76 ui : model memory-fit estimation
Replace the raw runtime-memory estimate with the app's compatibility check:
the smallest real Mac memory tier that fits a model file, budgeted as
RAM x 0.75 minus fixed overhead with headroom on the file size. The constants
move to lib; the unused runtime-memory estimate is dropped. browser-info's
OS detection is exported for reuse.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier 61ccf5b821 ui : strip provider tilde prefix from hub avatar urls
Assisted-by: pi:llama.cpp/DeepSeek-V4.1-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier 8e37618aaf ui : Hugging Face Hub data layer
Add HuggingFaceService and its constants/enums/types: GGUF repo search, file
tree and model detail fetching, quant/sidecar filename analysis, shard-set
collapsing and the llama.app catalog feed, plus an orgOf() helper on the model
name utils.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier 774b215cd7 ui : model id grammar for sidecars, quants and capability parsing
Extend the shared model id parser with sidecar tokens (draft variants and
auxiliary imatrix/mmproj files), weight-file and custom-quant regexes, and add
the tools capability to ModelCapabilities; the selector option row picks it up
from the model's declared capabilities.

Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier b5f7cbeb1c ui : type-safe API types, fetch helpers and download-ready models store plumbing
Assisted-by: pi:GLM-5.3-Flash
2026-09-28 11:40:28 +02:00
Aleksander Grygier d1cfcee644 server : fix deadlock when removing a finished download
The download monitor thread acquires the mutex on its way out, so joining
it while holding the lock in server_models::remove deadlocks once the
status has flipped to DOWNLOADED. Join outside the lock, same pattern as
load_models().

Assisted-by: pi:zai-org/GLM-5.3
2026-09-28 11:40:28 +02:00
Aleksander Grygier 95cf88dddc common : resolve <quant>-<sidecar> download tags and list cached sidecars
A Q4_0-mtp style tag now resolves the sidecar file when no model file matches it, so a solo draft or mmproj download actually pulls the file. Cached sidecar files list as their own entries so the state survives a restart, and removing such a tag deletes only the sidecar.

Assisted-by: pi:zai-org/GLM-5.3
2026-09-28 11:40:27 +02:00