Gentle Mahjong™

Road to 1.0

A calmer, stronger game is growing one careful milestone at a time.

Our promise: reliability before breadth. Stability, accessibility, player privacy, and preserved progress always come before a release date.

Development milestones

Completed history · v0.8.7–v0.9.4

Reliable foundations

  • Deterministic boards, safe reshuffles, versioned restoration, and Undo protection
  • Keyboard, screen-reader, zoom, contrast, forced-colors, and reduced-motion support
  • Clear Settings, unified dialogs, improved performance, and calmer first sessions
  • Security, privacy, save migration, account recovery, exports, deletion, and database backups
  • Accessible language resources and community correction workflow

Completed and superseded · v0.9.5

Sound and presentation

  • Independent ambience, effects, celebration, and Silent controls completed
  • The original Journey-motion plan was superseded by a complete environmental overhaul
  • All 20 Journey locations now contain seven cumulative restoration stages, responsive framing, accessible descriptions, reduced-motion support, and restrained environmental animation
  • Any remaining sound or presentation polish now belongs to current RC0 finalization

Completed history · v0.9.6

Content validation

  • Normal, daily, seasonal, and weekly board infrastructure received deterministic validation
  • Seasonal deals, inventory-safe reshuffles, hemisphere behavior, and returning rewards received regression coverage
  • Difficulty and the 60 daily challenges were tested for reproducibility and fairness
  • Final seasonal/date review, long-term progression review, and the 1.0 achievement set moved into RC0 finalization
  • The optional mastery concept remains post-1.0 rather than a launch requirement

Completed with cancelled store work · v0.9.7

PWA and install readiness

  • Manifest, original icons and screenshots, theme colors, offline launch, installation, and update behavior completed
  • Privacy, support, account deletion, credits, copyright, asset authorship, retention, and player-facing access were documented
  • The public app-store and Android-store plan was intentionally cancelled; the installable web app is the supported path to 1.0
  • Remaining PWA presentation and update issues moved into RC0 finalization

Completed · v0.9.8.9 RC0

Final planned work before feature freeze

  • Twenty-location Journey environmental restoration overhaul and Journey-wide animation
  • Purpose-built mobile gameplay redesign and stabilization, including a dedicated mobile-first pass fixing status-bar text truncation and Seasonal Garden path-node crowding on narrow phones
  • Private player notices through the existing Garden Keeper infrastructure
  • Targeted pre-Journey code cleanup with clearer rendering ownership
  • Security Remediation Batches 1 and 2, Garden Keeper improvements, and a sanitized deterministic production artifact
  • The private Player Profile shipped: self-view only, built-in avatars, a denylisted display name, featured pins, and an optional private shared page with real trophy and keepsake artwork -- see docs/V0.9.8-RC1-PLAN.md
  • Corrected mobile Settings and More text/control overflow appearing under the wrong tab

Decided: the private Player Profile ships as part of 1.0. Decided: Garden progression, Journey progression, and normal achievement progress all reset at 1.0.

Outstanding sound and presentation polish, remaining content/seasonal/date/daily validation, the final 1.0 achievement set, and pre-1.0 statistics preservation in Garden Keeper were not finished in RC0 and carry forward as RC1 work.

Completed · v0.9.8.9 RC1

Feature Freeze

RC1 added no new player system. Work was limited to serious usability, accessibility, security, data-loss, impossible-board, and account-synchronization problems -- see docs/V0.9.8-RC1-PLAN.md for the full plan and tester matrix.

