Project history

How We Built Prime Factor 64

A case study in human and AI collaboration

Project by Sriram Natarajan with ChatGPT | November 5–6, 2026

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.

×35711131719
39152133395157
515253555658595
72135497791119133
11335577121143187209
13396591143169221247
175185119187221289323
195795133209247323361

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 tierDistinct results
Two different primes8
A prime and an odd composite8
A prime and an even composite, excluding 1023
Total39

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.

ResultFirst factor pairOther factor pair
1086 × 189 × 12
1127 × 168 × 14
1267 × 189 × 14
1448 × 189 × 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 versionPairs per boardBoard arrangement
55, original four-pair deal411 × 4 + 3 × 3 + 1 × 2
55, corrected four-pair deal413 × 4 + 1 × 3
55, other sizes8 or 126 × 8 + 7 or 4 × 12 + 7
60, revised four-pair deal415 × 4
60, other sizes8 or 127 × 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 board16 matches32 matches48 matches64 matches
44 boards8 boards12 boards16 boards
82 boards4 boards6 boards8 boards
161 board2 boards3 boards4 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 stepWhat changed for the player
01 Prime Match 55The 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 endingsThe 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 ResumePause 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 offA 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 scoreStart 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 riseMatched 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 tilesThe upper-left × was replaced with a two-by-two tile mark. The wordmark stayed Prime Match.
08 Board size menuStart 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 menuThe 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 correctedThe 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 stepWhat changed for the player
11 Count inside each optionAfter 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 60The 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 HomeThe 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 checksStart 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 64The 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 menuStart 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 defaultsA 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 guessThe 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 fanfareA 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 feedbackA 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 progressThe home screen gained Practice weak facts, personal bests for the selected settings, and controls to export, import, or reset progress.
22 Browser tab iconFour lime tiles on dark green identify Prime Factor 64 when both games are open.
23 Practice progress fixesOlder facts have room in the drill. Progress reflects other tabs, and Reset opens a dialog with Cancel and Export progress.
24 Shared practice historyPractice weak facts also includes first-try misses from completed Fog Sweep 64 rounds.
25 Recover pending savesPrime Factor loads practice results that were still waiting to save when the player left Fog Sweep.
26 Easy ModeThe 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 consideredAssessment during the discussion
Prime Match 60ChatGPT’s first choice at 60. ‘Match’ described the interaction, and the number gave the game a specific, memorable identity.
Factor MatchThe runner-up and the most literal fit for a mixed deck containing primes and composites.
Multiply MatchThe clearest about the arithmetic at a glance. ChatGPT judged it more generic.
Prime FactorChatGPT 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 pathDecision and reason
Build with 39 resultsThe 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 resultsAdding 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 resultSriram 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 recallChatGPT 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–136143–192195–247252–361
102 = 6 × 17143 = 11 × 13195 = 13 × 15252 = 14 × 18
104 = 8 × 13144 = 8 × 18196 = 14 × 14255 = 15 × 17
105 = 7 × 15152 = 8 × 19198 = 11 × 18256 = 16 × 16
108 = 6 × 18153 = 9 × 17204 = 12 × 17266 = 14 × 19
112 = 7 × 16154 = 11 × 14208 = 13 × 16270 = 15 × 18
114 = 6 × 19156 = 12 × 13209 = 11 × 19272 = 16 × 17
117 = 9 × 13162 = 9 × 18210 = 14 × 15285 = 15 × 19
119 = 7 × 17165 = 11 × 15216 = 12 × 18288 = 16 × 18
120 = 8 × 15168 = 12 × 14221 = 13 × 17289 = 17 × 17
121 = 11 × 11169 = 13 × 13224 = 14 × 16304 = 16 × 19
126 = 7 × 18171 = 9 × 19225 = 15 × 15306 = 17 × 18
128 = 8 × 16176 = 11 × 16228 = 12 × 19323 = 17 × 19
132 = 11 × 12180 = 12 × 15234 = 13 × 18324 = 18 × 18
133 = 7 × 19182 = 13 × 14238 = 14 × 17342 = 18 × 19
135 = 9 × 15187 = 11 × 17240 = 15 × 16357 = 17 × 21
136 = 8 × 17192 = 12 × 16247 = 13 × 19361 = 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.

