Building in the open

What's new

Every release ships something for your league. The full history lives here. Back home

  1. v0.1.92026-08-12Latest
    • Marketing deep dive: demo league door, rivalry & PWA showcases, live archive stats (#91)
    • Let the beta talk back: a feedback bubble on every signed-in screen (#92)
    • Say what every page is, to the machines that ask (#90)
    • Marketing site rebuild: story-driven pages, drawn-in-code football art, and a real waitlist funnel (#89)
    • Leagology talks to Slack (#87)
    • Remove the shared-password login bootstrap (#88)
    • Claim the root namespace, and stop the front page drawing its own tables (#86)
    • Point the root domain at www.leagology.app (#85)
    • Marketing site: a real front door, a public players archive, and a waitlist (#82)
    • Give a phone its screen back, and let the tab bar carry the league (#84)
  2. v0.1.82026-08-12
    • Keep the mirrored bracket on a wide screen, and run it one way on a phone (#83)
    • A league you can keep on your home screen (#81)
    • Manager pages: lead with the manager, and give them a profile to lead with (#78)
    • Make the postseason readable on a phone, and stop a blue league painting wins green (#79)
    • Player pages: say who he played, and who actually owned him when (#80)
    • Pin the dashboard rail to the viewport edge (#77)
    • Dashboard: one navigation rail, not two (#76)
    • Sync on two clocks, so a nightly run stops re-reading finished football (#75)
    • Correct the record book's backfill predicate, forward (#74)
    • Codebase polish, phase 6: error boundaries and the last streaming holdouts (#73)
    • Read the ticker and the score rail from the archive, not from Sleeper on every request (#68)
    • Make the optional pages opt-in, per league (#70)
    • Codebase polish, phase 5: cache the history reads and the Sleeper client (#72)
    • Codebase polish, phase 4: consolidate shared atoms, split the oversized pages (#71)
    • Codebase polish, phase 3: dedupe the lib layer (#67)
    • Codebase polish, phase 2: dissolve components/_migration into feature folders (#66)
    • Codebase polish, phase 1: dead code, unused deps, named-export convention (#65)
    • Matchup pages: read the game across, and say what was at stake (#62)
    • Give a franchise a section, not one very tall page (#64)
    • Apply migrations on main as well as production releases (#63)
    • Playoff bracket: one column grid, a title game you can see, and a tab per bracket (#59)
    • Schedule: filters in a column, a slate you can scan, and links that say where they go (#57)
    • Every team name is a way into that team (#61)
    • Score rail: carry the whole season, and say which games mattered (#58)
    • Admin: wear the league you are editing, and pick its type set (#60)
    • Themes: the accent is the league's, not always red (#56)
    • Give every franchise its own history: trophy case, record shelf, trade desk (#55)
    • League sites: themes, dark mode, search, a bottom bar, a schedule and rivalries (#54)
  3. v0.1.72026-08-11
    • Hall of Fame: judge a tight end against tight ends, not quarterbacks (#53)
    • Managers are addressed by slug everywhere, never by id (#51)
    • Serve the schedule from the archive, and make every game a page (#52)
    • Hall of Fame: judge the final by who won the season, and let managers knock (#49)
    • Manager page: lead with the career line, and name the players behind it (#50)
    • Record Book: read it a chapter at a time, and stop crowning the third-place game (#48)
    • Run migrations only on production deploys (#47)
    • Live pages: read the whole Sleeper history, not just the renewed chain (#45)
    • Power rankings, and an honours board that names more than the champion (#46)
    • Make the manager the fixture: slugs, name history, DB-backed Teams (#41)
    • Split the Hall of Fame into a Record Book and a Hall of Fame (#43)
    • Standings: report each manager's lineup ceiling, not just their score (#44)
    • Yahoo import: upload any season, exclude the years Sleeper owns, and name the people (#42)
    • League sites: a real sports-league design system (#36)
    • Player pages: name the unknowns, sort the index, tell a bye from a benching (#40)
    • Standings: report the league's own season, and let you pick a year (#39)
    • Draft board: show the season in progress, and make the grid readable (#34)
    • Playoff bracket: mirror the halves so they meet at the championship (#37)
    • Dashboard: fix broken links, move to /app/leagues/<slug>, drop mock analytics (#38)
    • Remove GitHub OAuth, add self-serve password setting (#35)
    • Playoffs: draw the bracket, and let the weeks point into it (#33)
    • Email + password accounts, with invite-gated signup and commissioner-issued reset (#32)
    • Matchups: playoff nav and bracket view, and say when the schedule lands (#31)
    • Yahoo-era import + cross-era Hall of Fame (#30)
    • League history database: platform-agnostic schema, Sleeper sync, manager lineage (#29)
  4. v0.1.62026-08-07
    • Keeper value: blend multiple ADP sources into one market read (#28)
  5. v0.1.52026-08-07
    • Keepers: show market ADP and value over the pick you surrender (#27)
    • Keeper eligibility: the trade deadline is a moment, not a week (#26)
    • Keeper costs: read the draft's real round count, price no-ADP players as undrafted (#25)
  6. v0.1.42026-08-04
    • Keeper ADP: stop pricing off search_rank, harden the Sleeper ADP fetch (#24)
  7. v0.1.32026-08-04
    • Keepers page: show the full roster and the UDFA math; log ADP fallback (#22)
    • Release flow: gate production deploys behind a production branch (#23)
  8. v0.1.22026-08-04
    • Fix keeper rules to match the bylaws: drops void status, trades don't, FFC ADP (#21)
  9. v0.1.12026-08-03
    • Actually drop outputFileTracingIncludes — #19 merged the wrong snapshot (#20)
    • Fix Vercel deploy: drop outputFileTracingIncludes (ENOENT) (#19)
  10. v0.1.02026-08-03
    • Add release flow: GitHub Releases + public /changelog, version 0.1.0 (#18)
    • Fix keeper calcs: trade-deadline eligibility + per-league rule settings (#17)
    • Fix UI regressions: scorebug width/scrollbar, dead season dropdown, player names in game detail (#16)
    • Link a Sleeper league when creating one (#15)
    • Drop commish.cloud: leagology.vercel.app is the root domain (#14)
    • Add keepers: per-league rules + cost projections from Sleeper ADP (#13)
    • Fix dashboard/league URLs and the dark-mode mismatch (#12)
    • Build the Teams page: manager cards with season + lifetime context (#11)
    • Let commissioner members reach league settings and their dashboard (#10)
    • Add Hall of Fame: champions, lifetime standings, all-time records (#9)
    • Add bylaws chatbot (ask-the-rulebook) (#8)
    • Add dues tracking (#7)
    • Make bylaws per-league editable content (Site.bylaws markdown) (#6)
    • Add polls & voting (#4)
    • Add league membership: invites, join flow, member management (#3)
    • Move the account list behind its own Suspense boundary
    • Allow password sign-in per environment instead of only off-production
    • Add vitest test suite (37 tests) for Sleeper data layer and URL helpers (#2)
    • Add CI workflow, rewrite README, finalize env template
    • Migrate AI editor to AI SDK v6; retire openai-edge and @vercel/kv
    • Wire drafts page, real champion banner, real matchup-bar week
    • Add caching architecture: Sleeper client policies + Cache Components
    • Modernize UI stack: Tailwind 4 + shadcn/ui, remove Tremor
    • Ignore tsconfig.tsbuildinfo build artifact
    • Remove dead code, quarantine historical data, strip debug UI
    • Switch from subdomain to path-based multi-tenancy
    • Path-based tenancy refactor + .env.example
    • Upgrade next-mdx-remote 4.4.1 -> 6.0.0
    • Restore database to Neon and add local dev login
    • save
    • fix schedules
    • save
    • save draft data
    • add local data
    • add transactions
    • update matchups
    • fix nav
    • add matchups
    • remove blog posts from home
    • create front office / reloacte blog
    • save
    • try again
    • relocate
    • save
    • save it
    • Initial commit
Free while in beta