Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
bf8eab8
fix(llamacpp): allow selecting .tar.gz backends in macOS picker
qnixsynapse May 23, 2026
654f9ff
fix(extensions): isolate onLoad failures so one bad extension can't g…
qnixsynapse May 23, 2026
d89a865
fix(threads): scope llamacpp router error banner to llamacpp threads
qnixsynapse May 23, 2026
b02b7f6
fix(llamacpp): scope dep verification to GPU backend lib, skip on fla…
qnixsynapse May 23, 2026
6ea3798
feat(llamacpp): add toggle for backend dependency verification
qnixsynapse May 25, 2026
da968e8
fix(llamacpp): skip startup backend update check when auto-update is off
qnixsynapse May 25, 2026
1f0f047
perf(models): replace dropdown compat indicator with hub estimator
qnixsynapse May 25, 2026
44dd64c
fix(models): drop ctx value from dropdown compat tooltip
qnixsynapse May 25, 2026
de494a5
feat(sampling): provider-aware sampler popover with capability gating
qnixsynapse May 25, 2026
4f3895e
fix(mcp): dedupe router model picker entries by provider+id
qnixsynapse May 25, 2026
ad1f0b9
fix(mcp): stop flooding logs from stdio MCP server health probes (#8190)
qnixsynapse May 25, 2026
d29221e
fix(providers): don't carry stale metadata across provider refetches
qnixsynapse May 25, 2026
493750d
fix(ui): render single-option dropdowns as inert text
qnixsynapse May 25, 2026
5b99a92
feat(llamacpp): split version/backend selectors and overhaul settings UX
qnixsynapse May 25, 2026
1c0ffca
fix(threads): stop persisting empty assistant rows; pin errors to use…
qnixsynapse May 25, 2026
1f3ff8b
test(web-app): repair broken mocks after sampling/router refactors
qnixsynapse May 25, 2026
e5effae
fix(llamacpp): include mmproj.gguf in VRAM precheck
qnixsynapse May 25, 2026
7235052
fix(llamacpp): format Error/object log args instead of [object Object]
qnixsynapse May 25, 2026
214b52d
feat(chat): allow sending media-only messages without text
qnixsynapse May 25, 2026
93915df
fix(threads): upsert message rows so metadata.error survives restart
qnixsynapse May 25, 2026
9f95370
fix(threads): persist metadata.error across restart and dedupe error UI
qnixsynapse May 25, 2026
7c7d0e2
fix(sampling): restrict sampler UI and params to local/custom providers
qnixsynapse May 26, 2026
591c3d8
fix(chat-input): align reasoning trigger with sibling icon buttons
qnixsynapse May 26, 2026
7b312b4
fix(providers): narrow existing setting value type for tsc -b
qnixsynapse May 26, 2026
1d038e6
fix(lint): replace unused-rename destructures with delete
qnixsynapse May 26, 2026
9235844
fix(threads): guard messages map access and drop obsolete banner tests
qnixsynapse May 26, 2026
6a6e061
chore(rust): fix all clippy warnings across main crate and plugins
qnixsynapse May 26, 2026
00cdc85
feat(llamacpp): use gguf general.name for imported model name
qnixsynapse May 26, 2026
99b075f
fix(hardware,assistant): ACL for refresh_system_info + gate sampler U…
qnixsynapse May 26, 2026
a4047c9
fix(llamacpp): emit onSettingUpdate from overridden updateSettings
qnixsynapse May 26, 2026
11f0f28
fix(threads): persist OOM/backend banner per-thread across restart
qnixsynapse May 26, 2026
b9c3fbf
feat(providers): support Anthropic-compatible custom providers
qnixsynapse May 27, 2026
a4ac378
fix(llamacpp): cap embedding-slot bonus at +1 in router models_max
qnixsynapse May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 29 additions & 4 deletions extensions/llamacpp-extension/settings.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,19 @@
[
{
"key": "version_backend",
"title": "Version & Backend",
"description": "Version and Backend for llama.cpp",
"key": "llamacpp_version",
"title": "Version",
"description": "llama.cpp release version",
"controllerType": "dropdown",
"controllerProps": {
"value": "none",
"options": [],
"recommended": ""
}
},
{
"key": "llamacpp_backend",
"title": "Backend",
"description": "Hardware backend for llama.cpp (CUDA, Vulkan, CPU, etc.)",
"controllerType": "dropdown",
"controllerProps": {
"value": "none",
Expand All @@ -22,10 +33,24 @@
"textAlign": "right"
}
},
{
"key": "check_for_updates",
"title": "Check for updates",
"description": "Fetch the remote llama.cpp release list. Required for the version dropdown to show releases beyond what's installed locally, and for update notifications.",
"controllerType": "checkbox",
"controllerProps": { "value": true }
},
{
"key": "auto_update_engine",
"title": "Auto update engine",
"description": "Automatically update llamacpp engine to latest version",
"description": "Automatically download and switch to the latest llamacpp engine when available. Requires \"Check for updates\" to be on.",
"controllerType": "checkbox",
"controllerProps": { "value": true }
},
{
"key": "verify_backend_deps",
"title": "Verify backend dependencies",
"description": "Check that GPU backend shared libraries (CUDA, Vulkan, etc.) resolve on startup and warn if any are missing.",
"controllerType": "checkbox",
"controllerProps": { "value": true }
},
Expand Down
22 changes: 13 additions & 9 deletions extensions/llamacpp-extension/src/backend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,39 +32,43 @@ export async function getLocalInstalledBackends(): Promise<
// <Jan's data folder>/llamacpp/backends/<backend_version>/<backend_type>

// what should be available to the user for selection?
export async function listSupportedBackends(): Promise<BackendVersion[]> {
/**
* Hardware-supported backends published by upstream. Excludes
* locally-installed-only entries, so the "recommended backend" calculation
* isn't biased by user side-loads.
*/
export async function fetchRemoteBackends(): Promise<BackendVersion[]> {
const sysInfo = await getSystemInfo()
const rawFeatures = await getSupportedFeaturesFromRust(
sysInfo.os_type,
sysInfo.cpu.extensions,
sysInfo.gpus
)
const features = normalizeFeatures(rawFeatures)

// Get supported backend names from Rust
const supportedBackends = await determineSupportedBackends(
sysInfo.os_type,
sysInfo.cpu.arch,
features
)

// Get remote backends via Rust (handles GitHub + CDN fallback)
let remoteBackendVersions: BackendVersion[] = []
try {
remoteBackendVersions = await invoke(
return await invoke<BackendVersion[]>(
'plugin:llamacpp|fetch_remote_supported_backends',
{ supportedBackends, proxy: getProxyConfig() }
)
} catch (e) {
console.debug(
`Not able to get remote backends, Jan might be offline or network problem: ${String(e)}`
)
return []
}
}

// Get locally installed versions
export async function listSupportedBackends(
checkRemote: boolean = true
): Promise<BackendVersion[]> {
const remoteBackendVersions = checkRemote ? await fetchRemoteBackends() : []
const localBackendVersions = await getLocalInstalledBackends()

// Merge & sort via Rust
return listSupportedBackendsFromRust(remoteBackendVersions, localBackendVersions)
}

Expand Down
Loading
Loading