Skip to main content
← Back to Capr.

Changelog

New features, improvements, and fixes shipped to Capr.

v0.10.0

Smarter pick values, dismissable alerts, and time travel

📊Trade Calculator

  • New

    Team build modifier on draft picks

    Picks are now automatically adjusted based on the original team's strength. Rebuilder picks get boosted up to +25% and contender picks are derated up to −25%, using a composite power score of win rate, points scored, and cap usage.

  • New

    Power ranking badge on picks

    Every pick in the trade calculator now shows the original owner's record and a color-coded tier badge (Contender, Competitive, Mid-Pack, Rebuilding, Teardown) so you can see pick quality at a glance.

🛡️Commissioner Suite

  • New

    Dismissable alert system

    Commissioner alerts are now typed by severity (critical, warning, info) with individual dismiss and 7-day snooze controls. Dismissed alerts live in a collapsible drawer and can be restored at any time.

  • New

    Roster over-limit lockout

    Teams exceeding the active roster limit are now blocked from making roster moves until they cut down. The commissioner dashboard shows a dedicated widget with per-team cut requirements.

  • New

    Time travel mode

    Test leagues can now rewind or fast-forward to any point in the season. Commissioners can simulate offseason transitions, score entry, and waiver processing at arbitrary dates.

📝Waivers & Free Agency

  • Fixed

    Active roster limit enforcement

    Waiver claims and free agent signings now check the active roster limit (starter + bench only) instead of total roster size, so taxi and IR slots no longer block pickups.

  • Fixed

    Deduplicated waiver wire

    Players with multiple terminated contracts no longer appear as duplicate entries on the waiver wire. Only the most recent contract is shown.

🏠Dashboard

  • Improved

    Streamlined league home

    Removed the full-width cap standings table from the league dashboard for a cleaner layout. Cap data is still accessible from the dedicated Cap Hub pages.

v0.9.0

Auth hardening, real-time everywhere, and accessibility overhaul

🔒Security & Authorization

  • Security

    Role-based API route protection

    All commissioner-only API routes now use a unified withCommissioner wrapper with CO_COMMISSIONER co-manager support. Expanded the protected routes manifest from 4 to 12 endpoints.

  • Security

    Cross-league data isolation

    Trade finder and all league API routes now verify league membership server-side, preventing authenticated users from accessing other leagues' data.

  • Security

    Co-manager permission enforcement

    New requireTeamAccess helper enforces VIEW_ONLY, ROSTER_CONTROL, and CO_COMMISSIONER permission levels on every team-scoped endpoint — not just in the UI.

  • Security

    Score override authorization

    Manual score entry endpoint refactored to use the standard commissioner wrapper with full audit logging for every override.

🤝Trades

  • New

    Optimistic trade submission

    Proposed trades now appear instantly with a pending state card while the server confirms, eliminating the wait-and-refresh cycle.

  • Improved

    Real-time trade list

    Trade list updates automatically via Realtime subscriptions when other teams propose, accept, or counter trades.

  • Improved

    Enhanced trade conditions

    Rebuilt the condition builder to support multi-team trades with flexible asset configurations and more accurate condition summaries.

  • New

    Trade finder filters

    New filter bar on trade block suggestions — sort by match score, need, or activity, with position-specific filtering.

📋Draft Room

  • Improved

    50% faster draft page load

    Draft room and auction board are now code-split with dynamic imports, cutting initial page weight by ~300 KB.

  • New

    Mobile persistent cap bar

    Always-visible cap bar on mobile during auctions shows budget, cap used, active bids, max bid, and slots filled at a glance.

  • New

    Cap health color coding

    Consistent traffic-light system across draft boards: green (>30% remaining), amber (15–30%), red (<15%).

  • New

    Keyboard-navigable auction tabs

    Full WAI-ARIA Tabs pattern on the mobile auction board — arrow keys, Home/End, and proper focus management.

💰Cap Management

  • New

    Cap health scoring

    New holistic cap health algorithm that factors utilization, dead cap, roster size, contract distribution, and future projections.

  • New

    Cap rollover tracking

    Teams now carry unused cap space forward between seasons when rollover is enabled in league settings.

  • New

    League cap standings

    Full-width standings widget on the league dashboard showing every team's cap utilization, health score, and dead cap.

  • New

    War Room quick link

    One-click access to the cap simulator directly from the league dashboard KPI cards.

📝Free Agency & Offseason

  • Improved

    Optimistic bid placement

    Bids appear instantly in bid windows with automatic rollback if the server rejects them.

  • Improved

    Real-time bid windows

    Bid window and slow auction hubs now sync via debounced Realtime subscriptions instead of polling.

  • New

    Anti-snipe protection

    Slow auctions auto-extend deadlines when a competing bid arrives within the snipe window (default: 1 hour).

  • New

    Binding nominations

    New setting for slow auctions: when enabled, a nominating team's opening bid is binding — they win if nobody else bids.

🧭Navigation & UI

  • New

    Redesigned sidebar navigation

    Six focused nav groups — Home, Roster & Trades, Cap Hub, League, Offseason Hub, and Commissioner — replacing the previous four-section layout.

  • New

    Offseason phase indicator

    Prominent phase badge with deadline countdown in the sidebar, replacing the old text-only pill.

  • New

    Commissioner nav section

    Dedicated commissioner navigation group with shield icon and pending-action count badge.

  • Improved

    Skip navigation link

    Keyboard users can now skip directly to main content on every page.

Accessibility

  • Improved

    WCAG AA contrast compliance

    All text, borders, and interactive elements updated to meet 4.5:1 (text) and 3:1 (non-text) contrast ratios in both light and dark modes.

  • New

    Full keyboard navigation

    StripeTabs, auction boards, and trade block modals now follow WAI-ARIA patterns with arrow key navigation, focus trapping, and Escape-to-close.

  • Improved

    Dialog accessibility

    All modals now include role="dialog", aria-modal, and aria-labelledby attributes with automatic focus trapping.

🚀Onboarding

  • New

    League creation templates

    New first step in league creation: choose from pre-configured templates that auto-fill scoring, roster, and cap settings.

  • New

    Getting started checklist

    Interactive checklist on the league dashboard guides new owners through their first roster view, cap check, free agent browse, and transaction.

  • New

    Welcome modal for new teams

    First-time team owners see a friendly welcome modal introducing their league and key features.

  • Improved

    Enhanced league join preview

    Richer league preview card on the join page showing season, team count, status, and settings at a glance.

⚙️Settings

  • New

    Simple / Advanced settings toggle

    New commissioners see a streamlined settings view by default. Toggle to advanced mode for cap escalation, rollover, and floor controls.

  • New

    Inline setting tooltips

    Hover any cap-related setting to see a plain-language explanation of what it does and how it affects your league.

  • Improved

    NFL game-day schedule model

    Trade and roster locks now use real ESPN kickoff times instead of hardcoded day-of-week windows.

Performance

  • Improved

    Shared Realtime refresh hook

    New useRealtimeRefresh hook replaces per-component Supabase subscriptions with debounced batch updates, reducing re-renders across trades, standings, and bid windows.

  • New

    Real-time row flash animations

    Subtle slate-blue highlight animation when Realtime data changes, so you always know what just updated.