Commit Graph
118 Commits
Author SHA1 Message Date
mandaloreandClaude Sonnet 5 812e81e220 fix: allow inline styles in CSP so bar-chart widths actually apply
style-src 'self' (without unsafe-inline) silently blocks style="..."
attributes introduced via innerHTML — the CSS parses fine and the
attribute is present in the DOM, but the browser never applies it,
so every bar rendered at its track's full width regardless of its
real percentage. script-src stays locked down; this only loosens
CSS, and no untrusted external content is ever rendered into a
style attribute here.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 10:57:56 -05:00
mandaloreandClaude Sonnet 5 a077739e82 feat: initial BCP roster scouting tool
Paste a Best Coast Pairings event link to get roster-only stats:
faction/disposition distribution, per-team ITC rank rollups, and an
optional list-backfill for players missing faction/disposition data
(uses the viewer's own BCP auth token, stored client-side only).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 10:25:31 -05:00
mandalore 12f001d6f7 feat: add name blacklist to hide players from leaderboard
Adds a hidden player per request.
2026-08-02 17:53:30 -05:00
GitLab CI 755cffc405 data: refresh stat-check ELO rankings 2026-07-22 02:03:19 +00:00
GitLab CI 3e68394798 data: refresh stat-check ELO rankings 2026-07-15 02:03:17 +00:00
GitLab CI 9c64158578 data: refresh stat-check ELO rankings 2026-07-08 02:03:17 +00:00
mandaloreandClaude Sonnet 4.6 7fba5c7d44 fix: move lmcRankCell out of inner IIFE so it is in scope where used
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 09:40:58 -05:00
mandaloreandClaude Sonnet 4.6 f965334e57 feat: move LMC Rank column to sit next to ITC Rank
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 09:39:38 -05:00
mandaloreandClaude Sonnet 4.6 d9741062dc feat: add LMC Rank column alongside LMC Points
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 09:38:04 -05:00
mandaloreandClaude Sonnet 4.6 f33022fe92 feat: add LMC Points column fetched from BCP league cY0LeCAPfyiG
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 09:34:34 -05:00
GitLab CI 27b336f035 data: refresh stat-check ELO rankings 2026-07-01 02:03:19 +00:00
GitLab CI 24cf4a5872 data: refresh stat-check ELO rankings 2026-06-29 05:19:52 +00:00
mandaloreandClaude Sonnet 4.6 5f35c39caf ci: allow refresh-elo commit to trigger build and deploy
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 00:18:38 -05:00
GitLab CI f5fb3f78de data: refresh stat-check ELO rankings [skip ci] 2026-06-29 05:18:08 +00:00
mandaloreandClaude Sonnet 4.6 ae4a97e6b0 ci: exclude build and deploy from scheduled pipelines
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 00:16:59 -05:00
GitLab CI f642f8809c data: refresh stat-check ELO rankings [skip ci] 2026-06-29 05:14:35 +00:00
mandaloreandClaude Sonnet 4.6 c4e355dd63 feat: add ELO refresh job to GitLab CI and polish mobile display
- Add refresh-elo job to .gitlab-ci.yml triggered by schedules; runs
  the Python scraper and commits updated elo-data.json back to main
- Hide Stat-Check ELO column header on mobile (sm:hidden), fold ELO
  score as a subtitle under ITC Points on mobile instead

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 00:07:41 -05:00
mandaloreandClaude Sonnet 4.6 ea0c2f3a91 chore: remove lock file and ignore LibreOffice temp files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 00:00:21 -05:00
mandaloreandClaude Sonnet 4.6 ac223a6909 feat: add Stat-Check ELO column with daily auto-refresh
- Scraper (statcheck-elo-scraper/refresh_elo.py) downloads the stat-check
  ELO workbook from OneDrive and builds public/elo-data.json
- GitHub Actions workflow (.github/workflows/refresh-elo.yml) runs daily
  at 06:00 UTC and commits updated ELO data
- Frontend fetches elo-data.json and matches players by name, using BCP
  career event history to disambiguate same-name candidates
- ELO score shown in new sortable Stat-Check ELO column, visible on all
  screen sizes; unmatched players show —

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-29 00:00:02 -05:00
mandaloreandClaude Sonnet 4.6 8687710d54 feat: add career W-L-T/Win% subtitles and mobile stat folding
Ports the career stats feature from the 40K rankings site: fetches
all-time W-L-T per player from BCP and shows it as a subtitle under
each season stat. Also folds W-L-T, ITC Rank, and Win% into the
Player and ITC Points cells on mobile so all stats are visible without
horizontal scrolling. Skeleton loader updated to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 23:48:50 -05:00
mandaloreandClaude Sonnet 4.6 7fcd721eee nav: add 40K Rankings link to header navigation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 23:45:35 -05:00
mandaloreandClaude Sonnet 4.6 7dd9ddfefe nav: add AOS Rankings link to header navigation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 23:41:46 -05:00
mandaloreandClaude Sonnet 4.6 1f7757dec6 mobile: fold hidden stats into visible columns on small screens
W-L-T and ITC Rank appear as sub-text under the player name; Win% appears
under ITC Points. Desktop layout is unchanged. Skeleton loader also gets
matching placeholder lines on mobile.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-27 23:35:57 -05:00
mandaloreandClaude Sonnet 4.6 e64513e51a revert: remove team filter from build(), show all member stats regardless of event team
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 22:21:43 -05:00
mandaloreandClaude Sonnet 4.6 f9d098beb3 filter: only include placings where team is set to Gateway Gamers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 22:13:35 -05:00
mandaloreandClaude Sonnet 4.6 85493614e8 refactor: show career W-L-T and Win% as subtitles in existing columns
Removes the standalone Career W% column. Career totals now appear
as a small secondary line inside the W-L-T and Win% cells, loading
asynchronously with a … placeholder while fetching.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 21:31:13 -05:00
mandaloreandClaude Sonnet 4.6 6f5b473408 add Career W% column from BCP all-events history
For each roster player, fire a parallel fetch to
/placings?placingsType=player&userId={id} and aggregate
wins/losses/ties across all events that have those fields.
Renders asynchronously - shows … while loading, — if no
data found. Column is sortable.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 21:29:23 -05:00
mandaloreandClaude Sonnet 4.6 d39d7fc627 revert: remove ELO rank feature (data source inaccessible)
stat-check.com's ELO data is behind Microsoft auth with no public
API or download endpoint available. Removing the sync script,
placeholder JSON, CI job, table column, and all related JS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 21:23:28 -05:00
mandaloreandClaude Sonnet 4.6 b77c3f950a debug: print response content-type and body on non-Excel download
Helps identify what the server is actually returning when the
download URL doesn't serve the xlsx file.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 21:09:46 -05:00
mandalore cc5eab9b0a update download URL 2026-06-26 21:06:27 -05:00
mandaloreandClaude Sonnet 4.6 780ca22be5 fix: install pip deps in CI with --break-system-packages
Python 3.12 (PEP 668) blocks bare pip installs into the system.
Move the install step into the CI script and drop the self-install
fallback from the Python script.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 21:01:51 -05:00
mandaloreandClaude Sonnet 4.6 90a527d8b2 fix: quote YAML script lines containing double quotes
GitLab's YAML parser treats bare " mid-string as a new scalar.
Single-quote the affected lines and use a | block for the if/else.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 21:00:09 -05:00
mandaloreandClaude Sonnet 4.6 3e6a152206 add weekly ELO rank sync from stat-check.com
- scripts/sync-elo.py: downloads Excel sheet, auto-detects columns,
  writes public/elo-data.json keyed by lowercase player name
- .gitlab-ci.yml: sync-elo stage (schedules only) commits the JSON
  then a normal push pipeline handles build + deploy; build/deploy
  skip on scheduled runs to avoid double deployment
- index.html + main.js: ELO Rank column with sort support; loads
  elo-data.json asynchronously and re-renders when ready; fails
  silently if data is missing

Requires one-time setup:
  1. GitLab project token (write_repository) stored as GITLAB_PUSH_TOKEN
  2. Pipeline schedule: cron 0 2 * * 3 (Wednesday 02:00 UTC) on main

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 20:47:30 -05:00
mandaloreandClaude Sonnet 4.6 fa27589945 replace W-L-T with win percentage, add Win % column, and add sortable headers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 20:24:24 -05:00
mandaloreandClaude Sonnet 4.6 3a57967214 make W-L-T column sortable (by wins, then fewest losses)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 20:16:03 -05:00
mandaloreandClaude Sonnet 4.6 9c07036a85 add W-L-T column back alongside win percentage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 20:15:35 -05:00
mandaloreandClaude Sonnet 4.6 4ee1ba1a5b replace W-L-T with win percentage and add sortable column headers
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 20:13:08 -05:00
mandaloreandClaude Sonnet 4.6 0cede20a00 rename page title and nav to 40K Rankings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 19:03:32 -05:00
mandaloreandClaude Sonnet 4.6 f733255e07 rename to 40k-rankings.gateway-gamers.net
Update deploy path, environment URL, nginx conf, and package name
to reflect the new subdomain.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 19:00:07 -05:00
mandaloreandClaude Sonnet 4.6 e412ec2072 add package-lock.json
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 18:46:57 -05:00
mandaloreandClaude Sonnet 4.6 e39cb70c04 scaffold AOS rankings site (Vite + Tailwind v4 + DaisyUI v5)
Clone of the 40K rankings project adapted for Age of Sigmar: leagueId
RtgcexBzqjCM, AOS-branded headings, separate cache key, and CI/CD
deploying to /var/www/domains/gateway-gamers.net/aos-rankings/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 18:31:33 -05:00
mandaloreandClaude Sonnet 4.6 14e117a823 add kingmaker-style header, full pagination, and CI/CD deployment
- Hero carousel header with logo and photos matching kingmaker site
- Renamed "League Rank" to "ITC Rank"
- Full cursor-paginated standings scan with circular-cursor detection
  to handle BCP API's pagination bug at the end of results; incremental
  rendering shows results as each page arrives
- credentials:omit on all BCP fetches to prevent session cookie 500s
- GitLab CI pipeline: npm ci + vite build, rsync dist/ to
  /var/www/domains/gateway-gamers.net/rankings/ on push to main
- nginx config for rankings.gateway-gamers.net with CSP allowing
  connect-src to newprod-api.bestcoastpairings.com

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 17:34:48 -05:00
mandaloreandClaude Sonnet 4.6 2304764d5d scaffold Vite + Tailwind v4 + DaisyUI v5 project structure
Converts the standalone leaderboard HTML into a proper build project
matching the kingmaker.gateway-gamers.net pattern: shared header/footer
partials in public/, leaderboard logic in src/main.js, and vite build
outputting to dist/.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 12:28:36 -05:00
mandalore 1841f242ed add README 2026-06-26 12:15:46 -05:00
mandalore 6f62a9a5ba Fix Dates 2026-06-01 09:46:18 -05:00
mandalore e6c8ba2850 Update the season dates and add that signups are live 2026-06-01 07:52:43 -05:00
mandalore 94b44bb9fc remove paypal from site and add verbiage for paying game nite 2026-05-29 19:29:28 -05:00
mandalore 83ded0a3e7 add a new section on homepage detailing current season 2026-05-29 14:37:19 -05:00
mandalore f758d6ac2e update wording on site 2026-05-29 14:31:26 -05:00
mandalore 96990c9e0d revert the small change on the sign-ups page 2026-05-29 00:47:27 -05:00