Skip to content

feat: Weekly Heat card + weather quest rotation - #357

Draft
driver727-pixel wants to merge 2 commits into
mainfrom
gamma/weekly-heat-card-dc01
Draft

feat: Weekly Heat card + weather quest rotation#357
driver727-pixel wants to merge 2 commits into
mainfrom
gamma/weekly-heat-card-dc01

Conversation

@driver727-pixel

Copy link
Copy Markdown
Owner

Summary

Implements the "Weekly" cadence in the engagement loop — a rotating Legendary "Heat" card that's only forgeable for 7 days, paired with a district weather quest offering cosmetic rewards.

Weekly Heat Card Rotation

Each week (Monday → Sunday UTC), one Heat card from a 6-week rotation is featured:

Week Heat Card District Archetype Accent
1 Nightshade Phantom Nightshade D4rk $pider Purple
2 Grid Runner X The Grid Ne0n Legion Cyan
3 Airaway Ace Airaway Qu111s Orange
4 Battery King Batteryville Iron Curtains Gold
5 Glass Sovereign Glass City Knights Technarchy Green
6 Forest Wraith The Forest The Asclepians Forest Green

Weather Quests

Each week also features a rotating district-specific quest (complete deliveries in the featured district for XP + cosmetic frame reward).

Architecture

  • src/lib/weeklyHeat.ts — Week ID calculation, Heat card rotation, weather quest pool, time bounds, countdown formatting
  • src/hooks/useWeeklyHeat.ts — React hook with 1-minute ticker for live countdown
  • src/components/WeeklyHeatBanner.tsx — Split banner: Heat card (left) + Weather Quest (right), with accent color theming
  • CSS — Responsive grid, accent color via CSS custom property --heat-accent, responsive collapse to single column on mobile

Feature Flag

Ships behind VITE_FF_WEEKLY_HEAT. Default false.

Files Changed

File LOC Change
src/lib/weeklyHeat.ts ~105 Core rotation logic
src/hooks/useWeeklyHeat.ts ~37 React hook
src/components/WeeklyHeatBanner.tsx ~42 Banner UI
src/lib/featureFlags.ts +3 WEEKLY_HEAT flag
src/lib/sharedTypes.ts +18 WeeklyHeatForge, WeeklyQuestProgress
src/pages/CardForge.tsx +5 Mount banner
src/index.css ~95 Banner styles

Testing

  • ESLint: passes clean
  • TypeScript: tsc --noEmit passes clean
Open in Web Open in Cursor 

cursoragent and others added 2 commits April 23, 2026 04:31
…ture flags, server stubs, Firestore rule stubs

- docs/DATA_MODEL.md: audit of all existing Firestore collections with document shapes
- docs/AGENT_STATUS.md: daily sync artifact for Gamma/Charlie coordination
- src/lib/sharedTypes.ts: append-only shared contract file (DailyStreak, Mission, BattlePassState, Crew, RankedSeason, RankedEntry, ShareLink)
- src/lib/featureFlags.ts: central feature-flag registry (all default false)
- server/battlePass.js, server/ranked.js, server/crews.js, server/dailyRewards.js: no-op handler stubs
- firestore.rules: read-only stub rules for dailyStreaks, missions, battlePass, crews, rankedSeasons, shareLinks

Co-authored-by: SP Digital <driver727@gmail.com>
- src/lib/weeklyHeat.ts: 6-week Heat card rotation (Legendary, district-themed), 6 weather quests, week-bounded timestamps
- src/hooks/useWeeklyHeat.ts: React hook with live countdown and weekly state
- src/components/WeeklyHeatBanner.tsx: split banner showing Heat card + weather quest
- CardForge.tsx: mounted WeeklyHeatBanner above welcome modal
- featureFlags.ts: added WEEKLY_HEAT flag (default false)
- sharedTypes.ts: added WeeklyHeatForge and WeeklyQuestProgress interfaces
- index.css: weekly heat banner styles with accent color theming and responsive grid

Co-authored-by: SP Digital <driver727@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants