Weekly Product Update
This week was a big reliability and creation-quality push for The Grotto: Studio-generated games got stronger foundations, asset creation became richer, social and notification flows became easier to follow, and the backend moved much more of the platform onto durable Postgres and bucket-backed infrastructure.
129
Merged changes reviewed
2
Core repos shipped
6
Major product themes
Top Highlights
Studio Games Start Stronger
B.O.B. now has more guardrails and better starter material for turning prompts into games that actually run and feel playable.
- Every delivered Studio build is now pushed toward having a runnable HTML entry, safer file writes, manifest-aware entry detection, and validation before the first version is published.
- Generated games gained stronger starter scaffolds for HTML5, Three.js, platformers, shooters, endless runners, cloud saves, leaderboards, mobile touch input, sound effects, and game-feel polish.
- Large projects are handled more carefully, with paged file reads, safer truncation handling, better edit tolerance, and protections against losing the real game during iteration.
- Studio runs now report more useful diffs, lifecycle logs, telemetry, and nested plan status so creators and operators can understand what changed.
Asset Creation Got Richer
The creative toolbox around Studio expanded beyond static images into more game-ready media and better previews.
- B.O.B. gained skill cards and backend support for sprite animation, music, 3D models, parallax backgrounds, and generated sounds.
- Image generation now supports more practical aspect and size controls so backgrounds and other assets are not forced into square formats.
- The frontend now shows richer previews for sprites, voxels, parallax assets, and music, making generated assets easier to inspect before using them.
- Ultra routing and validation were tightened so high-end Studio requests use the right persona and get more thorough checks.
Social And Notifications Feel Cleaner
Everyday communication flows received targeted fixes so people land in the right place and see more trustworthy state.
- Notification clicks now route from the backend action target and avoid stale unread-state issues.
- Read-state changes persist more durably when notification reads come from Postgres-backed paths.
- The social gutter now matches the main social composer more closely, with cleaner reply/comment actions and less typing jank.
- Activity subject IDs were canonicalized across the backend so notification routing is more consistent.
Core Data Became More Durable
A large backend migration moved many important experiences away from fragile local files and toward Postgres-backed state.
- Usernames, account registry data, profiles, favorites, reviews, forums, leaderboards, reputation, follows, notifications, and activity likes all gained Postgres-backed or Postgres-preferred paths.
- Direct messages, game jams, livestream registries, support tickets, review reactions, blogs, comments, launchpad records, marketplace data, HERESY chat, and operations records were moved onto mirrored or canonical database stores.
- Projection builders, stale-state invalidation, last-known-good fallbacks, boot warming, and outbox observability were added so read models can recover more gracefully.
- Concurrency fixes now serialize long-tail read-modify-write paths and prevent a class of duplicate or clobbered writes.
Game Delivery Is Moving Off Fragile Volumes
The backend now has more of the storage and serving foundation needed for faster, more reliable game and media access.
- Public assets can be mirrored to object storage, served with cache controls, and redirected through bucket-backed delivery instead of pushing every byte through the origin.
- Private game builds can be mirrored, backfilled, served from buckets, and accessed through stateless play-session tokens.
- Bucket fallbacks now cover private games, token-gated downloads, launch assets, uploads, collection drafts, avatars, and collection media when the local volume is absent.
- Static serving added a deny-by-default allowlist, guardrails, body limits, load shedding, readiness checks, and safer defaults around public file access.
Hot Paths Got Faster And Safer
Several high-traffic backend paths now do less expensive work while preserving more accurate user-visible data.
- Game browse, profile, playtime, platform stats, reviews, leaderboards, favorites, and activity feeds gained faster cached, aggregate, or database-backed read paths.
- Published Studio games can be rendered once at publish time, and play routes can use ETags and 304 responses instead of doing repeated work.
- Guardrails now key rate limits more safely, contain slow requests, and apply method-aware deadlines without breaking normal browse traffic.
- Volume-less profile and game-stat fallbacks were added to avoid clobbering ratings, play data, and profile fields during infrastructure transitions.





