feat: model "to-download" list, mmproj vision, styled modals, broker + packaging
Web UI / models:
- "To download" wishlist: models known but not on disk and not configured show
as non-configured to-download rows. Free-disk on an unconfigured model, Remove
on a model with no files left, and a new "Add to list" button in the download
window all record into models.json `to_download`; pruned on enable/download.
New endpoints model-mark-download / model-unmark-download.
- mmproj multimodal components: mmproj GGUFs are classified as components (not
models), selectable per-GGUF in the model config (auto-selected, enables vision
capability). VulkanBackend loads them via llama.cpp's MTMDChatHandler (--mmproj
equivalent), and the chat path now forwards image_url content end-to-end.
- All window.alert() replaced by a shared styled showAlert()/showConfirm() modal
in base.html (used across every admin template).
Front proxy / broker:
- Fix engine model-assignment NameError (keep -> _keep).
- Brokered GET /coderai/capabilities now answers from the front (whole node) so
multi-GPU hosts report every card, not a single engine's CUDA-visible one.
- Log a clear reason when the broker is disabled.
Packaging (distributable OCI image):
- Multi-stage venv image + smoke test; bundle ds4/wav2lip/sadtalker + parler;
whisper-server etc. dereferenced (cp -aL) so no dangling symlinks.
- Dockerfile.update + update_oci_image.sh: ~30s incremental code-only rebuild on
an immutable coderai:base (no 20GB bundle recopy).
- run_oci.sh: --local/--config-dir + --map to run against existing local config
and data dirs without a rebuild; --debug[=flags] + --log-file for selectable
debug flags and a host-tailable file log (launcher tees; supervisord kills the
process group). tmp_janitor age-prunes the dedicated temp dir.
Co-Authored-By:
Claude Opus 4.8 <noreply@anthropic.com>
Showing
This diff is collapsed.
This diff is collapsed.
codai/models/tmp_janitor.py
0 → 100644
packaging/linux/nginx.conf
0 → 100644
Please
register
or
sign in
to comment