- CHANGELOG.md following Keep a Changelog; 0.1.0 entry covers all features shipped through the loaded-model indicator - build.sh now also tags the image with the version read from pyproject.toml, e.g. rg.nl-ams.scw.cloud/valinor/finrod:0.1.0 - README documents the release workflow (edit CHANGELOG, bump pyproject version, merge, tag vX.Y.Z, build, bump valinor)
35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to finrod are documented here.
|
|
|
|
Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
Versioning: [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
## [0.1.0] - 2026-06-09
|
|
|
|
First release. Stateless translator UI that proxies streaming requests to
|
|
Ollama on radagast.
|
|
|
|
### Added
|
|
- FastAPI backend with three endpoints:
|
|
- `GET /api/models` — filtered (`gemma,aya` by default) list from Ollama's `/api/tags`
|
|
- `POST /api/translate` — streams Ollama's NDJSON `/api/generate` response back to the browser
|
|
- `GET /api/loaded` — proxies Ollama's `/api/ps` for the currently-loaded model
|
|
- `GET /healthz` — for Kubernetes probes
|
|
- Single-page UI:
|
|
- Source / target / model dropdowns (30+ languages, "Auto-detect" source)
|
|
- Token-by-token streaming into the output pane with a blinking caret
|
|
- Live status line: spinner while waiting for first token, pulsing dot during streaming, elapsed time and token count
|
|
- Glowing border on the output pane during streaming
|
|
- Loaded-model indicator (`● ` prefix in dropdown, "Hot: … — unloads in Xm" status line); refreshes on page load, on translation completion, and 500 ms after typing pauses
|
|
- ⌘/Ctrl-Enter to translate from the input
|
|
- Dark mode, inline SVG favicon (Star of Fëanor)
|
|
- Dockerfile: two-stage `uv` build, slim Python 3.13 runtime
|
|
- `build.sh`: multi-arch (amd64 + arm64) manual push to Scaleway, tags `:latest`, `:<git-short-sha>`, and `:<pyproject-version>`
|
|
- Cluster deploy via the `valinor` repo at `apps/finrod/` (bjw-s app-template, internal-only ingress at `finrod.jpnadas.xyz`)
|
|
|
|
### Fixed
|
|
- Lock against public PyPI explicitly — the workstation's global `uv` config had pointed `uv.lock` sources at the dexterenergy private artifact registry, which 401'd inside Docker
|