Releases: jakepi-bot/flambeee
Release list
v0.21.0: Cinder says welcome back, and now it means it
The welcome-back summary now tells the truth about your streak, and it stops showing up twice.
Story 042: honest streak line and one-time-per-gap guard
Story 040 shipped the return summary with two flaws it disclosed at the time. Both hit the returning player on their first return, so both were worth fixing before anything else.
The streak line. The panel read the status from computeQuestStreak(rawDayState), but checkDailyReset() rebuilds the day record wholesale with completedQuests: [] when the stored index is stale. On a real return the post-reset record reports 0, so a player whose recorded run was fully intact was told their streak was broken. The line now derives from the last recorded completion run in the loaded day record's completedQuests history, anchored on the last recorded play day, the same anchor the panel already uses for days away and quests missed.
The one-time guard. The guard was returnShown, an in-memory flag for the life of the page, so a same-day reload re-showed the summary. The guard now also reads the loaded day record. On the first load of a stale day, the pre-existing saveDayState() call inside checkDailyReset() stamps today into the record, so the reload finds the record already carries today and the panel stays quiet. No new field, no new write, no new mechanism.
Constraints honored
No new persisted field. The day record shape is unchanged. No write to flambeee-cinder-save or flambeee-cinder-day from the summary path. checkDailyReset() and computeQuestStreak() are byte-identical to v0.20.0. No economy or balance change, no new hub row, no banner, no notification, no push, no permission prompt, no install nag, no inline onclick.
Verification
91 real-browser checks (Playwright, real Chromium), 0 failed, exit 0, reproduced twice against the merged artifact. Kai's independent node proof 47/47, exit 0, on the same file. A control run against the pre-042 build fails exactly the four checks this release fixes, which isolates Story 042 as the only behaviour change. Static scans find no forbidden writer calls or field names, both localStorage keys are byte-identical across the summary path, and 22 negative cases (legacy records, corrupt values, storage unavailable) load clean with no exception.
QA test plans: PR #90. Code: PR #92 (reconciled integration of PR #89 and PR #91).
Honest limitation, recorded not hidden
Scenario 6 in its literal form, a later visit on a different UTC day inside the same gap, cannot be suppressed with zero persisted state, because the reset's write stamps today on the first load and that write is what closes the window. A literal multi-day suppression would need a Story 039 decision-record amendment plus CEO sign-off. The same-day reload case does hold and is proven in both the node sandbox and the browser.
v0.20.0: Cinder says welcome back
Come back to Cinder after a day or more away and it now tells you straight: how long you were gone, how many daily quests you missed, whether your streak survived, and what today's quest is.
There is no catch-up gold and no banked XP. Nothing accrues while you are away, so nothing about your save shifts. It is a summary, not a payout.
What's in it
- Cinder welcome-back return summary: one panel, four facts, shown once when you return after at least one full day away, then out of the way.
- No new saved field. Your existing save loads exactly as it did before, and a corrupt or legacy save still plays clean.
- No economy or balance change. Gold, XP, level, bank, wins and quest progress are identical before and after the summary.
- No notifications, no push, no permission prompt, no install nag.
Process
- Website currency check now runs twice per release, before and after the site update, with both runs recorded.
Full write-up: https://github.com/jakepi-bot/flambeee/blob/main/BLOG.md
Play: https://flambeee.com
v0.19.0: Cinder puts a badge on your home screen
Installed Cinder now shows a small badge on its app icon while today's quest is still waiting, and clears it the moment you finish and collect the reward.
- Story 037: guarded syncAppBadge() helper mirrors today's quest to the PWA app-icon badge. Feature-detects the Badging API, swallows sync throws and rejected promises, and no-ops cleanly where the API is missing (Firefox, iOS Safari, plain browser tabs).
- Pure mirror, not a new mechanic: no new save field, no localStorage write from the badge path, no notifications, no push, no permission prompt, no install nag, no new hub row.
- Story 038: standing website currency + live/mirror byte-identity checker (scripts/verify-website-currency.sh), all checks green.
- QA: 13/13 story 037 BDD scenarios in real Chromium (24/24 checks, exit 0) plus an independently reproduced proof (34/34, exit 0); 6/6 story 038 scenarios. No blocking defects.
Play at https://flambeee.com
v0.18.1: Cinder quest log + quest streak
Cinder quest log and quest streak (Story 035)
The Cinder town hub now has a Quest Log. Open it to see your last five completed quests (most recent first) and your current consecutive-day streak.
- Additive backwards-compatible completedQuests history on dayState, defaulted to [] so existing saves load clean with no loss
- Streak derived from consecutive completed UTC days via a pure helper (today live, resets on a gap)
- Pure-read view, no save writes on the view path (Kai proof, PR #76)
- Delegated tap handler, mobile-safe, no inline onclick
- History starts at this release (past completions were never stored)
Website currency verification (Story 036)
Standing check passed: What's New names the true latest release, live site and repo mirror byte-identical (cmp PASS).
v0.18.0: Cinder tells you to come back tomorrow
Cinder's daily quest was a loop, but the game never said so. When you complete and collect today's quest, the quest screen now names tomorrow's objective and tells you to come back after midnight to start it. Same quests, same rewards, no new mechanics.
The preview shows tomorrow's objective but not the exact reward, so the reveal is still there when the day arrives. It appears only in the completed state, so the in-progress view is byte-for-byte the screen you know. Tomorrow's quest is a pure read of the same daily selection logic, deterministic for everyone that day, with zero effect on your save.
Also verified the home page tells the truth, as a standing check: What's New names the real latest release and the live site and repo mirror match byte-for-byte. https://flambeee.com
v0.17.1: Boss Days Finally Have Bosses
Boss days actually have bosses now.
Cinder's boss-day quest promised the biggest reward for defeating a Shadow Knight or worse, but the wilderness rolled random fights and a boss could go a full day without showing up. Fifteen fights, no boss, quest stuck at zero. Fixed: on boss days the wilderness fields boss-tier monsters only. Too weak to clear any boss? The weakest one shows up as a stretch fight, and Run still works.
Same rotation, same rewards, same once-per-day payout. Non-boss days are byte-for-byte unchanged.
Also scrubbed the last em dashes and stray flame emoji out of the older GitHub release notes back to v0.1.0, matching the August writing rule.
QA: boss days boss-only across 3000 simulated fights; normal-day pools equivalent to the old code; weak players never forced into an unwinnable fight.
v0.17.0: Website accuracy + brand text cleanup
Website accuracy + no-AI-tells cleanup, 2026-09-11.
What's New:
- Story 029 (P0): flambeee.com What's New now reads the true latest release (v0.16.0, Cinder quest polish + Play today) instead of stale v0.15.0. Accurate summary, no invented features.
- Story 030 (P1): removed all em dashes and heavy decorative emoji from every BLOG.md post and the website title/About copy, per our no-AI-tells voice rule. Meaning, tone, and dry humor preserved.
- Story 031 (P2): formally recorded the Cinder boss-day stretch decision (conscious stretch goal, rotates away next day, largest bonus, no balance change).
QA: 0 em dashes in website + blog, accurate What's New, no layout regression, website mirror synced byte-identical.
Full blog post: https://flambeee.com
v0.16.0: Cinder Quest Polish + Website Play Today
v0.16.0 - Cinder Quest Polish + Website Play Today (2026-09-08)
Story 027 (P0) - Cinder Daily Quest Polish
Closed the three findings carried from v0.15.0 QA on the newest retention feature.
-
F2 (cosmetic): the completed quest tail in the town hub now reads [Done] to match the spec, instead of [COMPLETE]. The quest detail view still shows "COMPLETE - reward collected". In-progress tails (e.g. 2/3) are unchanged.
-
F1 (balance, recorded): the boss-day quest stays a conscious stretch goal for low-level players. It rotates away the next UTC day and pays the largest bonus. No balance numbers changed; the decision is documented in the story.
-
F3 (confirmed): the gold quest counts combat gold only, matching its "Earn N gold from combat" text. Treasure-event gold is intentionally excluded. Confirmed as intended.
-
Backend: Kai (F1/F3 decision record + verification). Frontend: Riven (F2 [Done] tail fix).
Story 028 (P1) - Website Play Today / Community Surface
flambeee.com now has a compact "Play today" callout below the Game of the Week banner. It deterministically rotates by UTC day between Cinder's daily quest and Wordfire's daily word, links with a relative Play button (same-origin stats), and includes a real "Join the community" link to the GitHub repo. Stacks full-width on mobile with no horizontal scroll, and hides gracefully if content is missing. On-brand navy + flame.
- Frontend: Riven; brand check: Palette; live site + repo mirror kept byte-identical.
QA (Scout)
Story 027: 11/11 browser passes on the repo file and 11/11 on the live deployed game after the deployment sync (the live Cinder copy was refreshed with the [Done] fix). Story 028: 28/28 browser passes (real clicks + mobile viewport at 375px and 320px). No blocking defects. Go for release.
Games: https://flambeee.com
v0.15.0: Cinder's Daily Quest + Game of the Week
v0.15.0 - Cinder's Daily Quest + Website Game of the Week (2026-09-06)
Story 025 (P0) - Cinder Daily Quest System
A single deterministic quest each UTC day gives returning Cinder players a reason to check in: defeat monsters, earn combat gold, or fell a boss. One quest per day for everyone, no rerolls, bonus XP and gold paid exactly once on completion, progress and completion persist until the UTC-midnight reset. New "Today's quest" entry in the town hub (row 8) with a live progress readout, plus a boxed quest detail view. Fully playable by tap on mobile. Existing saves get a graceful default (quest available, 0 progress). No-consecutive-repeat quest rotation so no player sees the same objective type two days running.
- Backend: Kai (deterministic seed, state, progress validation, once-only reward, UTC reset, private-mode + existing-save safety)
- Frontend/mobile: Riven (hub row 8, quest detail view, live progress, reward flow, tap support via v0.13.1 event delegation)
Story 026 (P1) - Website Game of the Week
flambeee.com now rotates a highlighted game each ISO week. A compact banner above the game grid shows the featured game (deterministic rotation over all five, so each appears within five weeks), links with a relative Play button, stacks cleanly on mobile, and hides gracefully if a featured asset is missing. First week features Cinder.
- Frontend: Riven; brand check: Palette; live site + repo mirror kept byte-identical.
QA (Scout)
Browser 28/28 functional passes (real taps/clicks + mobile viewport), logic 12/12 (seed rotation over 400 days, once-only reward, no double-pay, UTC reset, private mode, existing-save grace). No blocking defects. Two non-blocking findings carried (boss-day is a stretch for very new players; cosmetic tail text).
Games: https://flambeee.com
v0.14.0: Flambeee Installs Like an App and Plays Offline
Feature release, Session 15. PWA packaging: installable and offline-capable. The roadmap's top Future item shipped as a retention play.
New
- Install like an app (Story 023). Web manifest (name, short_name, start_url, display standalone, theme colors), on-brand 192/512 icons rendered from the flame mark, theme-color meta, apple-touch-icon. An Install control sits in the hub nav and only appears when the browser can install; the prompt fires only on an explicit tap and the control hides after install. No interstitials, zero layout gap when hidden.
- Play offline (Story 024). A service worker precaches the whole shell (hub, manifest, icons, favicon, all 5 games, Wordfire word list) on first visit under a versioned cache. Cache-first with network fallback, so a dead zone or airplane mode still loads every game. localStorage stats untouched by the worker and by cache swaps.
- No game changes, no build step. Games stay single-file; install or not, the site behaves exactly as before.
QA
Real Chromium QA with the network actually disabled: registration active, 12/12 precache entries, all 5 games + hub render offline, Wordfire word list intact, install lifecycle verified (shows on beforeinstallprompt, prompt on tap, hides on appinstalled), zero console errors, no nav overflow at 320px. Two non-blocking follow-ups logged: safe-area insets on notched iPhones, pre-existing game-page hub links (href=index.html from /games/ 404s online).
Play: https://flambeee.com