Commit Graph
10602 Commits
Author SHA1 Message Date
Aleksander Grygier 4fa82dc623 ui : use merged sampling & penalties section in model selector
Assisted-by: pi
2026-08-21 15:38:49 +02:00
Aleksander Grygier 9c476f0112 ui : fix eslint issues in model selector settings submenu 2026-08-21 15:38:49 +02:00
Aleksander Grygier 5a17ef4cc2 ui : fix formatting in model selector settings submenu 2026-08-21 15:38:49 +02:00
Aleksander Grygier a5e63c3069 ui : add sampling and penalties submenus to model selector
Add reusable ModelsSelectorSettingsSubmenu that renders a settings section's
fields as inline editable inputs bound to settingsStore. Wire it into the model
selector dropdown for the Sampling and Penalties sections, showing server
defaults as placeholders and disabling the submenus until a model is loaded.
2026-08-21 15:38:49 +02:00
Aleksander Grygier 90a84847f6 ui : fix eslint issues in chat form and model selector 2026-08-21 15:38:48 +02:00
Aleksander Grygier 10ac600337 ui : fix formatting in chat form and model selector 2026-08-21 15:38:48 +02:00
Aleksander Grygier eedf494f04 feat: Enable microphone input as default for audio models 2026-08-21 15:38:48 +02:00
Aleksander Grygier 535e737a87 ui : add raw model id tooltip to model selector options 2026-08-21 15:38:48 +02:00
Aleksander Grygier 11294657fc ui : make model option hover and focus highlight override the active state 2026-08-21 15:38:48 +02:00
Aleksander Grygier f46e6cce9c ui : move model list into a submenu within the model selector 2026-08-21 15:38:48 +02:00
Aleksander Grygier be7321a4cc ui : add show-org-name-in-trigger display setting 2026-08-21 15:38:48 +02:00
Aleksander Grygier f11a90d113 ui : keep reasoning submenu visible regardless of model state 2026-08-21 15:38:48 +02:00
Aleksander Grygier a43c1c0cde ui : show reasoning and modality icons on model options and search by modality 2026-08-21 15:38:48 +02:00
Aleksander Grygier 06f8d7ae96 ui : strip trailing container-format segments from parsed model names 2026-08-21 15:38:48 +02:00
Aleksander Grygier 0806ae2bf0 chat : account for the tab bar offset in the assistant min-height
Subtract the tab bar offset when it is shown so the last assistant message
does not overflow the available viewport space.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier b1667513bd chat : adjust tab bar width and use a shared offset variable
Widen the tab bar for the expanded sidebar and rename the tab bar height
variable to --chat-tabs-offset with a smaller value so the chat screen
min-height accounts for the overlay without overshooting.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 903841b24e chat : make the whole tab item act as a link
The full tab is now a link instead of only the inner label button, while
the stop and close buttons stay interactive by swallowing their clicks.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier e13011bbbd chat : add keyboard shortcut to jump between conversation tabs
Shift+Cmd/Ctrl+Left/Right cycles the open tabs, mirroring the existing
Shift+Cmd/Ctrl+Up/Down conversation navigation.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier bbd11affe9 refactor: Naming 2026-08-21 15:38:46 +02:00
Aleksander Grygier e6d1b63385 ui : improve chat tabs carousel UX
Scroll newly added tabs into view, fade overflowing tabs at the edges, and hide the New chat button while a new-chat tab is open.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 3d4fa69038 ui : migrate carousels to ScrollCarousel
Switch the settings mobile header, attachments list, thumbnail strip, and MCP resources to the unified component, and drop HorizontalScrollCarousel.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 0d574e77c0 ui : add unified ScrollCarousel component
Single carousel component with top/center variants, gap and scroll options, and hover-revealed chevrons. Rename the HorizontalScrollCarousel accessibility story accordingly.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 2e875fa3d5 ui : fix carousel scrollability detection
Observe the content wrapper as well as the container, since adding overflowing items does not change the container's own box size. Also expose an onScrollableChange callback.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 9bde74c881 refactor: Componentize 2026-08-21 15:38:46 +02:00
Aleksander Grygier c5fd4f9f95 feat: Add stop button to tabs 2026-08-21 15:38:46 +02:00
Aleksander Grygier e36d711267 chat : soften tab bar fade and dim inactive tabs
Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 79434c514b chat : add close-tab keyboard shortcut
Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 1723443567 chat : restyle the scroll-to-bottom button to match tab styling
Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 8bcd025902 chat : turn tab bar into a horizontally scrollable carousel
Make the tab bar a horizontally scrollable carousel with edge scroll buttons
and active-tab centering, and align its styling with the sidebar.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 1144652072 chat : add browser-style conversation tabs with a new-chat screen
Track open conversations as tabs above the chat, one per open chat, plus a
single New chat tab for the bare `#/` route. New chat is just the `#/`
screen - no temporary conversations - and its tab is dropped when navigating
away. Sending the first message creates a real conversation and opens a tab
for it.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier f8386b0368 chat : add opt-in conversation tabs setting
Add a Display setting that turns browser-style conversation tabs on or off,
enabled by default.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier b59d8bfe9d ui : track sidebar expanded state in a shared ui store
Move the desktop sidebar expanded/collapsed state out of deviceStore into a
dedicated uiStore so the chat tab bar can react to it.

