Cowork Apps

229 apps · 4 Reviews

πŸ₯Š Action Games 12 apps · 1 new
🧩 Adult Puzzle Apps 11 apps · 1 new
πŸ–ŒοΈ Art Apps 11 apps · 2 new
πŸƒ Card Games Apps 7 apps
🏫 Classroom Tools 10 apps
✍️ Content Creation Apps 17 apps
πŸ“± Cooking Games 5 apps · 1 new
πŸ“± Crafts 5 apps · 2 new
πŸ› οΈ Custom Apps 6 apps · 6 new
πŸ“ˆ Data Visualization Apps 11 apps · 2 new
🎧 Dj Music Apps 8 apps · 2 new
πŸŽ“ Educational Apps 11 apps · 1 new
πŸ‘— Fashion Apps 8 apps · 1 new
🩺 Health Productivity Apps 11 apps · 1 new
πŸ“± Inspirational 4 apps · 1 new
🧸 Kids Apps 23 apps · 3 new
🎹 Music Apps 14 apps · 4 new
🎢 Music Game Apps 7 apps
πŸ“± Music Production 6 apps · 2 new
πŸŽ‰ Party Apps 10 apps
πŸ“± Shooting Games 1 apps · 1 new
🎯 Shooting Games Apps 7 apps
⚽ Sports Games Apps 7 apps · 1 new
🎲 Table Games Apps 10 apps · 2 new
🧘 Therapy Apps 7 apps · 2 new
weekly-2026-06-28

Weekly Collection Review β€” 2026-06-28

*Window: last 7 days (everything dated 06-24 β†’ 06-28). Builds on the previous weekly (weekly-review-2026-06-25.md) and the daily reports (review-2026-06-25.md, review-2026-06-27.md). The 06-26 and 06-28 batches had no daily report, so they were skimmed fresh for this pass.*

State of the collection

The library roughly quintupled in a week β€” from ~33 apps to ~190 (about 184 created in the last 7 days) β€” and, more importantly, it burst its own schema: the 8 documented categories have spawned ~18 more (action, sports, shooting, card, table, party, cooking, music-games, DJ, music-production, therapy, inspirational, content-creation, fashion, crafts). Quality is still high β€” the dailies logged zero broken apps and the viewport guardrail jumped from ~64% to ~91% compliance β€” and two prior-weekly complaints (Art stuck on particle/flow, Educational stuck on STEM) were directly answered this week. The headline risk has shifted from *narrowness* to *sprawl*: duplicate folders, nested "Generator" subfolders, orphaned legacy folders, and the same concept (step-sequencer, monster-maker, breathing/calm tool) now appearing in three or four different categories.

Best of the Week

Picked from the genuinely new material (06-26 β†’ 06-28); the 06-24/25 standouts were already crowned last weekly.

  • Mandelbrot & Julia Explorer (data & viz, 2026-06-28) β€” A from-scratch escape-time fractal renderer with zoom/pan into the complex plane, set-switching, double-click to set the Julia constant, and smooth continuous coloring. Technically the most ambitious build of the back half of the week and genuinely re-explorable.
  • Phantom Traffic Jam Sim (data & viz, 2026-06-26) β€” Cars on a ring road driven by the *Intelligent Driver Model*, showing how stop-and-go waves emerge from nothing, with a live space-time diagram. Correct traffic-flow science, not a toy β€” a real teaching artifact.
  • Cyclic Spiral Automaton (art, 2026-06-28) β€” A cyclic cellular automaton whose color noise self-organizes into rotating spiral "demon" waves. This is *exactly* the non-particle direction last weekly asked Art to explore, and it's mesmerizing on its own merits β€” quality and responsiveness in one app.
  • Focus Garden (Pomodoro) (health & productivity, 2026-06-28) β€” A pomodoro timer where every completed session grows a unique, procedurally-drawn plant in a daily garden. A tired genre given a fresh, motivating hook with real generative art under it.
  • Geography β€” World Capitals Explorer (educational, 2026-06-26) β€” Continent-by-continent "passport adventure" capitals quiz with streaks. Not the flashiest, but it's the app that broke Educational out of its all-STEM rut β€” a deliberate gap-fill that landed well.

*Honorable mentions: Bridges/Hashi and Word Ladder (BFS-generated, guaranteed-solvable) keep Adult Puzzles broad and rigorous; Boids Flocking Sim with a live order parameter is a clean emergence demo.*

