From ff8b9718fa6f94cc8365641634f95d9df9f4a446 Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 20:29:34 -0400 Subject: [PATCH 01/14] Directional Processing Direction edits --- .../directional-processing/interface.html | 29 +++++++------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/app/games/directional-processing/interface.html b/app/games/directional-processing/interface.html index 71c7a8b..7143fbb 100644 --- a/app/games/directional-processing/interface.html +++ b/app/games/directional-processing/interface.html @@ -10,7 +10,7 @@

How to Play

  1. Watch the pattern carefully — it will only appear for a short time.
  2. -
  3. After a brief mask, use the on-screen buttons or arrow keys to respond.
  4. +
  5. After it stops use the on-screen buttons or arrow keys to indicate which direction it moved.
  6. Get 3 correct in a row to advance to a harder level.
  7. Get 3 wrong in a row to drop back 2 levels.
@@ -35,14 +35,8 @@

How to Play

- +

How to Play

-

A spinning wheel of guinea pigs will flash on screen briefly. One of them looks a little different — spot the odd - one out before they disappear!

+

A set of guinea pigs spread around a circle will flash on screen briefly. Only one will look like the image + below. Select that guinea + pig in each round.

+ The orange guinea pig is the target.

Which Square Was the Toy In

- +
From 7d0f9a587c6df669b81263e49f84dd6e65b8679b Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 20:56:24 -0400 Subject: [PATCH 04/14] High speed memory instructions edit --- app/games/high-speed-memory/interface.html | 38 +++++++--------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/app/games/high-speed-memory/interface.html b/app/games/high-speed-memory/interface.html index df0761a..15b70e0 100644 --- a/app/games/high-speed-memory/interface.html +++ b/app/games/high-speed-memory/interface.html @@ -10,24 +10,21 @@

High Speed Memory

How to Play

A grid of cards will flash open briefly — remember where the - Primary image appears! - After they flip back, click all three cards that showed the Primary image. + greyhound image below appears! + After they flip back, click all three cards that showed the image.

- Find this card — it appears three times each round: + Find this greyhound — it appears three times each round (and he likes the attention):

- The Primary card you need to find + The Primary card you need to find
  • Watch closely while the cards are revealed.
  • -
  • After they flip face-down, click the three cards that showed the Primary image.
  • -
  • A wrong guess restarts the round after a brief delay — no partial credit.
  • -
  • Find all three to complete a round — complete 3 rounds in a row - to advance to the next level with a larger grid and shorter reveal time!
  • -
  • Use Tab to move between cards and Enter or Space +
  • After they flip face-down, click the three cards that showed the image above.
  • +
  • A wrong guess ends the round — there is no partial credit.
  • +
  • Find all three to complete a round successfully — successfully complete 3 rounds in a row + to advance to the next level with a larger grid and shorter reveal time.
  • +
  • Keyboard users can use Tab to move between cards and Enter or Space to select.
-
+
-
+
From 6f672060a4d0c2ed0702b510e5a863975399e8a5 Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 21:01:23 -0400 Subject: [PATCH 05/14] Edits to Object Track instructions --- app/games/object-track/interface.html | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/games/object-track/interface.html b/app/games/object-track/interface.html index c40f962..3dbd712 100644 --- a/app/games/object-track/interface.html +++ b/app/games/object-track/interface.html @@ -7,12 +7,14 @@

Object Track

How to Play

-

Watch which circles briefly highlight — those are your targets.

+

Your goal is to track the selected balls as they move around the arena. Once they start to move all the balls are + the same so watch which circles briefly highlight — those are your targets.

    -
  1. Observe the highlighted circles during the marking phase.
  2. -
  3. Keep tracking the same circles as all move around the arena.
  4. -
  5. When movement stops, click each circle you believe was a target.
  6. -
  7. After selecting all targets the round is scored automatically.
  8. +
  9. Observe the highlighted balls at the beginning of each round.
  10. +
  11. Keep tracking the same ball as all move around the arena.
  12. +
  13. When movement stops, click each ball you believe was a target.
  14. +
  15. After selecting three targets the round is scored automatically.
  16. +
  17. As the game progresses, the number of balls and their speed will increase.
