Repository navigation
Releases
v0.10.0 — Blockfall joins the arcade
Mini Games gets a fifth game, Blockfall: a falling-block puzzle that plays by modern guideline rules, with its own look and synthesized sound.
New: Blockfall
Open it from the launcher or with Play Blockfall in the command palette.
- Modes: each mode keeps its own record.
- Marathon: 150 lines, one level every 10.
- Sprint: 40 lines against the clock.
- Ultra: the highest score you can reach in 3 minutes.
- Rules you already know:
- Super Rotation System wall kicks, 7-bag randomizer, hold, five previews and a ghost piece.
- Extended lock down: 500 ms, with up to 15 resets.
- T-spins and minis, back-to-back, combos and perfect clears are scored as in the guideline.
- Controls:
- ← → move, ↓ soft drop, Space hard drop.
- ↑ / X rotate clockwise, Z counter-clockwise, C / Shift hold.
- Esc / P pause, R restart, M sound.
- DAS, ARR, soft drop speed and the ghost piece are adjustable in the handling settings. Settings persist.
- Feel:
- Glassy blocks, hard-drop streaks and sparks, line-clear bursts, a shake that grows with the clear, and callouts for T-spins, quads, back-to-back and combos.
- The active piece dims as its lock delay runs out.
- Clear chords climb in pitch as a combo grows, and T-spins ring with bells.
- Reduced motion turns off shake and particles.
- Plays well with Agent Code: keys only go to Blockfall while it has focus. The game pauses when you leave it, and the well is hidden while paused.
The launcher now shows all five games in one row.
Requires an Agent Code build that includes the extension platform (API v2), same as v0.8.0.
v0.9.0 — Typing Test joins the arcade
Mini Games gets a fourth game, Typing Test: a minimal, Monkeytype-style typing test inside the arcade modal.
New: Typing Test
Open it from the launcher or with Play Typing Test in the command palette.
- Test options:
- Time mode (15 / 30 / 60 / 120 seconds) or words mode (10 / 25 / 50 / 100 words).
- Choose words from the top 200, 1k or 10k English words.
- Optional punctuation and numbers. Your settings are remembered.
- Typing:
- The test starts on your first keystroke. Letters show as correct, incorrect or extra, with a smooth caret and text that scrolls by whole lines.
- Backspace corrects, and ⌥ / Ctrl + Backspace deletes a word. A word you got wrong can be revisited.
- Tab restarts.
- Results:
- wpm, accuracy, raw wpm, consistency, time, and the correct / incorrect / extra / missed breakdown.
- A per-second speed chart with mistakes marked.
- A personal best for every test setup, plus Next test and Repeat test.
- Plays well with Agent Code: typing only goes to the test while it has focus. Other inputs and Agent Code shortcuts keep their keys, and the game follows your Agent Code theme.
The launcher now shows all four games in one row.
Word list
The words are the 10,000 most frequent plain English words, generated from wordfreq by Robyn Speer. The list is distributed under CC BY-SA 4.0, with full attribution in the data file and the README. Profanity is filtered out.
Requires an Agent Code build that includes the extension platform (API v2), same as v0.8.0.
v0.8.0 — Agent Code API v2
Mini Games moves to the Agent Code API v2 extension platform.
Requires an Agent Code build that includes the extension platform (Juliusolsson05/agent-code#577). Older Agent Code builds refuse this release at install, and the Mini Games you already have installed keeps working.
Changes
- Direct game commands: Play Snake, Play Blackjack and Play Minesweeper open straight into their game. The launcher is still available.
- Nothing runs in the background: the arcade ships an empty background runtime plus one shared sandboxed view behind four modal views. Games, animation and audio run only while a game is open.
- Fresh reopen: closing a game and opening it again starts a new sandbox document.
- Saved data: storage keys are unchanged, so existing high scores and progress carry over.
v0.6.1 — Minesweeper scales to the level
Follow-up to v0.6.0.
Cell size now scales with the level. A fixed cell made Beginner a postage stamp floating in a large modal while Expert sprawled — 9 columns and 30 columns cannot share one number. Cells scale inversely so the window stays roughly constant: Beginner 9×48, Intermediate 16×32, Expert 30×24. Mine and flag glyphs scale with the cell instead of staying 14px on a 48px tile.
Requires an Agent Code build with the frame shrink fix. The host measured #root.scrollWidth for the modal width, but #root is width: 100% and scrollWidth is never smaller than clientWidth — so the reported width was always at least the current iframe width. The modal could grow and never shrink, which left it frozen at the previous game's width when you switched to a narrower one. Fixed host-side in frameDocument.ts; without it, switching from Blackjack to Minesweeper will still show the old oversized modal.
v0.6.0 — Minesweeper joins the arcade
Adds Minesweeper — the Windows 95 game, reproduced — and fixes a latent sizing bug that affected all three games.
Minesweeper
The look is entirely bevels, drawn as real borders rather than box-shadows: a border participates in layout, which keeps every tile on exact pixel boundaries and stops the field seams shimmering. Raised = white top-left + grey bottom-right; sunken = swapped. Number colours are the exact Win95 values (1 blue, 2 green, 3 red, 4 navy, 5 maroon, 6 teal, 7 black, 8 grey).
Art is SVG rather than bitmaps — seven-segment LED counters, the four-state face (🙂 😮 😎 😵), and mine + flag glyphs. The mine's specular highlight is a square, a quirk of the original bitmap that reads as wrong the moment it's smoothed into a circle.
Three rules clones usually miss, all implemented:
- First-click safety excludes the clicked cell and its eight neighbours, so the opening click always cascades. A deliberate deviation from Win95, which only spared the clicked cell and often left you guessing on move one.
- Chording — both mouse buttons on a satisfied number opens all its neighbours.
- Flood fill reveals numbered cells but does not expand through them. That boundary rule is what stops a single click clearing the entire board.
Beginner 9×9/10, Intermediate 16×16/40, Expert 30×16/99. Best times persist per level.
Sizing fix
.mg-root was a fixed 520px while the game stages are 860px, so a game overflowed its own root and the host — which measures #root.scrollWidth — sized the modal to 520px with the rest of the stage hanging outside it, clipped. Game screens now use max-content, and the max-width: 92vw is gone (vw resolves against the iframe viewport that the host sizes from our measurement, making our width depend on our own width).
Compatibility
apiVersion 1, Tier-0 only — no permissions requested, so updating triggers no consent dialog.
v0.5.0 — Blackjack rebuilt, Snake replicated
A ground-up rebuild of both games.
Blackjack — real 3D, rebuilt to spec
Rebuilt against docs/blackjack-spec.md. Three defects that survived five rounds of value-tweaking each had a specific technical cause:
- Glare —
EffectComposerrenders to a HalfFloat target, and three.js forcesNoToneMappingwhen rendering off-screen, soUnrealBloomPasswas reading raw linear HDR. A threshold of 1.0 meant "brighter than mid-grey", which ordinary diffuse-lit white cards exceed. The composer is gone: direct-to-canvas keeps MSAA and correct tone mapping, glow is authored as additive sprites, vignette is CSS. Lighting is now calibrated so the brightest diffuse white lands at ~0.86 linear. - Blank cards —
renderToStaticMarkupomits thexmlnsadata:URI requires, so every card texture silently failed to decode. The first fix then produced duplicatewidth/heighton self-sizing components — also a parse error, also silent. - Perspective — a 46° lens at 13 units. Now 30° at a computed ~25 units, 17° off vertical: near-orthographic bird's-eye, locked off, distance re-solved on every resize.
Also new: rounded card stock with face/back decals, a dealing shoe and discard tray whose fill tracks real shoe state, a discard sweep so rounds end instead of blinking out, payout chips pushed across the felt on a win, a bankroll chip rack that stows while a hand is in play, and pitch-jittered impact sounds owned by the scene (only it knows when a card lands).
Snake — a Google Snake replica
Full rewrite. The snake is no longer a row of squares but a single polyline stroked with round caps and joins, which yields the capsule body, rounded corner turns, and tapered tail for free. Smooth motion interpolates only the two ends of that polyline, so the body never wobbles through a turn.
Google's exact palette, 17×15 board, constant 125ms/step, turns buffered two deep so fast keypresses both land, and apple spawn that enumerates free cells rather than rejection-sampling (which degrades to an unbounded loop exactly when the board fills).
Compatibility
apiVersion 1, Tier-0 only — no permissions requested. Requires an Agent Code build that scales oversized modal extensions to fit the window; the games report a fixed 892×652 natural size.
v0.4.2 — felt on top
Fixes the buried-felt/sunken-chips bug (wood was rendering over the felt). Green felt visible now, chips rest on the surface. Update or Load folder.
v0.4.1 — light the table
Fixes the near-black 3D scene (Three r155 physical light units). Bright, shadowed table now. Update or Load folder.
v0.4.0 — Blackjack in real 3D
The table is now a true WebGL 3D scene: lit + shadowed felt and wood rail, 3D card meshes (fly from the shoe, flip on reveal), chip meshes tossed onto the bet spot, and bloom + vignette post. Requires the latest Agent Code (content-driven modal width). Update or Load folder.
v0.3.0 — Blackjack: bigger, 3D, more juice
A large 860px table with a tilted felt, 3D hole-card flip, tossed chip stacks, a coin-shower win celebration, and breathing active hands. Requires the latest Agent Code (content-driven modal width). Update or Load folder.