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.htmlandviews/login.html, filled in per request via a small{{PLACEHOLDER}}substitution helper inraceView.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.jsto 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/healthdeliberately 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.