Commit graph

8 commits

Author SHA1 Message Date
David 63f2f2ba24 Add last manual check update date
Some checks are pending
CI / Lint & Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (chromium) (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (firefox) (push) Waiting to run
2026-07-24 09:35:48 +02:00
David b325415e6a Pass all to done and manual update done
Some checks are pending
CI / Lint & Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (chromium) (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (firefox) (push) Waiting to run
2026-07-24 09:08:57 +02:00
David a6b4723ac6 F4: Delete confirms show usage; no more session_item orphans
session_item.item_id is polymorphic (no FK), so deleting an exercise or
combo used in a session left orphaned rows that the INNER JOIN in
getItems silently hid. Exercise/combo deletes now also remove their
session_item rows in one transaction. Delete confirmations on the
exercise/combo/session detail views now include usage counts (sessions/
combos using an exercise, sessions using a combo, collections containing
a session) via new count helpers and deleteConfirmUsage keys (EN/FR/DA).
Confirm stays informative, not blocking, consistent with the existing
history warning.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 15:30:52 +02:00
David 1a3f294b31 F5: renameSuffix runs as a single transaction
The 5 sequential UPDATEs could half-rename the database if a renamed
title collided with an existing one (UNIQUE constraint) mid-way. They
now go through db.batch(), which rolls back on error. SettingsView
shows a translated error (new import.suffixRenameFailed key, EN/FR/DA)
instead of the raw constraint message. Test seeds a colliding title and
asserts the rename fails with nothing renamed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 15:23:31 +02:00
David 1424029eae Step 26 to announce exercise
Some checks are pending
CI / Lint & Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (chromium) (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (firefox) (push) Waiting to run
2026-07-06 15:33:33 +02:00
David 49aaa0cd31 Add udpate modal (step 24) and control by audio cask (step 25)
Some checks are pending
CI / Lint & Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (chromium) (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (firefox) (push) Waiting to run
2026-07-05 21:26:21 +02:00
David b69fae1edc Add installation modal dialog
Some checks are pending
CI / Lint & Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (chromium) (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (firefox) (push) Waiting to run
2026-07-04 15:06:03 +02:00
David 352a3d5e88 Initial commit
Some checks are pending
CI / Lint & Format (push) Waiting to run
CI / Build (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (chromium) (push) Waiting to run
CI / Tests (${{ matrix.browser }}) (firefox) (push) Waiting to run
2026-06-18 13:06:57 +02:00