VersionHTMLCSSJSTotalKey changeTechnical change
01
ef48a00
79210233522First playable 55-result gameKeyed the deck by result. Picked one eligible expression per result and shuffled the two columns independently.
02
71185bc
79210248537Shared last digitsBucketed results by units digit and combined groups to fill boards with no singleton endings.
03
cd42e40
86230290606Pause and ResumeTracked paused time and the remaining delay for a pending board advance.
04
bcb0e3f
89233382704Match and progress soundsSynthesized cues with Web Audio oscillators and gain envelopes. Saved the Sound setting locally.
05
264322b
116279535930Recall checks and early scoringRanked missed and slower pairs for recall. Scored submitted answers separately and excluded recall time from the stopwatch.
06
a6ece5c
116286537939Matched cards grouped aboveMoved the two locked card buttons into the same completed row using the match count.
07
bf36145
119286537942Four-tile logoReplaced the multiplication stroke with four rounded rectangles in the inline SVG.
08
fc6fc8d
1352975781010Four, eight, or twelve pairsDefined a board layout for each size and applied denser CSS in twelve-pair mode.
09
5e88cb6
1372995791015Board count beside the selectorUpdated both live count labels from the same selected layout.
10
663b335
1372995861022Four-pair mode fits 14 boardsReserved the final triple first and allowed one singleton ending in the full boards.
11
0c602c2
1352995861020Counts move into size optionsPut each count in its option label and read the selected size from the panel that starts the game.
12
8c00efb
1352995901024Prime Match 60Added five fixed squares. Updated the layout templates and derived the completion total from the deck.
13
e7e8fd7
1353096071051Logo links to HomeReused timer cleanup on exit. Muted active audio and restored focus to the intro heading.
14
abd56a7
1433076181068Off, two, or four recall checksAlternated prompt direction by position and assigned a different correct-answer cue to each position.
15
651b3cd
1433076131063Prime Factor 64Added three squares and 357. Built equal boards for 4, 8, and 16 pairs and scrolled each new board to the top.
16
7a1a446
1553076461108Independent session lengthMapped 16, 32, 48, or 64 matches to whole boards and used the chosen run for progress and scoring.
17
1ad77c3
1553076211083Setup resets on reloadKept setup in page memory and set autocomplete off on the menus. Sound still used local storage.
18
fae08c1
1563076271090Show the entered productMultiplied the two submitted factors for feedback and kept the correct equation available after a miss.
19
45d71e4
1563076431106Victory fanfareCentralized the completion trigger. Scheduled overlapping notes and waited for audio to resume when needed.
20
6b97255
1563076431106Two-line factor feedbackInserted a newline and used CSS pre-line spacing to preserve it inside the status message.
21
Package
1723249291425Practice progressStored 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
1733249291426Browser tab iconLinks a 32 × 32 PNG based on the four-tile brand mark.
23
Update 7
1843369991519Practice progress fixesCaps 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
1853368471368Shared practice historyMoves 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
1853368471368Recover pending practice savesValidates and merges queued batches under the storage lock. Reset clears queued batches with saved progress.
26
Update 10
24537610611682Easy ModeDeals 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.html
7d24edba93c0e140a282766455a8a4d71dd68fa914c525baab6146a70923d7a1

Update 5 SHA-256 for prime-factor-64.html
075c43a739e01a9437d0e3444ac3496bc1002364b08f904f9d0be9136ec5f96d

Update 7 SHA-256 for prime-factor-64.html
c8dfb49ee0910f76c02773c50982b2d780cf59731198a49fbbd403f57395ecb2

Update 8 SHA-256 for prime-factor-64.html
6e23654578fffc301068a6ddbb9a1bf6c8232f475348e74d088fd63b16697883

Update 9 SHA-256 for prime-factor-64.html
6e23654578fffc301068a6ddbb9a1bf6c8232f475348e74d088fd63b16697883

Update 9 SHA-256 for practice-progress.js
f396b6cbac3265db1f3717943191987c1d9820f795cf0af86154683854c78a0e

Update 10 SHA-256 for prime-factor-64.html
4c89b07d0c2d278948bc784812a4197b39291e0c97c711f4793832e465acdeaa

Back to project home