What's New
Updates and improvements to Armchair GM.
Enjoying Armchair GM? It's free and built by one person — you can buy me a coffee ☕ to support development.
design
Armchair GM Gets Its Logo
- • Introduced the new Armchair GM logo — an armchair with a basketball seat — now shown in the top navigation and on the sign-in page
- • Updated the browser tab icon and home-screen icon to match the new brand
fix
Picks With Swap Rights Attached Show Up Again
- • Teams whose own draft picks have swap rights attached (like Boston's 2028 first or Cleveland's 2027 and 2028 firsts) now see those picks on their asset lists, annotated with who holds the swap
- • Previously only the swap-rights side existed, so the underlying pick disappeared entirely from its owner's assets and the trade machine
fix
Veteran Minimum Signings Count Correctly
- • Re-signing a player on a one-year veteran minimum now counts the reimbursed cap charge (the 2-year veteran rate) against the cap instead of the player's full salary
- • Minimum deals no longer silently commit as two-year contracts — they're one year unless you add a second-year option
- • Players who were renounced and then re-signed now count toward the roster again instead of staying in the off-roster section
- • The payroll table's Total, Cap Space, and Apron rows now include incomplete-roster charges, so they match the summary cards at the top of the page
fix
Team Option Years Labeled Again
- • Restored the TO label on team option years across cap sheets — rookie-scale contracts now show team options on years 3 and 4, and veteran deals with team options (like Kuminga's 2026-27) are labeled correctly
- • Player option labels that had gone missing on some contracts are back as well
feature
Waive & Stretch Players on Other Teams
- • When you pick a player under contract with another team in the player browser, you can now choose Waive & Stretch in addition to trading for them or buying them out
- • The buyout option is now labeled "Waive / Buy Out" — keep the full amount for a straight waive, or reduce it to reflect money the player gives back
fix
Waive & Stretch Uses Guaranteed Money Only
- • Waiving a player now only counts the money they're actually owed — unexercised player and team option years no longer inflate the dead money (e.g. a partially guaranteed contract with a player option year now defaults to just the guaranteed amount)
- • Stretch previews now spread over the correct number of seasons, since option years no longer count as remaining years
- • If you exercise an option in your scenario first, that year correctly counts toward the waive cost
- • Fixed the partial-guarantee tooltip labeling the guaranteed portion as "Non-guaranteed"
fix
Players in Their Final Contract Year Show Correctly
- • Fixed players whose contracts run through this season being wrongly treated as free agents — they showed up as cap holds in the Sign & Trade section instead of as rostered, tradeable players
- • Cap sheets, the scenario trade builder, and the other-team editor now only show cap holds for players whose contracts have actually expired
- • Cap hold amounts for true free agents are now based on the final year of their expired contract instead of showing $0
fix
Pick Options Work in Trades Again
- • Fixed the pick controls in the trade machine — protection choices (Unprotected, Top-N, Custom), the swap rights toggle, and the destination team buttons were not registering clicks, which made it impossible to set up picks properly in multi-team trades
fix
Removing Teams From Big Trades Works Again
- • Fixed the remove button (×) on team chips doing nothing in trades with three or more teams — clicking it now removes the team and its assets from the deal
- • Fixed the "Confirm it's fixed" button on roadmap cards not responding when clicked
- • Fixed the close button and "Confirm it's fixed" button inside the roadmap item pop-up not responding — closing by clicking outside or pressing Escape still works
fix
Feature Tips Stay Dismissed
- • Feature tip popups (like the player walkthrough on cap sheets) now stay dismissed for visitors who aren't signed in — previously they could reappear every time
- • Tips no longer flicker briefly on screen when you've already seen them
design
A Sleeker, Modern Look
- • Refreshed the whole app with a new visual identity: new typefaces, softer layered shadows, and a cooler graphite palette
- • Teal accents join the court orange, with rounder corners throughout
design
A Proper Homepage
- • The homepage is now a real front door — it introduces every tool with a quick preview instead of dropping you straight into the trade builder
- • The Trade Machine has moved to its own page, one click from anywhere via the Trade link in the navigation
- • Jumping straight to any team's cap sheet from the homepage still works, now with a clearer layout
improvement
Tip Jar
- • Added a tip jar — if Armchair GM is useful to you, you can buy me a coffee via the ☕ link in the footer or on this page
fix
Exact Buyout Dead Money
- • Dead money from buyouts now adds up exactly to the buyout amount across all seasons — previously a few dollars could go missing on large contracts due to rounding
fix
Sign-and-Trade Rules Follow the Player
- • Receiving a sign-and-trade player in a scenario now correctly hard-caps that team at the first apron — previously the restriction could silently disappear once the trade was saved
- • Base year compensation and poison pill salary-matching rules now carry over when a traded player is involved in a later trade, so follow-up deals are validated against the right numbers
improvement
Better Link Previews
- • Shared trade and scenario links now show a proper preview card in social apps and chat — including which teams are involved
- • Every page now has a branded preview image when linked on Discord, Twitter, and similar apps
feature
Delete Your Account
- • You can now delete your account from the Account page — type a quick confirmation and your email and sign-in details are permanently removed
- • Scenario links you've shared with others keep working after deletion; they're just no longer tied to you
improvement
Privacy Policy and Terms of Service
- • Added a Privacy Policy and Terms of Service, linked from the new footer at the bottom of every page
improvement
Launch Hardening
- • Sign-in sessions now last 90 days instead of effectively forever — when one expires, just request a fresh magic link
- • The feedback form and magic-link sign-in are now protected against spam, so a flood of repeat requests is politely asked to slow down
- • Fixed an issue where attaching three full-size screenshots to a feedback report could fail to submit
- • Typing unexpected values into roadmap, depth chart, draft pick, and admin contract fields no longer risks crashing the page
design
Friendlier Error Pages
- • If something goes wrong, you'll now see a proper Armchair GM page with a way back home instead of a generic browser error
- • Missing pages point you back to the home page and the team cap sheet grid, and error pages include a quick link to report the problem
fix
Salary Matching Thresholds Now Grow With the Cap
- • Trade salary matching now uses the cap-scaled buffer from the 2023 CBA — the $7.5M middle-tier allowance grows each year in proportion to the salary cap, so for 2026-27 teams below the first apron can take back outgoing salary plus about $9.1M
- • The boundaries between the 200%, buffer, and 125% matching tiers now rise each season to match the official NBA figures, so some trades that were previously rejected as too lopsided are now correctly allowed
- • The "show the math" breakdown and trade error messages show the scaled buffer and tier ranges for the season you're viewing
fix
Screenshots Show Up on Roadmap Items
- • Screenshots attached to feedback reports now display as images on the roadmap item instead of raw text — click one to open it full size
- • Links in roadmap items are now clickable, and section headings render properly
- • Roadmap card previews no longer show image code — just the description
feature
Your Handle on the Roadmap
- • Every account now has a public handle (like Crafty-Eurostep-4821) — it's how you appear as the reporter on roadmap items you submit, so your email address is never shown to anyone
- • Personalize your handle any time from the new Account page, linked from the menu under your name — or shuffle for a new random one
- • Roadmap cards and their detail view now show who reported each item by handle
- • Filter the roadmap by reporter with the new dropdown, or hit the My Issues button to see just the items you've submitted and track exactly where your feedback stands
- • When a fix for your report ships and lands in In Review, you'll see a Confirm It's Fixed button on the item — clicking it moves it to Completed, so nothing you reported gets closed without your sign-off
- • Changing your handle automatically relinks every roadmap item you've reported to the new name, so your history and confirm buttons follow you
- • Admins can mark an in-review item completed without waiting on the reporter, so items don't linger forever
fix
Feedback Reports Now Land on the Roadmap
- • Reports submitted through the feedback form now show up on the public roadmap right away in the New column — previously they were received but never surfaced there, which could make a report look like it disappeared
- • Recent reports that were affected have been added to the roadmap retroactively
feature
Player Landscape & Market Supply in the FA Market
- • A free agent's market page now has a Player Landscape view alongside the team landscape — flip the toggle to compare him against every player in the league, on the market or under contract
- • The player view uses the same instant filters as comparable contracts: position buttons, profile badges, a salary window, and an On the Market / Under Contract switch
- • A new Market Supply card captures scarcity: it counts comparable players at his position who are also free agents and labels the market Scarce, Balanced, or Crowded — because the only big man on the market gets paid differently than one of ten
- • Competing free agents appear as tappable cards that jump straight to their own market pages
- • The player landscape opens showing only players actually on the market — tap the status filters to bring under-contract players into view
improvement
Comparable Contracts, Rebuilt for Browsing
- • The comparable contracts view now shows every player in the league sorted by salary, instead of a fixed list of 15 algorithm-picked matches — scroll the salary neighborhood the way you'd scan a contracts page
- • One-tap position buttons (PG, SG, SF, PF, C) replace the dropdown, and a two-handle salary slider lets you widen or narrow the salary window instantly
- • Players now carry profile badges like 3&D Wing, Floor General, Rim Protector, and Stretch Big — tap a profile to see only players who fit that role
- • The view opens with smart defaults based on the player you're comparing: his positions, his profile, and a salary ceiling just above his contract — every default is a visible filter you can turn off to see the whole landscape
- • All filtering and sorting happens instantly with no waiting, and the projected value estimate still comes from the closest statistical comparables regardless of your filters
- • Filters are organized into labeled rows (Position, Age, Profile, Salary) and sized for phones, where a player's season stats now scroll sideways instead of squishing into unreadable columns
- • The whole filter panel collapses to a single line once you've set it — with a count of active filters — so it stops taking up screen space while you scroll the results
- • Tightened who earns the Shot Creator label: high shot volume alone no longer qualifies — it now requires efficient scoring or real playmaking on that volume
feature
Team Fit at a Glance in the FA Market
- • Every team row in a player's market now shows how many players that team has at his position, color-coded so thin spots and crowded rotations stand out instantly
- • Clicking a team opens a side panel with its roster and salaries, a position-by-position depth chart showing where the free agent would slot in, and the team's committed salary, cap holds, and cap space
- • The panel's depth view highlights the player's position and pencils him into the group so you can picture the fit
- • A button in the panel jumps to the team's full cap sheet, already set to the season you're exploring
feature
Multi-Team Trades, Redesigned
- • Trades with 3 or more teams now use a flow-centric view: a compact team rail up top, and a single ledger showing every asset in the deal with who sends it and who receives it — no more scrolling through a wall of roster cards
- • Each team chip shows its cap position, salary in/out, and whether its salary matching passes, and clicking it opens the roster in a slide-over panel for picking players, picks, and viewing exceptions
- • Adding and routing is one step: clicking a player in the roster panel shows team chips to send them to, and picks get a destination choice right in their configuration — no separate routing step afterward
- • Every asset in the deal can be re-routed to a different team at any time from a dropdown on its ledger row, without removing and re-adding it
- • Two-team trades keep the familiar side-by-side layout
- • Raised the team limit from 6 to 8 (the NBA record is a 7-team trade)
- • If something goes wrong while checking a trade, the page now shows a notice and keeps your trade intact instead of crashing and resetting
- • The scenario trade builder gets the same experience: at 3 or more teams it switches to the team rail, deal ledger, and slide-over rosters — with all the scenario extras (sign-and-trade cap holds, waive/decline roster actions, option resolution) intact inside the panels
improvement
Season Selection Everywhere
- • Player Contracts now has a season selector, so you can browse any season's contracts instead of being locked to the current one
- • Player Stats uses the same season selector style as the rest of the app, and your chosen season lives in the page link for sharing
- • Cap sheet links can include a season (for example ?season=2027-28) to open directly on that year's payroll view
- • All season selectors mark the league's active season so it's always clear which year is the real one
feature
Season Selector for Free Agency
- • Pick which free agency class you're exploring — the Free Agents list and FA Market now share a season selector covering the current season and any future season with cap thresholds loaded
- • Season choices live in the page link, so you can share a URL that opens directly on, say, the 2027-28 market
- • The league's active season now appears next to the logo on every page, and the FA Market always opens on it instead of skipping ahead a year
- • Fixed the FA Market showing a different season than the Free Agents page
improvement
In Review Stage on the Roadmap
- • The roadmap has a new In Review column between In Progress and Completed — when work on a ticket ships, it lands there instead of being closed immediately
- • Tickets only move to Completed once the person who reported them confirms the change works to their satisfaction, so your feedback gets a real follow-up instead of a drive-by close
fix
Trade Machine Stability Fix
- • Fixed a crash when removing a team from a trade or choosing a player's destination in trades with three or more teams
fix
Opt-Outs Now Leave a Cap Hold Behind
- • Declining a player option now puts the player's cap hold on the payroll for the option season — matching the real order of operations where the opt-out makes them a free agent before anything else happens
- • Opted-out players stay on the payroll as free agents with a hold, so you can re-sign, sign-and-trade, or renounce them right from their payroll cell — or exercise the option again to undo the decision
- • The declined option amount stays visible (struck through) next to the new cap hold so you can see what the player walked away from
- • The cap summary cards and cap position bar now pull their cap hold figures from the same per-season numbers as the payroll table totals, so they always agree for whichever season you're viewing
- • The cap position bar shows a lighter extension for cap holds on top of committed salary
fix
Free Agents List Shows Only True Free Agents
- • The Free Agents page no longer lists players who are still under contract for the current season — previously, players whose deals run through this season appeared a year early
- • The player market view now flags anyone who isn't actually a free agent for the season being explored, and bases cap holds and Bird-rights maximums on their last salary before free agency
improvement
Salary Matching, Explained
- • Every team in a trade now gets its own result card showing salary out, salary in, and a pass/fail badge for salary matching — even when the trade doesn't work
- • Click "Show the math" on any team card to see exactly which matching rule applies (cap room absorption, the 200%/$7.5M/125% tiers, or the 100% apron limits) and the calculation behind the team's maximum incoming salary
- • When a trade fails matching, the breakdown shows how far over the limit the team is instead of leaving you guessing
- • Teams above the second apron see a reminder that salaries can't be aggregated
- • Hover any abbreviated salary in the trade machine to see the exact figure — two players can both show $7.5M yet differ by enough to break the matching rules
- • The trade summary and the matching math now show exact dollar amounts, so salary mismatches are visible at a glance
feature
Cap Holds Panel
- • Added a dedicated Cap Holds panel to the cap sheet's Payroll tab — every free agent hold, renounced hold, and incomplete roster charge in one place, with the total always visible
- • Renounce any hold (or all of them at once) directly from the panel while building a scenario, and undo a renouncement with one click
- • Each hold shows the player's Bird rights level and the panel explains how holds affect your cap space
improvement
Clear Errors for Illegal Moves
- • Signing a player to an illegal contract now shows exactly which rule blocks it, right inside the signing window — no more moves that silently fail or appear to go through
- • Bird rights signings are now checked against the player's Bird maximum, with an explanation when a proposed salary exceeds it
- • Buyouts and waive-and-stretch moves now warn when the dead money entered exceeds the player's remaining guaranteed salary
- • Error messages include a link to the glossary entry for the rule involved, so you can read up on why the move is illegal
feature
Player Market Explorer
- • Explore the market for a specific free agent: every team's maximum offer to that player, capped at his max salary, with his current team pinned at the top showing what Bird rights allow
- • Set an asking price range — seeded from comparable players' salaries — and watch teams that can't reach it fade out of the market
- • Restricted free agents show a banner explaining the incumbent team's right to match any offer sheet
- • Jump in from the Free Agents list via the new Explore link on every player
fix
More Accurate Cap Holds
- • Cap holds for players coming off rookie-scale contracts now use the correct 250–300% multipliers, so first-round picks hitting free agency show realistic holds instead of standard Bird rates
- • Full Bird free agents who earned below the league's estimated average salary now carry the higher 190% hold the CBA prescribes
- • Cap holds are now capped at the player's maximum salary and floored at the minimum salary, so stars coming off rookie deals no longer show impossibly large holds
- • These corrections apply everywhere holds appear: the FA Market board, the Free Agents list, and team cap sheets
feature
FA Market Board
- • New FA Market page shows what every team could offer a free agent this offseason and the signing mechanism behind the number — cap space, mid-level, taxpayer mid-level, room exception, or minimum
- • Toggle between two views: the market as it stands today with every cap hold on the books, or each team's theoretical ceiling if they renounced all holds and waived non-guaranteed salary
- • Teams are grouped into market tiers — who can beat the full mid-level, who's capped at it, and who can only offer exceptions or minimums — with warnings where a signing would hard-cap the team
- • Find it under Contracts → FA Market
feature
Contract Renegotiation in Scenarios
- • Renegotiate a player's contract within a scenario from the payroll table's action menu — raise their salary using your cap room, with CBA rules enforced
- • Renegotiations require cap room, can only increase salary, and are only allowed after the third anniversary of the contract signing
- • Optionally carry the same raise into the remaining seasons of the deal, and undo a renegotiation at any time
fix
Smarter Stepien Rule Validation
- • Stepien Rule validation now counts every first-round pick a team holds, including picks acquired from other teams — previously only a team's own original picks were considered
- • Acquiring a first-round pick in the same trade now counts toward Stepien compliance, so trading your own pick while receiving another first-rounder in an adjacent year is correctly allowed
- • Trading one of two first-round picks held in the same draft year no longer incorrectly flags that year as uncovered
fix
Scenario Signing Fixes
- • Contract extensions now start immediately after the existing contract ends instead of leaving a gap year with a cap hold
- • Cap hold totals now correctly reflect option decisions made within a scenario — declining an option properly adds the player's cap hold to the total
feature
Trade Exceptions on the Thresholds Tab
- • The Thresholds tab now lists your team's active Trade Player Exceptions alongside the other available exceptions, showing the remaining amount and expiration date for each
- • Trade exceptions created by trades within your current scenario appear in the same list with a Scenario badge
feature
Free Agents Page
- • New Free Agents page lists every player whose contract expires after this season, with the cap hold their team carries until they re-sign, renounce, or lose them
- • Filter by name, position, or team and sort by any column, including last salary and cap hold amount
- • Each free agent shows their Bird rights tier and an estimated restricted/unrestricted status
- • Find it under Contracts → Free Agents in the navigation
fix
Search and Display Polish
- • Stats page columns no longer squish into unreadable text on phones — the table now scrolls sideways with clear, readable headers
- • Player searches that come up empty now explain why and suggest what to try, including a reminder when the Free Agents tab is hiding players who are under contract
- • Smoothed out the glitchy hover animation on team icons in the home page cap sheet grid
improvement
Trade Builder Improvements
- • Trades that generate a Traded Player Exception (TPE) now display an informational callout explaining the exception amount and how it can be used
- • Acquired draft picks now show which team they came from (e.g. 'via IND') instead of a generic label
- • Draft picks in the assets tab are now sorted by year and round instead of showing acquired picks at the bottom
- • Fixed trading a previously acquired draft pick to a third team not correctly removing it from your assets
feature
Mini-Payroll in Trade Builder
- • Trade builder team cards now show cap space, first apron space, and second apron space at a glance
- • Decline player or team options directly within a trade to free up salary
- • Waive players or renounce cap holds without leaving the trade builder
- • Threshold numbers update in real-time as you build the trade
fix
Bug Fixes
- • Players on expired contracts no longer appear in both the regular roster and cap holds sections of the trade builder — they now only show in the Sign & Trade section where they must be signed to a contract before being traded
- • Fixed team names showing duplicated city names in the Team Contracts page
- • Research popup no longer carries over when switching between players
- • Comparable Contracts panel stays open while you interact with the rest of the page
improvement
Roadmap Improvements
- • Roadmap now shows all tracked issues from beta feedback across Backlog, Planned, and In Progress columns
- • Clicking any roadmap card opens a detail view with the full description, labels, and activity history
- • Enhancement and feature request items now display with distinct badge colors for easier scanning
feature
Automated Contract Refresh
- • Contract data can now be refreshed in bulk from Spotrac instead of one player at a time
- • Stale contracts (not updated in 7+ days) are automatically prioritized
- • Progress tracking shows which player is currently being updated
improvement
Player Browser
- • The "Add Player" button now opens a full player browser with a searchable, sortable table of every NBA player
- • Toggle between Free Agents, All Players, and Draft Picks tabs
- • Filter by name, position, or team and sort by any column
- • Contracted players can be signed as buyout candidates with a single click
feature
Feedback & Roadmap
- • Submit bug reports, data issues, feature requests, and other feedback directly from the app
- • Attach screenshots by selecting files or pasting from your clipboard
- • Quick-access feedback button available on every page — swipe it away if you don't need it
- • View the product roadmap to see what's new, planned, in progress, and completed
- • Roadmap is managed as a drag-and-drop kanban board by the admin team
improvement
Depth Chart Improvements
- • Drag and drop players between depth chart slots to rearrange your rotation without clearing and re-adding
- • Dragging a player onto an occupied slot swaps the two players automatically
- • Unassigned roster players and draft picks can also be dragged from the picker directly into slots
- • Fixed player photos not appearing for players acquired via trade or free agent signing
feature
Contextual Feature Guides
- • Helpful tips now appear the first time you open a feature like the player profile, trade builder, or signing modal
- • Each guide explains what the feature does and how to use it, without interrupting your workflow
- • Guides only show once per feature and won't repeat after you dismiss them
feature
Buyout & Waive-and-Stretch Support
- • Team cap sheets now show dead money from real-world buyouts including Lillard, Beal, Ayton, Nassir Little, Cole Anthony, Liddell, and Micic
- • Dead money appears in a dedicated section of the payroll projection and counts toward cap, luxury tax, and apron calculations
- • Buy out or waive-and-stretch any contracted player in scenario mode to model cap relief strategies
- • Non-stretch buyouts keep dead money on the original contract schedule; stretch provision spreads it over (2 × years + 1) seasons
- • Dead money is included in trade salary matching and cap position calculations for all teams
fix
Player Photo Fixes
- • Fixed missing and incorrect player headshot photos across the app by refreshing player IDs from official NBA data
- • Editing a player's NBA Player ID now shows a clear error message if that ID is already assigned to another player
feature
Stats & Contracts Pages
- • New Stats page lets you browse and compare player statistics across the league with search, position and team filters, and sortable columns
- • Stats are organized into Per Game, Shooting, Advanced, and EPM tabs to keep things easy to digest
- • New Team Contracts page shows every team's committed payroll across multiple seasons, with projected cap holds shown in parentheses
- • Team Contracts columns are sortable — click any season header to rank teams by that year's payroll
- • New Player Contracts page displays all player contracts sorted by salary, with contract type, options, and guaranteed amounts
- • Added Contracts dropdown in the navigation bar with links to Team and Player contract views
improvement
Data Editing Tools
- • Admins can now edit player information, stats, and contracts directly from the Stats and Player Contracts pages
- • Edit forms include all player fields — name, position, bio, bird rights, trade restrictions, draft combine measurements, and NBA Player ID for correcting headshot photos
- • Stats page edit modal allows updating all statistical fields for the selected season
- • Player Contracts edit modal allows inline editing of salary, cap hit, and guaranteed amounts per contract year
fix
Security & Reliability
- • Shared scenarios are now properly read-only — only the scenario owner can save, delete, or share
- • Fixed an issue where viewing a shared scenario with multiple teams could fail under certain conditions
improvement
Scenario Management Improvements
- • Deleting a scenario now only removes the entire set if you created it — removing a linked team's scenario cleanly undoes cross-team transactions while keeping the original scenario intact
- • Removing a trade now correctly resets any player option decisions that were part of that trade
- • Fixed a rare issue where two users viewing the same shared scenario could create duplicate team entries
feature
Cap Sheet Guided Tour
- • New users now see a step-by-step guided tour that walks through the cap sheet interface
- • The tour highlights key areas including cap summary cards, the cap position bar, scenario tabs, content tabs, and the payroll table
- • You can skip the tour at any time, and it won't appear again once completed
feature
Multi-Team Scenarios
- • Scenarios now track changes across all teams involved in your trades — execute a trade on one team and see the impact on the other team's cap sheet automatically
- • A team navigation bar appears when your scenario involves multiple teams, letting you quickly switch between perspectives
- • Trades made from another team's perspective appear in your trade history with a visual indicator and cannot be edited from that side
feature
Player Option Resolution & Sign-and-Trade Improvements
- • The trade builder now detects players with unresolved contract options (player options, team options, and early termination options)
- • You must resolve each option before the trade can be evaluated, since the player's trade salary depends on the decision
- • Exercising the option keeps the player's option-year salary for trade matching
- • Opting out transitions the player into the sign-and-trade flow with full contract builder
- • Sign-and-trade contracts are now configured inline in the trade summary instead of the team card below
- • The S&T contract form now uses the player's actual bird rights to calculate maximum salary, with a salary slider, multi-year terms, annual raise percentage, and player/team option support
- • Option badges (PO, TO, ETO) are now visible on player cards in the trade builder roster list
feature
Comparable Contract Tool
- • Find players with similar stats and compare their contracts to evaluate market value or discover replacement options
- • Click the scale icon on any player in the cap sheet to open the comparable contracts modal
- • Full player profile with stats, advanced metrics, and contract history displayed at the top of the modal
- • Toggle between basic stats and advanced metrics (EPM offense/defense/overall percentiles, PER, BPM) in the results table
- • Sort results by clicking any column header — hold Shift to add secondary sorts
- • Production-weighted market value projection estimates what a player should earn based on comparable contracts, adjusting for over- and under-pays
- • Filter results by position group, max salary, and age range
- • View a side-by-side stat and contract comparison with team-colored banners for any comparable player
- • Jump directly into a trade, free agent signing, or sign-and-trade from the comparison results
improvement
Player Data Backfill
- • Added height, weight, and date of birth for the majority of players using NBA.com player bios
- • Imported Draft Combine measurements (wingspan, standing reach, body fat, hand size, vertical leap, sprint, agility, bench press) for players who attended the combine
- • Age-based filtering in the comparable contract tool now works for most players
design
Cap Position Bar Redesign
- • Redesigned the cap position thermometer with a cleaner, flatter track and precise threshold tick marks
- • Added labeled annotations (Cap, Tax, 1st, 2nd) above each threshold for easier identification
- • Updated the legend with smaller, more refined styling
fix
Mobile Cap Sheet Fix
- • Player profile stats tables no longer misalign when scrolling the payroll table horizontally on mobile
- • Advanced stats column headers now scroll in sync with data rows
design
Improved Salary Tooltips
- • Hovering over a salary now shows a styled tooltip with the full dollar amount and percentage of the cap, appearing instantly instead of after a browser delay
- • On mobile, tap any salary to see the same detail — no long-press needed
feature
Player Profiles & EPM Ratings
- • Click any player to expand a full profile with headshot, team colors, and tabbed views for Stats, Advanced, and Contract data
- • Added EPM (Estimated Plus-Minus) ratings from Dunks & Threes — see offensive, defensive, and overall percentile rankings for every player
- • EPM ratings appear as color-coded badges under each player's name, with a toggle to show or hide them (preference is remembered across sessions)
- • Multi-season stat tables in basketball-reference style show per-game, shooting, and advanced metrics with up to 5 years of history
- • Contract details are now viewable in the player profile — admins can edit salaries, options, and flags inline
- • Contract research (Spotrac lookup) is now available directly from the player profile contract tab
- • Added glossary entries for all advanced metrics — hover over any stat column header for an explanation
improvement
Stats Data Pipeline
- • Player stats are now fetched via a reliable Python pipeline using the nba_api library, replacing the direct NBA.com API which frequently timed out
- • Stats now load for all players on a roster, including those acquired through trades or free agency in scenarios
feature
Inline CBA Glossary
- • CBA terms throughout the app now show contextual definitions on hover — no need to leave the page to look up what Bird Rights or the First Apron means
- • Info icons appear next to salary cap thresholds, trade rules, signing exceptions, and other cap terminology
improvement
Cap Percentage & Salary Formatting
- • Team salary now shows what percentage of the salary cap it represents
- • Hovering over any contract in the payroll table shows the full dollar amount with commas and the percentage of the cap it occupies
- • The thresholds tab now includes a '% of Cap' column showing each threshold relative to the salary cap
feature
Sign-and-Trade Support
- • Cap holds now appear in the trade builder for every team — click one to propose a sign-and-trade with custom contract terms (salary, years)
- • Define S&T contracts inside the trade builder where you can see both teams' cap situations side by side
- • Base Year Compensation applies automatically — the sending team's outgoing salary is reduced to 50% for trade matching
- • Receiving a sign-and-trade player triggers a first apron hard cap, and trades that would exceed it are blocked
- • Three-team sign-and-trades are fully supported — BYC and hard cap rules follow the player to whichever team receives them
feature
League-Wide Scenarios
- • Scenarios now track the entire league — players you've signed or traded away from other teams no longer appear on those rosters
- • Modify other teams' cap sheets within your scenario to model how they might clear space before a trade
- • Waive players or renounce cap holds on any team, with changes reflected in trade validation and saved with your scenario
feature
Second-Round Draft Pick Support
- • Cap sheet projections now support adding second-round draft picks alongside first-rounders
- • Quick-add buttons appear for both first and second-round picks with known slot numbers
- • Second-round picks project at 2-year minimum salary contracts
design
Dark Mode Default
- • Dark mode no longer activates automatically based on system preferences — light mode is now the default for all users
feature
Pick Protection & Swap Rights
- • Clicking a draft pick in the trade builder now opens a configuration panel instead of immediately adding it
- • Choose between trading the pick outright or offering swap rights
- • Set protection levels (Top 1-11) with conveyance options — next year's first, second round, or not conveyed
- • Custom protection text for complex multi-year protections
- • Protection and swap badges appear in the trade summary
- • Picks 12-15 cannot be protected, per the new NBA rules
improvement
Undo Trades from Payroll
- • Traded-in players now show a "via LAL" badge indicating which team they came from
- • You can undo an entire trade directly from a traded-in player's row in the payroll table
- • A confirmation dialog shows the trade name and warns that all players and picks from that trade will be removed
improvement
Updated Draft Pick Data
- • Updated 2026 draft order to reflect actual lottery results (Washington #1, Utah #2, Memphis #3, Chicago #4)
- • Added pick numbers for all 60 picks in the 2026 draft — picks now show as "2026 1st (#11)" instead of just "2026 1st"
- • Added second-round draft picks to the trade builder (previously only first-round picks were available)
- • Added missing traded picks for 2027-2031 including Bridges, Lillard, Simmons, and Grant Williams trades
- • Corrected pick protections with detailed thresholds and conveyance rules
- • Every traded pick now shows its trade lineage (e.g. "via Milwaukee (Holiday trade)")
fix
Trade Validation Fixes
- • Fixed Stepien Rule incorrectly flagging trades involving only second-round picks
- • Fixed Stepien Rule showing violations that existed before the trade (only flags gaps caused by the current trade)
- • Trade validation errors now name the specific team instead of saying "This team"
- • Error and warning messages are now clearly readable in dark mode
- • Validation no longer fires until both teams have selected at least one outgoing asset
- • Increased validation delay so results don't flash while you're still selecting players
feature
Trades in Scenarios
- • You can now execute trades within a cap scenario to simulate full offseason plans
- • Traded-in players appear with their real contract data in your team's payroll projection
- • Trade validation runs against your scenario-adjusted salary and cap position
- • Draft picks and trade exceptions from trades are reflected in your scenario
- • Remove a trade to revert your roster — any re-signings of traded-in players are also cleaned up
design
Trade Builder Polish
- • Player headshot photos now appear in the trade builder — both in the player list and trade summary
- • The "Make a Trade" button is now positioned next to the Payroll/Thresholds/Assets/Depth Chart tabs
- • The scenario trade builder opens as a modal overlay instead of inline on the page
- • The trade builder validates against your scenario's adjusted salary and cap position, not stale league data
design
Mobile-Friendly Redesign
- • Added a hamburger menu for navigation on phones and small tablets
- • Modals and popups now fit properly on small screens instead of overflowing
- • Buttons and table rows are easier to tap on touch devices
- • Team cap sheet page header stacks vertically on mobile for better readability
- • Scenario tabs scroll horizontally on small screens instead of wrapping awkwardly
- • Tables show a fade indicator when they can be scrolled sideways
- • Form inputs no longer trigger zoom on iOS when focused
- • Added support for notched devices (iPhone safe areas)
design
Dark Mode & Visual Refresh
- • Added dark mode with a toggle in the top navigation bar
- • Your theme preference is remembered across sessions
- • Redesigned the overall look with a cleaner, more modern feel
- • Improved contrast and readability across all pages