Features
- add copy-to-clipboard functionality to trade notes in UserStatsSection (261c14d)
- ads: add right-rail gutter ads to all remaining routes (74a2558)
- analytics: implement rybbit user identification with login/logout events (dd0794d)
- auth: add hasJbclToken prop to LoginModal for conditional rendering (defcb64)
- auth: add support for Roblox-only login modal and update related components (c26ecf5)
- auth: enhance AuthProvider to include search parameters in location tracking for notifications (7f6e87a)
- auth: implement custom dialog component and update LoginModalView with new UI elements (0a305d6)
- auth: track search params in WS location via useSearchParams (be8ecb6)
- avatar: replace default SVG fallback with boring-avatars using brand palette (96856ae)
- ban: enhance ban handling and UI updates in various components (05ba2ef)
- banner: add live event countdown banner for 2026 LIVE EVENT & UPDATE (ea6051d)
- bans: persist feature bans in AuthContext across navigation (bc3b5f0)
- calculator: add event listener for realtime preferences and update restore items dialog (bdb42d7)
- CalculatorForm, TradeAdForm, TradeItemPickerV2: add showOfferRequestButtons prop (c9d14e4)
- calculators: migrate Hyperchrome Pity Calculator to new route and remove old components (b02e9e4)
- changelog: add AI summary feature with dynamic rendering and error handling (e6cd644)
- changelog: add contributors display and enhance user data handling in changelog details (89075e7)
- changelog: implement responsive layout and expand/collapse (c9afc46)
- changelogs: add rate limiting handling and RateLimitView component for changelog pages (f8a7e82)
- changelogs: integrate ItemChangelogsTab into ItemDetailsClient (cb5b28b)
- comments: add Copy Comment ID functionality for testers in CommentItem (301d862)
- comments: add emoji reactions functionality to ChangelogComments component (47badf1)
- comments: add inline reaction picker and stable reaction order management (bc72131)
- comments: add premium supporter icons and Twemoji support in comment components (42bd5af)
- comments: add reply-to-reply state and pass reply id as parent_id (6e8b931)
- comments: add Twemoji support with per-user preference toggle (3be53cc)
- comments: enhance emoji handling and notification rendering in comments and messages (290ff71)
- comments: enhance emoji picker functionality in comment and message component (6160136)
- comments: implement emoji support in comment form and item components (019fcaa)
- comments: implement reaction ban handling in comments and reactions components (caaa042)
- comments: implement ReactionsDialog for detailed reaction breakdown (96f186d)
- comments: redesign reaction UI with Discourse-style picker and breakdown (adb1e40)
- comments: refactor ChangelogComments component with new structure (cf6fbcb)
- comments: refactor comment API actions (2e33fb9)
- comments: refactor CommentItem to use CommentAuthorName component (546d1fd)
- comments: replace loading spinner with skeleton loader (4f3f292)
- comments: silent realtime refresh on new comment events (c7552c8)
- comments: sync sort preference per type via realtime WS and localStorage (205dfa5)
- config: add Cache-Control headers for assets path in next.config.js (0d62a78)
- config: add Cache-Control headers for logo assets in next.config.js (b775e66)
- Contributors: refactor user role handling and improve dynamic filtering of contributors (26079b5)
- CustomTypeDialog, TradeItemPickerV2: add custom type selection dialog for trade items (0266a64)
- error-handling: enhance error pages for values and suggestions (87e428c)
- error-pages: add error handling components for various sections (4983601)
- FAQ: enhance FAQ sections with improved UI and new inventory-related questions (fd98714)
- faq: update faq (3e5718a)
- homepage: add net worth statistics and improve stat display formatting (3c8528f)
- homepage: enhance impact stats display by adding string representations (c6e6fbe)
- inventory: add original owner tracking and progress metrics to inventory breakdown (aa3915e)
- inventory: add tertiary and quaternary background styles (db47d22)
- inventory: enhance InventoryBreakdown and MultipleCopiesTab (0d3052f)
- inventory: enhance rate limit message formatting for better user experience (008f357)
- inventory: enhance user profile and search functionality with avatar handling (ccbe362)
- inventory: extend date range options to include 100 and 250 scans (ff54b4f)
- inventory: handle server full error in InventoryCheckerClient and useScanWebSocket (34b2284)
- inventory: implement original owner missing items tracking (52db503)
- inventory: improve original owner item tracking with effective ID handling (18be877)
- inventory: integrate scanWebSocket into UserProfileSection and UserStats components (9fd7b86)
- inventory: optimize InventoryCheckerClient and InventoryBreakdown components (53fa010)
- item-suggestions: add ItemSuggestionsTab component and integrate into ItemDetailsClient (bbf782f)
- item: add error and not found components for item handling (0ba2c7c)
- items: add duped_demand field across item cards, detail pages, and trading (3dc3c4e)
- items: update Trading Core promo block with collab logo (d15b3a4)
- layout: add theme persistence script and suppress hydration warnings (8852945)
- maintenance: remove tester bypass, use Button component for status link (038485c)
- MakeOfferDialog: add TradeTotalsPills component to display cash and duped totals (9934587)
- media: enhance image handling with lightbox functionality and improved UI interactions (294166a)
- messages-inbox: add message reporting functionality and context menu for message actions (95c753d)
- messages: implement emoji support in message editing with Twemoji integration (26fa159)
- modals: enhance ScanHistoryModal with loading state and sorting options (bf8cff5)
- navbar: enhance user and navigation menu interactions with global mouse tracking (c7e1b3d)
- notifications: add markdown rendering for notification descriptions and strip markdown (5556e82)
- nuqs: integrate nuqs for query state management across components (108aea2)
- picker: inventory copy counts, favorites, and dialog bg fix (23d28dd)
- preferences: sync theme and calculator items across devices via WebSocket (850ee54)
- pricing: integrate query state for tab and tier selection, enhance clipboard functionality (7aa29b6)
- profile: add value suggestions tab, unify empty states, fix skeleton loaders (cd0dfa4)
- profile: revamp user comments tab with client-side pagination and reactions (d92dbca)
- rate-limiting: implement rate limit handling across inventory and seasons components (260bec9)
- rate-limiting: integrate RateLimitBanner and BanBanner (24876db)
- realtime: include query params in WS location messages (1f21313)
- redeem: update user premium type on successful code redemption and trigger auth state change (e2e2a97)
- ReportIssue: improve modal handling by adding URL parameter cleanup and router integration (56d5392)
- reports: add reports feature with error handling and layout components (71415a7)
- reports: add SpoilerImage component for avatar and banner display in reports (2e93b6e)
- reports: implement loading skeleton and enhance report detail with user information (e34a959)
- robbery-tracker: integrate server region data fetching and enhance component props (d5feff9)
- ScanTradeFromImage: source tracking and update onDrop handling (eb24781)
- search: add keyboard shortcut for quick focus on search input (1b27b0a)
- settings: add functionality to remove supporter tier with confirmation and error handling (e8c6a5a)
- settings: add section highlighting and smooth scrolling for settings page (4e54849)
- settings: add supporter history tracking and revert functionality to settings page (4f2a841)
- settings: add twemoji preference toggle to appearance section (8d8b6d1)
- settings: enhance supporter gifts functionality with modal and fetch support levels (ae57146)
- settings: implement supporter gifts feature with search and gifting functionality (f3afb51)
- settings: update user data on supporter level changes (ee36abb)
- spinner: replace loading indicators with a unified Spinner component (16fb467)
- suggestions: add max_note_length limit and validation to suggestion form (fdcc2b5)
- suggestions: add realtime pills, comments, and mobile tab layout on detail page (63c17ca)
- suggestions: add suggester stats display and normalize button sizes (33046c1)
- suggestions: add voting functionality (eccdd8d)
- suggestions: contextual WS pills, rate limit on edit, and fix (Edited) badge (52eb4a3)
- suggestions: enhance suggestion editing with modal and validation (751f658)
- suggestions: enhance suggestion reason display with Markdown support (57f44d5)
- suggestions: implement rate limit handling in EditReasonModal with user feedback (ad72ae1)
- suggestions: implement SuggestionForm component with rate limiting (11dec8f)
- suggestions: implement value suggestions layout and detail pages (2469d63)
- suggestions: integrate DOMPurify for HTML sanitization and enhance item filtering logic (a7e3b3b)
- suggestions: integrate item data directly into suggestion structure for improved data handling (7f90d1d)
- suggestions: integrate new ad components into suggestions pages (d50f573)
- suggestions: live-patch voters modal on silent vote refresh (17283dd)
- suggestions: show fixed pill on new ws suggestion instead of re-fetching (6566222)
- suggestions: silent per-suggestion vote refresh via WS id (83df526)
- suggestions: silent vote refresh on detail page, banner only for edit/status (1625ca9)
- TradeAdForm, CalculatorForm: implement realtime preference sync and deletion (b35c9e5)
- trading: add total cash value display in TradeDetailsClient and TradeAdCard components (315adc9)
- trading: enhance trade offer response with user messaging option (749903e)
- user-profile: implement dynamic background color based on user accent color and theme (f254bc3)
- user-profile: implement reporting functionality for user profile elements (9b94866)
- user: enhance user data handling with Roblox integration across various components (a4025a4)
- value-suggestions: support new limits fields with chip selectors for trend and demand (fbbc7f1)
- values: add new sorting options for unique circulation in valueSortGroups (eb9f78b)
- values: remove special card styling for latest changelog (4ca6adc)
- xp-progress: add mobileSecondaryTextMode prop to customize display text (7da76e9)
Bug Fixes
- analytics: only load rybbit on railway production and testing environments (86c8bc4)
- analytics: update remaining @/utils/analytics imports to /rybbit path (35f75f7)
- analytics: use isRailwayDeployed variable to correctly guard rybbit script (bb726fc)
- api: change cache strategy to 'no-store' for responses exceeding Next.js 2MB limit (82accce)
- api: prevent dev token leakage by moving to Authorization header for fetch reques (63b2d14)
- auth: update login flow to handle token extraction and API call on non-localhost (b514107)
- auth: update login flow to handle token extraction and API call on non-localhost (d70a231)
- CalculatorForm: fix cross-device calculator item sync via WS (e0bcda6)
- comments: always show action buttons instead of hiding until hover (0ed7672)
- comments: update error handling to display flagged words with sources in toast notifications (90e01e9)
- comments: update page state management to include current page in comments data (cd7ad82)
- comments: use correct report endpoint and request body (221b063)
- config: bind standalone server to 0.0.0.0 (b8fe01a)
- CONTRIBUTING: update issue submission link to correct URL (112c3a8)
- correct logo aspect ratio on JavaScript required screen (15a31f8)
- fix JBTC contributor tooltip (ed7e8ec)
- healthcheck: allow access to healthcheck endpoint in proxy (978f03c)
- healthcheck: change healthcheck endpoint (15babe3)
- healthcheck: change healthcheck endpoint to root path (5dba569)
- healthcheck: update healthcheck path to /api/healthcheck (d8058f5)
- HyperchromeCalculator: clarify server impact on pity progression and hyperchrome luck (33af07e)
- inventory: add missing item ID 709 to UNVERIFIABLE_COLLECTION_ITEM_IDS set (5cfd43a)
- inventory: round average values for money and net worth in history charts (105761a)
- itemcard: stack demand/duped demand rows on small screens (4b6e5e5)
- itemUnlock: clarify season unlock message to specify OG seasons (7c0501d)
- item: update item URL encoding to preserve original casing for item types and names (5e18bdf)
- maintenance: remove header from maintenance page (7b6bdfa)
- navbar: update border radius in NavbarModern component from 16px to 24px (1d68793)
- notifications: update fetchUserNotificationPreferences to accept user ID (24ebb5b)
- proxy: allow is_vt and is_vtm flags to bypass tester gate (5a39d82)
- replace role text with contributor badge flags for static contributors for consistency (6da1c1f)
- scan: keep ws open after added to queue, let backend close (90b8e88)
- settings: update button text for supporter level downgrade action (766ddae)
- suggestions: add site name to OG and Twitter titles on suggestion detail page (542e92d)
- suggestions: fix silent vote refresh on detail page, add title suffix (a4914cd)
- suggestions: handle batched updates array in refresh_suggestions WS action (61af7ad)
- suggestions: handle suggested value errors and improve input validation (cb8cd9b)
- suggestions: suppress WS vote echo for voter, keep optimistic counts (6ee9f5e)
- suggestions: trim whitespace from reason inputs (8af827d)
- support: open Roblox game link when clicking Support with Robux (4997c73)
- TradeAdForm: don't assign instanceId to regular items during WS rehydration (c08a503)
- TradeAdForm: sync items, note, and expiration silently across devices via WS (e925a20)
- tradeAds: handle 403 Forbidden status in trade ads requests (860dffc)
- tradeAds: handle 403 Forbidden status in trade ads requests (b752a7d)
- trading: clear page transition loading state on tab switch (b72fcde)
- update BACKGROUNDS_BASE_URL to use the new asset hosting URL (b71c609)
- UserStatsSection: remove unnecessary padding from scan history button container (1d04641)
