Prime Factor 64 began with Sriram’s wish to memorize a small multiplication table with enough confidence that he would stop second-guessing himself. The conversation became a one-page game for practicing 64 selected multiplication facts. Sriram supplied the learning goal, tested the game, and made choices about difficulty and play. ChatGPT worked out the arithmetic, translated those choices into a playable design, and revised it against his feedback.
The seven primes
The first request was for a multiplication table of the primes from 3 through 19, multiplied by one another. There are seven. The shaded diagonal shows the squares that first caught Sriram’s attention.
| × | 3 | 5 | 7 | 11 | 13 | 17 | 19 |
|---|---|---|---|---|---|---|---|
| 3 | 9 | 15 | 21 | 33 | 39 | 51 | 57 |
| 5 | 15 | 25 | 35 | 55 | 65 | 85 | 95 |
| 7 | 21 | 35 | 49 | 77 | 91 | 119 | 133 |
| 11 | 33 | 55 | 77 | 121 | 143 | 187 | 209 |
| 13 | 39 | 65 | 91 | 143 | 169 | 221 | 247 |
| 17 | 51 | 85 | 119 | 187 | 221 | 289 | 323 |
| 19 | 57 | 95 | 133 | 209 | 247 | 323 | 361 |
Two squares that needed a cue
The last two squares were the ones he hesitated on. He already had a cue for 19² = 361, one more than the 360 degrees in a full circle. For 17² = 289, ChatGPT offered the cue “17 is two numbers: 8 and 9.” Since 8 + 9 = 17, thinking “two, eight, nine” supplies the three digits.
Sriram then narrowed the goal to results greater than 100. He wanted the association to work in both directions, so 13 × 17 should bring 221 to mind and 221 should bring 13 × 17 to mind. He first asked for the prime-by-prime results over 100, then set the squares aside as the easier cases for this round of practice.
After the narrative come the UI history, naming discussion, alternatives, complete deck, and technical version log.
From 39 products to 55 results
Sriram proposed a difficulty order. Start with distinct primes, move to a prime times an odd composite below 20, then include a prime times an even composite. When he asked how many products this made, he also specified that 10 should be excluded. That removed 110, 130, 170, and 190 from these tiers.
| Practice tier | Distinct results |
|---|---|
| Two different primes | 8 |
| A prime and an odd composite | 8 |
| A prime and an even composite, excluding 10 | 23 |
| Total | 39 |
The eight distinct-prime results are 119, 133, 143, 187, 209, 221, 247, and 323.
A game for the practice list
For those 39 products, Sriram asked for a single-page matching game that would finish once every expression had been paired with its result. He added a stopwatch and asked for each product to be displayed in one of two randomly chosen orders, such as 13 × 17 or 17 × 13.
More difficult products and repeated results
Asked what else could be troublesome, ChatGPT suggested six products of different even composites. The shortlist was 12 × 14 = 168, 12 × 16 = 192, 12 × 18 = 216, 14 × 16 = 224, 14 × 18 = 252, and 16 × 18 = 288. Those six would have brought the list to 45.
Sriram pointed out that two expressions with the same answer could not both appear in one game. Enumerating every qualifying composite-by-composite expression adds 20 expressions but only 16 new results. In the full pool, 59 unordered expressions therefore become 55 distinct results. The game keeps both factor pairs as options for each collision and deals only one expression for that result in a run.
| Result | First factor pair | Other factor pair |
|---|---|---|
| 108 | 6 × 18 | 9 × 12 |
| 112 | 7 × 16 | 8 × 14 |
| 126 | 7 × 18 | 9 × 14 |
| 144 | 8 × 18 | 9 × 16 |
Playing the first game
When Sriram asked how to fit 55 results, the design put them across seven boards, six with eight matches and one with seven. He approved implementation. Prime Match 55 used separate, shuffled columns for expressions and results. The player could start on either side, see the stopwatch and progress, and reach a score and review screen after the final match. Each new deal could change the card order, factor order, and any eligible alternate factor pair.
The last digit gave too much away
“There is a cheat. if the last digit of the result is unique in a set then its easier”
The player could work out just the units digit and scan for the sole candidate. The first fix grouped results that shared an ending before dealing boards, keeping at least two results for every ending used on those original seven boards. That preserved shuffling while making a last-digit shortcut insufficient on its own.
Pausing and giving the game a voice
Sriram asked for Pause and Resume to freeze the game. The board was hidden while paused, input was blocked, and the timer and any pending board advance resumed from where they had stopped. He then asked what sounds might increase engagement and approved adding them. The game gained a correct-match tone, a low miss tone, a board-clear chime, and a short completion cue, with a Sound toggle.
From recognizing a target to recalling it
Sriram liked the sounds and noticed a deeper issue while playing. He would make a crude estimate and look for a nearby target in the results column. He wanted something within the board cycle that would help the exact association stick. ChatGPT proposed two checks after each board, one asking for a product and one asking for the factors.
Sriram approved the idea and asked for a toggle and an early exit that still returned a score. The implemented checks hide the choices and prioritize missed or slower pairs. Factor recall accepts either order and either eligible factorization. Show answer reveals the equation without adding a scored attempt.
End game shows progress, elapsed time, and first-try accuracy on pairs attempted so far, plus recall accuracy when applicable and a review of missed pairs. A wrong guess is charged to the pair the player started from.
Sriram asked why the stopwatch stopped during recall. ChatGPT explained that the stopwatch measured time on the matching boards, while recall was scored for accuracy and allowed time to think or type. The game kept recall untimed.
Board sizes and the move to 60
What the player needed to see
On an eight-pair board, Sriram noted that solving seven made the last answer obvious. He decided that was acceptable and proposed a better use of attention. Completed cards moved to the top of both columns, visibly grouped and locked, leaving the unfinished cards together below.
Sriram asked how to copy the HTML so he could use the game source. The project kept a standalone HTML file alongside the hosted game. He also asked what the X at the upper left meant and said it was confusing. ChatGPT replaced it with a four-tile mark.
The four pair layout had one board too many
The game originally showed eight pairs per screen. Sriram asked for four and twelve as well, with a board count that followed the size dropdown. Preserving shared endings in the first four-pair deal made 15 boards. Sriram expected 14 and suggested allocating the final board first, then dealing the rest.
ChatGPT reserved a final triple first. Of the 13 full boards, 12 used two same-ending pairs and one used a same-ending triple plus a singleton. That single exception let the deck fit without an extra board. When the count next to the dropdown still appeared static to Sriram, each option was labeled with its own size and board count.
| Deck and version | Pairs per board | Board arrangement |
|---|---|---|
| 55, original four-pair deal | 4 | 11 × 4 + 3 × 3 + 1 × 2 |
| 55, corrected four-pair deal | 4 | 13 × 4 + 1 × 3 |
| 55, other sizes | 8 or 12 | 6 × 8 + 7 or 4 × 12 + 7 |
| 60, revised four-pair deal | 4 | 15 × 4 |
| 60, other sizes | 8 or 12 | 7 × 8 + 4 or 5 × 12 |
Each multiplication in the last column gives the number of boards times the number of pairs per board. A lone number is one shorter board.
Five squares solved a layout problem
Sriram suggested adding 11², 13², 15², 17², and 19². Their results, 121, 169, 225, 289, and 361, brought the deck to 60. He revisited the first 15-board arrangement. This time all 15 boards could hold four pairs. Thirteen boards used two shared-ending pairs and two used a triple and a singleton. The twelve-pair option also divided evenly into five boards. Sriram felt 60 covered most of the tricky three-digit results he wanted to practice.
The final deck and session controls
Home and recall settings
Sriram asked for the top-left logo to return to the original start screen and for a due-diligence pass across the current spec. ChatGPT made the logo a Home link and had it stop the active timer and pending advance when leaving a game. Sriram then asked for an option of four recall checks and a different sound for each correct answer. The two-check toggle became an Off, 2, or 4 menu. Correct recall answers received different rising two-note chimes by prompt position.
From Prime Match to Prime Factor 64
Sriram compared Prime Match, Factor Match, Multiply Match, and Prime Factor for distinctiveness. He also revisited whether the 60 facts covered the right ground. He found 14² and 16² much more familiar than 18², considered a swap involving 15², then proposed keeping 15² and adding all three. The new squares were 14² = 196, 16² = 256, and 18² = 324. That left 63 results.
The last addition was 17 × 21 = 357. With 64 results, a full game could use equally sized boards of 4, 8, or 16 pairs. Sriram liked the sound of Prime Factor 64, approved the change, and kept four pairs as the default. The name carried forward the original prime-table idea even though the deck had grown to include composite factors.
The final deck contains the 55 earlier distinct results, eight specified squares, and 357. It is a targeted set of three-digit facts. For example, 144 can appear as 8 × 18 or 9 × 16. It was already present before the squares were added, and 12 × 12 was never added as a display option.
Make the length a separate choice
Sriram asked to choose the number of boards independently of the number of pairs per board. ChatGPT tied the menus to four session totals so changing the board size recalculates the board count while preserving the chosen number of matches.
| Pairs per board | 16 matches | 32 matches | 48 matches | 64 matches |
|---|---|---|---|---|
| 4 | 4 boards | 8 boards | 12 boards | 16 boards |
| 8 | 2 boards | 4 boards | 6 boards | 8 boards |
| 16 | 1 board | 2 boards | 3 boards | 4 boards |
A fresh page starts with 4 pairs per board, 4 boards, and recall Off. The latest choices carry through Home and Play again until reload. Sound has its own saved preference.
Polishing the original release
Make factor feedback explain the guess
Sriram checked whether recall had sound. ChatGPT verified that correct answers play their own position-based chimes with Sound on, an incorrect answer plays the low cue, and Show answer is silent. Sriram then asked the game to multiply the two numbers he entered so he could see what his factors implied. He also asked the home page to state the factor limit. It now says every factor is 19 or less, except for 21 in 21 × 17.
Correct factor submissions now show the entered equation in the player’s order. For a miss, the app shows both the entered product and the target equation.
Give the finish its own sound
Sriram reported that the completion sound was missing in a four-board game and asked for a spectacular one. The existing cue was a brief three-note arpeggio close in character to the board-clear chime. ChatGPT replaced it with six rising notes, a sustained C-major chord, and a high flourish. The completion screen now triggers the fanfare from one shared path, including after audio resumes if the browser suspended it. With recall enabled, it plays when the player selects See score.
ChatGPT played the default four-board game to 16/16 in the browser. Programmatic checks covered the cue with recall off, with two checks, and with four, plus the 64-match finish, audio resumption, mute, and early exit. The original device-specific cause of the missing sound remained unconfirmed.
Two lines for factor feedback
Sriram asked for the two sentences to appear on separate lines. The tested feedback reads as follows.
Your factors give 13 × 18 = 234.
The match is 13 × 17 = 221.
What each collaborator contributed
Sriram was the learner, product designer, and playtester. His observations supplied requirements that only surfaced when the game was in use. ChatGPT made the proposals testable by enumerating the arithmetic, designing the board deals, and turning feedback into revised versions. The same process handled changes at very different scales, from the number of facts in the deck to the line break that made one answer easier to read.
Practice across sessions
Muse’s review pointed to a gap between sessions. The game showed which facts needed work, and Sriram approved a follow-up that would bring those facts back on a later visit.
Practice weak facts offers up to eight untimed prompts. A missed match can return as a product question, while a missed recall question returns in its original direction. Two unaided correct answers on different days retire a prompt from the weak list. For example, the app tracks 6 × 18 and 9 × 12 separately when asking for the product. When it asks for factors of 108, either pair counts.
Practice history is saved in the browser. Manage progress can export, merge, or reset it. Completed matching runs record first-try bests and fastest perfect matching times for each combination of board size, session length, and recall setting.
Chromium checks covered reopening after a miss, retiring a prompt across two dates, exporting and restoring a backup, and completing games with recall off, two, or four. The checks also exercised scoring, pause and resume, and the completion cue.
In Update 7, Sriram brought five fixes from Grok Bot’s review. The drill reserves room for older facts by capping misses at five. The app backs up unreadable progress and shows a recovery notice. Exports read the latest saved data, tabs refresh on storage changes, and an in-page reset dialog offers an export before confirmation. Completed matching runs have stable IDs for deduplication. A stress test exposed an overlapping-save race between tabs, so the app serializes progress operations where Web Locks are available.
In Update 8, Grok Bot proposed using Fog Sweep 64 misses to build the same practice history. A completed Fog Sweep round contributes first-try results to Practice weak facts. Retry counts as a miss, and a slow first-try match counts as seen. Retirement still takes two unaided correct recall answers on different days in Prime Factor 64. Both games use the same storage safeguards, and Prime Factor 64 records its own personal bests.
In Update 9, Muse proposed a local outbox to preserve a completed round when its save was waiting for another tab. The shared script stores each batch synchronously, then merges it under the existing lock. This lets the review and Project home respond immediately.
Update 10 added Easy Mode to help players build fluent recall. It groups the 64 products into Squares, Next Door, Straddle, and Split at 10 boards. Players can use a strategy reminder, replay a board without a timer, and move to Classic when ready. Classic opens by default. Easy Mode matching and recall stay in the session and leave Practice weak facts and personal bests alone.
Play Prime Factor 64 · Download the game HTML · Download the practice script. Keep both files together for offline play.
UI history from the first release
The log follows the original saved versions and the practice-progress update. It records changes to the screen, sounds, and controls.
| Release step | What changed for the player |
|---|---|
| 01 Prime Match 55 | The start page showed a × mark, ‘55 matches · 7 boards,’ the 13 × 17 ↔ 221 example, and Start game. The board used shuffled Expressions and Results columns, a sticky stopwatch and match count, and a segmented board tracker. The finish screen had Matched, Elapsed, First try, Play again, and Pairs to review. |
| 02 Shared endings | The screen stayed the same, but fresh boards now dealt groups with repeated units digits. Each ending had a companion on the original seven boards. |
| 03 Pause and Resume | Pause joined the status row and became Resume when pressed. A ‘Game paused’ panel replaced the cards and hints while the stopwatch and board advance waited. |
| 04 Sound on and off | A Sound on/off control joined Pause. Correct matches made a short pop, misses a low tap, and board and game completion played two- and three-note cues. ‘Choose any card’ became the opening hint. The sound setting was saved independently. |
| 05 Recall and early score | Start and replay gained a checked Recall checks box. The Untimed panel had a prompt counter, numeric fields, Check answer and Show answer, followed by Next prompt, Next board, or See score. Pause also covered recall. End game showed ‘Game ended,’ ‘Your score so far,’ and attempted-pair and optional Recall stats. The controls and stats reflowed on narrow screens. |
| 06 Completed cards rise | Matched cards moved to the top of both columns in match order. They became shorter, kept their checkmarks, and gained a small gap before the first unmatched card. |
| 07 Four tiles | The upper-left × was replaced with a two-by-two tile mark. The wordmark stayed Prime Match. |
| 08 Board size menu | Start and replay gained Pairs per board with 4, 8, or 12, initially defaulting to 8. The 12-pair view tightened card spacing. The start summary recalculated the board count for the selected size. |
| 09 Count beside the menu | The board count moved out of the heading to a live text label beside Pairs per board, on both Start and replay. |
| 10 Four-pair deal corrected | The same 55 facts now appeared as 13 full four-pair boards and one final triple. The board counter dropped from 15 to 14 in this mode. |
The original board already distinguished selected, wrong, and matched cards with lime, red, and pale green states. It also provided text hints, keyboard focus, and reduced-motion support.
UI history since the 60-result game
| Release step | What changed for the player |
|---|---|
| 11 Count inside each option | After the adjacent label still appeared static, both size menus used complete option labels, such as ‘4 pairs · 14 boards.’ The separate label was removed. |
| 12 Prime Match 60 | The page title, start copy, finish total, and board counts reflected 60 facts. The size menu showed 15, 8, or 5 boards for 4, 8, or 12 pairs. The game began using the actual deck total in the finish heading. |
| 13 Logo becomes Home | The wordmark and tile mark became one link to the start screen. It stopped the current timers and returned focus to the start heading. End game remained the control for leaving with a score. |
| 14 Four recall checks | Start and replay replaced the checkbox with Off, 2 per board, and 4 per board, initially defaulting to 2. Four prompts alternated product and factors, updated the prompt counter, and used distinct rising chimes by position. |
| 15 Prime Factor 64 | The masthead changed to Prime Factor and the title to Prime Factor 64. The size options became 4, 8, and 16, with 4 the default. The denser card spacing moved to the 16-pair view, and each new board scrolled to the top. |
| 16 Separate Boards menu | Start and replay separated Pairs per board from Boards. The options gave both board count and match count, and the start label became ‘64 multiplication facts.’ The progress and finish totals now reflected the selected session. |
| 17 Fresh defaults | A fresh page opened at 4 pairs, 4 boards, recall Off. Home and Play again kept the last choices until reload. Sound continued to use its separate saved preference. |
| 18 Explain a factor guess | The home page named 21 in 21 × 17 as the factor-limit exception. Recall showed the product of the submitted factors, then gave the target equation when they missed. A correct submission showed the factors in the order entered. |
| 19 Victory fanfare | A six-note climb, sustained chord, and high flourish replaced the short finish cue. It played on completion, or on See score after the last recall check. The same finish path applied to short and full sessions. |
| 20 Two lines of feedback | A wrong factor answer put the entered equation on the first line and the target equation on the second. A correct answer or Show answer continued to display a single message. |
| 21 Practice progress | The home screen gained Practice weak facts, personal bests for the selected settings, and controls to export, import, or reset progress. |
| 22 Browser tab icon | Four lime tiles on dark green identify Prime Factor 64 when both games are open. |
| 23 Practice progress fixes | Older facts have room in the drill. Progress reflects other tabs, and Reset opens a dialog with Cancel and Export progress. |
| 24 Shared practice history | Practice weak facts also includes first-try misses from completed Fog Sweep 64 rounds. |
| 25 Recover pending saves | Prime Factor loads practice results that were still waiting to save when the player left Fog Sweep. |
| 26 Easy Mode | The mode selector adds strategy boards of 4, 8, or 16 pairs, with a starting-board picker, discreet reminders, untimed replay, and a Learning Guide link. |
Later, the project home, the learning guide, and both history pages gained tab icons in commits cb67632 and 01a2541. The Fog Sweep 64 history page uses its game’s icon, and the other pages use the Prime Factor 64 icon. The game files did not change, so the technical version log has no new entry.
How the name was chosen
The working name moved from Prime Match 55 to Prime Match 60 as the deck grew. At 60 facts, Sriram explicitly asked which of four names was more distinctive. ChatGPT’s recommendation at that point was Prime Match 60. The comparison separated memorability, accuracy, and how clearly each name suggested the game mechanic.
| Name considered | Assessment during the discussion |
|---|---|
| Prime Match 60 | ChatGPT’s first choice at 60. ‘Match’ described the interaction, and the number gave the game a specific, memorable identity. |
| Factor Match | The runner-up and the most literal fit for a mixed deck containing primes and composites. |
| Multiply Match | The clearest about the arithmetic at a glance. ChatGPT judged it more generic. |
| Prime Factor | ChatGPT thought this could sound like an exercise in prime factorization when read on its own. |
The new deck changed the choice
When the game reached 64 facts, Sriram said, “prime factor 64 has a nice ring to it. go ahead”. His preference settled the decision. The displayed title became Prime Factor 64, while the compact wordmark read Prime Factor. The number also conveyed the size of the practice pool and corresponded to the new 4-, 8-, and 16-pair layouts.
The last addition, 17 × 21 = 357, gave the deck a fourth result ending in 7, alongside 117, 187, and 247. The new result helped with the shared-ending groups and introduced the exception to the factor limit that Sriram later asked to spell out on the home page.
Other paths we considered
Some ideas were discussed and set aside before a release. Others were built, played, and then revised. The difference matters when tracing how the decisions were made.
Proposals that stayed on paper
| Proposed path | Decision and reason |
|---|---|
| Build with 39 results | The first sketch had five boards, four of eight and a final seven. The same two-column game was first released with the larger 55-result deck and seven boards. |
| Stop at 45 results | Adding just the six difficult even-by-even products would have produced a smaller expansion. The conversation moved to all qualifying composite-by-composite pairs and 55 unique results. |
| Deal both forms of a repeated result | Sriram ruled this out when discussing the expanded deck. Each result would occupy one slot, with its eligible expressions available as alternatives across games. |
| Turn the forced final match into recall | ChatGPT proposed hiding the board when one pair remained, using that pair as the first existing recall prompt and a missed or slow pair as the second. Sriram accepted the last match by elimination and asked to group the finished cards instead. |
| Trade 15² for 18² | This would keep the deck at 60, replace the familiar 225 with 324, and require a small ending-group adjustment. Sriram then chose to keep 15² and add 14², 16², and 18², bringing the deck to 63 before the last addition. |
Shipped approaches that gave way
The free shuffle gave way to shared endings. The 15-board four-pair deal at 55 kept at least two cards per ending but left four short boards. The 14-board correction allowed one unique ending to pack the deck more tightly. At 60, the 15-board count returned with every board full.
The adjacent board-count label gave way to labels inside the dropdown, then to a separate Boards menu with selectable run lengths. The 12-pair layout yielded to the 16-pair layout after the move to 64. The game also moved from a two-check checkbox and saved setup choices to a three-option recall menu and defaults that reset on reload.
The 64 results in the final deck
The base deck uses distinct factors from 3 through 19, skips 10, and keeps results greater than 100. The eight selected squares and 357 complete the deck. This table shows one eligible factor pair per result.
| 102–136 | 143–192 | 195–247 | 252–361 |
|---|---|---|---|
| 102 = 6 × 17 | 143 = 11 × 13 | 195 = 13 × 15 | 252 = 14 × 18 |
| 104 = 8 × 13 | 144 = 8 × 18 | 196 = 14 × 14 | 255 = 15 × 17 |
| 105 = 7 × 15 | 152 = 8 × 19 | 198 = 11 × 18 | 256 = 16 × 16 |
| 108 = 6 × 18 | 153 = 9 × 17 | 204 = 12 × 17 | 266 = 14 × 19 |
| 112 = 7 × 16 | 154 = 11 × 14 | 208 = 13 × 16 | 270 = 15 × 18 |
| 114 = 6 × 19 | 156 = 12 × 13 | 209 = 11 × 19 | 272 = 16 × 17 |
| 117 = 9 × 13 | 162 = 9 × 18 | 210 = 14 × 15 | 285 = 15 × 19 |
| 119 = 7 × 17 | 165 = 11 × 15 | 216 = 12 × 18 | 288 = 16 × 18 |
| 120 = 8 × 15 | 168 = 12 × 14 | 221 = 13 × 17 | 289 = 17 × 17 |
| 121 = 11 × 11 | 169 = 13 × 13 | 224 = 14 × 16 | 304 = 16 × 19 |
| 126 = 7 × 18 | 171 = 9 × 19 | 225 = 15 × 15 | 306 = 17 × 18 |
| 128 = 8 × 16 | 176 = 11 × 16 | 228 = 12 × 19 | 323 = 17 × 19 |
| 132 = 11 × 12 | 180 = 12 × 15 | 234 = 13 × 18 | 324 = 18 × 18 |
| 133 = 7 × 19 | 182 = 13 × 14 | 238 = 14 × 17 | 342 = 18 × 19 |
| 135 = 9 × 15 | 187 = 11 × 17 | 240 = 15 × 16 | 357 = 17 × 21 |
| 136 = 8 × 17 | 192 = 12 × 16 | 247 = 13 × 19 | 361 = 19 × 19 |
The additional factor pairs are 9 × 12 for 108, 8 × 14 for 112, 9 × 14 for 126, and 9 × 16 for 144.
The final four-pair layout uses two shared-ending pairs on 14 boards and a triple plus a singleton on two. In the eight- and sixteen-pair layouts, every ending used on a board has at least two cards.
Project record
This chronology follows the project conversation from the first multiplication table through the shared practice update. The original 20 saved versions cover Prime Match 55, Prime Match 60, and Prime Factor 64. Entries 21–25 record saved practice, the tab icon, the practice-progress fixes, shared practice, and the progress outbox. The counts and equations were checked against the deck rules.
Technical version log
Each number matches the UI history. Entries 01–20 cite the original saved commits. Entries 21–25 count the packaged game files, with changes measured against GitHub commits fa804dd, 9d31917, e4f0f14, 20f0813, and 6229d4e respectively.
Download the Prime Factor 64 historical diffs for the 20 saved versions leading up to the first project commit on GitHub. The repository’s Git history starts at fa804dd and tracks subsequent changes.
LOC counts physical lines, including blanks and comments, in the original index.html snapshots and the current prime-factor-64.html. CSS and JS count the lines inside the style and script tags. HTML counts the remaining lines, including those tags. Total is the sum of all three. The shared practice-progress.js has 197 lines in Update 8 and 249 in Update 9.
| Version | HTML | CSS | JS | Total | Key change | Technical change |
|---|---|---|---|---|---|---|
| 01 ef48a00 | 79 | 210 | 233 | 522 | First playable 55-result game | Keyed the deck by result. Picked one eligible expression per result and shuffled the two columns independently. |
| 02 71185bc | 79 | 210 | 248 | 537 | Shared last digits | Bucketed results by units digit and combined groups to fill boards with no singleton endings. |
| 03 cd42e40 | 86 | 230 | 290 | 606 | Pause and Resume | Tracked paused time and the remaining delay for a pending board advance. |
| 04 bcb0e3f | 89 | 233 | 382 | 704 | Match and progress sounds | Synthesized cues with Web Audio oscillators and gain envelopes. Saved the Sound setting locally. |
| 05 264322b | 116 | 279 | 535 | 930 | Recall checks and early scoring | Ranked missed and slower pairs for recall. Scored submitted answers separately and excluded recall time from the stopwatch. |
| 06 a6ece5c | 116 | 286 | 537 | 939 | Matched cards grouped above | Moved the two locked card buttons into the same completed row using the match count. |
| 07 bf36145 | 119 | 286 | 537 | 942 | Four-tile logo | Replaced the multiplication stroke with four rounded rectangles in the inline SVG. |
| 08 fc6fc8d | 135 | 297 | 578 | 1010 | Four, eight, or twelve pairs | Defined a board layout for each size and applied denser CSS in twelve-pair mode. |
| 09 5e88cb6 | 137 | 299 | 579 | 1015 | Board count beside the selector | Updated both live count labels from the same selected layout. |
| 10 663b335 | 137 | 299 | 586 | 1022 | Four-pair mode fits 14 boards | Reserved the final triple first and allowed one singleton ending in the full boards. |
| 11 0c602c2 | 135 | 299 | 586 | 1020 | Counts move into size options | Put each count in its option label and read the selected size from the panel that starts the game. |
| 12 8c00efb | 135 | 299 | 590 | 1024 | Prime Match 60 | Added five fixed squares. Updated the layout templates and derived the completion total from the deck. |
| 13 e7e8fd7 | 135 | 309 | 607 | 1051 | Logo links to Home | Reused timer cleanup on exit. Muted active audio and restored focus to the intro heading. |
| 14 abd56a7 | 143 | 307 | 618 | 1068 | Off, two, or four recall checks | Alternated prompt direction by position and assigned a different correct-answer cue to each position. |
| 15 651b3cd | 143 | 307 | 613 | 1063 | Prime Factor 64 | Added three squares and 357. Built equal boards for 4, 8, and 16 pairs and scrolled each new board to the top. |
| 16 7a1a446 | 155 | 307 | 646 | 1108 | Independent session length | Mapped 16, 32, 48, or 64 matches to whole boards and used the chosen run for progress and scoring. |
| 17 1ad77c3 | 155 | 307 | 621 | 1083 | Setup resets on reload | Kept setup in page memory and set autocomplete off on the menus. Sound still used local storage. |
| 18 fae08c1 | 156 | 307 | 627 | 1090 | Show the entered product | Multiplied the two submitted factors for feedback and kept the correct equation available after a miss. |
| 19 45d71e4 | 156 | 307 | 643 | 1106 | Victory fanfare | Centralized the completion trigger. Scheduled overlapping notes and waited for audio to resume when needed. |
| 20 6b97255 | 156 | 307 | 643 | 1106 | Two-line factor feedback | Inserted a newline and used CSS pre-line spacing to preserve it inside the status message. |
| 21 Package | 172 | 324 | 929 | 1425 | Practice progress | Stored versioned first-attempt history by prompt type, reused the recall screen for the untimed drill, and merged JSON backups by fact and session settings. |
| 22 Update 5 | 173 | 324 | 929 | 1426 | Browser tab icon | Links a 32 × 32 PNG based on the four-tile brand mark. |
| 23 Update 7 | 184 | 336 | 999 | 1519 | Practice progress fixes | Caps misses in the drill, recovers damaged storage, syncs and serializes progress operations across tabs where available, adds an export option to reset confirmation, and deduplicates completed runs. |
| 24 Update 8 | 185 | 336 | 847 | 1368 | Shared practice history | Moves progress storage into a script shared by both games. Completed Fog Sweep rounds write matching observations with the same fact keys as Prime Factor. |
| 25 Update 9 | 185 | 336 | 847 | 1368 | Recover pending practice saves | Validates and merges queued batches under the storage lock. Reset clears queued batches with saved progress. |
| 26 Update 10 | 245 | 376 | 1061 | 1682 | Easy Mode | Deals strategy boards from the existing deck, aligns matches within each section, and keeps Easy observations and results outside the shared practice store. |
Entry 21 SHA-256 for prime-factor-64.html7d24edba93c0e140a282766455a8a4d71dd68fa914c525baab6146a70923d7a1
Update 5 SHA-256 for prime-factor-64.html075c43a739e01a9437d0e3444ac3496bc1002364b08f904f9d0be9136ec5f96d
Update 7 SHA-256 for prime-factor-64.htmlc8dfb49ee0910f76c02773c50982b2d780cf59731198a49fbbd403f57395ecb2
Update 8 SHA-256 for prime-factor-64.html6e23654578fffc301068a6ddbb9a1bf6c8232f475348e74d088fd63b16697883
Update 9 SHA-256 for prime-factor-64.html6e23654578fffc301068a6ddbb9a1bf6c8232f475348e74d088fd63b16697883
Update 9 SHA-256 for practice-progress.jsf396b6cbac3265db1f3717943191987c1d9820f795cf0af86154683854c78a0e
Update 10 SHA-256 for prime-factor-64.html4c89b07d0c2d278948bc784812a4197b39291e0c97c711f4793832e465acdeaa