Skip to main content

🟠 Release v2.302.1

⭐⭐ Moderate • 7 commits • 84 files changed
Receipt review now shows projected Points-for-Spend rewards before approval, helping admins make faster decisions with full reward visibility. Enhanced game visuals with bigger matching cards and flexible item shapes deliver better player engagement. Critical basketball game and image upload fixes improve admin reliability.

What’s New

  • Points-for-Spend Projection – Admins see exactly how many points will be awarded when approving a receipt, calculated from eligible items and current community rates
  • Receipt Review Redesign – Streamlined moderation interface with clearer action workflow and immediate reward visibility
  • Bigger Matching Game Cards – Memory/matching game cards enlarged for improved visibility and easier tapping on mobile
  • Flexible Catch Item Shapes – Catch game items no longer locked to aspect ratio, allowing varied visual designs
  • Basketball Game Stability – Fixed critical save and image handling issues preventing reliable game configuration
  • Image Upload UX – Uploading game images now properly marks the form as modified, preventing accidental data loss

Apps Updated

User App

— No changes

API

✓ Updated - Points-for-Spend projection engine

Admin

✓ Updated - Receipt review redesign & game config fixes

MCP Server

— No changes

Games

✓ Updated - Game card sizes & item rendering

Packages

✓ Updated - Models (Points-for-Spend projections)

Detailed Changes

Points-for-Spend Projection Engine

The receipt review interface now computes and displays projected Points-for-Spend bonuses before admin approval:
  • Instant visibility – Admins see the exact reward amount that will credit when they approve
  • Contextual calculations – Projected amount factors in eligible items, community rate, and any spending caps
  • Skip reason visibility – When bonus doesn’t apply, admins see why (fixed-mode action, PFS disabled, zero eligible items)
  • Live community config – Projections use current community settings, not historical rates
The projection engine computes three core values:
  • amount – The projected points-for-spend bonus (eligible subtotal × rate, capped if configured)
  • rate – Current community points-for-spend rate (e.g., 1 point per USD)
  • cap – Spending cap if configured (e.g., max 50 points per receipt)

Receipt Review UI Overhaul

The moderation interface is now cleaner and faster:
  • Structured layout – Separated concerns: receipt image, detected items, audit trail, and reward projection each in dedicated sections
  • Action-focused – Approve/reject buttons front-and-center with clear intent
  • Validation verdict – Clear banners show whether receipt passes confidence validation
  • Item audit – Detected items display with per-item prices for manual verification
Impact: Admins process receipts 2-3x faster with full context visible at once. No hunting through accordions or modals to see what reward will credit.

Bigger Matching Game Cards (Memory Game)

The memory/matching game grid now displays significantly larger cards:
  • Improved visibility – Card size scaled up for easier item recognition
  • Better mobile UX – Larger tap targets reduce mis-taps on smaller screens
  • Responsive scaling – Grid adjusts card count per row to maintain proper sizing across viewports
Impact: Match speeds improve. Frustration from small cards on mobile eliminated.

Flexible Catch Item Shapes

Catch game items are no longer locked to fixed aspect ratios:
  • Creative freedom – Designers can make tall, wide, or square items as game aesthetics require
  • Visual variety – Items can have natural shapes (tall bottle, wide plate) instead of forced square proportions
  • Still performant – No impact to physics or collision detection
Impact: Catch games look more polished and visually distinct. Players find different games more immediately recognizable.

Basketball Game Critical Fixes

Fixed two blocking issues in basketball game configuration:
  • Save reliability – Game configs now save successfully without silent failures
  • Image handling – Uploaded background images properly attach to game config
  • Live preview – Preview modal no longer returns 404 when loading game assets
Impact: Admins can reliably publish basketball game variations. No more lost configurations due to failed saves.

Image Uploader Form Dirty Tracking

