diff --git a/CHANGELOG.md b/CHANGELOG.md index 60b3b0a..0d0f0b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,23 @@ This project uses calendar versioning: `YY.N-stage` (e.g. `26.0-alpha` = 2026, r ## [Unreleased] +## [26.6-alpha] - 2026-04-20 + +### Added + +- **Apps catalog synced independently of core.** A new `daniel/furtka-apps` Forgejo repo carries the bundled app catalog; running boxes pull the latest release via `furtka-catalog-sync.timer` (10 min post-boot + daily, ±6 h jitter) and extract atomically into `/var/lib/furtka/catalog/`. The resolver now prefers catalog apps over the seed `/opt/furtka/current/apps/` tree that ships inside the core release tarball, so apps can update without cutting a Furtka core release. Manual trigger: "Sync apps catalog" button on `/apps`, or `sudo furtka catalog sync` at the console. Fresh boxes with no network fall back to the seed, so offline first-boot still shows installable apps. Installed apps are never auto-swapped — users click Reinstall in `/apps` to move an existing install onto a newer catalog version (settings merge-preserved via the existing `installer.install_from` path). +- **Catalog CLI**: `furtka catalog sync [--check] [--json]` + `furtka catalog status [--json]`. Same shape as the core `furtka update` commands. +- **Catalog API endpoints**: `POST /api/catalog/sync/check`, `POST /api/catalog/sync/apply` (detached via `systemd-run` for symmetry with `/api/furtka/update/apply`), `GET /api/catalog/status`. The existing `/api/bundled` endpoint keeps working as a backwards-compat alias for `/api/apps/available`, which now returns the union of catalog + seed apps with a new `"source"` field on each entry (`"catalog"` | `"bundled"`). + +### Changed + +- **`furtka._release_common`** extracted from `furtka.updater`. Both `updater` and the new `catalog` module now share one implementation of the Forgejo-releases-API call, SHA256 verification, path-traversal-guarded tarball extraction, and CalVer comparison. Public updater surface unchanged. +- **`_link_new_units` now auto-enables newly-linked `.timer` units.** On self-update, a fresh timer file (e.g. `furtka-catalog-sync.timer` added in this release) needs `systemctl enable` to actually start firing — linking alone isn't enough. Fresh installs get their enable via the webinstaller's `_FURTKA_UNITS` list as before. + +### Fixed + +- **SHA-256 CA fingerprint no longer overflows the `/settings` Local HTTPS card** on narrow viewports. `.kv dd` grid items now set `min-width: 0` + `overflow-wrap: anywhere` so the colon-separated hex string breaks within the card's right edge instead of pushing past it. + ## [26.5-alpha] - 2026-04-20 ### Fixed @@ -97,7 +114,8 @@ First tagged snapshot. Pre-alpha — the installer does not yet boot, but the de - **Containers:** Docker + Compose - **License:** AGPL-3.0 -[Unreleased]: https://forgejo.sourcegate.online/daniel/furtka/compare/26.5-alpha...HEAD +[Unreleased]: https://forgejo.sourcegate.online/daniel/furtka/compare/26.6-alpha...HEAD +[26.6-alpha]: https://forgejo.sourcegate.online/daniel/furtka/releases/tag/26.6-alpha [26.5-alpha]: https://forgejo.sourcegate.online/daniel/furtka/releases/tag/26.5-alpha [26.4-alpha]: https://forgejo.sourcegate.online/daniel/furtka/releases/tag/26.4-alpha [26.3-alpha]: https://forgejo.sourcegate.online/daniel/furtka/releases/tag/26.3-alpha diff --git a/pyproject.toml b/pyproject.toml index ba8406b..3b80cc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "furtka" -version = "26.5-alpha" +version = "26.6-alpha" description = "Open-source home server OS — simple enough for everyone." requires-python = ">=3.11" readme = "README.md" diff --git a/website/content/_index.de.md b/website/content/_index.de.md index 6875f24..e94bbad 100644 --- a/website/content/_index.de.md +++ b/website/content/_index.de.md @@ -1,7 +1,7 @@ --- title: "Furtka" description: "Offenes Heimserver-Betriebssystem — einfach genug für alle." -status: "26.5-alpha — in Arbeit" +status: "26.6-alpha — in Arbeit" --- **Furtka** ist ein offenes Heimserver-Betriebssystem. diff --git a/website/content/_index.md b/website/content/_index.md index ecd56e6..8326b54 100644 --- a/website/content/_index.md +++ b/website/content/_index.md @@ -1,7 +1,7 @@ --- title: "Furtka" description: "Open-source home server OS — simple enough for everyone." -status: "26.5-alpha — work in progress" +status: "26.6-alpha — work in progress" --- **Furtka** is an open-source home server OS. diff --git a/website/hugo.toml b/website/hugo.toml index 18f561f..49446a3 100644 --- a/website/hugo.toml +++ b/website/hugo.toml @@ -6,7 +6,7 @@ enableRobotsTXT = true [params] description = "Open-source home server OS — simple enough for everyone." - version = "26.5-alpha" + version = "26.6-alpha" contactEmail = "hallo@furtka.org" [markup.goldmark.renderer]