release: v0.2.37 — zero-argument startup, first-run wizard, real download progress

Startup no longer needs arguments: the config is created on first launch, a busy
port is swapped for a free one, the console is open by default, and the browser
lands on a setup wizard that downloads a ready-made .cmf model and wires it into
routing (managed server + routing.default) when you press Finish.

Download progress was reported from curl's own meter, which prints a full
0→100% bar for the -L redirect hop before the transfer starts — so every job
showed 100% and then hung. Progress now comes from bytes on disk against the
size from the HuggingFace tree (or a HEAD request).

The UI and the gateway also disagreed about the output file name, so a finished
download never marked its card as downloaded; the gateway now returns the exact
stem and the UI sends it back verbatim for download, progress and delete.

Featured models are read live from the infosave HF account in both the wizard
and Import, and all 432 UI strings now exist in every one of the 7 languages.
This commit is contained in:
infosave2007
2026-08-06 17:56:42 +03:00
parent ad438a5dcb
commit 9ec8861464
25 changed files with 3154 additions and 234 deletions
+47
View File
@@ -3,6 +3,53 @@
All notable changes to this project are documented here.
The format is based on [Keep a Changelog](https://keepachangelog.com/).
## [0.2.37] - 2026-08-06
### Added
- **Zero-argument startup**: `cortiq-gateway` now runs with no flags. The config is created on
first launch (repo `config/gateway.toml` when run from a checkout, otherwise
`~/.cortiq-gateway/gateway.toml`, or `$CORTIQ_GATEWAY_HOME`), the browser opens by itself,
and a busy port is swapped for the next free one. `--no-browser` / `--no-port-search` opt out;
`--config` still takes an explicit path.
- **No admin token required by default**: the console opens without auth. Set `--admin-token`,
`[admin].token` or `[admin].token_env` to protect it.
- **First-run wizard** (`/admin#/onboarding`): pick a language, download a ready-made `.cmf`
model, and finish — Finish connects every completed download as a local model, starts its
`cortiq serve` and points `routing.default` at it. Nothing to edit by hand.
- **Ready-made models are read live** from the `infosave` HuggingFace account in both the wizard
and Import, with per-variant quantizations, real sizes, an "already downloaded" mark and a
delete button. Newly published models appear without a gateway update.
- **Windows-friendly data dir**: `%APPDATA%` / `%LOCALAPPDATA%` / `%USERPROFILE%` are used before
falling back, so running the exe from `Downloads` never writes into `Program Files`.
- **Full localization**: all 432 UI strings now exist in every language (en, ru, de, fr, es, zh, tr).
Import, Settings → Local models, the model form and the whole first-run wizard were English-only
in de/fr/es/zh/tr before this release.
### Fixed
- **Download progress jumped straight to 100% and then hung**: with `-L`, curl prints a complete
`0→100%` progress bar for the redirect hop before the transfer starts, and that bar was being
parsed as the download's progress. Progress is now derived from bytes on disk against the size
reported by the HuggingFace tree (or a `HEAD` request), so the bar and the reported
`done / total` bytes track the real transfer.
- **Re-downloading over an existing file reported 100% instantly**: the previous copy is now
removed before the transfer starts, so the size poller cannot read stale bytes.
- **Downloaded models were not recognised**: the admin UI derived the output file name
independently of the gateway, so a finished download did not mark its card as downloaded and the
delete button never appeared. The gateway now returns the exact output stem (`local_name`) and
the UI sends it back verbatim for download, progress and delete.
- **Registering a local model produced an unusable pool entry**: with `manage_server = false` the
model was added to the static pool pointing at `cortiq_server_url`, where nothing listens —
every call failed with `upstream unavailable`. Registration now always creates a managed server
the gateway runs itself, and repairs a stale static entry for the same file.
- **Cancel did nothing during a sharded download**: cancellation was only checked between part
files, so a multi-GB part had to finish first. The running transfer is now aborted immediately
and the partial output removed.
- **Deleting a model left the config broken**: removing a `.cmf` now also unregisters the model
and stops its managed server instead of leaving a pool entry pointing at a missing file.
- **Two variants of one repo collapsed into a single job row**; jobs are now keyed by repo + variant.
- Curl's stderr is captured into the job log, so a failed download explains itself instead of
showing a bare exit code.
## [0.2.36] - 2026-07-25
### Fixed