January 2026
β Back to Index
January 28, 2026
β¨ Features
- changelog: add dual environment support (dev/production)
π Bug Fixes
- ci: use Nova license credentials for composer install
- ci: properly remove Nova from composer.json before install
- ci: skip Laravel Nova in changelog workflow
- home: use userβs timezone for daily data calculations
January 27, 2026
β¨ Features
- party: respect backfill_enabled setting on party creation
- party: add backfill_enabled column to parties table
- changelog: add automated changelog generation system
- party: Display backfill status in party details
- party: Add backfill toggle to party creation screen
- model: add backfillEnabled field to Party model
π Bug Fixes
- mobile: Enable SQLite tests with sqflite_common_ffi and skip incomplete tests
- home: Update party name immediately on home screen
- mobile: Resolve 18 failing widget tests
- feed: Update party name in UnifiedFeedScreen when changed
- party: Update party name immediately after change in settings
- ui: remove redundant subtitle from game tiles in Create Party screen
January 26, 2026
β¨ Features
- party-animal: announce party name changes in feed
- controller: broadcast PartyUpdated event on party update
- events: add PartyUpdated WebSocket event for real-time party updates
- websocket: handle party.updated event for real-time name sync
π Bug Fixes
- admin: update WebSocket diagnostics for UUID-based channel tokens
- ui: rename βSubmit Puzzleβ to βPost Puzzle Resultsβ
- share: navigate to home screen when receiving shared puzzle
January 25, 2026
β¨ Features
- testflight: Add share extension tip to TestFlight page
- api: add TestFlight instructions page
- ui: Add toggleable side menu for iPad landscape mode
π Bug Fixes
- auth: return user-friendly error message for login failures
- ios: Remove unused CFBundleDocumentTypes to resolve ITMS-90737 warning
- auth: Improve login error messaging to be user-friendly
- config: Align environment flag with codemagic.yaml to fix staging builds
- share: Show friendly explanation in staging when sharing invite codes
- party: Hide edit button until store/themes are implemented
- login: Remove server selection dropdown from login screen
- ios: Fix share extension App Group mismatch and add staging isolation
- config: Change default environment from staging to production
- ui: Replace puzzle piece icon with party hat emoji on login screen
π Documentation
- api: add party sharing limitations to TestFlight page
January 24, 2026
β¨ Features
- mobile: Configure staging app icon
- mobile: Add default app icon
- ios: Update Google service configuration for new bundle ID
January 23, 2026
β¨ Features
- codemagic: standardise iOS export options plist path
π Bug Fixes
- ci: use correct Codemagic export options path
- ci: correct export-options-plist path for Codemagic
- ci: add bundle ID override for staging iOS builds
January 22, 2026
β¨ Features
- feed: add streak field to puzzle entries in feed API
- streak: implement StreakService for calculating puzzle streaks
- feed: display streak badge on puzzle entries
π Bug Fixes
- devices: prevent duplicate push notifications from duplicate device records
- websocket: broadcast PuzzleSubmitted to single channel to prevent duplicates
- websocket: improve puzzle.submitted event deduplication
January 21, 2026
β¨ Features
- api: Add separate 2nd and 3rd place counts to standings
- api: Implement StandingsController and API routes
- standings: Implement StandingsService for point calculation
- deps: Update Livewire packages
- deps: Update League URI packages to 7.8.0
- deps: Update Laravel framework and ecosystem packages
- deps: Update Google Cloud PHP dependencies
- deps: Update aws/aws-sdk-php to 3.369.16
- standings: redesign standings page with table layout
- standings: build standings UI screens and components
- standings: add data models and API client methods
π Bug Fixes
- scoreboard: resolve RenderFlex overflow in player detail sheet
- scoreboard: use PartyLineHomeProvider for party dropdown
- standings: make podiums field optional in API response
January 20, 2026
β¨ Features
- api: implement store API endpoints for products and purchases
- reactions: add reactions to feed and broadcast events
- api: implement reaction API endpoints
- reactions: implement Reaction model and HasReactions trait
- reactions: add database schema for reactions and IAP
- reactions: handle real-time reaction WebSocket events
- reactions: integrate reactions into unified feed
- reactions: add reaction data models and API integration
- reactions: implement ReactionBadges widget
- reactions: implement ReactionPicker widget
- websocket: add toggle to disable WebSocket debug logging
π Bug Fixes
- home: include channel_token in party response for WebSocket subscriptions
- api: send user object in ReactionRemoved event instead of user_id
- api: serialize empty reaction summary as JSON object not array
- notifications: deduplicate notifications across multi-party submissions
- notifications: prevent users from receiving self-notifications
- websocket: re-establish PartyLineHomeProvider listeners after reconnect
- realtime: subscribe to party channels from home screen for WebSocket events
- reactions: handle own reactions from other devices in WebSocket events
- feed: enable long-press reactions on messages
January 19, 2026
π Bug Fixes
- api: add debug logging and explicit is_active for submission validation
- api: allow puzzle submissions to paused parties
- api: include games in party list and validate party_games.is_active
- mobile: sync games to local DB when fetching home data
- parsers: refactor puzzle date calculation to use anchor-based approach
- home: workaround iPadOS 26.1 PopupMenuButton immediate dismiss bug
- sync: skip redundant API calls for party games
January 18, 2026
β¨ Features
- navigation: simplify to 3 tabs with FAB speed-dial
π Bug Fixes
- home: prevent FAB mini buttons from capturing taps when collapsed
- ux: make FAB speed-dial options fully tappable pill buttons
- navigation: lookup full party from PartyProvider by ID
January 16, 2026
β¨ Features
- assets: Implement static assets system with auto-generated manifest
- dot-command: Add @dot pd command to display todayβs puzzle info
- assets: integrate with API asset manifest for icons and avatars
π Bug Fixes
- dot-command: Add resilience to @dot command handling
- api,icons: correct static asset URLs and add SVG rendering support
- feed: add puzzle date and submission date to entry detail modal
- parser: correct Wordle epoch date calculation
- share: populate submit puzzle field with shared text from iOS extension
- ios: improve share extension UI on iPad
- parser: use UTC dates to prevent DST-related off-by-one errors
January 15, 2026
β¨ Features
- parser: Add puzzle date calculation to Connections: Sports Edition
- parser: Add Connections: Sports Edition game parser
- ui: display puzzle metadata in detail dialog
- parser: add Connections: Sports Edition game parser
- feed: Auto-refresh relative timestamps every minute
- feed: Add puzzle date indicator for cross-timezone entries
π Bug Fixes
- parser: Store puzzle_number when creating puzzle entries
- validation: Add Connections: Sports Edition validation and scoring
- parser: correct Sports Edition base date to September 24, 2024
- display: add Connections Sports Edition formatting and fix Your Puzzles Today update
- party: use dynamic game filtering from PuzzleParserService
- feed: show emoji grid instead of stats in puzzle detail modal
- feed: Only show puzzle date indicator when dates mismatch
January 14, 2026
β¨ Features
- party: Add Dot welcome message when party is created
- messages: Add @dot command system for interactive Dot responses
π Bug Fixes
- party-animal: Broadcast Dot messages via WebSocket
- events: Remove duplicate event listener registrations
- feed: Return created_at instead of submission_timestamp for puzzle entries
- feed: Use submission_timestamp instead of created_at for puzzle entries
- events: Use event() instead of broadcast() to trigger listeners
- backfill: create PuzzleEntry records for backfilled entries
- home: add icon and theme_id fields to party responses
- home: Update progress bar when member leaves party
- home: Show toast notification when party member leaves
- party: use onTap pattern instead of onSelected for PopupMenuButton
- party: extract PopupMenuButton to separate widget with GlobalKey
- party: prevent PopupMenuButton from dismissing during real-time events
- party: use authenticated user ID for party operations
- home: fix timezone and puzzle number display in Your Puzzles Today
- feed: use Dot message for member join events instead of local pill
- home: resolve race condition in WebSocket listener setup
January 13, 2026
β¨ Features
- party-animal: add is_system flag to user objects in broadcasts and feeds
- party-animal: add endpoints for icon and theme libraries
- party-animal: add party settings API endpoints
- party-animal: add scheduled command for inactive party reminders
- party-animal: add listeners for puzzle flow events
- party-animal: add event listeners for membership events
- party-animal: add template system and PartyAnimalService
- party-animal: add settings JSON column to parties table
- party-animal: add system user infrastructure for characters
- console: add βforce option to pp:fix-user-timezones
- console: add pp:fix-user-timezones command for migrating invalid timezones
- database: add local storage for party settings (icon, theme, character)
- feed: pass isSystem flag in WebSocket message events
- home: display custom icons and themes on party cards
- party: add PartySettingsScreen for theme and icon selection
- widgets: add IconPickerWidget for party icon selection
- widgets: add ThemePickerWidget for party color theme selection
- feed: add SystemMessageCard widget for Party Animal messages
- provider: add PartySettingsProvider for party customization state
- api: add party settings and library API methods
- feed: add isSystem field to FeedUser for Party Animal messages
- models: add party settings models and update Party model
- feed: add puzzle number to feed entry badges
π Bug Fixes
- party-animal: cast cached template index to int
- feed: use user timezone for date separators and grouping
- feed: use calendar days for relative timestamps
- feed: correct scroll detection and item ordering for reversed ListView
- feed: prevent feed jump when scrolling up in unified feed
- timezone: update local storage after successful timezone sync
January 12, 2026
β¨ Features
- auth: add PUT /api/v1/auth/timezone endpoint
- auth: accept and update timezone on login
- auth: add IANA timezone validation on registration
- home: add Join Party option to empty state
- timezone: display timestamps in userβs local timezone
- timezone: sync timezone on app startup for travelers
- auth: send timezone on login for traveling users
- timezone: add flutter_timezone package for IANA timezone detection
January 10, 2026
β¨ Features
- broadcast: include party progress in puzzle.submitted event
π Bug Fixes
- feed: filter puzzle entries by party_id in feed endpoint
- realtime: update progress indicator on puzzle.submitted broadcast
- events: deduplicate puzzle.submitted events in EventHandler
- feed: prevent duplicate entries in unified feed
January 9, 2026
β¨ Features
- feed: add party membership events to unified feed
π Bug Fixes
- party: Load users relationship when joining party
- party: store user records from flat member format in API response
- navigation: PartyCard chat icon navigates to UnifiedFeedScreen
January 8, 2026
β¨ Features
- party-line: Add real-time WebSocket events for messages
- feed: add date separators to chat-style feed
- home: add collapsible Submit Puzzle widget
- home: activate Party Line home screen design
- tests: add widget tests for Party Line components
- party: remove Feed tab from Party Details screen
- websocket: Add real-time feed updates via WebSocket
- feed: Add character limit and tests for feed widgets
- feed: Add UnifiedFeedScreen for Party Line
- home: Add ArchivedSection widget with collapsible archived parties
- widgets: Add PartyCard with progress bar and unread badge
- widgets: Add YourPuzzlesToday collapsible widget
- provider: Add PartyLineHomeProvider for redesigned home screen
- api: Add Party Line API service methods
- models: Add Party Line data models for home screen and feed
π Bug Fixes
- feed: handle normalized_score as string from API
- ui: use Stack layout for progress bar background track
- ui: improve progress bar background track visibility
- party: remove old HomeProvider reference from CreatePartyScreen
January 7, 2026
β¨ Features
- party-line: Add rate limiting for message endpoint
- party-line: Add message CRUD endpoints
- party-line: add GET /parties/{id}/feed endpoint
- api: add GET /home endpoint for redesigned Home screen
- party-line: Implement last_activity_at automatic triggers
- party-line: Add database schema for Party Line feature
- api: Add device configuration parameters for E2E scenarios
- scoreboard: Enable date picker for weekly/monthly views
- mobile: Add
.worktreeinclude for essential ignored files