From 1ff55b8fbe63a26a75a72eaf0a54267cf27fb2bd Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 21:33:00 -0400 Subject: [PATCH 07/14] Update Otter Stop instructions --- app/games/otter-stop/interface.html | 14 +++++++++++++- app/games/otter-stop/style.css | 23 +++++++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/app/games/otter-stop/interface.html b/app/games/otter-stop/interface.html index 1e5b898..4d47692 100644 --- a/app/games/otter-stop/interface.html +++ b/app/games/otter-stop/interface.html @@ -9,7 +9,7 @@

Otter Stop!

How to Play

- A stream of otters needs your help — but one sneaky otter means + A stream of otters needs your help — but one sneaky fish means STOP!

    @@ -19,8 +19,20 @@

    How to Play

    must respond or it counts as a miss!
  • When the sneaky fish appears, do nothing — freeze!
  • +
  • The round ends when you see the success or failure images and hear the corresponding sound.
  • The game speeds up as your accuracy improves. Good luck!
+

You can ignore these images during gameplay — they are just for feedback.

+
+
+ The success image with a green otter icon. +
+
+ The failure image with a red otter icon. +
+
diff --git a/app/games/otter-stop/style.css b/app/games/otter-stop/style.css index f84c2d7..a18e88e 100644 --- a/app/games/otter-stop/style.css +++ b/app/games/otter-stop/style.css @@ -28,6 +28,23 @@ gap: 0.75rem; } +.os-instructions__column { + float: left; + width: 50%; + padding: 5px; +} + +.os-instructions__row::after { + content: ""; + clear: both; + display: table; +} + +.os-instructions__img { + width: 200px; + height: auto; +} + /* ── Stats bar ───────────────────────────────────────────────────────────── */ .os-stats { @@ -117,11 +134,13 @@ } .os-feedback__text--correct { - color: #1a6f1a; /* WCAG AA on white: ≥ 4.5:1 */ + color: #1a6f1a; + /* WCAG AA on white: ≥ 4.5:1 */ } .os-feedback__text--wrong { - color: #9b1c1c; /* WCAG AA on white: ≥ 4.5:1 */ + color: #9b1c1c; + /* WCAG AA on white: ≥ 4.5:1 */ } /* ── Reminder text ───────────────────────────────────────────────────────── */ From 458c520d1bb050a736feb376c2464bf162cf19f8 Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 21:42:48 -0400 Subject: [PATCH 08/14] Edit sound sweep instructions --- app/games/sound-sweep/interface.html | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/app/games/sound-sweep/interface.html b/app/games/sound-sweep/interface.html index d040f40..abd8da1 100644 --- a/app/games/sound-sweep/interface.html +++ b/app/games/sound-sweep/interface.html @@ -12,10 +12,10 @@

How to Play

  1. Listen carefully to both sweeps.
  2. Identify the sequence you heard: Up-Up, Up-Down, Down-Up, - or Down-Down.
  3. + or Down-Down.
  4. Use the buttons or press keys 14 - to select your answer.
  5. -
  6. Get 3 correct in a row to advance to a harder (faster) level.
  7. + to select your answer. +
  8. Get 3 correct in a row to advance to a harder level.
  9. Get 3 wrong in a row to drop back 2 levels.

@@ -41,14 +41,8 @@

How to Play

Listen…

- +
From 986da7be49bf792d28893482f6eefc3ee08b684c Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 21:42:57 -0400 Subject: [PATCH 09/14] Adding harder level to sound sweep --- app/games/sound-sweep/game.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/games/sound-sweep/game.js b/app/games/sound-sweep/game.js index 3772800..50fe56d 100644 --- a/app/games/sound-sweep/game.js +++ b/app/games/sound-sweep/game.js @@ -46,8 +46,9 @@ export const LEVELS = [ { sweepDurationMs: 200, isiMs: 200 }, { sweepDurationMs: 150, isiMs: 150 }, { sweepDurationMs: 100, isiMs: 100 }, - { sweepDurationMs: 80, isiMs: 80 }, - { sweepDurationMs: 60, isiMs: 40 }, + { sweepDurationMs: 80, isiMs: 80 }, + { sweepDurationMs: 60, isiMs: 40 }, + { sweepDurationMs: 40, isiMs: 20 }, ]; // ── Module-level state (reset by initGame) ──────────────────────────────────── From 1e2b5e7e49ef4d0f16aca454df0b8eccb54ae661 Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 22:02:11 -0400 Subject: [PATCH 10/14] Update app/games/directional-processing/interface.html Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/games/directional-processing/interface.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/games/directional-processing/interface.html b/app/games/directional-processing/interface.html index 7143fbb..873ce28 100644 --- a/app/games/directional-processing/interface.html +++ b/app/games/directional-processing/interface.html @@ -10,7 +10,7 @@

How to Play

  1. Watch the pattern carefully — it will only appear for a short time.
  2. -
  3. After it stops use the on-screen buttons or arrow keys to indicate which direction it moved.
  4. +
  5. After it stops, use the on-screen buttons or arrow keys to indicate which direction it moved.
  6. Get 3 correct in a row to advance to a harder level.
  7. Get 3 wrong in a row to drop back 2 levels.
From 99c206fa0fddce0cf7069d2d039f691792faed69 Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 22:03:35 -0400 Subject: [PATCH 11/14] Update app/games/sound-sweep/interface.html Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/games/sound-sweep/interface.html | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/games/sound-sweep/interface.html b/app/games/sound-sweep/interface.html index abd8da1..245ba74 100644 --- a/app/games/sound-sweep/interface.html +++ b/app/games/sound-sweep/interface.html @@ -41,8 +41,16 @@

How to Play

Listen…

- +
From 8c3cb614c0fd4b8277899fde5ea0ece88ef6d299 Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 22:04:25 -0400 Subject: [PATCH 12/14] Update app/games/otter-stop/style.css Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/games/otter-stop/style.css | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/app/games/otter-stop/style.css b/app/games/otter-stop/style.css index a18e88e..335c26e 100644 --- a/app/games/otter-stop/style.css +++ b/app/games/otter-stop/style.css @@ -28,20 +28,24 @@ gap: 0.75rem; } -.os-instructions__column { - float: left; - width: 50%; - padding: 5px; +.os-instructions__row { + display: flex; + flex-wrap: wrap; + gap: 0.75rem; + align-items: flex-start; } -.os-instructions__row::after { - content: ""; - clear: both; - display: table; +.os-instructions__column { + flex: 1 1 220px; + max-width: 100%; + padding: 5px; + box-sizing: border-box; } .os-instructions__img { - width: 200px; + display: block; + width: 100%; + max-width: 200px; height: auto; } From f7dfe7926ba5366efdade95353a9932031d4016a Mon Sep 17 00:00:00 2001 From: Aaron Crosman Date: Sun, 19 Apr 2026 22:04:58 -0400 Subject: [PATCH 13/14] Update app/games/orbit-sprite-memory/interface.html Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/games/orbit-sprite-memory/interface.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/games/orbit-sprite-memory/interface.html b/app/games/orbit-sprite-memory/interface.html index 580cf03..e7dbf21 100644 --- a/app/games/orbit-sprite-memory/interface.html +++ b/app/games/orbit-sprite-memory/interface.html @@ -9,7 +9,7 @@

How to Play

  • Note the target image shown before each round starts in the top left corner.
  • -
  • Watch as a series of images appear around the circle, remember which three are the round's target image.
  • +
  • Watch as a series of images appear around the circle. Remember which three are the round's target image.
  • After they have all appeared, select the three circles where the target appeared.
  • The number of locations to choose from grows as the level increases, as does the speed of their display.
  • Get three correct rounds in a row to level up.
  • From 83763fffbecd9307748d430da9fa3b9db0a2e8f1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 20 Apr 2026 02:08:05 +0000 Subject: [PATCH 14/14] fix unresolved review comments for otter-stop and fast-piggie Agent-Logs-Url: https://github.com/acrosman/BrainSpeedExercises/sessions/748e4726-9d91-4e75-896a-ce37a25e29a4 Co-authored-by: acrosman <2972053+acrosman@users.noreply.github.com> --- app/games/fast-piggie/style.css | 1 - app/games/otter-stop/index.js | 2 +- app/games/otter-stop/interface.html | 2 +- app/games/otter-stop/manifest.json | 2 +- app/games/otter-stop/tests/index.test.js | 4 ++-- 5 files changed, 5 insertions(+), 6 deletions(-) diff --git a/app/games/fast-piggie/style.css b/app/games/fast-piggie/style.css index ca9dff4..2ba58ff 100644 --- a/app/games/fast-piggie/style.css +++ b/app/games/fast-piggie/style.css @@ -26,7 +26,6 @@ /* Instructions image */ .fp-instructions__image { display: block; - position: center; margin: 0 auto 1rem; max-width: 100%; max-height: 100px; diff --git a/app/games/otter-stop/index.js b/app/games/otter-stop/index.js index 54cdb39..0076809 100644 --- a/app/games/otter-stop/index.js +++ b/app/games/otter-stop/index.js @@ -187,7 +187,7 @@ export function showImage(imageKey) { _stimulusImg.src = isNoGo ? `${IMAGE_BASE}no-go.png` : `${IMAGE_BASE_GO}${imageKey}`; - _stimulusImg.alt = isNoGo ? 'No-go otter' : 'Go otter'; + _stimulusImg.alt = isNoGo ? 'No-go fish' : 'Go otter'; _stimulusImg.classList.remove('os-hidden'); } diff --git a/app/games/otter-stop/interface.html b/app/games/otter-stop/interface.html index 4d47692..21e0865 100644 --- a/app/games/otter-stop/interface.html +++ b/app/games/otter-stop/interface.html @@ -69,7 +69,7 @@

    How to Play

    Press Space or click the image for every otter — - except the no-go otter! Missing a go otter counts as wrong. + except the no-go fish! Missing a go otter counts as wrong.

    diff --git a/app/games/otter-stop/manifest.json b/app/games/otter-stop/manifest.json index 6312fbb..6911f2e 100644 --- a/app/games/otter-stop/manifest.json +++ b/app/games/otter-stop/manifest.json @@ -1,7 +1,7 @@ { "id": "otter-stop", "name": "Otter Stop", - "description": "React fast to each otter — but freeze when the no-go otter appears. Train your inhibitory control at ever-increasing speeds.", + "description": "React fast to each otter — but freeze when the no-go fish appears. Train your inhibitory control at ever-increasing speeds.", "version": "0.1.0", "entryPoint": "index.js", "thumbnail": "images/thumbnail.png", diff --git a/app/games/otter-stop/tests/index.test.js b/app/games/otter-stop/tests/index.test.js index fb0f338..2c5613e 100644 --- a/app/games/otter-stop/tests/index.test.js +++ b/app/games/otter-stop/tests/index.test.js @@ -372,12 +372,12 @@ describe('showImage()', () => { expect(img.src).not.toContain('go/no-go'); }); - it('sets alt text to "No-go otter" for the no-go image', () => { + it('sets alt text to "No-go fish" for the no-go image', () => { const container = buildContainer(); plugin.init(container); showImage('no-go'); const img = container.querySelector('#os-stimulus-img'); - expect(img.alt).toBe('No-go otter'); + expect(img.alt).toBe('No-go fish'); }); it('sets alt text to "Go otter" for a go image', () => {