diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 5fd3f4e..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,47 +0,0 @@ -# Changelog - -All notable changes to this project are documented here. - -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - -## [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.cpp` OpenAI-compatible - Docker server instances, plus `--chat` and `--dry-run`. -- Layered configuration (builtin defaults → `[default]` → `[model.]` → - CLI overrides) with `[prompt.]` 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-key` for 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`, - and `mypy`. - -### Changed -- Pin the default `llama.cpp` Docker image by digest for reproducibility instead - of the moving `:server-cuda` tag. -- Model-size profile names carry a `b` suffix (`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 configured `container_port`, ending the false "unhealthy" status - when the server runs on a different port. - -[Unreleased]: https://kitux.de/forgejo/dschlueter/llamacppctl/compare/v0.1.0...HEAD -[0.1.0]: https://kitux.de/forgejo/dschlueter/llamacppctl/releases/tag/v0.1.0 diff --git a/README.md b/README.md index aa7bf54..c2e8d29 100644 --- a/README.md +++ b/README.md @@ -177,6 +177,4 @@ SMOKE_GPU=1 scripts/smoke.sh ## Lizenz -MIT License -Copyright (c) 2026 Dieter Schlueter - +MIT diff --git a/build_archive.py b/build_archive.py index a117389..a8bf548 100644 --- a/build_archive.py +++ b/build_archive.py @@ -44,8 +44,6 @@ from pathlib import Path REQUIRED_FILES = [ "pyproject.toml", "README.md", - "LICENSE", - "CHANGELOG.md", "requirements.txt", "requirements-dev.txt", "llama.cpp.config.example", @@ -85,8 +83,6 @@ INCLUDE_DIRS = ["src", "tests", "docs", "man", "scripts"] INCLUDE_FILES = [ "pyproject.toml", "README.md", - "LICENSE", - "CHANGELOG.md", "requirements.txt", "requirements-dev.txt", "llama.cpp.config.example", diff --git a/requirements-dev.txt b/requirements-dev.txt index 77948ef..697d674 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,4 +1,7 @@ -# Development install. Editable package plus the [dev] extra (pytest, ruff, -# mypy, ...). pyproject.toml remains the single source of truth; there is no -# manual dependency mirror to keep in sync. --e .[dev] +# Development/test dependencies (mirrors [project.optional-dependencies].dev +# in pyproject.toml). +-r requirements.txt +pytest>=7.4 +ruff>=0.6 +mypy>=1.11 +types-requests diff --git a/requirements.txt b/requirements.txt index e361a6e..b3cd6be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -# Runtime install. pyproject.toml is the single source of truth for -# dependencies; this file just installs the package (and thus its declared -# runtime dependencies) so `pip install -r requirements.txt` keeps working. -. +# Runtime dependencies (mirrors [project.dependencies] in pyproject.toml). +# Provided for users who want to verify/install dependencies without pip's +# PEP 517 build isolation, e.g. `pip install -r requirements.txt`. +requests>=2.31,<3