You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sims-hq/apps/hq
Thomas Joise 4c1514c315 fix(milestones): stamp installed_on/trained_on on every tick, keep links on a re-tick
Two bugs in the same tick path.

1. installed_on / trained_on were written only as a side effect of a status
   UPGRADE. The ~300 APEX-imported projects are already at 'live' -- the furthest
   status -- so ticking Installation or Training upgraded nothing and therefore
   recorded nothing, and the UI's own date writers were removed in the Client
   Detail redesign, leaving those columns unfillable and the Module Directory's
   "Installed" column blank forever. The date is now stamped whenever the step is
   ticked, independent of any status move: same transaction, same audit payload,
   still write-once (an existing date is never overwritten) and still no downgrade.
   A tick that changes neither status nor a date now writes nothing at all.

2. setMilestone wrote payment_id/document_id as `done ? linked : null`, so any tick
   that did not resend the ids cleared them. bulkSetMilestone routes through it and
   never passes ids (one key, many projects), so a single bulk re-tick silently cut
   every project's step loose from the payment or quotation it had been linked to.
   An already-done step now keeps the link it carries when nothing is supplied.
   An explicit empty id is still an unlink, and unticking still clears both.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 day ago
..
scripts fix(scripts): document the DATABASE_URL-prefixed invocation, make SQLite an explicit opt-in 1 day ago
src fix(milestones): stamp installed_on/trained_on on every tick, keep links on a re-tick 1 day ago
test fix(milestones): stamp installed_on/trained_on on every tick, keep links on a re-tick 1 day ago
.env.example feat(d32): remove the key concept entirely + keyless legacy cleanup 3 days ago
build-server.mjs feat(hq): server assembly, build script and e2e smoke (HQ-1 task 14) 2 weeks ago
package.json feat(d20): P4 — full-APEX importer v2 (9 files, stage/commit, CLI) 4 days ago
schema.sql docs+chore: HQ DDL snapshot, gitignored import-drop, Postgres locked pre-go-live (D15) 2 weeks ago
tsconfig.json feat(hq): app skeleton with health endpoint (HQ-1 task 1) 2 weeks ago