The Phalanx
📋

Changelog

The Phalanx — every version, every change

🔍
655 releasesPage 1 of 27
v0.9.858Sign-in works on slow phones
October 18, 2026
  • ▸On a slow connection the Sign In button says "Loading…" until the page is ready, instead of quietly reloading the page when tapped
v0.9.857First picks really go through now
October 18, 2026
  • ▸Spread picks and parlays no longer fail with an error after you tap Confirm
  • ▸The Pricing page is a real page: Free is $0, Pro is not on sale yet, nothing to cancel
v0.9.856New players can actually place their first pick
October 18, 2026
  • ▸Spread picks no longer fail with "Bet team does not match" when you tap a team
  • ▸"Get Started" opens account creation instead of sign-in
  • ▸Pricing is linked in the footer and /pricing works: Free is free, Pro is not on sale yet
  • ▸Sign-in shows "Signing in…" while it works, and pages load much lighter on slow phones
  • ▸Plainer words: "gold" instead of "cr", and less betting slang on the landing page
v0.9.855Paper Bankroll stops paying prices it can't beat
October 14, 2026
  • ▸NHL Paper Bankroll bets are paused: every NHL bet was the +1.5 puck line at about -222, which needs a 68.5% win rate, and the picks won 56.5%
  • ▸Paper Bankroll never takes a price worse than -150 in any sport, because no sport has shown a win rate high enough to beat it
v0.9.854Results keep updating when ESPN deletes a game
October 2, 2026
  • ▸When ESPN removes a game that was never played, like an unneeded playoff game, results for every other game keep updating instead of stopping
v0.9.853Paper Bankroll uses real sportsbook prices
October 1, 2026
  • ▸Paper Bankroll tickets now lock in the sportsbook's actual price for the side and line picked, instead of assuming every bet pays -110
  • ▸Bets are refused when there's no real price, when the line is estimated, or when the side or line doesn't match the game
  • ▸MLB Paper Bankroll bets are paused: re-priced at real run-line odds, the MLB record lost 4.3%
  • ▸Pick scores are shown as model scores, not win probabilities
v0.9.852Money paths tested against a real database
October 1, 2026
  • ▸Bet placement, settlement, game voids and the Paper Bankroll are now tested against a real throwaway copy of the database, with many requests firing at once
  • ▸The tests prove a duplicate bet is charged once, a balance can't be overdrawn, a settled bet can't pay twice, a void refunds once, and the 30% bankroll exposure cap holds under load
v0.9.851Paper Bankroll risk limits
October 1, 2026
  • ▸Paper Bankroll now stakes every qualifying pick at a flat 1 unit. The 1.5u and 2u confidence tiers had no out-of-sample support and are retired
  • ▸Open Paper Bankroll exposure is capped at 30% of the settled bankroll, down from 70%. Recent slates peaked near 35%, so the cap now actually limits correlated risk
  • ▸Every API route is now tested to confirm anonymous and non-admin callers are refused before any private data is read
v0.9.850Faster team logos
October 1, 2026
  • ▸Team logos now load as small resized images instead of full 500px files, cutting each logo from roughly 20-45KB to 3-4KB
  • ▸Bet slip, favorite teams, and the landing carousel share one logo helper, so NHL logos resolve the same way everywhere
v0.9.849Bankroll privacy and cleanup
October 1, 2026
  • ▸Paper Bankroll ledger API now requires an admin session or update secret instead of serving bet details publicly
  • ▸Date strip scrolls to the selected day instead of the day before, and stops re-scrolling on every refresh
  • ▸Removed unused code across the dashboard, admin, and engine
v0.9.848Security update
October 1, 2026
  • ▸Updated Next.js to 16.3.8 to close a critical share-image rendering vulnerability and several image and cache advisories
  • ▸Updated DOMPurify to clear a low-severity sanitizer advisory
v0.9.846Restore football updates after ESPN rejected date ranges
September 15, 2026
  • ▸Replaced ESPN's broken football date-range requests with supported daily requests across the full seven-day pick window
  • ▸Kept football updates fail-closed if any required daily request fails or the in-season slate is empty
v0.9.845Predictor input isolation and honest replay evidence
September 9, 2026
  • ▸Isolated rest, schedule density, and recent margins by sport so shared team IDs cannot contaminate another league's inputs
  • ▸Stopped zero-weight signals from increasing confidence through agreement bonuses
  • ▸Made MLB replay reject incomplete signals and invalid teams, and report insufficient data when no valid rows remain
  • ▸Kept football outside Paper Bankroll; no prediction weights or claimed win rates changed
