- Add CHANGELOG.md (Keep a Changelog format) with a 0.1.0 entry summarizing the initial release plus the recent healthcheck fix, image pin, and profile-naming changes. - Add LICENSE and CHANGELOG.md to the build_archive.py manifest so the distributable tarball actually contains the license and history. - Expand the README license section to the full MIT + copyright line. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.2 KiB
2.2 KiB
Changelog
All notable changes to this project are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.0 - 2026-07-07
Initial release. Replaces the previous collection of shell scripts
(start-llm-server.sh, status-llm-server.sh, switch-llm.sh, …) with a
single Python package.
Added
- CLI to start, check, stop, and switch (
--change)llama.cppOpenAI-compatible Docker server instances, plus--chatand--dry-run. - Layered configuration (builtin defaults →
[default]→[model.<profile>]→ CLI overrides) with[prompt.<profile>]fallback system prompts and${ENV}/~expansion. - Security-hardened prompt input layer for
--system-*/--prompt-*: file reads limited to regular UTF-8 files with a size cap and symlink rejection; URL reads are HTTPS-only with SSRF defenses (IP-literal and private/loopback/link-local/ metadata blocking, DNS pinning against rebinding, no-credentials URLs, redirect re-validation, content-type allowlist, streaming size limit). - Loopback-only port publishing by default;
--expose+--api-keyfor LAN use. - Readiness check via a real chat completion (not just an open port) and an
exclusive non-blocking file lock for
--change. - MIT
LICENSE, man page, and an opt-in end-to-end smoke test (scripts/smoke.sh). - Continuous integration on Forgejo:
pytest(Python 3.10 and 3.12),ruff, andmypy.
Changed
- Pin the default
llama.cppDocker image by digest for reproducibility instead of the moving:server-cudatag. - Model-size profile names carry a
bsuffix (qwen35b,qwen27b) so the digits read as parameter count, not Qwen version; documentation examples run against the[default]section so they work by copy & paste.
Fixed
- Override the image's baked-in Docker
HEALTHCHECK(hardcoded to port 8080) so it targets the configuredcontainer_port, ending the false "unhealthy" status when the server runs on a different port.