From 34a2f60de128abcdf044a51a986dd508819d37cb Mon Sep 17 00:00:00 2001 From: Dries Peeters Date: Wed, 9 Sep 2026 06:51:07 +0200 Subject: [PATCH 1/2] fix(docker): upgrade base images to fix expired Bullseye security repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Upgrade node:18-slim → node:20-slim (LTS) in the frontend stage to satisfy sharp@0.35.4's engine requirement (>=20.9.0) - Upgrade python:3.11-slim-bullseye → python:3.11-slim-bookworm to replace Debian 11 (EOL) whose bullseye-security InRelease file is now expired, causing apt-get update to fail on CI runners Builds passed locally due to cached layers hiding the expired repo. GitHub Actions always starts fresh, triggering the failure. --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index f9202faa..d3eb42f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1.4 # --- Stage 1: Frontend Build --- -FROM node:18-slim as frontend +FROM node:20-slim as frontend WORKDIR /app COPY package*.json ./ # `npm install`, not `npm ci`: package-lock.json is intentionally gitignored @@ -24,7 +24,7 @@ RUN mkdir -p app/static/dist RUN npm run build:docker # --- Stage 2: Python Application --- -FROM python:3.11-slim-bullseye +FROM python:3.11-slim-bookworm # Build-time version argument with safe default ARG APP_VERSION=dev-0 From c9cccbf7b4c2ebee4e6446b258a3dc674d79c993 Mon Sep 17 00:00:00 2001 From: Dries Peeters Date: Wed, 9 Sep 2026 06:52:19 +0200 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20release=205.14.1=20=E2=80=94=20Doc?= =?UTF-8?q?ker=20base=20image=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump setup.py to 5.14.1, document the Bullseye→Bookworm/Node 20 image upgrades in CHANGELOG and README, and sync the gap doc versions. --- CHANGELOG.md | 10 ++++++++++ README.md | 4 ++++ docs/mobile-desktop-apps/DESKTOP_WEBAPP_GAP.md | 6 +++--- setup.py | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1993220..464a3bd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [5.14.1] - 2026-09-09 + +### Fixed + +- **Docker base images (expired Bullseye security repo)** — Upgrade `node:18-slim` → `node:20-slim` (satisfies sharp’s Node engine) and `python:3.11-slim-bullseye` → `python:3.11-slim-bookworm` so `apt-get update` no longer fails on fresh CI builds after Debian 11’s bullseye-security InRelease expired. + +### Documentation + +- **Version** — Bumped `setup.py` to **5.14.1** (single source of truth for the application version). + ## [5.14.0] - 2026-09-09 ### Added diff --git a/README.md b/README.md index 33f0b6b2..89ebd648 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,10 @@ TimeTracker has been continuously enhanced with powerful new features! Here's wh **Current version** is defined in `setup.py` (single source of truth). See [CHANGELOG.md](CHANGELOG.md) for versioned release history. +### ✨ Highlights of v5.14.1 + +**Patch (5.14.1):** **Docker base images** — Node 20 and Python Bookworm replace expired Bullseye bases so fresh CI/image builds succeed. See [CHANGELOG.md](CHANGELOG.md#5141---2026-09-09). + ### ✨ Highlights of v5.14.0 **Minor (5.14.0):** **OrcaRouter AI provider** — `orcarouter` is now a named AI provider option (OpenAI-compatible endpoint, Bearer-token auth). Select it in System Settings → AI Helper or set `AI_PROVIDER=orcarouter` with `AI_BASE_URL=https://api.orcarouter.ai`. See [CHANGELOG.md](CHANGELOG.md#5140---2026-09-09). diff --git a/docs/mobile-desktop-apps/DESKTOP_WEBAPP_GAP.md b/docs/mobile-desktop-apps/DESKTOP_WEBAPP_GAP.md index 7945fb42..1c67a195 100644 --- a/docs/mobile-desktop-apps/DESKTOP_WEBAPP_GAP.md +++ b/docs/mobile-desktop-apps/DESKTOP_WEBAPP_GAP.md @@ -6,9 +6,9 @@ Living checklist for bringing the Electron desktop client up to speed with the F | Component | Version | Source | |-----------|---------|--------| -| Web / backend | 5.14.0 | `setup.py` | -| Desktop | 5.14.0 | `desktop/package.json` | -| Mobile | 5.14.0 | `mobile/pubspec.yaml` | +| Web / backend | 5.14.1 | `setup.py` | +| Desktop | 5.14.1 | `desktop/package.json` | +| Mobile | 5.14.1 | `mobile/pubspec.yaml` | ## What desktop has diff --git a/setup.py b/setup.py index d37e2123..04fcabc8 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ setup( name='timetracker', - version='5.14.0', + version='5.14.1', packages=find_packages(), include_package_data=True, package_data={