February 2026
β Back to Index
February 27, 2026
β¨ Features
- api: schedule audit and fix duplicate helper function
- api: add pp:audit-user-completion-days command
- api: add pp:backfill-user-completion-days command
- api: add personal daily completion streak
- home: add personal completion streak badge
π Bug Fixes
- api: use insertOrIgnore for race-safe writes in audit/backfill commands
- home: harden streak header layout on narrow widths
π Documentation
- api: move websocket root docs to docs archive
- mobile: remove archived websocket root docs
February 26, 2026
β¨ Features
- home: implement PartyCard overflow menu and accessibility hardening
π Bug Fixes
- navigation: remove scoreboard/standings cross-links
February 25, 2026
β¨ Features
- api: add games list to Party Nova detail page
- home: add standings shortcut on party cards
- standings: add direct scoreboard shortcut
π Bug Fixes
- scoring-explainer: address PR review feedback
- scoring-explainer: add web plain-English-first explainer view
- scoring-explainer: backfill plain-English fixture content and checks
- scoring-explainer: add plain_english contract validation and fallback
- api: remove #[Locked] from diagnostics property to prevent poll exceptions
- scoring-explainer: prioritize plain-English content
- ios-share: remove dead top area and stabilize layout\n\nFixes #543\n\n- Remove custom full-screen dimmed bottom-sheet simulation in share extension\n- Size extension content via preferredContentSize and adaptive text-area sizing\n- Fix repeated textView constraint activation on trait changes\n- Keep keyboard dismissal and import/cancel behavior intact
February 24, 2026
β¨ Features
- games: harden scoring explainer contract for web telemetry
- games: add web scoring explainer entry-point routing support
- games: add scoring explainer API contract and caching
- dot: add non-persisted ping/nag commands
- feed: handle dot nag modal and command ack flow
π Bug Fixes
- games: enforce strict scoring explainer validation gate
- games: add scoring explainer fixtures and parity tests
- games: address PR feedback on cleanup migration idempotency
- games: clean active placeholder games and normalize scoring config
- faq: add iOS share extension setup guide
- mobile: address PR540 scoring explainer review feedback
- mobile: add scoring explainer deep links, cache, and analytics
- mobile: address scoring explainer review comments
- mobile: add scoring explainer entry points and screen
- onboarding: address PR review feedback
- onboarding: add iOS share extension walkthrough card
- ios: use staging-specific custom URL scheme for share deep links
February 23, 2026
π Bug Fixes
- api: harden quordle share-parsed validation and scoring
- web: group game family variants on /games
- feed: expose can_react contract and test system message reactions
- parser: normalize nested emoji_grid in ParsedPuzzleResult getter
- parsing: derive quordle emoji_grid from board tokens
- launch: implement app store readiness issues #516 #517 #518
- feed: preserve puzzle streak when reactions update
- feed: consume can_react to gate reaction interactions
February 22, 2026
π Bug Fixes
- schedule: run audit completion fixer 4x daily
- scoreboard: refine quordle display guess semantics\n\n- Return display_guess_count only for solved entries\n- Add PHPDoc for new formatter helpers\n- Tighten quordle emoji_grid assertion and add unsolved quordle test
- scoreboard: expose quordle display fields and emoji grid\n\nFixes #410\n\n- Add display_guess_count derived from max(board_results)\n- Expose quordle fields (board_results/solved_count/failed_count/total_attempt_score/variant)\n- Normalize emoji_grid from both grid and emoji_grid payload shapes\n- Add scoreboard tests covering quordle response contract
February 21, 2026
π Bug Fixes
- api: add post-deploy game catalog parity smoke check
- api: align eligibility filters and diagnostics for soft-deleted games
- api: unify puzzle eligibility and add share preflight
- feed: allow reactions on Dot system messages
- games: add browse fallback and error state for catalog loading
- mobile: use structured eligibility failures in submit recovery
- mobile: use share-preflight for submission parity
February 20, 2026
β¨ Features
- api: add Quordle parsing and scoring support
- api: add Quordle game records and category mappings
- mobile: add Quordle parser support for all variants
π Bug Fixes
- quordle: align checkmark mapping with max guesses and expand coverage
February 19, 2026
β¨ Features
- api: add variant fields to GameResource and grouped API response
- api: add GameFamily model and update Game model for variants
- api: create game_families table and add variant columns to games
π Bug Fixes
- feed: deterministic tie-breaking for mixed feed items
- home: include active games in parties response
- api: preserve display_order in grouped API response
February 18, 2026
π Bug Fixes
- share-parsed: recover missing mini time_seconds from raw text
π Documentation
- parsers: clarify emoji normalization robustness
February 17, 2026
π Bug Fixes
- api: enforce mini time validation for mini identifier
- parties: harden game-activation backfill transaction flow
- parties: backfill same-day entries when games are added
- sync: make party game roster changes authoritative in incremental sync
- share: harden party support check and make no-support dialog dismissible
February 16, 2026
π Bug Fixes
- wordle: support color-blind tile parsing
February 15, 2026
π Bug Fixes
- parties: enforce practical party-name length limit
February 14, 2026
β¨ Features
- mobile: add Apple review feature flags to hide incomplete features
π Bug Fixes
- devices: address PR feedback for null device_id and transfer logging
- devices: reconcile registration collisions and allow multi-device iOS
- push: preserve retry failure state on initial registration
- push: add resilient device registration retry and telemetry
- party: apply selected icon/theme in UI immediately
February 13, 2026
β¨ Features
- api: add periodic audit command for party_completion_days integrity
- nova: add GameCategory resource and discovery fields to Game resource
- games: add categories endpoint, discovery fields in API, and seeders
- games: add game categories and discovery fields
- mobile: redesign Games tab with browse rows, featured card, and compact suggestions (#432)
- mobile: add category chip filtering to Games tab (#428)
- mobile: add game card widgets (compact, list, featured) (#431)
- mobile: add client-side game search to Games tab (#425)
- mobile: add GameCategory model and Game discovery fields (#424)
π Bug Fixes
- assetlinks: remove staging placeholder fingerprint
- api: improve audit-completion-days with date-aware membership and exit code fix
- api: add missing catalog fields to GameResource
- perfect-day: use party timezone instead of submitting userβs timezone
- games: exclude inactive games from category counts and wire seeder
- streak: use user timezone for streak calculation instead of server UTC
- mobile: make streak updates only increase within a session (#443)
- mobile: clear category filter when search begins to prevent hidden filtering
February 12, 2026
β¨ Features
- party-games: add PartyGamesUpdated event, push notification, and feed message
- party-games: add PUT endpoint for updating party games
- api: add PartyStreakUpdated broadcast event for real-time streak updates
- api: migrate staging domain to puzzleparty.dev
- api: Add AppleReviewSeeder for TestFlight and App Store review
- api: Add Nova admin visibility for Perfect Days and completion streaks
- api: Add completion_streak to Party API responses (detail, list, and home)
- api: Implement HandleAllPuzzlesCompleted listener with Dot message, push notification, and silent late-submission mode
- api: add pp:backfill-completion-days artisan command
- api: add PartyCompletionStreakService for streak calculation
- mobile: add ManageGamesScreen and scoreboard roster change indicators
- mobile: add PartyGamesUpdated WebSocket handler and updatePartyGames API method
- mobile: update streak badge in real-time when Perfect Day is achieved
- mobile: migrate staging domain to puzzleparty.dev
π Bug Fixes
- party-games: wrap broadcast event in try/catch for error resilience
- scoreboard: derive puzzle entries from party_scores instead of active games
- party-games: move reads inside transaction with lockForUpdate
- website: point changelog link to published site
- games: resolve null type cast crash when saving game roster
- settings: update Manage Games row to match spec
- mobile: persist tiebreaker changes and reset roster banner on party switch
- share: use percent-encoding for SMS invite body to avoid + signs
February 11, 2026
β¨ Features
- api: add party_completion_days table and PartyCompletionDay model
- api: add Perfect Day templates to Party Animal config
February 4, 2026
π Bug Fixes
- analytics: Track auth_completed and auth_failed events in FederatedAuthController
- backfill: use user timezone for date calculations
- party: always sync same-day puzzle entries when creating/joining parties
February 3, 2026
β¨ Features
- auth: add profile update endpoint and fix Apple relay email name handling
- auth: prompt Apple Sign-In users with placeholder names to set display name
- auth: implement Apple and Google Sign-In
π Bug Fixes
- auth: implement server-side verification for Apple/Google Sign-In tokens
- deps: pin google_sign_in_ios for Firebase SDK compatibility
February 2, 2026
β¨ Features
- nova: add Invite Analytics dashboard with health monitoring
- auth: implement provider switching and account linking (V1 soft-link)
- invite: implement party invite landing page with deep linking
- analytics: implement analytics events API with identity stitching
- invite: add invite_url and games list to API responses (#292)
π Bug Fixes
- changelog: use origin/main for API repo in production env
- changelog: use origin/ prefix for mobile repo branches
- ci: add Nova credentials to tests workflow
- ci: add Nova credentials to lint workflow