Skip to content

v2.0.0

Latest

Choose a tag to compare

@bmschimmel bmschimmel released this 14 Sep 13:44
· 25 commits to main since this release
f28f229

Galactic Math 2.0 is everything that landed between the March launch and today: a second game, a new setup flow, a real feedback pipeline, and a long list of fixes to make it easier and more fun to use.

Highlights

👾 Alien Invasion — a second game

A full arcade mode alongside the quiz: steer a ship with keyboard, touch or trackpad, dock into question rings, dodge comets and obstacles, and clear the aliens before they reach Earth. Along the way it picked up a radar view, a low-fuel warning, docking and gate-entry sounds, ten rotating facts per planet, a neon Earth with real continent geography, mobile support, and a Sneak Attack / Invasion / Chaos difficulty pick (5 / 10 / 25 aliens). (#74, #79, #81, #82, #89, #91–#95, #99, #101, #113, #119, #121, #122)

Alien Invasion

🚀 The Flight Deck setup

The single long setup card is now a five-step deck — Numbers → Math → Game → Options → Launch — with a flight-path stepper, Back / Next in fixed slots, and a Mission Briefing that lists every choice before Begin Mission. Galactic Math and Alien Invasion are equal game cards. (#135)

🎉 Celebrations and sound

Ring shockwave celebration in Standard and Hyperspace, comet streaks in Kessel Run, a launch sound and Begin Mission fill animation, an abort-mission sound, distinct sounds for enabling timed modes, and a sound on the feedback transmit button. (#50, #64, #67, #68, #69, #102)

🧮 Quiz interaction design improved

Multi-operation sessions are now composed correctly; unanswered questions show Skipped instead of null; input is blocked once the Hyperspace timer ends; Hyperspace and Kessel Run timers run on the wall clock so switching tabs no longer pauses them; an Abort Mission button on the quiz screen; operation modes can be reset or fully deselected with validation on start; clicking the banner returns to setup. (#33, #34, #36, #62, #70, #77, #78, #129)

💬 Feedback pipeline optimized and secured

The feedback page POSTs to a Cloudflare Worker that validates, rate-limits by IP, generates a title with Workers AI, and opens a GitHub issue in this repo. Since then: observability logging, automatic detection when Cloudflare retires a model, enforced allowed origins, a shared rate limiter, an AI prompt hardened against injection, and the Your Name field removed. (#37, #42, #43, #53, #55, #61, #123, #127, #130, #133)

🔒 Security and performance

Per-resource Content-Security-Policy directives plus X-Frame-Options, nosniff, Referrer-Policy and Permissions-Policy; a security.txt; two hardening passes; the starfield rewritten to stop draining tablet batteries and to honor prefers-reduced-motion; ~2.8 MB of unreferenced images removed and the OG image resized. (#83, #96, #100, #128, #131, #132)

📱 Mobile

Number grid overflow, the off-screen theme button, spacing and layout passes for small screens. (#30, #31, #32, #56, #110)

🪐 A legit website domain

The site moved to galacticmath.app, with a new planet logo for favicons and the share image, Open Graph / Twitter Card tags, and LinkedIn preview fixes. (#29, #80, #97, #106, #107, #109)

📚 Docs and workflow

A docs/ folder describing every part of the app, a docs audit, CLAUDE.md brought back in line with the codebase, hover explainers on the How It Works page, a GitHub link in the footer, and a written release process. (#51, #71, #73, #108, #134, #136)

What's Changed

  • IDT-22 Add meta description, OG tags, and version footer by @bmschimmel in #29

  • IDT-24 Reduce excess spacing below game mode tiles and begin button by @bmschimmel in #30

  • IDT-28 Updates for respecting mobile design by @bmschimmel in #31

  • IDT-30 Add Reset button to operation mode selector by @bmschimmel in #33

  • IDT-29 Fix theme button off-screen on mobile by @bmschimmel in #32

  • IDT-31 Allow deselecting all operation modes with validation on start by @bmschimmel in #34

  • IDT-32 Code quality & accessibility improvements from audit by @bmschimmel in #35

  • IDT-33 Add abort mission button to quiz screen by @bmschimmel in #36

  • IDT-34 Wire up feedback form to GitHub Issues via Cloudflare Worker by @bmschimmel in #37

  • IDT-39 Add observability logging to feedback Cloudflare Worker by @bmschimmel in #42

  • IDT-40 Enable observability logging config in wrangler.toml by @bmschimmel in #43

  • IDT-46 Change sound effects for enabling timed modes by @bmschimmel in #50

  • IDT-49 Add hover explainer panels to workflow page by @bmschimmel in #51

  • IDT-48 Correct feedback submission format by @bmschimmel in #53

  • IDT-50 feedback page view existing link by @bmschimmel in #55

  • IDT-43 Fix mobile number grid overflow by @bmschimmel in #56

  • IDT-56 Switch feedback title generation to Cloudflare Workers AI by @bmschimmel in #61

  • IDT-57 Clicking the Galactic Math banner returns to setup by @bmschimmel in #62

  • IDT-58 Add favicon to feedback and workflow pages by @bmschimmel in #63

  • IDT-59 Ring shockwave celebration, launch sound, and Begin Mission fill animation by @bmschimmel in #64

  • IDT-60 add ?debug=1 mode for 1-question sessions by @bmschimmel in #65

  • IDT-64 Differentiate Kessel Run and Standard mode celebrations by @bmschimmel in #67

  • IDT-63 Add abort mission sound effect by @bmschimmel in #68

  • IDT-63 Scope abort sound to quit button only by @bmschimmel in #69

  • IDT-65 Fix test composition for multiple operations by @bmschimmel in #70

  • IDT-67 Create docs/ folder with architecture documentation by @bmschimmel in #71

  • IDT-100 Add GitHub repo link to footer and developer docs TOC to README by @bmschimmel in #73

  • IDT-101 Add Race to Earth game mode by @bmschimmel in #74

  • IDT-103 Show Skipped instead of null for unanswered questions by @bmschimmel in #78

  • IDT-102 Block input after hyperspace timer completes by @bmschimmel in #77

  • IDT-105 Low fuel warning sound at 10% in Race to Earth by @bmschimmel in #79

  • IDT-106 Fix LinkedIn OG preview — replace SVG with PNG by @bmschimmel in #80

  • IDT-104 R2E UI/UX improvements by @bmschimmel in #81

  • IDT-108 Add mobile support for Race to Earth mode by @bmschimmel in #82

  • IDT-111 Security & performance fixes by @bmschimmel in #83

  • IDT-112 Browser compatibility check and changelog fixes by @bmschimmel in #88

  • IDT-112 Repremise Race To Earth mod by @bmschimmel in #89

  • IDT-122 Minor UX tweaks to Alien Invasion mode by @bmschimmel in #90

  • IDT-110 Add 10 planet facts per planet, randomly rotated by @bmschimmel in #91

  • IDT-120 Add docking sound when advancing between question rings by @bmschimmel in #92

  • IDT-123 Add gate entry sound when ship docks into a ring by @bmschimmel in #93

  • Idt 124 create radar view of where the alien ships are by @bmschimmel in #94

  • IDT-125 Reduce comet and obstacle speed by 33% by @bmschimmel in #95

  • IDT-127 Hardening and optimizations by @bmschimmel in #96

  • IDT-130 Update domain references to galacticmath.app by @bmschimmel in #97

  • IDT-132 Fix planet order in alien invasion world by @bmschimmel in #99

  • Add security.txt by @bmschimmel in #100

  • IDT-131 Make all alien ships red by @bmschimmel in #101

  • IDT-134 Add sound effect to transmit feedback button by @bmschimmel in #102

  • IDT-109 Replace favicons and OG image with new branded logo by @bmschimmel in #106

  • IDT-141 Fix OG image letterboxing and og:title length by @bmschimmel in #107

  • IDT-142 Docs audit: remove Academy branding, sync docs with recent features by @bmschimmel in #108

  • Update OG image to v2 by @bmschimmel in #109

  • IDT-148 UX cleanup pass by @bmschimmel in #110

  • IDT-137 Redesign Earth — neon style with real continent geography by @bmschimmel in #113

  • IDT-212 Add trackpad steering by @bmschimmel in #119

  • IDT-216 Stop the flying mode badge and gate questions from overlapping by @bmschimmel in #121

  • IDT-215 Fix dead launch buttons after returning from Alien Invasion by @bmschimmel in #122

  • IDT-217 Replace retired feedback title model and detect the next retirement by @bmschimmel in #123

  • IDT-218 Ignore worker/node_modules and local claude settings by @bmschimmel in #124

  • IDT-271 Remove the Your Name field from the feedback page by @bmschimmel in #127

  • IDT-272 Delete unreferenced images and resize the OG image by @bmschimmel in #128

  • IDT-274 Base Hyperspace and Kessel Run timers on wall clock by @bmschimmel in #129

  • IDT-270 Enforce allowed origins and fix the rate limiter in feedback worker by @bmschimmel in #130

  • IDT-276 Harden the AI title prompt against injection by @bmschimmel in #133

  • IDT-273 Add missing security headers and split the CSP directives by @bmschimmel in #131

  • IDT-275 Cut starfield battery drain and honor prefers-reduced-motion by @bmschimmel in #132

  • IDT-277 Bring CLAUDE.md back in line with the feedback worker and pages/ by @bmschimmel in #134

  • IDT-279 Build the Flight Deck setup flow by @bmschimmel in #135

  • IDT-283 Bump version to 2.0.0 and document the release process by @bmschimmel in #136

Full Changelog: v1.0.0...v2.0.0