2026-09-03ops v3.9.0 - a version that stops being refreshed now announces itself. cfcsq is read from Supabase, so its row is only as fresh as the last time somebody opened the app; between 2026-08-29 and 2026-09-03 that row was frozen and this page reported the stale value with no warning at all, because the read succeeded and only the data was old. A reading older than the threshold is now labelled STALE, shown amber, named in the drift list with its age in days, and counted toward the status at the top.
2026-09-03cfcsq v1.5.3 - the app could not read its own version.json for five days. The Cloudflare Access application covering /version.json had its policy action set to ALLOW rather than BYPASS. Allow still demands a login, so a background fetch was redirected to the Access login host, which turned a same-origin request into a cross-origin one and CORS blocked it. The badge fell back to a version baked into the code, publishVersion never ran, and the Ops Dashboard reported v1.1.2 throughout. Fixed by changing one dropdown; the earlier code changes were chasing the wrong cause.
2026-09-02cfcsq v1.5.x - the version badge is now solid and bold rather than grey on white, and an unverified reading is marked by shape as well as color: a pale hollow badge and a leading question mark. The first attempt used amber against red, which are nearly identical in weight on a small badge and could not be told apart.
2026-09-02cfcsq v1.5.0 - restore safety. The pre-restore backup was a single browser download in one Downloads folder; it now also writes to Supabase Storage and Dropbox and sends a dated email, so three copies of the overwritten state exist. Member events are MERGED on their uuid rather than replaced, so restoring an old file cannot destroy notes recorded since, and a file with no events touches nothing.
2026-09-02cfcsq v1.4.0 - member_events is now in every backup. The club's note history - suspensions, expulsions, card replacements, deaths, Lifetime upgrades - was in NO backup at all: not the nightly one, not the cloud upload, not the monthly local download. It also exists nowhere else, since the years before Access were on paper and the spreadsheet that followed deleted lapsed members outright. The nightly read-back now verifies the event count too.
2026-09-02cfcsq backup hardening, both critical items closed. A Dropbox token failure used to throw before anything could report: no backup, no email, complete silence. It now emails and pings a watchdog. And a Healthchecks.io dead-man's switch means silence itself raises an alarm - manual runs deliberately do not ping, so pressing the button cannot make a dead schedule look healthy.
2026-09-02cfcsq v1.3.x - Day Shift theme: white chrome, larger type, and every color moved into tokens.css. The file claimed to re-theme the whole app but 73 rules across layout.css and components.css hardcoded the navy and white-on-dark values; those are tokens now. Three declarations would have been invisible after the change and were caught by rendering rather than reading.
2026-09-02cfcsq v1.3.2 - the Lifetime panel was offering upgrades to deceased members. The filter only excluded members already Lifetime, so anyone else qualified on years alone, including banned members, vendors and pending applicants. It was in four places including a banner on the member's own record, and it ignored secondary statuses. Now one rule, checked against both.
2026-09-02cfcsq v1.2.0 - Backup and Restore restricted to administrators. Restore was already admin-only; the local download, cloud and Dropbox uploads, both Delete Selected controls and the CSV exports were not. The panel stays visible and shows a padlock card rather than disappearing.
2026-08-29wa v1.4.0 - undo rebuilt. It had kept ONE snapshot, taken only by Generate Rotation and the two quarter-copy buttons, so every hand edit recorded nothing and pressing Undo discarded all manual work since the last generation. Now 25 steps with a Redo button. Load plan added to the sub sheet, and Varsity games can create the matching JV fixture in one action.
2026-08-29ops v3.8.0 - Edit Values removed entirely, along with its note and the edit-mode wiring: versions are read from each site and the changelog now lives in the deployed file, so nothing here should be typed over by hand. Values already saved in a browser still load, so no previous edit is lost. Golden Rules card removed from the Playbook tab. All headings put into Title Case, and spelling corrected to American English.
2026-08-29ops v3.7.0 - Development tab: open items, to do and wish list, ordered by criticality. Changelog moved out of browser storage and into the deployed file, so it is the same on every device and travels with the release; entries added for everything since 2026-08-27. Project card versions now read live like the masters, and edit mode can no longer alter a version by hand.
2026-08-29ops v3.6.0 - cfcsq version now read from Supabase. Cloudflare Access intercepts a cross-origin fetch of its version.json and answers with the login page, even with a Bypass policy scoped to that path and the application's own CORS settings configured; a navigation succeeds, a background fetch does not. The cfcsq app writes the version it read from version.json into a public app_version table and ops reads that row, showing when the app last reported. cfcsq v1.1.2 - publishes its version on load.
2026-08-29ops v3.5.0 - pfh and pitchmanager removed from monitoring: neither is a live production program, so warnings from them were noise. pfh lost its site, database and keepalive checks, its masters group and its deploy-method line; both remain reachable under Quick links. The seven game entries (Blackstone, Inversion, Weave, Cascade, Solstice, Leap, Membership Demo) removed from the nf3l.com masters - they ship with the site bundle, so one version covers them, and they return when each has its own repo. nf3l.com starts at v1.0.0.
2026-08-29wa v1.4.0 - undo rebuilt. It had kept ONE snapshot, taken only by Generate Rotation and the two quarter-copy buttons, so every hand edit recorded nothing and pressing Undo discarded all manual work since the last generation. Now every change records a step, capped at 25, with a Redo button beside it. Load plan added to the sub sheet. Varsity games can create the matching JV fixture in one action.
2026-08-28ops v3.4.0 / v3.3.0 - deployed versions read live from each site instead of hardcoded values held in one browser's localStorage, which went stale the moment anything shipped (wa read v1.0.8 while live was v1.3.1). A site that will not report shows amber and counts toward the status at the top. The dashboard version reduced from four displayed places to one.
2026-08-28cfcsq v1.1.1 - fixes a failed v1.1.0 deploy. An await was placed inside a function that was not async, which is a syntax error, so main.js failed to parse and the app did not load at all. The pre-deploy check used a parser that does not enforce that rule and reported the file clean; it now parses each file as a real ES module. The version fetch is no longer awaited, so it can never delay startup.
2026-08-28cfcsq v1.1.0 - Member Modification Request Form added (four requests per printed page, tick-box issues, details line). The Membership Application was made reachable: it had been built and registered with the router, but had no feature flag, no nav-section entry and no button anywhere, so it could not be opened. Both forms now appear in the topbar, the sidebar under Reports, and as cards inside the Reports panel.
2026-08-27ops v3.2.0 - Field Hockey tab: the wa backup board, showing every school's backup health, destinations, schedule and history. Logic shared with wa.nf3l.com/admin.html from one file so a fix is never made twice.
2026-08-27wa v1.3.1 - a saved rotation now loads when its game is selected. Saving said "Rotation saved to game" and the sheet then came back blank, which was indistinguishable from losing the work; the rotation was always safe, it simply was not being loaded. v1.3.0 - quarter-independent editing (editing one quarter had been changing the others), half-minute snapping, quarter copy tools.
2026-08-26wa-nf3l backup hardening after the Pine-Richland data loss. The nightly backup had not run since 2026-08-15: the cron called a display name rather than the function slug, and email secrets were missing. Now three destinations per run, twice daily, read-back verification, tiered retention, size-drop and identity checks, and a dead-man's switch so silence raises an alarm.
2026-08-15ops v2.4.1 - dashboard version made non-editable (always reflects the deployed file); wa ordered ahead of pfh throughout.
2026-08-15wa-nf3l: daily Dropbox backup and keepalive live (10pm ET cron); operator-only restore with passphrase, preview and pre-restore copy verified.
2026-08-15wa-nf3l: three school coaches added (Pine-Richland, State College, Oley Valley) alongside Chris's logins; per-school isolation via RLS. Pennridge cutover done, pfh kept as fallback.