Commit Graph
100 Commits
Author SHA1 Message Date
SowinskiBraeden 593420f984 Require production database configuration 2026-06-28 17:52:22 -07:00
SowinskiBraeden adbc60bfc3 Add friendly crash page 2026-06-28 17:47:58 -07:00
SowinskiBraeden e376b3628a Move application code into package 2026-06-28 17:41:11 -07:00
SowinskiBraeden 83c9fec489 Clean migration header whitespace 2026-06-28 17:11:09 -07:00
SowinskiBraeden c4260c8c7d Merge main into redesign for deployment 2026-06-28 17:07:46 -07:00
SowinskiBraeden fbf56e1271 Prepare redesign for public deployment 2026-06-28 17:07:29 -07:00
SowinskiBraeden f25de03c81 tidy internal tooling 2026-06-28 12:39:43 -07:00
SowinskiBraeden 734b3bdcaa update terms/privacy 2026-06-28 12:19:57 -07:00
SowinskiBraeden 51c8656a69 internal statistics & tooling 2026-06-28 12:11:22 -07:00
SowinskiBraeden 79c638b8fa remove legacy systems 2026-06-28 10:51:59 -07:00
SowinskiBraeden 9e6f5bd3ef update information + styles 2026-06-28 10:24:43 -07:00
SowinskiBraeden a31e48622b more muted pages 2026-06-28 10:15:32 -07:00
SowinskiBraeden a224a902e2 Merge main history into redesign 2026-06-27 18:39:36 -07:00
SowinskiBraeden 9921e61515 seperate delete from archive functions 2026-06-27 14:30:52 -07:00
SowinskiBraeden 42a9595966 allow archive season filtering on leaderboard 2026-06-27 14:21:55 -07:00
SowinskiBraeden 0411a0d099 fix bad inputs 2026-06-27 14:20:06 -07:00
SowinskiBraeden 48ad7fe1a6 actually add seasons 2026-06-27 14:14:57 -07:00
SowinskiBraeden cae60c9305 update email header 2026-06-27 13:16:48 -07:00
SowinskiBraeden e9d4392b8c privacy/terms/support/docs 2026-06-27 13:14:13 -07:00
SowinskiBraeden 2e1cc10dc7 update email styles 2026-06-27 12:47:49 -07:00
SowinskiBraeden ffc33c967a update email verification process 2026-06-27 12:35:00 -07:00
SowinskiBraeden 1b442011be account create on invite 2026-06-27 12:16:04 -07:00
SowinskiBraeden 3f2c9833a8 fix footers 2026-06-27 11:47:20 -07:00
SowinskiBraeden 34f03860a6 add 404/403 pages 2026-06-27 11:30:06 -07:00
SowinskiBraeden c645c722d5 upgrade landing page 2026-06-27 11:25:18 -07:00
SowinskiBraeden 964a0651f5 fix trasnfer ownership 2026-06-27 11:00:01 -07:00
SowinskiBraeden d1b9feab82 Remove ledger access from viewer role 2026-06-27 10:42:11 -07:00
SowinskiBraeden 00d59ac8ae fix re-invites + promote/demote members 2026-06-27 10:33:54 -07:00
SowinskiBraeden 3026204a99 fix email invites 2026-06-27 10:15:55 -07:00
SowinskiBraeden 00e640d6dc fix player actions button 2026-06-27 09:48:28 -07:00
SowinskiBraeden 5d27b83ecd chore: bump version to 2.5.3 2026-06-26 21:54:37 -07:00
SowinskiBraeden cacacb11bf fix: show league break-even threshold on player profile (2.5.2)
The ±$1.00 label was hardcoded; now reads from league.break_even_cents.
2026-06-26 21:53:34 -07:00
SowinskiBraeden 51bb8f03f6 fix: apply break-even threshold on player stat profile (2.5.2)
build_leaderboard, player_session_series, and session_breakdown_series
in the player detail and players routes were all called without
league.break_even_cents, so win/loss/even classification always used
the $1.00 default regardless of per-league settings.
2026-06-26 21:51:19 -07:00
SowinskiBraeden 882726e5e9 fix: correct migration chain for league settings columns (2.5.1)
Migration 0003_league_settings was chained to 0002 but the DB was already
at 0003_site_admin (an applied migration with no version file). Added a stub
for 0003_site_admin to satisfy the chain and updated the down_revision on
0003_league_settings accordingly. Columns eligible_min_sessions and
break_even_cents now apply cleanly on top of the existing schema.
2026-06-26 21:43:32 -07:00
SowinskiBraeden 2fc7bab183 feat: per-league eligible sessions and break-even threshold settings (2.5.0)
Add two configurable leaderboard settings per league, replacing the global
constants with per-row DB columns:

