QDG Knowledge Base Read-only viewer QWebHub
changelog

Changelog

Version 1 · Initial changelog, reconstructed from git log and in-repo comments describing prior changes

10-11 Aug 2026 -- Templates split out of raceView.js

  • Moved all CSS out of the JS template literal into public/styles.css, served statically by Express.
  • Moved the dashboard and login pages' static HTML skeleton (head, header, filters, modal markup, client-side script) into views/dashboard.html and views/login.html, filled in per request via a small {{PLACEHOLDER}} substitution helper in raceView.js. The meeting/race grid itself stays a dynamically-built HTML string, since it's generated per DB result and can't be static.
  • Removed the on-page legend/help text block (list of what each color/badge/tag means) from the bottom of the dashboard; it had briefly gained a show/hide toggle button, then was removed entirely at Dinesh's request.

12 Aug 2026 -- Shared login

  • Added a single shared username/password login (setup-auth.js to set/change it) protecting only the / dashboard route via an Express session cookie (browser-session only, no "remember me"). Report downloads, /api/race/:id, and /health deliberately stay open -- an explicit scoping choice, not an oversight.
  • Runner detail popup now shows Jockey and Trainer as two separate columns (previously combined).

11 Aug 2026 -- Schedule/status cleanup

  • Removed a UTC/local-timezone cross-check that used to run alongside the existing "Schedule Issue" gap-time check; the gap-time / bad-time / duplicate-time checks (GAP_THRESHOLD_MIN) remain.
  • Race status filter (Upcoming/Running/Completed/Abandoned/Resulted) added as a per-race (per-cell) filter, since one meeting can have races at different statuses simultaneously; the default view now includes abandoned races (previously filtered out server-side).

10 Aug 2026 -- Phone layout, per-meeting downloads, search improvements

  • Added a <meta name="viewport"> tag and phone-specific CSS (@media (max-width: 760px)) so the grid is usable on phones: the meeting-name column stays pinned via horizontal scroll rather than attempting a single-column reflow.
  • Added a per-meeting "download this meeting's full details" widget (CSV/Excel/JSON/PDF) next to each meeting name, alongside the existing per-date issues report.
  • "Search meeting" reworked as a custom prefix-match dropdown (matches only the start of a meeting name, not the middle), replacing the native <datalist> which could not guarantee that behavior.
  • Fixed the per-meeting download dropdown not auto-closing on an outside click.

Initial commit

  • Core dashboard: meetings x race number x scheduled time grid, split into Thoroughbred/Harness/ Greyhound tabs.
  • Issue detection: missing jockey (red border + count), duplicate jockey (orange "D" + count), missing/duplicate/zero tab number (red outline + "T" count), missing trainer (purple outline + "TR" count), bad/duplicate scheduled time (solid red).
  • Click-through runner detail popup (tab no, horse, jockey/trainer, position once resulted, issue).
  • Light/Dark theme toggle and filter selections persisted per-browser via localStorage.
  • Auto-refresh every 3 minutes, paused while the runner-detail popup is open.
  • Issues report and per-meeting detail report, each downloadable as CSV, Excel, JSON, or PDF.
Updated by Claude on Aug. 11, 2026, 8:44 a.m. · Task: updatewiki create project documentation