v0.9.844Tracking balance, account fixes, and security updates
September 8, 2026
  • ▸Fixed My Bets and History showing empty states for accounts with only parlays
  • ▸Notification actions now preserve the displayed state on failure and show a retryable error
  • ▸Bet exports now include every page of history and reject failed reads instead of returning incomplete CSV files
  • ▸Refunded void stakes in virtual tracking balances and reserved frozen stakes before allocating new wagers when football picks recover
  • ▸Rejected calibration bins whose win rates contradict their recorded wins and losses
  • ▸Updated Next.js, Vitest, Sharp, js-yaml, and colord to clear dependency security advisories
v0.9.843Preserve picks for final-score grading
September 3, 2026
  • ▸Stopped the routine tracking refresh from voiding unresolved picks when games become live or final, leaving final-score grading and the guarded void cycle as the lifecycle ownersGPT-5.6-sol
  • ▸Added a regression proving a pending live-game pick remains unresolved for settlementGPT-5.6-sol
v0.9.842Fail closed on terminal tracking results
September 3, 2026
  • ▸Restored the unresolved-result gate after an independent audit proved current game fields cannot distinguish a manually terminal void from recoverable tracking lagGPT-5.6-sol
  • ▸Kept the live MLB repair bounded to its exact verified row; safe automatic cross-sport recovery now waits for explicit void provenanceGPT-5.6-sol
v0.9.841Trust current games without rewriting void history
September 3, 2026
  • ▸Built the live Sparta slate from exact current game truth even when an older tracking result still says void, while returning active picks with unresolved display stateGPT-5.6-sol
  • ▸Kept terminal void history immutable by limiting database-level reopening to the existing football path instead of inferring intent from the overloaded stale-odds flagGPT-5.6-sol
v0.9.840Keep terminal voids terminal
September 3, 2026
  • ▸Limited cross-sport pick recovery to voids created by transient stale or missing odds, so canceled and manually voided games cannot be reopened by a later feed changeGPT-5.6-sol
  • ▸Added a regression proving MLB and football transient voids recover while an otherwise-valid terminal void remains closedGPT-5.6-sol
v0.9.839Restore valid picks after transient invalidation
September 3, 2026
  • ▸Reopened eligible tracking rows across every validated sport when current game data proves the pick is active again, preventing stale void state from hiding valid Sparta picksGPT-5.6-sol
  • ▸Kept reopened rows in an isolated database batch so explicit null recovery cannot alter unrelated active tracking resultsGPT-5.6-sol
v0.9.838Fail closed on weak football evidence
September 3, 2026
  • ▸Withheld NFL and college-football predictions without current ratings, fresh sportsbook lines, a future kickoff, or a verified non-neutral venueGPT-5.6-sol
  • ▸Paginated the active-game baseline and stopped update cycles on empty in-season football feeds without treating a merely nonempty slate as proof of completenessGPT-5.6-sol
  • ▸Removed neutral-site games from venue ATS splits and corrected signal analysis to score each signal from the selected team's perspectiveGPT-5.6-sol
v0.9.837Isolate football tracking recovery
September 3, 2026
  • ▸Split football void recovery into its own database upsert batch after live verification caught a mixed-batch null spill into one unrelated tracking rowGPT-5.6-sol
  • ▸Restored the affected tracking row from a bounded backup and held the core-update scheduler until the corrected runtime passed release gatesGPT-5.6-sol
v0.9.836Keep football context and tracking evidence honest
September 3, 2026
  • ▸Stopped synthetic and stale sportsbook lines from entering recent ATS form, paginated the full history window, and separated same-name teams by sportGPT-5.6-sol
  • ▸Kept sport-scoped recent form and home-away ATS splits wired through the prediction context instead of silently dropping the venue splitsGPT-5.6-sol
  • ▸Reopened only previously void NFL and college-football tracking rows when an upcoming game becomes valid again, while keeping unrelated sports out of that recovery pathGPT-5.6-sol
v0.9.835Reserve Sparta's Picks for validated sports
September 2, 2026
  • ▸Removed uncalibrated NFL and college-football early reads from Sparta's Picks, its homepage vanguard, featured flags, weekly slate, stats, and share cards until those sports earn validated confidenceGPT-5.6-sol
  • ▸Restored calibrated MLB recommendations to Sparta's Picks and the featured pool instead of leaving the flagship empty during the pro and college basketball off-seasonGPT-5.6-sol
  • ▸Kept football early reads on regular game cards while making empty weekly maintenance clear newly blocked flagship rows instead of skipping cleanupGPT-5.6-sol
  • ▸Selected each validated sport's strongest eligible candidates only after loading its complete cohortGPT-5.6-sol
v0.9.834Put football model caveats in plain English
September 2, 2026
  • ▸Replaced internal raw and uncalibrated confidence language with Early read and Early model score, while keeping the clear not-a-win-probability disclosure on public detail and share surfacesGPT-5.6-sol
v0.9.833Keep unauthenticated billing requests behind the auth boundary
September 2, 2026
  • ▸Moved Stripe client initialization behind authentication so checkout and portal requests return 401 even when billing configuration is unavailableGPT-5.6-sol
…