myheats

Live heats, scoring and leaderboard for sport events
git clone https://git.in0rdr.ch/myheats.git
Log | Files | Refs | Pull requests |Archive | README | LICENSE

CHANGELOG.md (4264B)


      1 ## [0.11 Unreleased]
      2 ### Added
      3 ### Changed
      4 ### Fixed
      5 
      6 ## [0.10] - 2026-03-17
      7 ### Changed
      8 * feat(docker): bump nodejs baseimage to 24 (LTS)
      9 * feat: bump react/cookie/dom to next stable version (React 19)
     10 * feat: bump react-router to 7.13.1
     11 * feat: bump nodemailer to 8.0.2
     12 
     13 ### Fixed
     14 * CVEs of outdated dependencies
     15 * fix(139): Change js error to info
     16 
     17 ## [0.9] - 2026-03-16
     18 ### Added
     19 * `private` heats only visible to judges. Toggle heat visibility. DB
     20   migrations:
     21   - [`schema/migrations/01-heats.sql`](schema/migrations/01-heats.sql)
     22   - [`schema/migrations/02-distinct-startlist-private-heats.sql`](schema/migrations/02-distinct-startlist-private-heats.sql)
     23   - [`schema/migrations/03-score-summary-function.sql`](schema/migrations/03-score-summary-function.sql)
     24 
     25 ### Changed
     26 * PostgreSQL 17 in docker-compose dev setup
     27 * Remove API echo endpoint
     28 * feat(leaderboard): cleanup websocket on component change
     29   - This stores the websocket connection in the Leaderboard as a state
     30     variable. The variable is cleaned up when the component Leaderboard is
     31     exited. For example, when a judge switches to a different tab/component (e.g.,
     32     Scoring), the socket to the server is closed and only recreated when the
     33     tab/component is changed again (to the Leaderboard).
     34 * Swap navigation active colors for styles (darker is active)
     35 * feat: new title setting (see [`README.md`](./README.md)) and slightly change
     36   blue color style
     37 
     38 ### Fixed
     39 * Fix input alignment, align checkboxes
     40 * fix(141): undefined input var
     41   - Lead to strange behavior for different API paths, where the POST body of a
     42     first request was used as "input" for a subsequent request
     43 * Fix unreachable return (introduced in `ddf659b0`)
     44 
     45 ## [0.8] - 2026-01-07
     46 * fix: CVE-2024-47764 and CVE-2024-21538
     47 * feat: update to Vite 6
     48 * feat(CI): add trivy vulnerability scanning
     49 * update minor versions of dependencies
     50 
     51 ## [0.7] - 2024-11-17
     52 ### Added
     53 * Judge view, add/delete Judges (admins) in the frontend
     54 * Dockerfiles
     55 
     56 ### Changed
     57 * Improved development setup and documentation
     58 * Improved compact display on mobile devices (@samuel.berchtold)
     59 
     60 ### Fixed
     61 * Active navigation for startlist
     62 * overflow-x for viewing tables on small screens
     63 * Comparator logic always returns an integer value
     64 * Birthday display with local date format
     65 
     66 ## [0.6] - 2024-10-06
     67 ### Added
     68 * Settings screen: logo, color theme, show/hide version
     69 * Condensed display with toggle to show details
     70 
     71 ### Changed
     72 * Authenticated requests to API
     73 * Improve handling of websocket clients
     74 * Improve no response handling (204 no content)
     75 * Document PostgreSQL requirements for replication (real-time subscription)
     76 * Upgrade to vite5
     77 
     78 ### Fixed
     79 * MaxListenersExceededWarning: Manage 1 db subscriptions on API server
     80 * Bump several npm package versions
     81 * Order/sorting of same result when ranking by specific heat
     82 
     83 ## [0.5] - 2024-09-27
     84 ### Removed
     85 * Supabase API
     86 
     87 ### Added
     88 * Connect to any PostgreSQL database (incl. Supabase)
     89 * API for database queries and authentication
     90 * Realtime score streaming with websocket
     91 * Automatic npm dependency updates with updatecli
     92 * Export to csv
     93 * Developer environment (docker-compose, nix-shell, docs)
     94 
     95 ### Fixed
     96 * fix: cascade delete judges on scores
     97 * fix: use full `search_path` for functions
     98 
     99 ## [0.4] - 2023-07-02
    100 
    101 ### Changed
    102 * feat: replace rating with scoring
    103 * feat: update schema picture
    104 * feat: update favicon
    105 * feat: migrate to vite
    106 * feat: update flex layout
    107 * feat: create empty new heat
    108 * fix: floating point imprecision in sum
    109 
    110 ## [0.3] - 2023-04-07
    111 
    112 ### Changed
    113 * fix: loop in heat list (#f13097)
    114 
    115 ### Added
    116 * feat: modify startlist, add/remove athletes
    117 * feat: modify athletes, create/remove athletes
    118 * feat: loading indicators
    119 * feat: cleanup database subscriptions to increase performance (#b16427)
    120 
    121 ## [0.2] - 2023-04-03
    122 
    123 ### Changed
    124 * fix: infinite useEffect dependency loop
    125 * Simpler session passing
    126 
    127 ### Added
    128 * `REACT_APP_SUPABASE_URL` env var
    129 * UI for delete heats
    130 * Sort by start nr
    131 * Documentation for realtime ratings table
    132 
    133 ## [0.1] - 2023-03-14
    134 
    135 ### Added
    136 * Scoring UI for judges
    137 * Setup and installation instructions
    138 * Authentication with Supabase magic links
    139 * Live updating leaderboard
    140 * Sort by best/worst heat or sum
    141 * Create new heats from live leaderboard