My-Weekly-ToDo-List/CHANGELOG.md
mARTin-B78 6f4fe219dc
Some checks are pending
Playwright Tests / test (push) Waiting to run
fix: make update-app.sh the single update path and run it at boot
There were two near-identical update scripts and they drifted: the npm ci fix
from 1.114.1 only ever landed in update-app.sh, so the boot path kept running
npm install. my-weekly-todo-update.service now runs update-app.sh, and
boot-update.sh is a shim kept only so a not-yet-recopied unit still works.

To be usable at boot the script needed three things it did not have:

- Skip the rebuild when HEAD already matches origin/main and a standalone
  build exists, so a reboot is not a full rebuild every time (--force
  overrides).
- Do not restart PM2 when its daemon is not up yet. At boot this unit runs
  before pm2-root.service, and probing with `pm2 describe` would spawn a
  stray daemon that races the real service, so it checks the pid file.
- A flock single-instance lock, so a boot run and a manual run cannot install
  into the same tree at once.

It also picks up prisma migrate deploy / generate and the .env copy that only
the boot script had. The log moved to /var/log/my-weekly-todo-update.log.

v1.115.2

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 13:46:18 +02:00

5.8 KiB

Changelog

All notable changes to this project are documented in this file.

[1.115.2] - 2026-09-03

Changed

  • scripts/update-app.sh is now the single update path, used both for a manual deploy and for the boot run; my-weekly-todo-update.service points at it. There were two near-identical scripts and they drifted — the npm ci fix from 1.114.1 only ever landed in update-app.sh, so the boot path kept running npm install. scripts/boot-update.sh is now a shim that calls it, kept only so a not-yet-recopied unit file still works.
  • The update log moved from /var/log/app-boot-update.log to /var/log/my-weekly-todo-update.log.

Added

  • update-app.sh skips the rebuild when HEAD already matches origin/main and .next/standalone/server.js exists, so a reboot no longer costs a full rebuild. Pass --force to rebuild anyway.
  • update-app.sh takes a flock single-instance lock, so a boot run and a manual run can no longer install into the same tree at once — which is how node_modules ended up in a state npm could not clean up.
  • update-app.sh runs prisma migrate deploy and prisma generate (previously only the boot script did), and copies .env into the standalone output.

Fixed

  • update-app.sh no longer fails at boot trying to restart a PM2 process that does not exist yet. It restarts only when the PM2 daemon is actually running, and otherwise leaves the start to pm2-root.service, which is ordered after this unit. It deliberately does not probe with pm2 describe, since any pm2 command spawns a daemon that would race the real service.

[1.115.1] - 2026-09-03

Fixed

  • scripts/boot-update.sh (the "update on reboot" unit): every command was piped into tee, so set -e only ever saw tee's exit status. A failed npm install or npm run build did not stop the script and did not fail the systemd unit — it logged "Boot update finished" and left a half-built tree. Now uses set -euo pipefail, logs through a single exec redirect, and traps ERR.
  • scripts/boot-update.sh: switched from npm install to npm ci. Same fix update-app.sh got in 1.114.1 — npm install rewrites package-lock.json, leaving the tree dirty so the next git pull aborts.
  • scripts/boot-update.sh: body wrapped in a function so bash parses it in one go. The script lives inside the checkout it pulls, so git pull rewriting it mid-run made bash resume at a stale file offset.
  • scripts/boot-update.sh: set GIT_TERMINAL_PROMPT=0 so a git credential prompt fails fast instead of hanging the unit at boot, where there is no tty.
  • scripts/my-weekly-todo-update.service: raised TimeoutStartSec from 300 to 1800. npm ci + prisma generate + next build takes far longer than 5 minutes in the container; systemd SIGTERMed the oneshot unit mid-install, which left a node_modules tree npm could no longer remove (ENOTEMPTY: rmdir node_modules/date-fns/isEqual).
  • package-lock.json: version resynced with package.json (missed in the 1.115.0 commit).

[1.115.0] - 2026-09-03

Added

  • Day columns: a "Custom" option next to the 1/2/3/5/7 presets, where any number of days from 1 to 31 can be typed (e.g. 14, 21, 28). The chosen value shows up as its own chip beside the presets and is available in every place the day count can be set — sidebar, both settings flyouts, the desktop toolbar and the header overflow menu.

Fixed

  • Day grid and all-day grid only had CSS for cols-1/2/3/5/7, so any other day count silently fell back to a 5-column layout. Both grids now derive grid-template-columns from the actual day count.

[1.114.2] - 2026-09-01

Fixed

  • Deploy script: copy public/ and .next/static/ into .next/standalone/ after the build. next.config.js sets output: 'standalone', and Next.js does not copy those itself. Without the copy every deploy left the old chunk hashes in the standalone tree, so the browser's requests for the new chunks 404'd, React never hydrated, and the app hung on "Loading session..." — while the API kept returning 200, which made it look like an auth problem.

[1.114.1] - 2026-09-01

Added

  • scripts/update-app.sh: the production deploy script, now version-controlled instead of living only on the server. Hardened with set -euo pipefail (a failed git pull used to still trigger a rebuild and PM2 restart on unchanged code) and switched from npm install to npm ci (npm install rewrote package-lock.json, leaving the tree dirty so the next pull aborted).

[1.114.0] - 2026-09-01

Added

  • Focus Mode: "SKIP" button to move on to the next task of the day without completing the current one. Skipped tasks are remembered until Focus Mode is closed, and the timer resets for each new task. The button is disabled when no other task is left for today.

Changed

  • Styling settings: removed the standalone "Element Colors" and "Weekend Colors" sections — those controls now live only in the CSS Variables panel (added there in 1.113.1).
  • Styling settings: larger, borderless color swatches and bigger labels in the CSS Variables panel.

[1.113.1] - 2026-07-08

Changed

  • CSS Variables panel: added the existing "Today Highlight", "Past Days", "Saturday" and "Sunday" color controls as their own groups (bound to the same profile fields as the standalone Element/Weekend Colors sections, so both stay in sync).
  • CSS Variables panel: every row now shows the color swatch before its label.

[1.113.0] - 2026-07-08

Added

  • Styling settings: "CSS Variables" panel with a color picker and description for every customizable color token in globals.css (base colors, settings sidebar, design token aliases, event colors, all-day chips).
  • Styling settings: "Custom CSS" textarea to inject a personal stylesheet that loads after the app's default styles and can override any rule.