Polish Candidates (strong idea, rough or thin execution)

  • Short-Form Video Hook Builder (Content Creation/teen, 2026-06-27) β€” Daily-flagged: the "vibe" selector is decorative β€” S.vibe is never read in hook or beat generation, only echoed in the copied header. *One fix:* branch the hook/beat wording on vibe, or soften the step-1 copy so it stops over-promising.
  • Quiz Show Buzzers (classroom, 2026-06-27) β€” Fully wired, but missing the maximum-scale=1.0, user-scalable=no viewport guardrail. *One fix:* the standard one-line viewport correction.
  • Echo Chamber (music, 2026-06-28) β€” A polished musical Simon-says, but it's the collection's *third* call-and-repeat memory game (alongside kids' Critter Chorus and Memory Zoo). *One fix:* lean harder on the free "Jam mode" so it's a playable instrument, not just another memory drill β€” that's what would differentiate it.
  • Cartoon Coach (kids, 2026-06-26) β€” Floor-is-Lava / Simon-Says / Red-Light-Green-Light voice game that substantially duplicates party_apps/party-command-games. *One fix:* pick one home for the movement-game engine and make the kids version genuinely kid-distinct (mascot, simpler flow), or retire one.

Skip / Forgettable

Not bad, just redundant or baseline. The second 808 drum machine in Music Production (2026-06-28-drum-machine-808-step-sequencer) is near-identical to the 2026-06-27 one in the same folder β€” keep one. The legacy undated Title-Case apps (Music Apps/song-maker, Kids Apps/*, Educational Apps/kids-math-play, Art Apps/draw-and-color) look like first-week prototypes long since superseded by their *_apps equivalents. And several of the "Order Rush" cooking clones (burger / ramen / sunny-side) are the same loop reskinned three times.

Repetition Watch

The important section β€” and the picture is now *cross-category*, not just within-category.

  • Music β€” the biggest duplication in the collection. The step-sequencer / drum-machine pattern now exists in at least five places: musicapps/pulse-grid, musicgameapps/music-maker-sequencer, djmusic_apps/DJ/sampler-pad, and two 808 sequencers in Music Production. *Fresh directions:* a tuner/pitch trainer, a looper/overdub recorder, a generative ambient/Eno-style system, or a notation/sight-reading tool β€” anything that isn't a 16-step grid.
  • Kids β€” overlapping "maker" and "memory" toys. Two monster-makers (kids_apps/monster-maker-lab + Content Creation/imagination-monster-maker), three memory matches (critter-chorus, memory-zoo, ranked-memory), two bubble-poppers (bubble-pop, splashy-bubbles), and two movement-game boxes (cartoon-coach, party-command-games). *Fresh directions:* storytelling/comic builder, simple drawing/coloring, cause-and-effect physics toy, early-reading/phonics, shape & pattern matching.
  • Educational β€” broadened, but math still dominates. Genuinely fixed the STEM-only flag (added geography, language roots, biology classification, finance). But math is now the largest cluster on its own (coordinate hunt, guided worksheets, angle estimation, compound interest). *Fresh directions:* history/timelines, civics/maps, reading comprehension, music theory, art history.
  • Wellness is now split across three folders. Breathing/calm/grounding lives in healthproductivity (breath-pacer, stretch-flow, deephum), therapyapps (EMDR Γ—2, PMR, CBT, mood), *and* Inspirational (affirmations, gratitude). There's real overlap (two EMDR pacers; multiple breathing tools). *Fresh direction:* consolidate the "calm" concepts and push therapy toward distinct modalities (sleep, journaling-with-prompts, values/ACT).
  • Healthy, no action needed: Adult Puzzles (10 apps spanning Latin-square, packing, picross, path, cipher, induction, network, rotation, word β€” a model spread), Art (now particle, flow, reaction-diffusion, tiling, recursive tree, and CA), and Data & Viz (chaos, epidemiology, statistics, finance, signal, flocking, traffic, economics, fractals β€” no two alike).

Quality Trend

Holding strong on *app* quality, slipping on *collection* tidiness.

1. Guardrail compliance is way up. ~168 of ~184 dated apps (~91%) now include the maximum-scale=1.0, user-scalable=no viewport, versus ~64% in the opening week. The residual misses cluster in the Content Creation script-builders and quiz-show-buzzers β€” exactly the apps the dailies already flagged. Systemic win.

2. No broken apps. Both dailies this week logged 0 broken (06-25: 13 ship / 1 minor; 06-27: 5 ship / 3 minor). Logic correctness on the substantive builds (animal classification, Mastermind AI, sequencers, fractals) is consistently sound.

3. Folder discipline is the new regression. CLAUDE.md mandates flat category folders, but reality now has nested "Generator" subfolders (Action Games Generator/, Sports Games Generator/, Shooting Games Generator/), duplicate folders for one category (cardgamesapps/ + cardgamesapps/Card Games/; shootinggamesapps/... + a separate Shooting Games/; djmusicapps/ + djmusicapps/DJ/), and orphaned legacy folders. A couple of apps also drift on boilerplate order (cartoon-coach, splashy-bubbles carry the viewport tag down at line 23). Harmless per-file; messy at this growth rate.

Folder Health

Counts are by filename date; the library is ~1 week old, so for the original categories "added this week" β‰ˆ total. "New since 06-25 weekly" = files dated 06-26β†’28.

The 8 documented categories

CategoryFolderTotal filesAdded this weekNew since 06-25Flag
Kids Gameskids_apps16169β€” (busiest category; watch overlap)
Musicmusic_apps10102β€”
Adult Puzzlesadultpuzzleapps10103β€” (model variety)
Classroom Toolsclassroom_tools10104β€”
Productivity & Fitnesshealthproductivityapps10104β€”
Educationaleducational_apps994β€” (math-heavy)
Data & Vizdatavisualizationapps994β€” (strongest category)
Artart_apps883β€” (formula fixed)

New expansion categories (all created this week)

CategoryFolderTotal filesFlag
Content CreationContent Creation Apps/ (kid/teen/adult)15β€” (3 nested subfolders)
Action Gamesaction_games/Action Games Generator/11nested "Generator" subfolder
Party Gamesparty_apps10β€”
Table Gamestablegamesapps8β€”
Card Gamescardgamesapps (+ Card Games/)7duplicate subfolder
Music Gamesmusicgameapps7overlaps music_apps / DJ
Sports Gamessportsgamesapps/Sports Games Generator/7nested "Generator" subfolder
Shooting Gamesshootinggamesapps/... + Shooting Games/7split across two folders
Fashionfashion_apps/Fashion/6nested subfolder
DJ / Musicdjmusicapps (+ DJ/)5duplicate subfolder
Therapytherapy_apps5overlaps Health & Inspirational
Music ProductionMusic Production42 near-identical 808s
Cooking GamesCooking Games43 "Order Rush" reskins
CraftsCrafts3β€”
InspirationalInspirational3overlaps Health & Therapy

Legacy (undated, produced nothing this week)

FolderFilesFlag
Kids Apps4archive β€” superseded by kids_apps
Music Apps1archive β€” superseded by music_apps
Educational Apps1archive β€” superseded by educational_apps
Art Apps1archive β€” superseded by art_apps

No folder is anywhere near the 60-file archive threshold. Every *active* generator produced this week. The only "produced nothing" folders are the four legacy Title-Case ones β€” those aren't stalled generators, they're abandoned early prototypes safe to archive.

Recommendations

1. Tidy the folder tree before it sets. Flatten the nested * Generator/ subfolders into their category roots; merge the duplicate pairs (cardgamesapps + Card Games, shootinggamesapps + Shooting Games, djmusicapps + DJ); and archive the four orphaned legacy Title-Case folders. This is the single highest-value cleanup right now.

2. Decide whether the schema is 8 or ~26. The collection has plainly outgrown CLAUDE.md's 8 categories. Either bless the new ones (and document them) or fold them back in β€” but stop letting each new generator invent its own folder convention.

3. De-duplicate Music. You have 4–5 step-sequencers and two 808s. Retire the redundant 808 and steer the music generators toward non-sequencer ideas (tuner, looper, generative ambient, sight-reading).

4. Keep nudging Educational past math, and thin the Kids "maker/memory" cluster β€” both categories are repeating themselves faster than the others.

5. Reinforce the viewport guardrail in the build prompt for the Content Creation generators specifically β€” that's where the remaining ~9% of misses live.

6. Two quick wins ready to ship: wire the Short-Form Video "vibe" selector into actual output, and add the missing viewport line to quiz-show-buzzers.

7. No archiving needed on volume. Revisit folder counts in ~4–6 weeks; at the current ~26 apps/day pace, kids_apps and the games folders will be the first to cross 60.

*Read-only review β€” no app files were edited.*

weekly-2026-06-25

Weekly Collection Review β€” 2026-06-25

*Window: last 7 days. Effectively the collection's opening week β€” every file is dated 06-24 or 06-25.*

> Live-generation note: the library was actively being generated during this review β€” it grew from 24 to 33 apps mid-pass. Counts below are a snapshot as of this writing and may already be slightly behind. A daily report exists for the 06-24 batch (review-2026-06-25.md: 9 ship-it / 1 minor / 0 broken); this weekly builds on it and adds a fresh skim of the 06-25 apps, which have not been daily-reviewed.

State of the collection

The library is brand-new but already substantial: 33 self-contained HTML apps across all 8 categories, all created this week. Quality is high and consistent β€” zero external/CDN dependencies anywhere, a coherent design language, and most apps are real builds rather than stubs (the week's biggest is a ~1,400-line planner). The encouraging signal is that the newest 06-25 apps are actively *filling gaps* the categories were starting to leave open (a cipher and a path puzzle in Adult Puzzles, a breathing tool in Productivity, a chord composer in Music). The two things to watch: Art has converged on a single aesthetic, and a viewport-meta guardrail is being skipped in about a third of files.

Best of the Week

  • To-Do β†’ Schedule (productivity, todo-to-schedule) β€” The most feature-complete "useful tool" of the week (~1,415 lines): split-panel tasks + Day/Week/Month calendar, drag-to-schedule, smart filters, inline task drawer, live time indicator, localStorage persistence. The one people would actually keep open.
  • Nonogram / Picross (adult puzzles) β€” Procedurally generates puzzles *and verifies each has a unique logic-only solution* β€” the hard part most clones skip. Polished play surface: unified pointer/touch drag for fill-vs-mark and clue lines that dim as you satisfy them.
  • Central Limit Theorem Sampler (data & viz) β€” Statistically correct (SE = Οƒ/√n, dynamic histogram windowing, accurate PDF rendering), dual-canvas live view where the sampling distribution visibly tightens as n grows. Excellent teaching artifact.
  • Epidemic Spread Sim (SIR) (data & viz) β€” Agent-based dots + live stacked SIR curve + running R-effective, with transmission/recovery/distancing/vaccination on sliders. Genuinely interactive, not a static chart.
  • String Field (music) β€” Karplus-Strong physical-modeling of plucked strings: real DSP standing-wave synthesis driving the visuals, not canned oscillators. The most technically ambitious app of the week.

*Honorable mentions: Note Cascade and the new Chord Loom (functional-harmony "next chord" suggestions) make Music deep; Futoshiki and Strange Attractor Atlas were ship-it in the 06-24 daily report.*

Polish Candidates (strong idea, rough or thin execution)

  • Name Picker Wheel (classroom) β€” The "No repeats" toggle is a dead control (flagged in the daily report): it's never read in JS, so the advertised "work through the class without repeats" never happens. *Fix:* in showWinner(), remove the winner from the list when the toggle is checked.
  • Double-Pendulum Chaos (data & viz) β€” Visual is perfect, but the "Spread (range)" stat blanks to "β€”" once accumulated angles exceed 1000Β°. *Fix:* wrap each angle to (βˆ’Ο€, Ο€] before computing the range.
  • Shell Game β€” Cups (adult puzzles) β€” A tracking *toy* in a *logic-puzzle* folder; loop is shallow. *Fix:* add escalating difficulty (more cups / faster shuffles) and a streak score so it earns its place.
  • Frog First Planner (productivity) β€” Lovely "eat the frog" framing, but momentum resets each load. *Fix:* persist across days with a completion history/streak so the payoff compounds.

Skip / Forgettable

Not bad, just baseline β€” competent but unremarkable: Visual Countdown Timer and Team Scoreboard are the expected big-screen classroom utilities, and Gravity Wells is a perfectly nice but well-trodden particle-attractor demo. Keep them; they just won't be the showcase pieces.

Repetition Watch

The important read β€” and the picture improved during the week as new apps landed.

  • Art β€” *the one to act on.* All four (strange-attractor-atlas, gravity-wells, mirror-bloom, flow-field-silk) are glowing-particles/flow-on-dark-canvas. It's a beautiful formula but it's now the *whole* category. *Fresh directions:* reaction-diffusion (Gray-Scott) textures, geometric/Islamic tiling or Wave-Function-Collapse, or typographic / image-based glitch art.
  • Educational β€” STEM-only. All three are math/CS/physics (binary, states of matter, coordinate hunt). *Fresh directions:* history/timelines, geography & maps, language/vocabulary, or life science (cells, ecosystems).
  • Adult Puzzles β€” *self-corrected.* Was clustering on grid-fill; the new hidato (path) and cryptogram (word/cipher) broadened it to a healthy mix of grid-logic, path, word, and tracking. Keep that spread going rather than adding a 4th Latin-square variant.
  • Productivity β€” *self-corrected.* The new breath-pacer broke the two-planner lean. A habit-streak tracker or pomodoro would round it out further.
  • Music β€” healthy. Sequencer, physical-modeled instrument, rhythm game, ambient field, chord composer. Only two lean ambient; a sample/step drum machine or a tuner would be the next fresh angle.
  • Classroom β€” mild. Picker, timer, scoreboard, and the new jeopardy board (a review *game*, a step up from display utilities), but two are now scoring tools. A noise-level monitor or random group generator would diversify.
  • Kids & Data/Viz β€” varied, no action needed. Kids spans arcade/memory/counting; Data/Viz spans chaos, epidemiology, statistics, and finance.

Quality Trend

Holding strong, trending up. The self-contained guardrail held perfectly β€” no external dependencies in any of the 33 files, and the 06-25 batch is more ambitious than 06-24 (the planner, the verified-unique nonogram generator, the correct CLT/SIR sims) with no broken apps found on skim. Two systemic items to nudge:

1. Viewport guardrail slip. ~12 of 33 apps omit the required maximum-scale=1.0, user-scalable=no viewport meta (concentrated in the 06-24 music and several educational/classroom apps). The newer batch is more compliant, so it's trending the right way β€” worth reinforcing in the build prompt.

2. Vestigial code + folder drift. Unused vars keep slipping through (sideOf/lastSide, perRound per the daily report), and several apps land in ad-hoc nested subfolders (musicapps/Music Prototype Ideas/, healthproductivity_apps/Productivity & Fitness/) instead of the flat category folders. Harmless now, messy at scale.

Folder Health

CategoryFolderTotal filesAdded this weekFlag
Musicmusic_apps55β€” (1 nested in Music Prototype Ideas/)
Kids Gameskids_apps33β€”
Productivity & Fitnesshealthproductivityapps44β€” (3 nested in Productivity & Fitness/)
Educationaleducational_apps33β€”
Adult Puzzlesadultpuzzleapps66β€”
Artart_apps44β€”
Data & Vizdatavisualizationapps44β€”
Classroom Toolsclassroom_tools44β€”
Total3333None over 60; none empty

No folder is anywhere near the 60-file archive threshold, and every folder produced something this week β€” no stalled or failing generators.

Recommendations

1. Steer Art off particle/flow canvases for the next few builds β€” it's the only category that's now a single formula (4/4). Push toward reaction-diffusion, tiling/WFC, or typographic art.

2. Broaden Educational beyond STEM β€” explicitly request a history, geography, language, or biology app next.

3. Keep doing what fixed Puzzles & Productivity β€” the generators clearly respond to variety nudges; the path/word puzzles and breathing tool landed exactly where prior gaps were.

4. Reinforce the viewport guardrail (maximum-scale=1.0, user-scalable=no) in the build instructions; ~1/3 of apps still miss it.

5. Flatten the stray subfolders β€” move stillness-field, flowstate-interval-trainer, frog-first-planner, and breath-pacer up into their category roots before the habit sets in. (Also: the brief's category labels like "Data & Viz"/"Adult Puzzles" don't match the real folder names datavisualizationapps/adultpuzzleapps β€” worth reconciling.)

6. Two quick wins ready to ship: wire the Name Picker "No repeats" toggle and fix the double-pendulum spread readout β€” both one-change fixes on otherwise solid apps.

7. No archiving needed. Revisit folder counts in ~4–6 weeks as volume grows.

2026-06-27

Daily App Review β€” 2026-06-27

8 new apps: 5 ship-it, 3 minor, 0 broken. All run, all self-contained (Web Audio / canvas / localStorage only β€” no external links). Reviewed by reading + logic-tracing the code; no live browser run.

AppCategoryRatingKey findings
2026-06-27-quiz-show-buzzers.htmlclassroom_tools⚠️ MINORBuzzer lockout, keys, tap-to-buzz, score +/- and setup modal all wired correctly. Viewport tag missing maximum-scale=1.0, user-scalable=no (house guardrail).
2026-06-27-science-animal-classification-sorter.htmleducationalβœ… SHIP ITVertebrate science is correct across all 27 animals (whale/dolphin/bat = mammal, penguin = bird, shark = fish). Drag-drop, scoring, rounds, accuracy all solid.
2026-06-27-music-maker-sequencer-beat-loop-studio.htmlmusicgameappsβœ… SHIP IT16-step sequencer + bass lane, swing, presets, random, mute, playhead β€” all functional. Preset strings parse safely (clamped to scale).
2026-06-27-beat-buddy-boogie.htmlkids_appsβœ… SHIP ITRhythm tap game with timing judge, combos, stars, confetti, 3 songs. Trivial: beat counter flashes "29/28" for one frame at the end.
2026-06-27-puzzle-deduction-cipher-duel.htmltablegamesappsβœ… SHIP ITMastermind scoring correct; AI uses proper candidate-filtering. Win/draw/insight logic all coherent.
2026-06-27-textile-bead-loom-bracelet-designer.htmlCraftsβœ… SHIP ITCanvas loom paint + mirror, fill-row, pattern generator, clear, PNG export all work. Minor dead code (apply, window._noop) β€” harmless.
2026-06-27-video-podcast-youtube-script-builder.htmlContent Creation/adult⚠️ MINORFull script generator (hook/intro/beats/B-roll/CTA), copy, download, autosave all work. Viewport tag missing maximum-scale=1.0, user-scalable=no.
2026-06-27-short-form-video-hook-script-builder.htmlContent Creation/teen⚠️ MINORHooks, beat sheet, caption, hashtags, timer all work. The "vibe" selection doesn't actually influence hooks or script beats β€” it only appears in the copied header.

What to fix

⚠️ 2026-06-27-quiz-show-buzzers.html (classroom_tools)

  • Line 6 β€” viewport. Currently content="width=device-width, initial-scale=1.0". Per the house rule it must be content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" to stop pinch-zoom on the fixed canvas. One-line fix.

⚠️ 2026-06-27-video-podcast-youtube-script-builder.html (Content Creation/adult)

  • Line 6 β€” viewport. Same as above: missing maximum-scale=1.0, user-scalable=no. One-line fix.

⚠️ 2026-06-27-short-form-video-hook-script-builder.html (Content Creation/teen)

  • beatsFor() (line ~306) and pickHooks() (line ~415) β€” unused vibe. The header copy promises the vibe "shapes your hooks and script beats," but S.vibe is never read in hook or beat generation (only echoed in the copy-out header at line ~504). Either (a) branch hook/beat wording on vibe, or (b) soften the step-1 copy so it doesn't over-promise. Functional as-is, just an unmet expectation.

Notes

  • The named folders in the task (Music, Kids Games, etc.) don't all match the actual repo folders; today's apps landed in classroomtools, educationalapps, musicgameapps, kidsapps, tablegames_apps, Crafts, and Content Creation Apps/{adult,teen}. Reviewed all today-dated files regardless of folder name.
  • Both viewport misses are the single most common house-style guardrail slip and are trivial one-line fixes.
  • Read-only review β€” no app files were edited.
2026-06-25

Daily App Review β€” 2026-06-25

14 new apps: 13 ship-it, 1 minor, 0 broken. (Kids Games: no new app today.) Every app reads as fully self-contained β€” no CDN links, no external files, no broken references. Review is based on careful code/logic tracing; a live click-through is still recommended for animation feel and audio.

AppCategoryRatingKey findings
2026-06-25-note-cascade.htmlMusic⚠️ MINORRhythm game runs; audio scheduler, judging, combo layers all wired. No way to restart/pause once a round starts (overlay only reappears on reload) β€” project checklist wants a reset for games.
2026-06-25-stillness-field.htmlMusicβœ… SHIP IT5 synthesized instruments + tanpura drone, reverb/vol/scale/key controls, ripple visuals. All audio nodes and UI wiring trace clean.
2026-06-25-todo-to-schedule.htmlProductivity & Fitnessβœ… SHIP ITFull task list + day/week/month calendar, drag-to-schedule, priority, due dates, drawer, time indicator. localStorage namespaced correctly. Logic solid.
2026-06-25-frog-first-planner.htmlProductivity & Fitnessβœ… SHIP IT"Eat the frog" Big-3 planner; lock-in flow, momentum ring (289.02 β‰ˆ 2Ο€r), confetti, frog-first lock logic correct. Input is XSS-escaped.
2026-06-25-logic-binary-bit-builder.htmlEducationalβœ… SHIP ITBinary place-value builder; decValue/place math correct, learn/challenge modes, timer, hints all work. (Viewport lacks user-scalable=no β€” cosmetic only.)
2026-06-25-polyomino-block-fit.htmlAdult Puzzlesβœ… SHIP ITGrid partitioned into regions β†’ guaranteed solvable; rotate/flip orientations, ghost preview, place/lift, win detection all correct.
2026-06-25-shell-game-cups.htmlAdult Puzzlesβœ… SHIP ITBall tracked by cup id through animated swaps; two camera views, speed/length/count controls, scoring, reveal. Hit-testing has x-fallback. Clean.
2026-06-25-nonogram-picross.htmlAdult Puzzlesβœ… SHIP ITReal line-solver + uniqueness check guarantees logic-solvable puzzles. Clue extraction, win, hint, save/resume all correct. Strong build.
2026-06-25-gravity-wells.htmlArtβœ… SHIP ITParticle attractor system; trails toggle, clear, empty-wells guarded. No issues.
2026-06-25-mirror-bloom-symmetry-painter.htmlArtβœ… SHIP ITN-fold radial + mirror symmetry math correct, glow/drift/hue controls, save-PNG, resize preserves canvas.
2026-06-25-epidemic-spread-sim.htmlData & Vizβœ… SHIP ITAgent-based SIR; S/I/R/V accounting consistent, grid-based transmission, time-step-independent hazard, live Rt. R0 clearly labeled an estimate. Model sound.
2026-06-25-central-limit-theorem-sampler.htmlData & Vizβœ… SHIP ITAll distribution moments verified correct (uniform, exp, bimodal var=9.445, dice, arcsine, calibrated skew). SE=Οƒ/√n overlay correct.
2026-06-25-visual-countdown-timer.htmlClassroom Toolsβœ… SHIP ITperformance.now-based countdown, ring, color stages, chime, fullscreen, keyboard, +1 min. Solid.
2026-06-25-team-scoreboard.htmlClassroom Toolsβœ… SHIP ITEditable teams, tap-to-score, leader crown (no crown on tie/zero), winner overlay, confetti, persistence. Correct.

What to fix

⚠️ Note Cascade (music) β€” no restart once playing

  • Where: game loop / overlay. After startGame() sets running=true and hides the overlay (~line 471), nothing ever sets running=false again, so the start overlay never returns and there's no pause/restart button. Space only restarts when !running, which never happens.
  • Fix: add a small Pause/Restart control in the .bar (or tap-to-pause) that toggles running and re-shows #overlay, resetting score/tiles/step. Satisfies the project checklist's "way to restart" rule for games.

Minor notes (not blocking β€” no rating change)

  • CLT Sampler: at n=1 the histogram window is ΞΌΒ±4Β·Οƒ, so the heaviest tails of skewed/exponential populations fall outside the bins and aren't counted. Cosmetic at n=1; the window tightens correctly for larger n. Could widen the n=1 window if desired.
  • Viewport convention: Bit by Bit, Frog First, Countdown Timer, and Team Scoreboard use width=device-width, initial-scale=1.0 without maximum-scale=1.0, user-scalable=no. Harmless, but the other apps include it β€” worth standardizing.
  • localStorage key naming: Picross (picrossprogress/picrossstats) and Team Scoreboard (classScoreboard.v1) don't use the cowork-{app}-{key} namespace from CLAUDE.md. Functional, just off-convention. (To-Do β†’ Schedule does follow it.)

Folders checked: Music (2), Kids Games (0 β€” none today), Productivity & Fitness (2), Educational (1), Adult Puzzles (3), Art (2), Data & Viz (2), Classroom Tools (2).

2026-07-01 23:43Pending AI Review
[Make It Lab] Improve the look of this. My kids don't like their options
2026-07-01 23:42Pending AI Review
[Cookie Cafe Counting] Add more levels to this
2026-07-01 23:23Pending AI Review
[Drawing Kaleidoscope Brush] Duplicate of Madala painter
2026-07-01 23:11Pending AI Review
[Runner Shadow Sprint] I can't tell what the obstacles are. Freshen up the UI of this
2026-07-01 22:39Pending AI Review
[Splashy Bubbles] Just shows code
2026-07-01 21:04Pending AI Review
[Bubble Pop] Add more content
2026-07-01 21:03Pending AI Review
[Card Match Play] Improve the UI of these games
2026-07-01 21:01Pending AI Review
[Find It Game] Can’t see the background images
2026-07-01 20:59Pending AI Review
[Feed The Monster] More challenges
2026-07-01 20:58Pending AI Review
[Twinkle Repeat Pattern] Work on improving sound
2026-07-01 20:56Pending AI Review
[Draw And Color] Still can’t open
2026-07-01 20:56Pending AI Review
[Stained Glass Generator] Add more to this, especially since we can touch the screen
2026-07-01 03:31Pending AI Review
[Shell Game Cups] Make start game button a different color or stand out more
2026-07-01 03:19Pending AI Review
[Net Pipe Rotation] I like this a lot. Improve on the look of the ui
2026-07-01 03:17Pending AI Review
[Ski Jump Summit Send] Improve the ui and on controls
2026-07-01 03:15AI Reviewed
[Baseball Home Run Derby] Update the ui of this baseball game. You can’t tell when it is a home run
The core issue is in `feetToScreen()` (2026-06-28-baseball-home-run-derby.html:415-422): the ball's screen Y position is driven purely by height (`f.y`), and it always eases back down toward `plateY` (H*0.9, right at home plate) as the ball descends β€” regardless of how far it traveled. The outfield fence is a static horizontal bar drawn at `H*0.58` (line 333), but nothing in the flight path ever visually reaches or crosses that line, so a 450ft bomb and a routine fly-out look almost identical mid-flight. The only differentiator is the post-landing `flash()` text (line 260-264), which is easy to miss since it's just a 1.4s fading caption. Fix: make depth (`f.x`) contribute to the ball's vertical screen position too, so the trajectory visibly climbs toward the fence line as distance increases and only "disappears" over the wall (sy < H*0.58) when `f.x >= FENCE_FT`; for outs, keep the arc landing in the grass below the fence line. Pair that with a stronger moment-of-truth cue: flash the fence gold/shake the screen when the trail crosses it, rather than relying solely on the text popup after the ball lands.
2026-07-01 03:12AI Reviewed
[Archery Windward Range] Add multiplayer and moving targets
True networked multiplayer isn't realistic here β€” no server/websocket layer exists (just `serve_apps.py` serving static files), and localStorage is per-device. A feasible version is local **hotseat multiplayer**: alternate turns between two players on one device, each getting their own 5-end score tally displayed side-by-side (reuse the existing `STATE`/`ENDS` structure in `2026-06-26-archery-windward-range.html`, just add a `players[]` array and swap the AI opponent for player 2's turn). Moving targets are easy β€” the target is drawn each frame in `layout()`/render, so add a horizontal oscillation (`sin(time)`) to the target's X or Y before scoring, and increase difficulty by ramping amplitude/speed per end. I'd scope this as: local 2-player hotseat + moving targets, not networked play, unless Lance wants to invest in a WebSocket relay (out of scope for this static-file setup).
2026-07-01 03:08Pending AI Review
[Wave Painter] Can’t start
2026-07-01 03:08Pending AI Review
[Song Maker] Doesn’t open
2026-07-01 02:53AI Reviewed
[Visual Countdown Timer] Add more settings for the alarm and timer
The timer already has an on/off sound toggle (`soundBtn`, `soundOn` in classroom_tools/2026-06-25-visual-countdown-timer.html:72,138) but nothing else configurable β€” no alarm sound picker, volume, or repeat/vibrate options, and the "timer" side has no presets beyond whatever `setCustom` currently does. Feasible as a small scope add: extend the settings panel with a `<select>` for 2-3 alarm tones (reuse the existing `beep()`/`chime()` oscillator code with different frequency sequences), a volume slider feeding the gain param already passed to `beep()`, and a "repeat alarm N times" number input β€” all persisted via `localStorage` under `cowork-visualcountdowntimer-settings` per the project convention. I'd skip anything requiring external audio files since the app must stay a single self-contained HTML file.
2026-07-01 02:44AI Reviewed
[Turntable Dual Deck Scratch Dj] That 1st beat has a double clicking sound that clashes
`addKick`, `addStab`, and friends in `buildLoop()` (dj_music_apps/2026-06-26-turntable-dual-deck-scratch-dj.html, lines ~223-282) write raw samples into the buffer with no fade at note boundaries, and the loop point itself (buffer end wrapping to `buf[0]`) isn't guaranteed to be a zero-crossing β€” tails from the previous bar's snare/hat/sub get truncated abruptly right where beat 1's kick+stab also fire at `t=0`. That's likely two near-simultaneous discontinuities (the loop seam pop + the kick/stab onset) reading as a "double click." Fix: in `buildLoop()`, apply a short (~3-5ms) linear fade-in at the very start of the buffer and fade-out at the very end before `softclip(buf)` runs, so the loop seam is silent regardless of what's decaying into it. Also worth truncating `addKick`/`addSub`/`addStab` with a short release ramp (last ~5ms multiplied toward 0) instead of a hard stop at `N` samples, since several of these envelopes (e.g. `addSub`'s `exp(-k*3.0)`) are still well above zero when the loop cuts them off.
2026-07-01 02:22AI Reviewed
[Order Rush Burger Bistro] 3 different order rush games
Already three variants exist: `2026-06-27-order-rush-burger-bistro.html`, `-ramen-rush.html`, and `-sunny-side-diner.html`, all in `Cooking Games/`. So this note isn't a new build request β€” it's just documenting that the "3 different order rush games" concept is already done. No action needed unless you want a 4th variant or want me to verify the three still work correctly (worth a quick Playwright pass if it's been a while since they were tested).
2026-07-01 02:21AI Reviewed
[Mini Game Cooking Chefs Tempo] I coulsnt stir when asked to with finger
The `stir` mini-game (lines 728-807) reads finger movement as angular change around a center point (`this.lastA`, computed via something like `Math.atan2`), and only registers progress if the swirl radius/angle-delta crosses a threshold. Likely culprits: the touch handler isn't correctly wired for `touchmove`/`pointermove` (e.g., only listening for `mousemove`, or missing `{passive:false}` + `preventDefault()` causing the page to scroll instead), or the angle-delta math produces `NaN`/wrap-around glitches near Β±180Β°. I'd add console logging of `da` (delta-angle) on real touch input to see if events fire at all versus firing but not registering as valid swirl motion, then check the event listeners around line 746 for `pointerdown`/`pointermove` vs touch-specific events.
2026-07-01 02:20AI Reviewed
[Order Rush Sunny Side Diner] I like this one. Add more if you can
This is a "Cooking Games" order-matching game (`Cooking Games\2026-06-27-order-rush-sunny-side-diner.html`) β€” guests queue up, you build their order from a menu before their patience runs out. Given the CLAUDE.md conventions and that this note is a green light to expand rather than fix anything, I'd add: (1) more `MENU` items and `ICONS`/topping combos to deepen variety past `level` 1–3 difficulty ramps, (2) a second "shift" or theme (e.g. dinner/dessert menu unlocked at a `level` threshold) reusing the same seat/ticket mechanics, and (3) a simple daily-goal or combo-streak bonus tied to the existing `streak`/`money` vars for replay value. Since it already tracks `level`, `strikes`, `streak` cleanly, these are additive changes to `MENU`/`NAMES`/spawn logic rather than a rewrite β€” low risk. Want me to build one of these as a new file (e.g. `2026-07-02-order-rush-sunny-side-diner-v2.html`) or edit the existing file in place?
2026-07-01 02:13AI Reviewed
[Ski Jump Summit Send] cant restart after a match
Root cause found: in `sports_games_apps\Sports Games Generator\2026-06-26-ski-jump-summit-send.html`, `handleEdge()` (~line 166) only handles `state==='menu'|'result'|'approach'|'landing'`. After the 4th jump, `nextOrFinish()` sets `state='menu_done'`, which draws the "TAP / SPACE β€” NEW SESSION" screen (`drawDone()`), but `handleEdge()` has no branch for `'menu_done'`, so taps/keypresses are silently ignored and the player is stuck. Fix is a one-line addition: `if(state==='menu_done'){ startSession(); return; }` right after the `'menu'` check. I started making that edit but it needs your permission to write to the file β€” want me to proceed?
2026-07-01 02:04AI Reviewed
[Drum Machine 808 Step Sequencer] Duplicate
Confirmed: there are two copies β€” `Music Production\2026-06-27-drum-machine-808-step-sequencer.html` and `Music Production\2026-06-28-drum-machine-808-step-sequencer.html`. Diff the two to see if the 06-28 version is a superset/fix of 06-27 (likely β€” later date usually means a revision), then delete the older one and keep the newer, assuming content review confirms no unique features were lost. One more issue worth flagging: `Music Production` isn't one of the eight category folders defined in CLAUDE.md (should be `music_apps/`), so this file is currently outside the auto-discovery convention β€” move it into `music_apps/` with the correct folder name while you're deduplicating.
2026-07-01 02:01AI Reviewed
[Todo To Schedule] Add more content to this planner
Confirmed β€” "this planner" is `health_productivity_apps/2026-06-25-frog-first-planner.html`, the "Frog First" daily Big-3/eat-the-frog planner (momentum ring, streak tracking, dark/light theme). To add content per the todo, the highest-value additions would be: (1) a weekly review screen that tallies frog-completion streaks from `localStorage` (`cowork-frogfirst-*` keys) into a simple bar chart, (2) a small library of 10-15 rotating "why this matters" micro-tips shown after completing the Frog, and (3) an optional recurring-task templates picker (e.g. "Monday: inbox zero") so users aren't retyping their Big 3 daily. All three fit the existing single-file/localStorage pattern with no new dependencies β€” I'd scope it as one focused edit to that file rather than a new app. Want me to go ahead and implement these three additions?
2026-07-01 01:57AI Reviewed
[Twin Stick Neon Arena Survival] I dont understand how to play this. How can I shoot?
Controls are already implemented and documented on-screen: line 42-44 of `2026-06-27-twin-stick-neon-arena-survival.html` shows "Aim: Mouse / Fire: Click or hold" for desktop and "right stick to aim & fire" for touch β€” the `fire()` function (line 198) triggers whenever `mouse.down` is true or a right-side touch stick (`rStick`) is active (line 329). So mechanically it works; the likely issue is discoverability β€” the instructions text is small/easy to miss and there's no in-game prompt once play starts. I'd bump the font-size or contrast on that instructions block, or add a brief "Hold to fire!" pulse hint near the player for the first few seconds of a run so new players don't miss it.
2026-07-01 01:55AI Reviewed
[Space Shooter Stellar Vanguard] Make moving more fluid and shooting less annoying
Looked at `Shooting Games\2026-06-28-space-shooter-stellar-vanguard.html`: - **Movement lag**: the ship doesn't snap to the finger/mouse position β€” it lerps toward a target (`player.tx/ty`) at `dt*14` (line 376: `player.x+=dx*Math.min(1,dt*14)`). That factor only closes ~45% of the gap per frame, so there's a visible half-beat delay between where you drag and where the ship goes. Bumping the multiplier to ~22-26 (or removing the lerp entirely for touch/mouse and only using it for keyboard input) would make dragging feel 1:1. - **Annoying shooting**: auto-fire is unconditional and fixed-cadence (line 397: `autoTimer<=0){ fireNormal(); autoTimer=...0.16}`), so `SFX.shoot()` fires a beep every ~150ms nonstop for the whole run β€” that repetitive sound is almost certainly the complaint. On top of that, the beam-charge trigger is very twitchy: any pause in dragging over 180ms (line 771) auto-starts a charge, so normal steering keeps accidentally entering/canceling charge state. I'd fix both: (1) drop shoot SFX volume/vary pitch slightly per shot so it's not a metronome, and (2) raise the charge-trigger threshold to ~300-350ms and/or require the pointer to be *stationary within a small radius* rather than just "no move event," so casual steering doesn't misfire the charge mechanic. Both are small, targeted tweaks (two constants + one SFX call) β€” no architectural changes needed. Want me to make these edits directly in the file?
2026-07-01 01:53AI Reviewed
[Music Silly Sound Band] The sounds need to be of animals
The existing "Silly Sound Band" app isn't in `music_apps/` yet (I only see other titled apps like echo-chamber, pulse-grid, etc.), so this is either a new build request or the file's under a different name. Feasibility-wise, animal sounds are easy to do well without audio files: use Web Audio API oscillators/noise shaped with envelopes and filters to approximate a cow "moo" (low sawtooth with pitch bend), duck "quack" (short pulse-width square burst), cat "meow" (sine/triangle with pitch glide), etc. β€” no external audio assets needed, staying compliant with the "no external dependencies" rule. If you want me to build this as a new kids' music app (e.g. `music_apps/2026-07-01-silly-sound-band.html` or `kids_apps/` depending on tone), say so and I'll write the full synthesized-animal-sound version in one pass; if an existing "Silly Sound Band" file already exists elsewhere, point me to it and I'll swap its current instrument sounds for animal-sound synthesis instead.
2026-07-01 01:47AI Reviewed
[Draw And Color] doesnt open
This is enough to diagnose. Here's what I found: **`draw-and-color.html` violates the project's core conventions and that's almost certainly why it fails to load:** 1. **It's a bundled React app, not vanilla JS.** Line 9 contains minified React internals (`https://react.dev/errors/...`), meaning this file was produced by a build tool (Vite/webpack/CRA) rather than hand-written as a single `<script>` block. CLAUDE.md requires "vanilla JS only β€” no frameworks, no libraries" and "no build step." 2. **It loads an external CDN stylesheet**: `https://fonts.googleapis.com/css2?family=Inter...` on line 18. The app library is meant to be fully self-contained with everything inlined β€” no external URLs. If the machine serving/testing this has no internet access (typical for this local library), that blocking font request can hang or fail the render, and even if it loads, it's a policy violation. 3. It's also missing the required `<!-- CONCEPT: ... -->` first-line comment, another sign it wasn't authored through this pipeline. **Fix:** don't patch this file β€” it's structurally incompatible with the single-file vanilla-JS convention (minified React bundle, hashed internals, no readable source to safely edit). The right move is to rebuild "Draw And Color" from scratch as a proper `art_apps/` entry: canvas-based freehand drawing + color picker/palette, vanilla JS/Canvas 2D, inline everything, correct `YYYY-MM-DD-kebab-case-name.html` naming. Want me to build the replacement now?
2026-07-01 01:46AI Reviewed
[Cyclic Spiral Automaton] remove save png
This is a simple, low-risk removal β€” no need to make the edit here, just outline the fix. In `art_apps\2026-06-28-cyclic-spiral-automaton.html`, remove the `<button id="save">Save PNG</button>` element (line 127) and its corresponding event listener block (lines 350–358, the `$('save').addEventListener('click', ...)` handler that renders to a temp canvas and triggers a PNG download). No other code depends on the `save` button or its handler, so this is a clean two-spot deletion with no side effects on the rest of the automaton logic.
2026-07-01 01:45AI Reviewed
[Platformer Neon Spire Climb] Nothing happens
Found it β€” this is a genuine crash bug, not just a vague "check it" note. In `2026-06-26-platformer-neon-spire-climb.html`, `particles` (along with `player`, `platforms`, `crystals`) is only initialized inside `reset()` (line 164), which is called via `restartMaybe()` on the first keypress/tap/click. But the `requestAnimationFrame` loop starts immediately at load (line 661) with `state='title'`, and `update()` calls `updateParticles()` even in the title state (line 227), which does `for(const p of particles)` on an **undefined** `particles` array (line 369). That throws a TypeError on the very first animation frame, and since the throw happens before `requestAnimationFrame(loop)` is called again, the loop silently dies after one frame β€” nothing ever renders, matching "nothing happens" exactly. Fix: initialize `player={x:0,y:0,w:0,h:0,vx:0,vy:0}; platforms=[]; crystals=[]; particles=[];` at declaration (line 149) instead of only in `reset()`, so the title-screen frames don't crash before the player ever interacts.
2026-07-01 01:45AI Reviewed
[Puzzle Action Chain Reactor] Seems too hard to catch if you arent lucky in from the start
The chain-catch is the whole mechanic, so difficulty hinges on tuning, not a redesign. Key numbers in `2026-06-27-puzzle-action-chain-reactor.html`: `lives=3` (line 123/155), and the chain-reaction radius/orb drift speed governing how forgiving a single blast placement is β€” worth checking `buildLevel()` and the blast/orb collision logic near line 201-220 for orb count vs. quota at level 1. A quick fix: give the player a short "preview" pulse before detonation (highlight orbs currently in blast radius) or bump starting `lives` to 4-5 so early misses aren't instant failure; either is a small, low-risk tweak. If it's specifically that level 1 feels like a coin-flip, also consider loosening the blast radius or orb density in `buildLevel(1)` so the opening level is more consistently clearable.
2026-07-01 01:44AI Reviewed
[Runner Gravity Flux] Has potential but needs more depth to it
Runner Gravity Flux is a solid core loop (flip gravity, dodge spikes, streak orbs, escalating speed) but its depth is limited to one input and one hazard type. Concrete additions that fit the existing code (`2026-06-27-runner-gravity-flux.html`) without a rewrite: - **Hazard variety**: add moving/rotating spikes or narrow gaps that require timed double-flips, not just static obstacles on floor/ceiling. - **Power-ups**: alongside the existing orb pickups, add a shield (survive one hit), slow-mo burst, or magnet-for-orbs to break up the pure-avoidance rhythm. - **Zones/checkpoints**: swap visual theme and hazard pattern every N score threshold (the code already tracks score/multiplier in `#score`/`#mult`) so runs feel like they're progressing somewhere, not just speeding up uniformly. These are additive β€” new obstacle/pickup types plus a zone counter β€” and can be layered onto the existing spawn/update loop rather than restructuring the game.
2026-07-01 01:43Pending AI Review
[Puzzle Action Chain Bloom] I can see the aim but nothing happens
2026-07-01 01:41AI Reviewed
[Dodge Survive Graze Storm] Make the lose sound less scary
`die()` at line 106 of `2026-06-27-dodge-survive-graze-storm.html` is the culprit: a 0.3-vol white-noise burst (`noiseBurst(0.6,0.3)`) layered with two harsh sawtooth blips sliding down to 80Hz then 50Hz β€” that combo of noise + sawtooth + low pitch reads as "explosion/alarm," which is scary for a casual dodge game. Fix: swap `'sawtooth'` for `'triangle'` or `'sine'` (softer timbre), drop `noiseBurst` volume from 0.3 to ~0.12–0.15 and shorten it to ~0.3s, and raise the ending pitch floor (e.g. slide to 120β†’90 instead of 80β†’50) so it reads as a gentle "womp" rather than a crash. Something like: ```js die:()=>{noiseBurst(0.35,0.15); blip(300,0.25,'triangle',0.12,120);setTimeout(()=>blip(160,0.4,'triangle',0.1,90),180);} ``` Quick change, no structural risk β€” just tune and re-test in browser to confirm it feels less jarring.
2026-07-01 01:40AI Reviewed
[Combat Brawler Blade Rush] Doesnt open after hitting start
Found the exact bug. At `2026-06-28-combat-brawler-blade-rush.html:365`, `updateParticles()` reads `particles.length`, but `particles` is only initialized inside `resetGame()`, which runs after `begin()` is called (on Start click). The `update(dt)` function calls `updateParticles(dt,1)` even in `STATE.MENU` (line 268), so the very first `requestAnimationFrame` tick after page load throws `TypeError: Cannot read properties of undefined (reading 'length')` before Start is ever clicked β€” and because that error is uncaught inside `loop()`, it happens *before* `requestAnimationFrame(loop)` re-fires (line 265), permanently killing the render/update loop. So when the user clicks Start, `resetGame()` and `state=PLAY` do run correctly, but nothing ever renders again since `loop()` is dead β€” looks exactly like "doesn't open." Fix: initialize `particles=[]; enemies=[]; floaters=[]; slashes=[];` at the `let player, enemies, particles...` declaration (line 140) instead of only in `resetGame()`, so the arrays exist before the first frame runs.
2026-06-27 18:36AI Reviewed
[Twin Stick Neon Drift Arena] Nothing happens after pressing start
The bug is identifiable. In `startGame()` at line 659–663, `reset()` initializes game state and immediately calls `nextWave()` β†’ `sWave()` β†’ `audio()`, but if any JS error occurs inside `reset()` or `nextWave()` before `STATE='play'` is set, the state never flips to `'play'` and the `frame()` loop keeps drawing the (now-hidden) start screen with no game running. The most likely root cause: **`AudioContext` creation is blocked or throws**, or more commonly, `sWave()` is called inside `reset()` β†’ `nextWave()` but `AC` is null at that point (since `audio()` in `startGame()` runs *after* `reset()` β€” check line 660: `audio(); reset();` β€” actually `audio()` IS called first). A secondary suspect: `lastTime` is not reset in `startGame()`, so if the RAF loop has been running for a long time before Start is pressed, `dt` on the first play frame could briefly spike (though the `Math.min(0.05, ...)` clamp limits it to 50ms, so this is minor). **To investigate**: Open browser DevTools β†’ Console while clicking Start β€” any uncaught exception will show there. Also check if `document.getElementById('startScreen')` is actually getting the `hidden` class (inspect the DOM after clicking). **To fix**: Move `STATE='play'` before `reset()` so the game loop doesn't stay stuck on 'start' if `reset()` partially fails, and wrap `startGame()` in a try/catch that logs errors: ```js function startGame(){ try { audio(); STATE='play'; reset(); document.getElementById('startScreen').classList.add('hidden'); document.getElementById('overScreen').classList.add('hidden'); } catch(e) { console.error('startGame failed:', e); } } ```
2026-06-27 18:36AI Reviewed
[Gallery Shooter Comet Carnival] Nothing comes up after starting the game
I found the exact bug via reproducing it in a browser (console error attached). Since I don't have write permission in this session, here's the fix to apply: **File:** `shooting_games_apps\Shooting Games Generator\2026-06-26-gallery-shooter-comet-carnival.html`, line 126 ```js // before let targets,particles,floats,shots; // after let targets=[],particles=[],floats=[],shots=[]; ``` **Root cause:** `requestAnimationFrame(loop)` starts immediately on page load (line 524), and `draw()` iterates `for(const t of targets)` (line 478) while `targets` is still `undefined` β€” `reset()` (which populates it) doesn't run until the PLAY button fires `begin()`. The resulting `TypeError: targets is not iterable` is thrown before `loop()` reaches its own `requestAnimationFrame(loop)` call, so the entire render loop dies on load. Clicking PLAY does correctly reset state, but the loop is already dead, so nothing ever renders β€” matching "nothing comes up after starting the game." This one-line fix resolves it.
2026-06-27 18:35AI Reviewed
[Cannon Projectile Orbit Breaker] Can't aim with the slingshot sitting so low
The file is at `shooting_games_apps/Shooting Games Generator/2026-06-27-cannon-projectile-orbit-breaker.html`. The cannon position is set on line 82: ```js cannon.y = H - Math.max(54, H*0.10); ``` That places it only 10% from the bottom (min 54px), leaving almost no room below for the slingshot drag gesture before hitting the screen edge. Fix: increase the offset so the cannon sits higher β€” change `H*0.10` to `H*0.18` and the minimum from `54` to `80`. That gives a comfortable drag zone below the cannon without pushing it too far into the play field. While you're at it, consider also clamping the touch `updateTouch` vector so short drags (finger barely below cannon) don't fire at full power accidentally.
2026-06-27 18:16AI Reviewed
[Gravity Bells] Make the settings header two columns so it doesn't take up so much space
The "settings header" refers to the `.bar` div in `music_apps/2026-06-25-gravity-bells.html` (lines 38–44, 94–151), which currently uses `display: flex; flex-wrap: wrap` and sprawls vertically on small screens. The fix is to switch `.bar` to a 2-column grid: replace `display:flex; gap:10px; align-items:center; flex-wrap:wrap` with `display:grid; grid-template-columns:1fr 1fr; gap:8px; align-items:start`. You may also want the TOOL group (which has three segment buttons) to span both columns with `grid-column: 1 / -1` since it's wider than the others. The Clear/Reset buttons at the bottom can be placed in a final row by wrapping them in a div or by giving them explicit `grid-column` placement.
2026-06-27 18:15AI Reviewed
[Splashy Bubbles] It's just code coming up, check all other games from Netlify for this issue
The issue is clear. The file at `kids_apps/2026-06-26-splashy-bubbles.html` is a broken conversion from a Vite+React PWA. The `<script type="module">` block on line 32 contains the raw minified React 19 + react-dom bundle β€” complete with embedded HTML string literals like `<!doctype html>` that the browser's HTML parser misinterprets, causing the script to fail silently and the app to never mount. The "code coming up" is raw JS source that React never gets to render. **Root cause:** The Vite build output was pasted verbatim into a `<script>` tag without converting the React component tree to vanilla JS. The bundle also references external assets (`/assets/index-C6F2LM3R.js`) it can't reach as a standalone file. **Fix:** Rebuild it from scratch in vanilla JS/Canvas β€” the React source is unrecoverable in its current inline form. Extract the visual concept (fluid simulation, floating bubbles, tap-to-pop) and implement it with `Canvas 2D` + `requestAnimationFrame` per the project conventions. **For other Netlify apps:** Grep the other files for `<script type="module">` containing `Symbol.for(\`react.` β€” that's the tell. Any file matching that pattern has the same conversion failure: ```bash grep -l 'Symbol.for.*react\.' kids_apps/*.html adult_puzzle_apps/*.html ```
2026-06-27 00:19AI Reviewed
[Turntable Dual Deck Scratch Dj] I like the idea. Let's add a two deck and crossfader option. Add different music genres. Add scratch samples and vocal. Add a one deck accapela mode so people can scratch samples without a beat.
This is highly feasible as a single-file Web Audio API app. Here's the approach: **Beats by genre** β€” generate procedural drum patterns via the Web Audio API scheduler (kick/snare/hi-hat oscillator + noise combos), with distinct patterns per genre (hip-hop boom-bap, house 4-on-the-floor, drum & bass breakbeat, lo-fi swing). No audio files needed. **Scratch effect** β€” load a short synthesized "scratch" sample into an `AudioBuffer`, then manipulate `AudioBufferSourceNode.playbackRate` in real time via a touch/mouse drag on a vinyl platter SVG element; fast drag = pitch up, reverse drag = pitch down. **Vocal samples** β€” synthesize 4–6 short "vocal chop" sounds using formant-filtered oscillators (or encode tiny WAV blobs as base64 inline data URIs if you want real voice character) and map them to pads. **Crossfader** β€” two `GainNode` chains, one per deck; a center slider smoothly interpolates gain between them using a constant-power curve (`Math.cos`/`Math.sin`). **A cappella mode** β€” a toggle that stops both beat generators and leaves only the scratch buffer + vocal pads active on deck 1, giving a clean scratch-only surface. File would go in `music_apps/2026-06-28-turntable-dual-deck-dj.html`. Want me to build it?
2026-06-27 00:12AI Reviewed
[Wave Painter] I can't start it on my Pixel Phone
I need your permission to edit the file. Here's exactly what needs to change (two edits): **Edit 1** β€” add `touch-action: manipulation` to `.splash` (line 71): ```css /* before */ .splash{...;cursor:pointer} /* after */ .splash{...;cursor:pointer;touch-action:manipulation} ``` **Edit 2** β€” add `touchstart` listener alongside `click` on the splash, and await `ac.resume()` (line 466): ```js // before document.getElementById('splash').addEventListener('click',()=>startAudioThen(...)); // after ['click','touchstart'].forEach(ev => document.getElementById('splash').addEventListener(ev, e => { e.preventDefault(); startAudioThen(...); }, {once: true}) ); ``` And in `startAudioThen` (line 465), change `ac.resume()` to `ac.resume().catch(()=>{})` to avoid unhandled promise rejections, though the more important fix is having `touchstart` fire the unlock. The root cause is that `touch-action` is not an inherited CSS property β€” it must be explicit on the tappable element, and `click` alone is unreliable on Android when `touchstart` isn't also handled on that specific element.
2026-06-27 00:12AI Reviewed
[Gravity Bells] Make useable on mobile. Add Rain level option. Make marbles slowly fade out if they get stuck or make sounds repetitively. Make the lines shatter if the sound is too active by the line
Here's the breakdown for each note item in `music_apps/2026-06-25-gravity-bells.html`: **Mobile usability:** The toolbar has 7 control groups with `flex-wrap:wrap`, which stacks into an unworkable mess on 375px β€” it can eat most of the screen. Fix by collapsing low-priority controls (Key, Reverb, Bounce) into a secondary row that's hidden behind a "βš™ More" toggle, keeping only Tool, Rain, Scale, and Gravity visible by default. **Rain level:** The rate is hardcoded at `dt*6` on line 295. Replace the On/Off `rainBtn` with a 4-state segmented control (Off / Light / Medium / Heavy) mapping to spawn rates of `0 / dt*2 / dt*6 / dt*18`. Update `raining` to store a numeric rate instead of a boolean. **Marble fade-out when stuck:** The ball object already has a `life` field (line 276) but it's never used in rendering. Add a `hitCount` field per ball; increment it in `hitBar` (line 280) and decay it slowly in the physics loop. When `hitCount > 8`, start decrementing `b.life` each frame β€” then apply `ctx.globalAlpha = b.life` in the draw loop and splice the ball when `b.life <= 0`. **Lines shatter from overactivity:** Add a `heat` field to each bar, incremented by `+0.25` on each `hitBar` call and decayed by `heat *= 0.98` each frame. When `heat > 3`, remove the bar and push 6–8 short `shatter` particle objects (each a mini line segment with a random outward velocity and a fast-decaying opacity), rendered with the same HSL color the bar would have had.
2026-06-26 23:39AI Reviewed
[Shell Game Cups] Shows ball under the wrong cup chosen, start button needs to pop out more
**Bug 1 β€” Ball shown under wrong cup:** The draw functions `drawCupOverhead` (~line 201) and `drawCupHeadon` (~line 248) render a ball under *any* lifted cup when `cup.lift > 0.02` β€” there's no check that the cup actually holds the ball. Fix: add `&& cup.id === ballCup` to both conditions. Since `ballCup` is in the same closure, it's a one-word addition per draw function. **Bug 2 β€” Start button low visibility:** `#playBtn` likely shares the base `.btn` styling and doesn't stand out enough at idle. Give it a distinct gradient background (e.g. teal/blue accent), a `box-shadow` glow, slightly larger `font-size`, and optionally a subtle CSS `@keyframes` pulse animation when `phase === "idle"` β€” adding/removing a `.pulse` class on `resetIdle()` would do it cleanly.
2026-06-26 23:35AI Reviewed
[Make It Lab] Needs a looks that aren't so boxy
The boxy feel in `kids_apps/2026-06-26-make-it-lab.html` comes from the `.ctrl` panels (line 59: `border-radius:16px`) and the theme buttons (line 24: `border-radius:14px`) β€” both are rounded rectangles that still read as boxy at small sizes. To fix: 1. **Pill-ify the theme buttons** β€” push `border-radius` to `30px` and add a slight `padding-inline` increase so they read as capsules, not rounded squares. 2. **Blob-ify the `.ctrl` panels** β€” replace the uniform `border-radius:16px` with an asymmetric value like `border-radius: 30px 16px 28px 18px` to give each control column an organic, bubbly shape. 3. **Round the canvas/display area** β€” if the character preview container is rectangular, give it `border-radius: 50% / 40%` or a large single radius (`60px+`) to make it feel like a viewport bubble rather than a box. These are pure CSS changes with no JS impact, and they'll land the playful, toylike vibe that fits the kids app category.
2026-06-26 22:23AI Reviewed
[Animal Orchestra] What makes this an animal orchestra?
"Animal Orchestra" doesn't appear in the current app list, so this note is likely scoping a new kids app concept before building it. The question is valid β€” without a clear answer, the app risks being a generic music toy with animal stickers slapped on. What *should* make it an animal orchestra: 1. **Each animal = a distinct instrument sound** synthesized via Web Audio API (e.g., frog β†’ bass pluck, bird β†’ flute-like oscillator, elephant β†’ low brass rumble). The animal identity should be *sonic*, not just visual. 2. **Ensemble mechanic** β€” players tap animals to layer looping parts, creating a chord/rhythm that sounds like a group playing together, not just individual sound effects. 3. **Visual feedback tied to playing** β€” animals animate (bounce, open mouth, wiggle) only while their loop is active, so kids can see the "orchestra" performing. If those three things aren't clearly in the design, it's just a soundboard. File it under `kids_apps/` as something like `2026-06-27-animal-orchestra.html` and lead with a `<!-- CONCEPT: -->` line that names the ensemble-layering mechanic explicitly so the concept stays anchored during implementation.
2026-06-26 22:20AI Reviewed
[Monster Maker Lab] Check that the content is added
The file has full content β€” all monster part arrays (`SHAPES`, `COLORS`, `PATTERNS`, `EYES`, `MOUTHS`, `TOPS`, `ARMS`, `HATS`) are populated and the render functions are implemented for each. The `2026-06-25-monster-maker-lab.html` in `kids_apps/` is a complete, 506-line implementation. **The "check that the content is added" note appears to be satisfied** β€” all monster customization options have SVG drawing logic. However, note there's a **duplicate** in `Content Creation Apps/kid_apps/2026-06-26-imagination-monster-maker.html` (438 lines, a day newer) β€” you may want to confirm whether that folder is intentional or stray, since `kids_apps/` is the canonical location per your project layout. The original `kids_apps/` version is the one to keep; the `Content Creation Apps/` copy is outside the standard folder structure and won't be auto-discovered by the server/test runner.
2026-06-25 20:24AI Reviewed
Give option show/hide a category on the Apps tab on Coworker App
I can't access outside the working directory, but I can reason about this clearly from context. The "Coworker App" is likely a separate companion/dashboard app (outside this folder) that lists and launches these HTML apps. The "Apps tab" probably fetches apps from the server at `http://192.168.0.248:8080` and displays them grouped by category (kids_apps, adult_puzzle_apps, etc.). **Feasibility: straightforward.** The implementation approach: 1. **Persist hidden categories** in `localStorage` (e.g., key `cowork-hidden-categories`) as a set of folder/category names. 2. **Add toggle UI** on the Apps tab β€” a "Manage Categories" button or gear icon that shows each category with an eye/toggle control; tapping a category toggles its visibility. 3. **Filter the app list** on render: before displaying apps, check if their category is in the hidden set and skip those sections/cards. 4. **State is instant** β€” no server changes needed; it's purely client-side filtering persisted across sessions. The category names to match against would be the folder names returned by the server (`kids_apps`, `adult_puzzle_apps`, `art_apps`, etc.) or whatever label the Coworker App already uses to group them. Share the Coworker App file path and I can implement this directly.
2026-06-25 16:40AI Reviewed
Check if the Nonogram Picross app saves progress between sessions β€” it would be nice if completed puzzles stay marked when you come back.
The Nonogram Picross file isn't accessible from this worktree's sandbox. Based on the app structure described, here's a direct assessment and fix approach: **Most likely: no persistence exists.** Check `nonogram-picross.html` (or similar filename) for any `localStorage` calls β€” if none exist, the app resets on every page load. **To add it**, wire `localStorage` to the cell state after each cell click: 1. On cell toggle, serialize the grid state (e.g., a 2D array of filled/crossed/empty) and call `localStorage.setItem('nonogram_puzzle_<puzzleId>', JSON.stringify(state))`. 2. On page load, after rendering the puzzle, call `localStorage.getItem(...)` and re-apply the saved state to the grid cells. 3. To mark completed puzzles across sessions, store a separate key like `nonogram_completed` as a JSON array of puzzle IDs, and check it on render to add your "completed" visual indicator. This is a straightforward addition β€” roughly 20–30 lines β€” since localStorage is synchronous and requires no external libraries. The main consideration is choosing a stable puzzle ID (index or a title slug) so saved state maps correctly if the puzzle list ever changes order.

📌 My Playlists

🎮 🌟 🎶 🏠 📚 🅾 🤝

🛠 Build Your Own App

🎮 Game 🧩 Puzzle ❓ Quiz 📖 Story 🔧 Tool 🎨 Art 🎵 Music
Easy Medium Hard
Bright & Playful Cool & Calm Dark & Mysterious Neon & Energetic Pastel & Soft

Your Creations

Family Creations