Assisted-by: pi
2026-08-21 15:38:46 +02:00
Aleksander Grygier 1ae4576fe3 ui : route new-chat entry points through tabs
The sidebar New chat item, Cmd+Shift+O, the search page and the
arrow-key fallback now open a new-chat tab instead of navigating to the
?new_chat URL, which is removed. New chat is no longer a special route
but a tab like any other conversation.
2026-08-21 15:38:46 +02:00
Aleksander Grygier d37f8a5c4d ui : render conversation tab bar in chat layout
Desktop-only tab bar above the chat screen, one tab per open
conversation or new-chat tab. The active tab follows the route id;
clicking navigates, middle-click or the close button closes (switching
to the left neighbor), and a trailing + starts a new chat. Tabs appear
only on chat-id routes; the bare #/ new-chat view has none. The bare
route stays put unless a prompt/model deep-link routes it to a new-chat
tab.
2026-08-21 15:38:46 +02:00
Aleksander Grygier 25f7bafa24 ui : add temporary new-chat tabs
New-chat tabs are unsaved conversations carrying a temporary id used
directly as the route (#/chat/<id>). They live in memory and are only
persisted to the database - keeping the same id so the route and tab
stay stable - when the first message is sent. Deleting one drops it
without confirmation, and deleting conversations now closes their tabs.
2026-08-21 15:38:46 +02:00
Aleksander Grygier 0bc2d8d0c8 ui : add browser-style conversation tabs store
Track open conversation tabs in order, persisted to localStorage and
pruned against the loaded conversation list on init. The chat layout
syncs the route's tab on every navigation, so any way of reaching a
conversation opens a tab for it.
2026-08-21 15:38:46 +02:00
Georgi Gerganov bb4caa7540 llama.cpp : bump version to 0.2.0 (#27498) v0.2.0 b10566 2026-08-21 15:01:24 +03:00
Georgi Gerganov c4b0225d85 scripts : add release.sh for release preparation (#27497)
Similar to ggml/scripts/release.sh: validates repo state, creates a
release candidate branch (llama-rc-vX.Y.Z), bumps LLAMA_VERSION_* in
CMakeLists.txt and commits the version bump.

Usage: ./scripts/release.sh [major|minor|patch] [--dry-run]

Assisted-by: pi:llama.cpp/Qwen3.8-27B
2026-08-21 14:51:26 +03:00
Georgi Gerganov 5de25a7487 sync : ggml 2026-08-21 14:36:36 +03:00
Georgi Gerganov 01ff204fbd ggml : bump version to 0.21.0 (ggml/1597) 2026-08-21 14:36:36 +03:00
Georgi Gerganov 353b32d8b9 ci : remove duplicate flag (#27488) 2026-08-21 14:10:06 +03:00
Georgi Gerganov 7a0e42fd01 Revert "sycl : add Q2_K reordered MMVQ and ESIMD kernels (#26336)" (#27486)
This reverts commit ff14356e0c.
2026-08-21 14:02:03 +03:00
Aleksander Grygier 5b6ddc9675 ui: Settings navigation cleanup (#27241)
* ui : rework the settings registry into ordered raw-data sections

SETTINGS_REGISTRY becomes an ordered SettingsSectionEntry[] array; the
array order is the sidebar display order. Section titles, color mode
options and title radio options are declared inline in their section or
entry. Entries gain showInUi; MCP servers, the system-message toggle and
the title LLM flag become hidden entries of their own section.

Derived values (config defaults, help info, chat sections, numeric field
lists, syncable parameters) are still derived here; they move to their
actual consumers in follow-up commits.

* ui : extract settings localStorage persistence into SettingsService

Stateless load/save of the settings config and user-override keys, plus the
legacy theme key migration. Business logic (default merging, mobile
sendOnEnter default, applying the migrated theme) stays in the store.

* ui : move the settings exit route into ROUTES

SETTINGS_FALLBACK_EXIT_ROUTE is just a route, so it lives with the other
routes as ROUTES.SETTINGS_EXIT.

* ui : derive the syncable parameter list in the parameter sync service

The syncable parameter mapping is only consumed by the sync service, so
derive it there from the registry instead of exporting it from the
constants file.

* ui : restore isPrivate for API key masking

* ui : clean up settings registry and router fetch guard

Drop the per-entry section field (duplicates the parent slug and is
never read) and guard the router model fetch on fields?.length so the
Tools/Import-Export pages with empty fields are excluded again.

Assisted-by: pi

* ui : merge sampling and penalties settings into one section

Assisted-by: pi
2026-08-21 12:30:03 +02:00
Georgi Gerganov e467c2ff61 ci : add nightly-tag.txt to make-release (#27485)
As agreed in ggml discussion #1579, the official semver releases now
include a nightly-tag.txt asset containing the tag of the corresponding
nightly release (e.g. b10485). The Web UI assets are published to the
HF bucket under the nightly tag, so this makes them discoverable for
each official release.

- make-release-desc.sh: expose the resolved nightly tag as a
  nightly_tag output
- make-release.yml: create nightly-tag.txt from that tag, upload it
  as a release asset (skipped on dry-run), mention it in the release
  body and in the dry-run summary

Assisted-by: pi:llama.cpp/Qwen3.8-27B
2026-08-21 13:20:44 +03:00
Georgi Gerganov 1719747451 ci : release clean-up (#27477) 2026-08-21 11:33:40 +03:00
Charles Xu 62b2269060 kleidiai : add SME2 F32 GEMV kernel support (#26891) 2026-08-21 11:33:30 +03:00
Todd Malsbary ff14356e0c sycl : add Q2_K reordered MMVQ and ESIMD kernels (#26336)
* Add DMMV Q4_K and Q6_K ESIMD kernels

Configure cmake build with -DGGML_SYCL_ESIMD=ON to enable.

Signed-off-by: Todd Malsbary <[email protected]>

* Refactor ESIMD kernels to share common code

Signed-off-by: Todd Malsbary <[email protected]>

* Move control of ESIMD from compile to runtime

Signed-off-by: Todd Malsbary <[email protected]>

* Use ESIMD by default when available

Signed-off-by: Todd Malsbary <[email protected]>

* Fix possible error when using ESIMD by default

While not an issue in the current version, this will become an
issue when additional QK ESIMD kernels are added (such as Q2_K).

Signed-off-by: Todd Malsbary <[email protected]>

* Add explicit unroll to ESIMD kernels

Signed-off-by: Todd Malsbary <[email protected]>

* Tidy up ESIMD kernels a bit

Signed-off-by: Todd Malsbary <[email protected]>

* Add a reordered Q2_K MMVQ kernel

Signed-off-by: Todd Malsbary <[email protected]>

* Add DMMV Q2_K ESIMD kernel

Signed-off-by: Todd Malsbary <[email protected]>

---------

Signed-off-by: Todd Malsbary <[email protected]>
2026-08-21 11:01:40 +03:00
Georgi Gerganov 5fff128451 test : make the FA V-is-view-of-K case a test case parameter (#27394)
Resolve the TODO in test_flash_attn_ext: the branch that creates V as a
sub-view of K (MLA-based models) was hardcoded for the 576/512 head shapes.
Add a v_is_view_of_k test case parameter (default false) and select the
sub-view branch on it; the existing 576/512 (DeepSeek MLA) cases now pass it
explicitly, so the test coverage is unchanged.

Also add more V-is-sub-view-of-K cases: the 320/256 (Mistral4 MLA) and
192/128 head shapes, and full views with equal head sizes (128/128 F16,
64/64 q8_0).

Assisted-by: pi:llama.cpp/Qwen3.8-27B
2026-08-21 10:29:17 +03:00
Todd Malsbary 9e89a196b8 sycl : Add Q5_K ESIMD kernel (#26376)
* Add DMMV Q4_K and Q6_K ESIMD kernels

Configure cmake build with -DGGML_SYCL_ESIMD=ON to enable.

Signed-off-by: Todd Malsbary <[email protected]>

* Refactor ESIMD kernels to share common code

Signed-off-by: Todd Malsbary <[email protected]>

* Move control of ESIMD from compile to runtime

Signed-off-by: Todd Malsbary <[email protected]>

* Use ESIMD by default when available

Signed-off-by: Todd Malsbary <[email protected]>

* Fix possible error when using ESIMD by default

While not an issue in the current version, this will become an
issue when additional QK ESIMD kernels are added (such as Q2_K).

Signed-off-by: Todd Malsbary <[email protected]>

* Add explicit unroll to ESIMD kernels

Signed-off-by: Todd Malsbary <[email protected]>

* Tidy up ESIMD kernels a bit

Signed-off-by: Todd Malsbary <[email protected]>

* Add DMMV Q5_K ESIMD kernel

Signed-off-by: Todd Malsbary <[email protected]>

* Remove redundant copyright notice

Signed-off-by: Todd Malsbary <[email protected]>

---------

Signed-off-by: Todd Malsbary <[email protected]>
2026-08-21 10:23:02 +03:00
Hongqiang WangandLi He cd26896c19 opencl: keep the vocab-scale K-quant lm_head on the CPU for Adreno A7X (compiler issue workaround) (#26440)
* opencl: keep the vocab-scale K-quant lm_head on the CPU on the Adreno A7X

* opencl: revise comments

---------

Co-authored-by: Li He <[email protected]>
2026-08-20 22:30:17 -07:00