Commit Graph
8497 Commits
Author SHA1 Message Date
localai-org-maint-bot 7b5c5ad5c7 chore(gallery): add FrogNano Q5 and Q6 variants
Fill the quantization gap between the existing Q4 and Q8 builds. Pin both downloads to the same publisher revision and verify SHA256 values against LFS metadata and x-linked-etag headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit 1c17d6fe9d, mudler/LocalAI#12543)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:25 +00:00
localai-org-maint-bot 36d5579ece chore(gallery): add POCKET-Darwin-180B GGUF
Add the published four-shard UD-Q4_K_XL build for llama.cpp with
revision-pinned downloads and verified SHA256 checksums. Document
installation, download size, text-only input, and sampling defaults.

Assisted-by: Codex:gpt-6

(cherry picked from commit e32d0f50de, mudler/LocalAI#12542)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:15 +00:00
localai-org-maint-bot 0dcedf061f chore(gallery): add GUI-Owl 1.5 2B variants
Add Q4_K_M and Q8_0 GGUF builds for screenshot interpretation and GUI
planning with llama.cpp. Include the F16 vision projector in both builds
and document installation and the separate action executor requirement.

Pin all downloads and verify SHA256 values against Hugging Face LFS
metadata and download headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit c4273485d1, mudler/LocalAI#12541)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:25:05 +00:00
localai-org-maint-bot 29161bbc17 chore(gallery): add Humanizer QAT variants
Offer smaller IQ2_XS and mixed-precision Q3 builds alongside the existing
Humanizer quantizations. Pin downloads and document completion usage.

Assisted-by: Codex:gpt-6

(cherry picked from commit 97e9b967b1, mudler/LocalAI#12530)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:55 +00:00
localai-org-maint-bot 213f16ac78 chore(gallery): add MN-CharThink-12B variants
Offer Q4_K_M and Q6_K builds for character roleplay with llama.cpp.
Pin downloads and document explicit variant selection.

Assisted-by: Codex:gpt-6

(cherry picked from commit 2aaae6cfd3, mudler/LocalAI#12523)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:22 +00:00
localai-org-maint-bot bb807d7ca2 chore(gallery): add Simplicio-27B GGUF variants
Offer Q4_K_M and Q8_0 builds with the matching vision projector.
Pin downloads and verify their SHA256 against Hugging Face metadata
and response headers. Document installation and variant selection.

Assisted-by: Codex:gpt-6

(cherry picked from commit 0e8ebcde37, mudler/LocalAI#12516)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:11 +00:00
localai-org-maint-bot c5375372b7 chore(gallery): add Kayak Qwen3-VL-4B variants
Add Q4_K_M and Q8_0 builds with the matching vision projector for
single-step screenshot grounding on Kayak interfaces.

Assisted-by: Codex:gpt-6-astra

(cherry picked from commit 2f54c3216a, mudler/LocalAI#12513)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:24:01 +00:00
localai-org-maint-bot 5f46bb993d chore(gallery): add Index-Translate-2B variants
Add official Q4_K_M and Q8_0 builds with pinned downloads and verified
SHA256 values. Document installation and text translation prompts.

Assisted-by: Codex:gpt-6

(cherry picked from commit e50820d9d0, mudler/LocalAI#12512)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:50 +00:00
localai-org-maint-bot aad213e87f chore(gallery): add AstaBrief-8B GGUF variants
Offer Q4_K_M and Q8_0 builds for cited research reports from supplied
literature excerpts. Use the embedded Qwen3 template and document the
upstream prompt. Pin both downloads and cross-check their SHA256 values
against Hugging Face LFS metadata and download headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit b14169ac2a, mudler/LocalAI#12509)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:39 +00:00
localai-org-maint-bot f220c8e127 chore(gallery): add Swift Heretic GSQ-RCO variants
Add three llama.cpp quantizations with the matching vision projector,
MTP decoding, and installation examples. Pin downloads to one Hugging
Face revision and verify SHA256 values against LFS metadata and headers.

Assisted-by: Codex:gpt-6

(cherry picked from commit b5f4a2f958, mudler/LocalAI#12498)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:25 +00:00
mudler 53e238a320 chore(model gallery): 🤖 add new models via gallery agent
(cherry picked from commit 052597487c, mudler/LocalAI#12353)
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-13 07:23:14 +00:00
localai-org-maint-botandmudler e8409387bb chore: ⬆️ Update ServeurpersoCom/omnivoice.cpp to 2c32cd336881ef12fcf69245d0cedce2e4d19d6c (#12656)
⬆️ Update ServeurpersoCom/omnivoice.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:02:30 +02:00
localai-org-maint-botandmudler b11008dcfe chore(model-gallery): ⬆️ update checksum (#12659)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:02:16 +02:00
localai-org-maint-botandmudler 3b805e7fb0 chore: ⬆️ Update CrispStrobe/CrispASR to 38d6eb0f3bf5e9d9834f85b7484ce0021a53e684 (#12658)
⬆️ Update CrispStrobe/CrispASR

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:02:03 +02:00
localai-org-maint-botandmudler 62bc4c5ee8 chore: ⬆️ Update ikawrakow/ik_llama.cpp to 2959611ea000f13f2e6b6f3935147e796fcdf433 (#12657)
⬆️ Update ikawrakow/ik_llama.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:01:40 +02:00
localai-org-maint-botandmudler 77794cfd82 chore: ⬆️ Update leejet/stable-diffusion.cpp to d637cfb935feb2254898a8f1524046c958f3df80 (#12652)
⬆️ Update leejet/stable-diffusion.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:01:15 +02:00
localai-org-maint-botandmudler 54f78cfce4 chore: ⬆️ Update 0xShug0/audio.cpp to dce85dc468fe1d9fe20b80cc020ee4b051eededf (#12655)
⬆️ Update 0xShug0/audio.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-13 09:00:25 +02:00
localai-org-maint-botandlocalai-org-maint-bot a551c83465 fix(audio): preserve generated sound recordings (#12641)
FLAC normalization renames the backend's WAV destination. The next
request then reuses that apparently vacant path and replaces the first
recording when normalization runs again.

Give each request a UUID filename, and test that successive FLAC outputs
retain distinct paths and their original bytes.

Addresses the overwrite report in #12633. Reference-audio input remains
outside this fix.

Assisted-by: Codex:gpt-6

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-10-12 18:49:17 +02:00
mudler-agentandEttore Di Giacinto 47afc6c7e0 chore(deps): update LocalRecall for raw vectors (#12649)
Pin the merge of LocalRecall #58 to include the PostgreSQL raw-vector
API and its reviewed client fixes. Keep existing text integration unchanged.

Assisted-by: nib:gpt-6-astra

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-12 18:07:31 +02:00
mudler-agentandEttore Di Giacinto 33459f2e2a feat(launcher): ship an AppImage on tagged releases (#12647)
* feat(launcher): package a Linux AppImage

Ship the existing Fyne launcher as an additive release asset without
bundling the server or changing its runtime downloader.

Pin packaging tools and the type-2 runtime, preserve the caller
environment, and document the native amd64 graphics requirements.
Validate packaging contracts and wire extraction smoke checks into CI.

Assisted-by: Codex:gpt-5

* fix(launcher): harden AppImage release checks

PR builds must not receive repository write credentials. Isolate uploads
in a gated job that consumes the tested artifact without checkout.
Keep the existing release check and dependency on GoReleaser.

A surviving process does not prove that the UI event loop works.
Require observable startup progress, reject initialization errors, and
bound termination. Document the remaining limits without changing the
launcher application. Add permission and smoke failure regressions.

Assisted-by: nib:unknown

* fix(launcher): install file for AppImage builds

appimagetool fails after Go compilation when file is missing. Install
it explicitly in CI and document the local build dependency. Check for
it before compilation and cover the missing-command failure in tests.

Assisted-by: nib:unknown

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-12 17:17:43 +02:00
localai-org-maint-botandmudler 98467ef0c2 chore(website): refresh the counters (#12644)
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-12 09:35:46 +02:00
f33034a925 chore: ⬆️ Update 0xShug0/audio.cpp to 96269554d00621fb0fca6b52b58919749eba1c8d (#12598)
* ⬆️ Update 0xShug0/audio.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(audio-cpp): map new detection tasks

Upstream adds wake-word and audio-classification task kinds. Preserve
their capability names without routing them to unrelated audio RPCs.

Assisted-by: Codex:gpt-6

---------

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-10-12 09:35:25 +02:00
615446ae75 chore: ⬆️ Update ggml-org/llama.cpp to f2cc7282ce0042641df55e0e563b75e824e2b647 (#12601)
* ⬆️ Update ggml-org/llama.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(llama-cpp): preserve chat session state

Newer llama.cpp parsers return template state outside the request JSON.
Pass that state to both inference tasks and response readers so grammar,
tool calls, and reasoning remain available in both chat paths.

Detect the parser API during preparation to preserve older fork builds.

Assisted-by: Codex:gpt-6

---------

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-10-12 09:35:15 +02:00
localai-org-maint-botandmudler ca35f6e710 chore: ⬆️ Update ikawrakow/ik_llama.cpp to 89bba35c8841618502b2be8273fb5265b405aca1 (#12600)
⬆️ Update ikawrakow/ik_llama.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-12 09:34:57 +02:00
localai-org-maint-botandmudler 14381c0fca chore: ⬆️ Update CrispStrobe/CrispASR to 1f14e7ddb732db6413c295f146ea48c27edf42f5 (#12615)
⬆️ Update CrispStrobe/CrispASR

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-12 08:47:21 +02:00
localai-org-maint-botandmudler cb2372bc55 chore: ⬆️ Update leejet/stable-diffusion.cpp to 2988060a4338a5dcd94721c964a8e87003c1ac8b (#12614)
⬆️ Update leejet/stable-diffusion.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-12 08:47:04 +02:00
localai-org-maint-botandmudler 7180bb923b chore: ⬆️ Update ggml-org/whisper.cpp to 7e26d3b0d5bced6c8217ef09710ec2f969001241 (#12638)
⬆️ Update ggml-org/whisper.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-12 08:46:50 +02:00
localai-org-maint-botandmudler d4a5af8bfe chore(model-gallery): ⬆️ update checksum (#12639)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-11 23:49:12 +02:00
mudler-agentandEttore Di Giacinto 440225a724 feat(omnivoice): add bounded duration controls (#12637)
* test(omnivoice): expose ignored duration controls

Compile the real wrapper with a model-free engine fixture. Four failing
assertions expose ignored duration, postprocessing, and validation.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat(omnivoice): add bounded duration controls

Validate request controls before reference reads or native output.
Preserve engine defaults when controls are omitted. Bound forced
single-shot duration to 30 seconds as wrapper resource policy.

Exercise the real native boundary, streaming rejection, and defaults
with synthetic PCM. Document quantization and postprocessing limits.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* test(omnivoice): require fixture-free ordinary tests

Expose the ordinary suite regression before isolating native fixtures.
Require selected native tests to reject a missing fixture explicitly.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix(omnivoice): isolate native fixture tests

Ordinary Go tests must run without a compiled native fixture.
Select fixture specs explicitly in the dedicated gate while keeping
parser tests ordinary and native checks mandatory.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 23:08:01 +02:00
localai-org-maint-botandmudler c66b1a81ef chore: ⬆️ Update PrismML-Eng/llama.cpp to e8fd209c975c80aa7fb36a8423571ff3b1b7e955 (#12595)
⬆️ Update PrismML-Eng/llama.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-11 22:14:52 +02:00
localai-org-maint-botandmudler 87cada8ae1 feat(swagger): update swagger (#12636)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-11 22:12:53 +02:00
mudler-agentandEttore Di Giacinto 8a03ce7f6c perf(config): skip GGUF guessing for pure aliases (#12629)
Aliases have no model file, so guessing attempts to parse the models
directory. Skip that work while retaining the context fallback and
normal alias validation.

Use a private call-local parser dependency to verify operation counts
without a mutable global hook. Cover concrete guessing, defaults,
alias validation, and resolved target equivalence.

Assisted-by: nib:gpt-6-astra

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 17:39:22 +02:00
mudler-agentandEttore Di Giacinto 99d6b35cb5 perf(http): skip discovery for configured requests (#12628)
Exact configured requests need no loose-file enumeration. Reuse the
synchronized config lookup without adding a cache. Misses retain regex
discovery and raw-weight fallback with ALWAYS_INCLUDE.

Keep general listing and bearer discovery unchanged. Preserve request
validation, alias resolution, disabled-target checks, and model access.
Record diagnostics only for work performed.

Assisted-by: nib:gpt-6-astra

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 17:38:27 +02:00
mudler-agentandEttore Di Giacinto 883e4c56eb test: fix lint failures after ESRGAN merge (#12623)
test: satisfy lint checks for upscale and diagnostics

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:53:06 +02:00
mudler-agentandEttore Di Giacinto 0177e4988c feat(images): add ESRGAN upscaling and Studio workflow (#12620)
* feat(images): add upscale model capabilities

* fix(config): keep SD GGML upscale opt-in

* feat(stablediffusion): add lazy ESRGAN upscale bridge

Keep native image ownership in C++ and serialize context creation, inference and teardown. Use upscale_scale in backend options as the explicit upscale-only marker because ModelOptions does not carry usecases.

Assisted-by: Codex:gpt-5

* fix(stablediffusion): validate ESRGAN settings

* fix(upscale): forward typed settings and contain resolved model paths

Typed settings replace legacy options without duplicates. Resolve model and trusted root symlinks before caching the model path, rejecting missing files and escapes.

Assisted-by: Codex:gpt-5

* fix(upscale): validate scale and clean failed HTTP outputs

Require an explicit scale bounded to 1-16, check backend results, and keep destination cleanup owned by the allocating endpoint. Cover validation, result failures, cleanup, and successful URL responses.

Assisted-by: Codex:gpt-5

* feat(studio): add inline image upscale workflow

Assisted-by: OpenAI:gpt-5

* test(studio): serve upscale capability fixtures

* fix(stablediffusion): default ESRGAN tiling to full frame

* feat(gallery): add RealESRGAN anime upscaler

* fix(stablediffusion): allow full-frame ESRGAN tiles

* fix(routes): select explicit upscale models

Give image upscaling dedicated usecase-filtered middleware and keep ordinary image models out of the endpoint. Mark and verify the legacy Diffusers x4 gallery model as an explicit upscaler.

Assisted-by: OpenAI:gpt-5 [shell]

* refactor(upscale): keep settings in backend options

* test(config): keep upscale options backend-specific

* fix: keep upscale routing metadata out of backend options

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:30:09 +02:00
mudler-agentandEttore Di Giacinto a8ee0d95ec feat(stablediffusion-ggml): add Qwen Image runtime schedules (#12619)
* feat(stablediffusion-ggml): pass custom sigmas

Turbo diffusion models require checkpoint-specific sigma schedules. Parse the model option and forward its values to stable-diffusion.cpp for each image request.

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Assisted-by: nib <noreply@localai.io>

* feat(gallery): add Qwen Image 2.1 runtimes

Add the validated Anime FUSAL and AtomicChat Turbo Uncensored assemblies with pinned artifacts, exact runtime settings, licensing disclosures, and text-to-image limitations.

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Assisted-by: nib <noreply@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@users.noreply.github.com>
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:26:54 +02:00
mudler-agentandEttore Di Giacinto c3976a675b fix(chat): defer model fallback until after binding (#12621)
* fix(chat): defer model fallback until after binding

Explicit chat models need neither legacy Bearer discovery nor default
listing. Defer those fallbacks until binding finds no model, while
keeping body validation and fresh binding inside each failover attempt.

Expose the existing request-phase UUID through a response header and a
nil-safe accessor. Disabled timing creates neither a header nor an ID.
Document the contract and cover fallback, authentication, and retries.

Assisted-by: OpenAI:undisclosed
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* test(http): check diagnostic router cleanup

Assert that deferred router cleanup succeeds instead of ignoring its
error. This fixes the errcheck failure in the chat authentication test.

Assisted-by: OpenAI:undisclosed
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:26:40 +02:00
localai-org-maint-botandmudler 297f7bd662 chore(model-gallery): ⬆️ update checksum (#12618)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-11 00:26:20 +02:00
mudler-agentandEttore Di Giacinto 08871b1a6a feat(audio): add YuE2 music generation (#12617)
* feat(audio): forward sound generation params

Pass string-valued sound generation parameters from the public request to
the audio backend. Typed fields retain precedence over colliding generic
parameters, and source audio remains unavailable in the public schema.

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat(gallery): add YuE2 music model

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* docs(audio): document YuE2 sound generation

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix(audio): reserve source input parameter

Assisted-by: nib:gpt-5.6-sol
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-11 00:26:10 +02:00
mudler-agentandEttore Di Giacinto 9e73596a1b fix(diagnostics): handle nil contexts (#12616)
Diagnostic calls panic on a nil context even when timing is disabled.
Treat nil as an absent observation without changing loader contexts.

Add failing-first coverage for timing helpers and cached model loads.
The unchanged portable profile HTTP regression passes with this guard.

Assisted-by: OpenAI:undisclosed

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-10 22:28:18 +02:00
mudler-agentandEttore Di Giacinto 0e0e91f95c feat(diagnostics): add opt-in profiling (#12610)
* feat(diagnostics): add private opt-in profiler

Keep profiling on a dedicated loopback listener rather than the public API.
Validate settings and bind synchronously so startup reports configuration
and socket failures. Own sampling and shutdown for the run process.

Cover private handlers, blocked cmdline access, sampling cleanup, and
serving failures with focused Ginkgo tests.

Assisted-by: nib:gpt-6-astra

* feat(diagnostics): add sanitized phase timing

Carry generated request and reload identities through private contexts.
Keep timing disabled without allocations and emit only validated fields
at Info level when enabled.

Cover identity isolation, nested durations, inheritance, and sanitized
logging with focused race-tested Ginkgo specs.

Assisted-by: nib:gpt-6-astra

* fix(diagnostics): retain request observations

Reuse an existing request observation across recorders to avoid splitting
correlation. Keep the original context, identity, and sink without new
allocations. Preserve nil-recorder behavior and fresh reload identities.

Verify the regression fails before the fix and passes with the full
Diagnostics race suite afterward.

Assisted-by: nib:gpt-6-astra

* feat(cli): own opt-in diagnostics lifecycle

Expose profiling and phase timing flags without enabling them for debug.
Bind the private profiler before application initialization and propagate
serving failures through the run lifecycle.

Bound signal cleanup and preserve preload-only backend startup. Cover
flag parsing, preload isolation, cancellation, and once-only shutdown.
Document initialization and shutdown cancellation limitations.

Assisted-by: nib:gpt-6-astra

* feat(config): measure filter and reload phases

Separate request lock waits from filtering and held work. Aggregate reload
filesystem and parsing durations without logging inside the config lock.

Preserve caller option execution under the lock after metadata collection.
Extract only the internal diagnostics option before waiting for the lock.
Keep direct callers uninstrumented unless they supply diagnostics options.

Verify focused Diagnostics examples with the race detector, including
option ordering, gated contention, errors, panic propagation, and parity.

Assisted-by: nib:gpt-6-astra

* fix(config): separate early reload observation

Opaque callbacks cannot select timing before their execution point.
Carry the startup recorder explicitly through loader construction.
Apply late options once under the lock and honor composed last writes.
Document early and late phase boundaries and observation identities.

Report malformed gallery syntax as an internal parse failure without
changing strict or non-strict loader returns.

Assisted-by: nib:gpt-6-astra

* fix(config): preserve per-model option callbacks

The resolved snapshot suppresses existing callbacks during model defaults,
even when diagnostics are disabled. Pass original options through the
existing defaults pathway without adding diagnostics-driven replay.

Test stateful options with two models in enabled and disabled modes.
Preserve three calls and thread defaults of two and three.

Assisted-by: nib:gpt-6-astra

* feat(model): observe discovery phases

Carry request diagnostics through config and loose-file discovery to
separate directory enumeration from in-memory filtering and fallback.
Keep existing APIs as background-context wrappers and preserve discovery
policies, ordering, duplicates, errors, and filesystem operation counts.

Add focused parity, privacy, phase, and disabled-allocation tests.
The focused diagnostics race gate passes for model and galleryop.

Assisted-by: nib:gpt-6-astra

* feat(http): observe extraction phases

Generate diagnostic identity before request discovery, independently of
client correlation headers. End each extraction segment before inference
so downstream latency does not inflate discovery measurements.

Carry observations through discovery helpers and rebuilt request contexts
without changing cancellation or model selection. Cover disabled parity,
error outcomes, privacy, concurrent identity isolation and route contexts.

Assisted-by: nib:gpt-6-astra

* fix(http): retain diagnostics across failover

Failover restores its entry request before retrying. Initialize the
observation before that capture so direct extraction retains one ID.
Keep extraction spans per attempt and end them before downstream work.

Exercise two real targets without default middleware, including replay,
shared identity, phase boundaries, and timing-off response parity.

Assisted-by: nib:gpt-6-astra

* feat(model): observe initialization and routing

Mark loader entry before cache and admission checks. Measure only the
ModelRouter callback, without attributing transport or worker latency.

Test inherited identity and sanitized events with fake backends. Exercise
the actual Echo router to keep profiles private across debug and timing
options. Cover capture shutdown, forced close, and lifecycle failures.

Assisted-by: nib:gpt-6-astra

* docs(diagnostics): guide bounded investigations

Document private profiling, sampling ownership, and phase boundaries so
operators can interpret captures without assuming request attribution.
Add Ginkgo drift checks for flags, defaults, phases, links, and capture
warnings. These checks do not certify the operator prose.

The focused documentation race test passes after four expected failures.
The consolidated Diagnostics race gate passes across all eight packages.
This gate does not validate the full suite, auth, or production UI.

Assisted-by: nib:gpt-6-astra

* refactor(cli): restore inline run lifecycle

Remove diagnostic startup hooks so application startup stays readable
in Run. Keep the profiler as an optional sidecar with bounded cleanup
and an error watcher, without a general lifecycle runner.

Replace hook simulations with real CLI startup checks and component
capture tests. Document that application cleanup can exceed the
private listener budget.

The eight-package Diagnostics race gate passes. A cleanup mutation
fails the real CLI listener-release regression as expected.

Assisted-by: nib:gpt-6-astra

* fix(cli): retain concurrent startup errors

Cancellation must not hide a public API bind failure. Join the public
serve result, cancellation cause, and HTTP shutdown errors inline.
Ignore ErrServerClosed only after intentional shutdown.

Exercise real startup with an occupied API port and a failed private
listener. Isolate the Linux socket fixture in a subprocess and wait
for cancellation acknowledgment without timing sleeps.

Assisted-by: nib:gpt-6-astra

* refactor(http): make request context primary

Move context preparation into the request extractor. Diagnostics remain
an optional addition, not the entry point for request processing.
Preserve context initialization before failover captures the request.

Assisted-by: nib:gpt-6-astra

---------

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-10 20:27:28 +02:00
c5e40336b0 chore(gallery): add spark-s1-4b-v6 (#12609)
* chore(gallery): add spark-s1-4b-v6

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Abhishek Rai <abhishek.rai085@gmail.com>

* docs(gallery): correct Spark logprobs request

LocalAI treats numeric logprobs as an enable flag. Request the token
count through top_logprobs and check for missing option letters.

Assisted-by: Codex:gpt-6

---------

Signed-off-by: Abhishek Rai <abhishek.rai085@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-10-10 17:03:21 +02:00
localai-org-maint-botandlocalai-org-maint-bot 40c51f7981 fix(ui): repair model layout and CI assertions (#12587)
* fix(ui): keep model actions visible on phones

Let model descriptions wrap without losing the install action offscreen.
Give page table rules precedence over the shared table styles.

Separate background facet probes from navigation assertions and wait for
asynchronous size sorting and masonry layout. Fix the chat fixture clock
so runs near midnight keep the expected conversation groups and order.

Assisted-by: Codex:gpt-6

* test(traffic): match complete percentile labels

Playwright joins adjacent table-cell text. A llama-cpp backend followed
by 99 requests then matches p99, although no percentile is shown.
Require word boundaries while keeping the absence assertion.

Assisted-by: Codex:gpt-6

---------

Co-authored-by: localai-org-maint-bot <306269227+localai-org-maint-bot@users.noreply.github.com>
2026-10-10 08:30:02 +02:00
mudler-agentandEttore Di Giacinto b7d9b9310f fix(ui): repair model import advanced controls (#12599)
fix(ui): keep import controls beside the preview

Place advanced options before checks and focus them from Adjust.
Use the shared kit busy spinner without a second loading indicator.
Clarify that source recognition checks format, not model contents.

Cover pending submissions, keyboard disclosure, backend preferences,
and source copy with full-page browser regressions.

Assisted-by: Codex:gpt-5

Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-10 08:29:48 +02:00
mudler-agentandEttore Di Giacinto 24a9feecbb feat(api): add OpenAI Decisions endpoint (#12603)
* feat: add OpenAI Decisions adapter with validated ordered answers

Share SystemOne execution and preserve ordered, typed Decisions answers. Reject null probabilities and derive scores from the emitted distribution. Cover conversion and handler contracts using a valid generated PNG fixture.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* fix: preserve Decisions choice types and empty score labels

Keep canonical JSON values in model-visible choice criteria and represent probability label presence explicitly. Add conversion and serialization regressions.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* feat: wire the OpenAI Decisions route

Expose the adapter through the shared Decisions feature gate and usage
middleware. Test real route registration with a fake backend, including
unauthenticated access, user permissions, and exact usage accounting.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

* docs: document OpenAI-compatible decisions and discovery

Describe the shared local execution contract, typed questions, image limits, and backend accounting. Publish the Decisions route in Swagger and retain the existing SystemOne discovery tag. Use documented loose object placeholders for JSON unions that Swagger 2 cannot express.

Assisted-by: nib:gpt-6-astra
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>

---------

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-10 08:29:31 +02:00
localai-org-maint-botandmudler 795d35e0f5 chore: ⬆️ Update leejet/stable-diffusion.cpp to f89d9b13d730eabeede7314ce49dacd18d3c90c2 (#12604)
⬆️ Update leejet/stable-diffusion.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-10 08:29:21 +02:00
localai-org-maint-botandmudler a34c3991dd chore: ⬆️ Update CrispStrobe/CrispASR to 5b83d23a085e08d62542e58d88751b5269f0aafb (#12602)
⬆️ Update CrispStrobe/CrispASR

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-10 08:29:06 +02:00
localai-org-maint-botandmudler 1537ca010c chore(model-gallery): ⬆️ update checksum (#12605)
⬆️ Checksum updates in gallery/index.yaml

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-10 08:28:35 +02:00
mudler-agentandEttore Di Giacinto da10cbb65e feat(gallery): add Iris-3B image model (#12597)
Update stable-diffusion.cpp to its merged Iris support commit and add the original F32 Iris weights with the Qwen3-VL Q4_K_M text encoder to the model gallery.

Assisted-by: nib:gpt-5.6-sol

Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
2026-10-09 22:57:26 +02:00
localai-org-maint-botandmudler 0a13e6c80b chore: ⬆️ Update ggml-org/llama.cpp to de7fa0a3c6a2e1b4cd9f22eb8d6bf5b12dbdb63b (#12582)
⬆️ Update ggml-org/llama.cpp

Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: mudler <2420543+mudler@users.noreply.github.com>
2026-10-09 22:00:10 +02:00