Releases: deposist/llama.cpp-Control-Deck
Release list
llama.cpp Control Deck v1.0.3
Release Notes — llama.cpp Control Deck v1.0.3
Release date: 2026-05-30
Highlights
v1.0.3 is a UX-focused release. It significantly improves the browser control
panel with accessibility, onboarding, dark mode, batch operations, drag-and-drop
service ordering, inline validation, offline feedback, and broader RU/EN i18n.
This release does not include developer-only roadmap or CI audit files in the
published repository state.
Major UX Improvements
- Dark mode with persisted preference and system
prefers-color-scheme
fallback. - First-run wizard when runtime or model configuration is missing.
- Empty Services state with a clear Add service call to action.
- Keyboard-accessible modals:
Escapecloses dialogs, focus is trapped
inside active modals, and the first useful field receives focus on open. - ARIA live announcements for toast/status messages.
- Offline indicator when
/api/statepolling fails. - Responsive modals with
max-height: 90vhand internal scrolling.
Service Management
- Batch Start selected / Stop selected actions.
- Checkbox selection for services.
- Drag-and-drop service reordering saved through
POST /api/instances/reorder. - Undo delete via button or
Ctrl+Z/Cmd+Z. - Health sparklines showing the last 10 health states per service.
- Inline service validation with debounce and live command preview updates.
Performance & Reliability
- Adaptive refresh polling (
setTimeout) replaces fixedsetInterval. - Tkinter logs refresh only when the Logs tab is active.
- Tkinter instance table updates rows in place instead of recreating the entire
Treeview. load_config()uses an mtime-based cache with defensivedeepcopy().- Local browser error telemetry is stored in
logs/web-client-errors.jsonlvia
POST /api/client-error.
Internationalization & Accessibility
- Broader RU/EN coverage for old hardcoded labels and new UX controls.
- Path picker file sizes now display as human-readable IEC units.
- Text inputs use
dir="auto"for mixed LTR/RTL text.
Upgrade Notes
No breaking changes. Existing config.json files remain compatible.
If you use the Web UI, refresh the page after upgrading to load the new CSS and
JavaScript assets.
Files Changed
config.pycontrol_web.pyllama_cpp_gui.pystatic/control.cssstatic/control.jstemplates/index.htmlCHANGELOG.mdREADME.mdpyproject.toml
Compatibility
| Component | Minimum | Tested |
|---|---|---|
| Python | 3.10 | 3.12 |
| OS | Linux | Ubuntu 22.04/24.04 |
| Browser | any modern | Chromium 136, Firefox 139 |
Full changelog: CHANGELOG.md
llama.cpp Control Deck v1.0.2
Release Notes — llama.cpp Control Deck v1.0.2
Release date: 2026-05-30
Highlights
This is a maintenance and reliability release. It fixes performance bottlenecks
in the FastAPI web UI, removes a dead background thread from the Tkinter GUI,
and addresses a DOM-based XSS vector in the browser frontend.
Bug Fixes
-
Event-loop blocking in web UI —
tail_file()and templateread_text()
previously ran synchronously inside async FastAPI endpoints. Under heavy log
files this froze the entire uvicorn worker for all connected clients.
Both calls now execute in arun_in_threadpoolwrapper. -
Dead HealthCheckWorker thread (Tkinter) —
refresh_status()spawned a
HealthCheckWorkeron every 3-second tick. The worker pushed results into a
queue.Queue, but the consumer only containedpass. Over time the queue
leaked memory and wasted CPU. The worker and all related code have been
removed. -
XSS via
innerHTMLin web UI —renderInstances()used template
literals to injectitem.name,item.id, anditem.profiledirectly into
the DOM. Because these strings originate fromconfig.json, a malicious or
accidentally corrupted config could execute arbitrary JavaScript. The
function now builds every node viadocument.createElementand
textContent. -
Request flooding on slow networks —
setInterval(refresh, 2500)did not
guard against overlapping requests. If the server took longer than 2.5 s to
respond, requests stacked up indefinitely, causing browser memory growth and
race conditions on sharedstate.data. A_refreshPendingguard now
skips the next tick until the current one finishes. -
Accessibility contrast failure —
.warningtext colour#9a6700on
#fff8dbproduced ~3.5:1 contrast, below the WCAG AA threshold of 4.5:1.
Changed to#6e5000(5.96:1). -
Hardcoded
lang="ru"— the HTML root element defaulted to Russian even
before JavaScript i18n initialisation, causing screen readers to announce the
page with the wrong voice. Default is nowlang="en"; the JS language
switcher updates it dynamically as before.
Documentation Updates
- README now documents the web control panel (
./start_web.sh) in the Russian
section, matching the existing English documentation. - Troubleshooting tables in both languages include entries for the fixed web UI
freeze and contrast issues. CHANGELOG.mdandpyproject.tomlbumped to1.0.2.
Upgrade Notes
No breaking changes. Existing config.json files remain compatible.
- Web UI users will see smoother refreshes and no more browser tab memory growth.
- Tkinter GUI users will notice slightly lower background CPU usage.
- If you edited
config.jsonby hand and included HTML/JS characters in
instance names, they are now rendered as plain text instead of being parsed.
Files Changed
control_web.pyllama_cpp_gui.pystatic/control.jsstatic/control.csstemplates/index.htmlCHANGELOG.mdREADME.mdpyproject.toml
Compatibility
| Component | Minimum | Tested |
|---|---|---|
| Python | 3.10 | 3.12 |
| OS | Linux | Ubuntu 22.04/24.04 |
| Browser | any modern | Chromium 136, Firefox 139 |
Full changelog: CHANGELOG.md
llama.cpp Control Deck v1.0.1
llama.cpp Control Deck v1.0.1
Patch release focused on the new local FastAPI Web UI and a simpler first-run experience.
Highlights
- Added the browser-based control panel launched with
./start_web.sh. - Added beginner quick start, RU/EN language toggle, status polling, validation warnings, diagnostics, logs, and GPU/device checks in the Web UI.
- Added Runtime & updates for release checks, background
llama-serverdownloads, download status, and progress lines. - Added Services management for creating, editing, validating, duplicating, deleting, starting, stopping, and restarting configured instances without editing
config.json. - Added server-side Browse path picker for Python,
llama-server, working directories, library directories,.ggufmodels, MMProj files, model directories, and preset files. - Removed repository files that are not needed by regular users: optimization plans, dev-only tests/configs, issue templates, CI, and community maintenance docs.
- Kept the Tkinter GUI as a legacy fallback; Electron, Node.js, React, Vue, and Svelte are not required.
Upgrade Notes
- Existing
config.jsonfiles remain compatible. - The Web UI listens on
127.0.0.1:8765by default. - The path picker selects paths on the machine running
control_web.py; it does not upload or copy files through the browser.
Install / Run
git clone https://github.com/deposist/llama.cpp-Control-Deck.git
cd llama.cpp-Control-Deck
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
./start_web.shThen open:
http://127.0.0.1:8765
Legacy Tkinter UI is still available:
./start_gui.shVerification
Release checks passed locally:
python3 -m py_compile config.py llama_cpp_gui.py llama_server_manager.py ollama_proxy.py llama_cpp_release.py control_web.py
node --check static/control.js
python3 control_web.py --help
python3 -m json.tool config.example.json
ruff check . --line-length 100 --select E,F,W,I,B,C4,UP --ignore E501,B008,C416llama.cpp Control Deck v1.0.0
llama.cpp Control Deck v1.0.0
First stable public release of llama.cpp Control Deck.
Highlights
- Tkinter desktop GUI for managing local
llama-serverprocesses. - Multi-instance workflows for chat, embeddings, rerank, multimodal, and router profiles.
- Ollama-compatible FastAPI proxy that forwards requests to the OpenAI-compatible
llama-serverAPI. - Automatic detection of Python,
llama-server, working directory, andLD_LIBRARY_PATH. - Beginner setup through
./start_gui.sh --setupand the GUI Beginner setup button. - GPU/device diagnostics, health checks, logs, graceful shutdown, and CLI diagnostics.
- Full bilingual README: English first, Russian below.
- GitHub community files, issue templates, CI, Dependabot, security policy, and release checklist.
Quick Start
git clone https://github.com/deposist/llama.cpp-Control-Deck.git
cd llama.cpp-Control-Deck
sudo apt install -y python3 python3-venv python3-pip python3-tk
./start_gui.sh --setupRequirements
- Linux
- Python 3.10+
- Built
llama.cppllama-server python3-tk/ equivalent Tkinter system package- Optional: NVIDIA GPU with CUDA build of
llama.cpp
Verification
Release checks passed:
ruff check .python3 -m pytest -qbash -n start_gui.shpython3 -m py_compile config.py llama_cpp_gui.py llama_server_manager.py ollama_proxy.pyconfig.example.jsonJSON validation
Notes
config.json,logs/,runtime/, models, local virtualenvs, and caches are intentionally ignored.- The built-in proxy is intended for trusted local networks. Do not expose it publicly without firewall/VPN/reverse-proxy authentication.