fix(patchlog): "Was ist neu" badge empty on Docker — embed patchlog at build time #90
No reviewers
Labels
No labels
backend
bug
completed
documentation
duplicate
enhancement
feature
frontend
good first issue
help wanted
in-progress
invalid
performance
phase-1
Phase1
Phase2
Phase3
planning
question
refactor
security
test
testing
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Kalle/ATM!90
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/patchlog-embedded"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan
Clicking the v1.0.0-beta badge on testing showed "keine Änderungen" — fix the empty "Was ist neu" modal in Docker deployments.
Outcome
/api/patchlogread.development/patchlog.mdfromprocess.cwd()at runtime — the Docker image has no.development/, so the API returnedcount: 0on testing (works locally, broken in production).scripts/embed-patchlog.mjsruns before everynext buildand embeds all patchlog sources intosrc/generated/patchlog.json(committed). The API route keeps the runtime FS read as primary source (local hot edits keep working) and falls back to the embedded JSON.mergeEntriessorted date-headed titles with the numeric version comparator, which parses "2026-07-04 — …" or "L4 — …" as version numbers and mis-sorts. Ordering is now date-first (ISO desc), version as tiebreak.Impact on release goals
Blackbox
python3 scripts/blackbox_test.py --target testing→ green (run after merge+deploy)Six-perspectives check
Risk
npm run build, and the FS path still wins wherever.development/exists.Checklist
devThis PR was created by an AI agent (OpenHands) on behalf of the user.
Self-review against the P0–P3 rubric (loop Phase 8):
Verdict: P3 — Approve (clean)
P0: none. Blackbox 70/70 on the production build, units 241/241, TSC 0. No Feldenkrais-relevant surface touched, no auth paths modified, no secrets — the embedded JSON contains only the already-public patchlog markdown.
P1: none. Fallback chain is deterministic (FS → embedded), the generated file is committed AND regenerated on every build, and the blackbox guard (20a) pins the exact production failure mode (count=0 on Docker).
P2:
embeddedFilesis imported unconditionally even when the FS path serves — a few KB in the server bundle. Acceptable: the fallback must be statically present or the route would crash exactly when it is needed.P3: date strings compared lexically (safe for ISO YYYY-MM-DD). Older patchlog entries carry future-dated headers (pre-existing data quirk, not rewritten — the patchlog only ever appends).
Blackbox: ✅ 70/70 green (local production build); test 20a is the regression guard for the reported bug.
Roadmap impact: Release Hardening +1 ([x] patchlog API works on Docker).
This review was created by an AI agent (OpenHands) on behalf of the user.