- eligible_min_sessions (default 3): minimum sessions before a player ranks
  on the main leaderboard rather than showing as provisional
- break_even_cents (default 100 = $1.00): sessions within ±this of $0 net
  are classified as break-even rather than a win or loss

Changes:
- Migration 0003 adds both columns with server defaults for existing leagues
- League DB model gains eligible_min_sessions and break_even_cents columns
- net_result_bucket() and build_leaderboard() accept optional tolerance param
- summarize_player_runs() passes tolerance to net_result_bucket for streaks
- League leaderboard route reads values from the league row instead of config
- League settings form exposes both fields with validation (1-100 sessions,
  $0.00-$100.00 threshold)
2026-06-26 21:37:47 -07:00
SowinskiBraeden 0e34600714 feat: client-side session search by name, date, and notes (2.4.0)
Add a search bar to the sessions list panel that filters rows in real time.
Searches display label, ISO date, month/year, and session notes. The count
badge updates to show matching/total; a no-results message appears when the
query has no matches.
2026-06-26 21:30:22 -07:00
SowinskiBraeden a5cb488b91 visual redesign: landing, dashboard overview, session calendar (2.3.1)
- Redesign landing page hero with split layout, features section, and in-app session/result demos
- Add fixed sidebar scroll isolation (app-shell overflow lock pattern)
- Redesign leagues index cards with initial badge, podium leader chips, and action links
- Redesign league dashboard: color-coded nav tiles, cash/stats overview strip, session history heatmap calendar
- Dashboard cash stats use real cash only (excludes rollovers and carry-ins)
- Session history calendar: JS-driven full-year grid, year navigation, hover tooltips, full-width responsive layout
- Bump leaderboard tile color from gold to blue (distinct from ledger orange)
- Bump version to 2.3.1
2026-06-26 21:24:00 -07:00
SowinskiBraeden 56c9a1084c create player on import 2026-06-25 01:05:38 -07:00
SowinskiBraeden 988f170ea4 fix imports 2026-06-25 01:02:15 -07:00
SowinskiBraeden 54fa80f06e email verification 2026-06-24 23:44:36 -07:00
SowinskiBraeden 5c7a498af6 admin improvements 2026-06-24 23:15:13 -07:00
SowinskiBraeden f078034789 update readme 2026-06-24 19:59:12 -07:00
SowinskiBraeden 6da4c3e379 major file restrucutre 2026-06-24 19:53:19 -07:00
SowinskiBraeden ac278065d2 security 2026-06-24 19:08:33 -07:00
SowinskiBraeden 2eadc722e9 2.0+ public access setup 2026-06-23 21:38:33 -07:00
SowinskiBraeden 5d88180e02 can I get a hamburger please? 2026-06-22 22:59:10 -07:00
SowinskiBraeden c891163c6d can I get a hamburger please? 2026-06-22 22:59:10 -07:00
SowinskiBraeden 263cd0a6d3 mobile improvements 2026-06-22 20:51:19 -07:00
SowinskiBraeden 49b0b54c2d mobile improvements 2026-06-22 20:51:19 -07:00
SowinskiBraeden a6ead9ac0a better mobile 2026-06-22 20:05:07 -07:00
SowinskiBraeden 00aa0a9225 better mobile 2026-06-22 20:05:07 -07:00
SowinskiBraeden 982830957d remove v from version number 2026-06-22 18:40:12 -07:00
SowinskiBraeden 6fcdc2946d remove v from version number 2026-06-22 18:40:12 -07:00
SowinskiBraeden 5ded510dd0 footer + favicon 2026-06-22 18:34:40 -07:00
SowinskiBraeden 434793d89e footer + favicon 2026-06-22 18:34:40 -07:00
SowinskiBraeden 39e3453681 fix .env load 2026-06-22 17:41:16 -07:00
SowinskiBraeden 5d30dde316 fix .env load 2026-06-22 17:41:16 -07:00
SowinskiBraeden 1dc4f0ec36 backend overhaul 2026-06-22 14:17:10 -07:00
SowinskiBraeden 3ad833b4e7 backend overhaul 2026-06-22 14:17:10 -07:00
SowinskiBraeden 5349130972 visual overhaul + accounting corrections 2026-06-22 13:51:38 -07:00
SowinskiBraeden 70e62342ee visual overhaul + accounting corrections 2026-06-22 13:51:38 -07:00
SowinskiBraeden 1f1c5d2ecc overhaul 2026-06-22 00:25:57 -07:00
SowinskiBraeden 77198e5b47 overhaul 2026-06-22 00:25:57 -07:00
SowinskiBraeden a5c216bb9e fix layout + collect/writeoff debts 2026-06-11 13:27:00 -07:00
SowinskiBraeden 7e7b3a7011 fix layout + collect/writeoff debts 2026-06-11 13:27:00 -07:00
SowinskiBraeden 64b6cd175e count overpay as debts when fronted + add debt writeoff 2026-06-11 13:11:04 -07:00
SowinskiBraeden 7ec95ee24a count overpay as debts when fronted + add debt writeoff 2026-06-11 13:11:04 -07:00
SowinskiBraeden 1265e3047f improve leaderboard chart 2026-04-28 13:15:59 -07:00
SowinskiBraeden 2939415f76 improve leaderboard chart 2026-04-28 13:15:59 -07:00
SowinskiBraeden 32d212ad46 fix leaderboard through id not date 2026-03-28 11:26:35 -07:00
SowinskiBraeden 8b74f277b2 fix leaderboard through id not date 2026-03-28 11:26:35 -07:00
SowinskiBraeden 8d3da9197d fix leaderboard through id not date 2026-03-28 11:16:22 -07:00
SowinskiBraeden 6ed0f69050 fix leaderboard through id not date 2026-03-28 11:16:22 -07:00
SowinskiBraeden e7473d43af fix graph order for same date sessions 2026-03-22 15:00:15 -07:00
SowinskiBraeden a17b194659 fix graph order for same date sessions 2026-03-22 15:00:15 -07:00
SowinskiBraeden e11a950c39 update leaderboard stats 2026-03-22 14:40:24 -07:00
SowinskiBraeden 4635286a09 update leaderboard stats 2026-03-22 14:40:24 -07:00
SowinskiBraeden b4401b302d leaderboard through session label update 2026-03-22 14:28:53 -07:00
SowinskiBraeden 51686de473 leaderboard through session label update 2026-03-22 14:28:53 -07:00
SowinskiBraeden 86aed87c1b update admin summary 2026-03-22 14:24:30 -07:00
SowinskiBraeden 7cdd89ef2c update admin summary 2026-03-22 14:24:30 -07:00
SowinskiBraeden d7543ea13d implement rollover tracking + simple view session summary 2026-03-22 13:52:59 -07:00
SowinskiBraeden c24f7d5810 implement rollover tracking + simple view session summary 2026-03-22 13:52:59 -07:00
SowinskiBraeden f8a167074b show all invested on leaderboard so net is correct 2026-03-21 15:14:55 -07:00
SowinskiBraeden 3248731f51 show all invested on leaderboard so net is correct 2026-03-21 15:14:55 -07:00
SowinskiBraeden 11362dfa31 update player details to accurately display fronts 2026-03-21 15:12:12 -07:00
SowinskiBraeden 73eb69b7ea update player details to accurately display fronts 2026-03-21 15:12:12 -07:00
SowinskiBraeden c4df0dbcbe front chips logic 2026-03-21 14:53:47 -07:00
SowinskiBraeden f0f6ac8e69 front chips logic 2026-03-21 14:53:47 -07:00
SowinskiBraeden 5a488daa8f update README 2026-03-21 13:23:15 -07:00
SowinskiBraeden ce795d68cd update README 2026-03-21 13:23:15 -07:00
SowinskiBraeden 61acc48ed3 update order/colors in session details 2026-03-21 12:52:16 -07:00
SowinskiBraeden 2800525e93 update order/colors in session details 2026-03-21 12:52:16 -07:00
SowinskiBraeden 6c508f4ef3 update admin layout 2026-03-21 01:30:42 -07:00
SowinskiBraeden 500625a498 update admin layout 2026-03-21 01:30:42 -07:00
SowinskiBraeden 613ffb394c update reopen css 2026-03-21 01:22:44 -07:00
SowinskiBraeden 8f82ee9958 update reopen css 2026-03-21 01:22:44 -07:00
SowinskiBraeden 0454b78d8d session summary layout upgrade 2026-03-21 01:18:26 -07:00
SowinskiBraeden 055b9f4409 session summary layout upgrade 2026-03-21 01:18:26 -07:00
SowinskiBraeden ba72ead229 imrpoved session details page 2026-03-21 01:06:31 -07:00