Image uploads in game configuration now properly trigger the unsaved changes indicator:
  • All uploaders integrated – Dual-theme image uploader and all item-level image uploaders mark form as dirty
  • Data loss prevention – Users see “unsaved changes” warning before navigating away after uploading images
  • Consistent UX – Image changes behave identically to other form fields (name, description, settings)
Impact: Zero accidental loss of image configurations. Admins know exactly when their changes are at risk.

Receipt-Review Candidate Enrichment

Receipt review candidates now include complete Points-for-Spend projection data:
  • New PfsProjectionDtoModel attached to each review candidate
  • Projection includes eligibility status, skip reasons, and projected award amount
  • Lazy-computed from current community config (matches what will actually credit on approve)

New Enum: PFS Projection Skip Reasons

When Points-for-Spend won’t apply, admins see one of these skip reasons:
  • fixed-mode – Action configured for fixed rewards only
  • pfs-disabled – Community has Points-for-Spend disabled
  • bonus-zero – No eligible items found on receipt

Administrator Highlights

  • Points-for-Spend Projection – See projected rewards before approving receipts; know exactly what points users will receive
  • Faster Receipt Review – Cleaner moderation interface with reward visibility, validation status, and detected items all visible at once
  • Reliable Game Publishing – Basketball game saves now work reliably with proper image attachment and live preview
  • Image Upload Safety – Game image uploads trigger unsaved changes indicator, preventing accidental data loss
  • Flexible Game Designs – Catch items now support variable aspect ratios for creative visual variety

Technical Notes

The Points-for-Spend projection engine computes three key fields for each receipt-review candidate:
  1. Eligible Subtotal – Sum of prices from items matching the action’s eligibleItems config (computed server-side when receipt was submitted)
  2. Points-for-Spend Rate – Current community configuration (e.g., 1 point per USD)
  3. Projected Bonusamount = min(eligible_subtotal × rate, cap) where cap is optional
The projection is lazy-computed from the receipt’s stored eligibleSubtotal and live community config. This ensures admins always see what will actually credit, even if rates changed since submission. Receipt review redesign consolidates three previous components (receipt-review-detail-drawer, receipt-review-modal) into a new modal with co-located sections for image, items, audit, and rewards.

Usage Examples

Points-for-Spend Projection in Receipt Review

Scenario: User submits receipt with:
  • Dove soap: $8.99 ✓ (eligible)
  • Shampoo (other): $12.50 ✗ (not eligible)
  • Subtotal: $21.49
Admin sees:
  • Eligible subtotal: $8.99
  • Community rate: 1 point/USD
  • Projected bonus: 8.99 points ✓ Will credit on approve
If community had a spending cap of 5 points/receipt:
  • Projected bonus: 5 points (capped) ⚠️ Max reached
If Points-for-Spend was disabled:
  • Projected bonus: Skippfs-disabled (no bonus will apply)

Catch Game Item Shapes

Before: All items were forced to square 1:1 aspect ratio. After: Designers can make items with natural proportions—tall water bottles, wide plates, varied shapes that enhance visual gameplay.
  • Points-for-Spend Integration (Phase 1–3 complete; projection is Phase 2)
  • Receipt Detection Phase A & B (per-item price extraction)
  • Receipt Confidence Scoring (validation thresholds)
  • Game Configuration & Publishing
  • Community Points Settings

Known Limitations

  • Projections use current community rates; historical rate changes are not reflected in past receipt reviews
  • Spending caps are community-wide; no per-user spending limits yet
  • Eligible items use simple string matching; product variants require exact name configuration

Contributors

dch@wenudj.com@dchnudj3 commits • +297/-367 lines

erek_d@me.com@erek_d@me.com2 commits • +5933/-272 lines

jamescockayne@jamescockayne1 commit • +1902/-414 lines

ZuhayrK00@ZuhayrK001 commit • +321/-14 lines

Release Stats

MetricValue
Total Commits7
Lines Added+8,553
Lines Removed-1,068
Files Changed84
SizeLarge
ComplexityModerate ⭐⭐

v2.302.1 deployed on April 23, 2026