Completed toward RC1

  • Emulated accessibility, performance, PWA offline behavior, and progression/recovery audits, each verified live in a real browser rather than by static assertion alone
  • A broad walkthrough of secondary features (achievements, statistics, sound settings, all four Seasonal Garden collections, weekly-event boards, and board layout variety) found no rough edges
  • Sound and presentation polish audited against a full checklist -- audio consistency and volume isolation, Reduced Motion and Static Celebrations coverage, presentation consistency, 200%/400% browser zoom, and first-time/returning-player flows -- with no issues found
  • Content, seasonal, date, and daily validation audited directly against the calendar and progression code and live browser behavior -- DST, leap years, year boundaries, hemisphere switching, mid-play seasonal transitions, Garden sequential unlocking, and Journey's independence from calendar transitions -- with no issues found
  • A full player-experience walkthrough on desktop and mobile, from first launch through tutorial, completion, rewards, Journey, and a multi-day return, found nothing that would prevent calling this 1.0-ready pending real-device testing
  • The final 1.0 achievement set was balanced by static analysis of definitions and existing lifetime statistics, correcting one tier mismatch; pre-1.0 statistics preservation in Garden Keeper was built, deliberately left untriggered until the 1.0 transition itself; and the support-ticket technical diagnostic now attaches automatically instead of requiring two easy-to-miss manual clicks

Decided: RC1 and RC2 did not commission a new round of external testing. Real external testers already tested Gentle Mahjong on real hardware and gave feedback that shaped the game; that feedback has since gone quiet -- they have kept playing but stopped submitting new reports, most likely because they had already said what they had to say. Automated and emulated coverage (live-browser Playwright audits across accessibility, performance, offline behavior, and progression) filled the gap left by that quiet feedback channel for RC1 and RC2 specifically, rather than standing in for testing that never happened. The 1.0 release gate below has been updated to match.

Current · RC2

1.0 Dress Rehearsal

RC2 contains no feature development.

  • Resolve every known Critical and High issue and rerun the full automated/manual matrix
  • Test old-save migration, installed-PWA updates and rollback, offline-to-online transitions, orientation changes, backgrounding, and resume
  • Validate seasons and returning rewards across year boundaries
  • Complete accessibility and account, recovery, support, deletion, moderation, legal-hold, retention, and cleanup verification
  • Verify Cloudflare and security configuration, create the final D1 backup, and archive pre-1.0 source and deployment evidence
  • Rehearse the 1.0 reset and founder transition/claim, then prepare release notes and an honest known-limitations list

Release gate · Version 1.0

Requirements for 1.0

Gentle Mahjong will not be labeled 1.0 until:

  • There is no known progress-loss, impossible-board, or tile-inventory bug
  • Every supported older save migrates safely and updates preserve active games and player data
  • Mobile portrait and landscape are reliably playable
  • JAWS, NVDA, VoiceOver, and keyboard flows are usable
  • Account and seasonal progress synchronize reliably
  • Audio works or fails gracefully
  • All public and administrative APIs have passed security review, and Privacy claims match the code
  • Seasonal schedules and returning rewards work across year boundaries
  • Critical automated suites pass for every release candidate

Decided: 1.0 will ship without a new round of external test sessions -- see RC1's closing note above. Real external testers already tested the game and gave feedback earlier in development; this gate is satisfied by that history plus automated and emulated verification (live-browser audits, accessibility checks, and the full regression suite) standing in for a fresh real-device/real-tester pass, not by testing having been skipped altogether.

Reliability before breadth.

Planned decision · 1.0 transition

Protect history, begin the finished garden

  • Preserve: accounts, Player IDs, settings and accessibility preferences, founder eligibility/history, and appropriate pre-1.0 historical statistics
  • Reset: Garden progression, Journey progression, and normal achievement progression
  • Archive pre-1.0 statistics appropriately in Garden Keeper rather than destroying them

This roadmap records the intended transition; it does not implement it.

Beyond 1.0 · No promised dates

Future garden paths

  • An annual event framework with unique Valentine’s Day, Spring/Easter, Halloween, Winter/Christmas, and other events instead of identical yearly repeats
  • Permanent Event Memories, keepsakes, and an archive
  • Garden expansions, additional Journey content, and new Mahjong layouts and themes
  • Post-launch achievement groups and Garden Keeper event-management tools with aggregate analytics
  • Optional player-created share cards containing only explicitly selected information
  • Account and cross-device improvements guided by real player behavior
  • Reconsider native or wrapped mobile apps only after evaluating the mature 1.0 PWA