| 2026-05-12 20:31 | Skip the cell-cache rewrite when refreshing the current game | Michael Camilleri | 1 | +10 | -3 |
| 2026-05-12 20:09 | Make MovesUpdater debounce timing test-injectable | Michael Camilleri | 2 | +51 | -6 |
| 2026-05-12 20:08 | Parallelise refreshLibrary across database scopes | Michael Camilleri | 1 | +16 | -12 |
| 2026-05-12 19:48 | Parallelise discoverNewZonesDirect across zones and record types | Michael Camilleri | 1 | +62 | -33 |
| 2026-05-12 19:44 | Parallelise fetchPushPingsDirect across zones | Michael Camilleri | 1 | +39 | -17 |
| 2026-05-12 19:42 | Lower MovesUpdater debounce from 1500ms to 500ms | Michael Camilleri | 2 | +2 | -2 |
| 2026-05-12 19:29 | Kick sendChanges() on player, game and delete enqueues | Michael Camilleri | 1 | +3 | -0 |
| 2026-05-12 19:24 | Parallelise the silent-push handler and skip wasteful zone discovery | Michael Camilleri | 1 | +34 | -35 |
| 2026-05-12 10:16 | Increase timeout for flakey test | Michael Camilleri | 1 | +1 | -1 |
| 2026-05-12 10:11 | Parallelise the library refresh and skip completed games | Michael Camilleri | 1 | +56 | -27 |
| 2026-05-12 09:10 | Pull updates for known game zones on library refresh | Michael Camilleri | 2 | +77 | -0 |
| 2026-05-12 08:40 | Discover unseen game zones without waiting on CKSyncEngine | Michael Camilleri | 4 | +164 | -22 |
| 2026-05-12 08:07 | Bump Crossmate-flavoured XD version | Michael Camilleri | 14 | +31 | -14 |
| 2026-05-12 08:04 | Render circled cells in converted puzzles | Michael Camilleri | 2 | +40 | -27 |
| 2026-05-12 07:19 | Surface collaborator pings on background push wakes | Michael Camilleri | 4 | +167 | -0 |
| 2026-05-11 22:23 | Tweak Clue Bar layout | Michael Camilleri | 1 | +5 | -4 |
| 2026-05-10 18:55 | Add Crossmate version to puzzle data structures | Michael Camilleri | 26 | +187 | -19 |
| 2026-05-10 18:30 | Update .gitignore | Michael Camilleri | 1 | +1 | -0 |
| 2026-05-10 16:42 | Use publisher as a consistent name | Michael Camilleri | 14 | +768 | -768 |
| 2026-05-10 16:18 | Fix movement when deleting first letter of a word | Michael Camilleri | 2 | +85 | -3 |
| 2026-05-10 16:13 | Fix movement when typing last letter in a direction | Michael Camilleri | 3 | +109 | -10 |
| 2026-05-10 15:55 | Adjust touch target for previous/next buttons in Clue Bar | Michael Camilleri | 1 | +5 | -4 |
| 2026-05-10 15:25 | Improve latency of pings | Michael Camilleri | 1 | +1 | -0 |
| 2026-05-10 14:17 | Clean up completed game ping records | Michael Camilleri | 3 | +93 | -1 |
| 2026-05-10 13:55 | Tweak layout of Clue List on iOS | Michael Camilleri | 1 | +25 | -11 |
| 2026-05-10 11:01 | Move diagnostics menu option into Puzzle Menu | Michael Camilleri | 1 | +10 | -15 |
| 2026-05-10 10:49 | Make diagnostics accessible from Puzzle View | Michael Camilleri | 1 | +16 | -0 |
| 2026-05-10 10:23 | Simplify push notification fallback | Michael Camilleri | 1 | +2 | -8 |
| 2026-05-10 06:18 | Limit push fallback to active game | Michael Camilleri | 2 | +139 | -89 |
| 2026-05-10 05:51 | Include Player records in fallback fetch | Michael Camilleri | 1 | +6 | -1 |
| 2026-05-09 05:09 | Disable solved puzzle toolbar actions | Michael Camilleri | 1 | +10 | -2 |
| 2026-05-09 03:01 | Load puzzles before roster refresh | Michael Camilleri | 5 | +93 | -50 |
| 2026-05-09 02:40 | Retry pending move flushes until persisted | Michael Camilleri | 3 | +35 | -15 |
| 2026-05-09 01:28 | Fix notification replay bug | Michael Camilleri | 3 | +12 | -20 |
| 2026-05-09 00:19 | Preserve local Moves record at all times | Michael Camilleri | 4 | +166 | -3 |
| 2026-05-08 22:40 | Fix Success Panel animation | Michael Camilleri | 1 | +23 | -9 |
| 2026-05-08 22:17 | Improve Success Panel animation | Michael Camilleri | 1 | +30 | -23 |
| 2026-05-08 21:14 | Extend divider into safe area in landscape | Michael Camilleri | 1 | +1 | -0 |
| 2026-05-08 15:00 | Disable author tinting for local games | Michael Camilleri | 2 | +11 | -12 |
| 2026-05-08 14:39 | Collapse roster list in Scoreboard | Michael Camilleri | 2 | +8 | -10 |
| 2026-05-08 14:33 | Make roster always present | Michael Camilleri | 4 | +46 | -28 |
| 2026-05-08 13:58 | Add logging for rosters | Michael Camilleri | 1 | +18 | -0 |
| 2026-05-08 13:38 | Add alternative CloudKit path for notified changes | Michael Camilleri | 3 | +216 | -44 |
| 2026-05-08 13:25 | Use more targeted CloudKit fetches | Michael Camilleri | 2 | +18 | -11 |
| 2026-05-08 13:09 | Fetch current puzzle zone on push | Michael Camilleri | 2 | +45 | -6 |
| 2026-05-08 12:39 | Create push subscriptions expressly | Michael Camilleri | 1 | +52 | -0 |
| 2026-05-08 12:29 | Add more instrumentation to push notifications | Michael Camilleri | 1 | +33 | -0 |
| 2026-05-08 12:12 | Set APN environment to production | Michael Camilleri | 1 | +1 | -1 |
| 2026-05-08 11:37 | Instrument notification code path | Michael Camilleri | 2 | +29 | -0 |
| 2026-05-08 07:54 | Push Moves immediately after debounced flush | Michael Camilleri | 3 | +49 | -12 |
| 2026-05-08 03:31 | Rewrite sync approach | Michael Camilleri | 32 | +1898 | -2210 |
| 2026-05-07 22:40 | Stop CKSyncEngine from looping on ZoneNotFound | Michael Camilleri | 3 | +260 | -4 |
| 2026-05-07 22:39 | Add testing instructions to AGENTS.md | Michael Camilleri | 1 | +9 | -0 |
| 2026-05-07 21:11 | Apply private-DB zone deletions on receiving devices | Michael Camilleri | 3 | +93 | -32 |
| 2026-05-07 20:31 | Recover from CloudKit etag drift on Player and Move records | Michael Camilleri | 3 | +49 | -1 |
| 2026-05-07 20:30 | Add basic AGENTS.md file | Michael Camilleri | 1 | +13 | -0 |
| 2026-05-07 10:26 | Add initial 10 bundled puzzles | Michael Camilleri | 15 | +1081 | -4 |
| 2026-05-07 09:49 | Move debug puzzles to new top-level directory | Michael Camilleri | 10 | +85 | -47 |
| 2026-05-07 08:09 | Support Across Lite puzzle import | Michael Camilleri | 9 | +569 | -8 |
| 2026-05-07 07:15 | Add external sources section to Settings | Michael Camilleri | 1 | +31 | -5 |
| 2026-05-07 05:36 | Fetch account e-mail through GraphQL profile | Michael Camilleri | 4 | +230 | -23 |
| 2026-05-07 04:41 | Add About screen to Settings | Michael Camilleri | 5 | +111 | -1 |
| 2026-05-06 23:21 | Fix silent record drops in inbound CloudKit sync | Michael Camilleri | 4 | +172 | -42 |
| 2026-05-06 21:58 | Replace in-memory engines on reset sync state | Michael Camilleri | 1 | +20 | -2 |
| 2026-05-06 19:31 | Propagate ckShareRecordName to other owner-devices | Michael Camilleri | 6 | +302 | -3 |
| 2026-05-06 18:30 | Fix XD accepted-answer rebus completion | Michael Camilleri | 3 | +117 | -8 |
| 2026-05-06 17:51 | Update text in notification messages | Michael Camilleri | 5 | +91 | -4 |
| 2026-05-06 17:38 | Tweak count on in-progress scoreboard on iPadOS | Michael Camilleri | 1 | +44 | -6 |
| 2026-05-06 17:34 | Improve final scoreboard display on iPadOS | Michael Camilleri | 1 | +20 | -6 |
| 2026-05-06 16:52 | Replace clear menu with entry menu | Michael Camilleri | 1 | +21 | -14 |
| 2026-05-06 16:22 | Fix concurrency warning about isolation | Michael Camilleri | 1 | +6 | -4 |
| 2026-05-06 15:51 | Support XD clue metadata accepted answers | Michael Camilleri | 7 | +503 | -27 |
| 2026-05-06 14:03 | Support additional iPad orientation | Michael Camilleri | 2 | +2 | -0 |
| 2026-05-06 13:56 | Change swipe gesture to change cursor axis to tap gesture | Michael Camilleri | 2 | +11 | -9 |
| 2026-05-06 13:17 | Add iPad portrait layout | Michael Camilleri | 2 | +97 | -18 |
| 2026-05-06 09:17 | Add external keyboard input handling | Michael Camilleri | 6 | +339 | -2 |
| 2026-05-06 04:23 | Add initial iPad layout | Michael Camilleri | 6 | +541 | -83 |
| 2026-05-06 01:20 | Add keyboard swipe to set entry direction | Michael Camilleri | 2 | +16 | -0 |
| 2026-05-06 00:07 | Preserve cell author on same-letter rewrites and reveal-of-correct | Michael Camilleri | 4 | +172 | -8 |
| 2026-05-05 22:16 | Expand scope of notifications of collaborator actions | Michael Camilleri | 9 | +247 | -97 |
| 2026-05-05 15:19 | Make GameStore collaborators required at construction | Michael Camilleri | 10 | +510 | -447 |
| 2026-05-05 11:43 | Persist local author identity across launches | Michael Camilleri | 4 | +45 | -15 |
| 2026-05-04 00:36 | Ensure notifications display during backgrounding | Michael Camilleri | 4 | +59 | -4 |
| 2026-05-04 00:01 | Prevent author tinting on empty squares | Michael Camilleri | 1 | +3 | -1 |
| 2026-05-03 23:54 | Tweak behaviour regarding shared games | Michael Camilleri | 1 | +16 | -3 |
| 2026-05-03 23:13 | Support author tinting on share | Michael Camilleri | 5 | +55 | -32 |
| 2026-05-03 22:58 | Update author tints dynamically | Michael Camilleri | 3 | +7 | -3 |
| 2026-05-03 05:31 | Use a faint background to differentiate authors | Michael Camilleri | 2 | +12 | -12 |
| 2026-05-03 04:20 | Add colours to text in shared games | Michael Camilleri | 2 | +20 | -3 |
| 2026-05-02 16:54 | Avoid using icons in puzzle view menus | Michael Camilleri | 1 | +3 | -9 |
| 2026-05-02 16:43 | Fix warnings about discarded results | Michael Camilleri | 1 | +1 | -0 |
| 2026-05-02 16:42 | Fix leaving of shared games | Michael Camilleri | 1 | +9 | -2 |
| 2026-05-02 15:28 | Improve consistency between game list menu and puzzle menu | Michael Camilleri | 3 | +387 | -179 |
| 2026-05-02 15:06 | Simplify leave/deletion options for shared games | Michael Camilleri | 5 | +139 | -24 |
| 2026-05-02 11:29 | Unwind changes to reduce CloudKit calls | Michael Camilleri | 5 | +88 | -42 |
| 2026-05-02 08:25 | Remove performance logging | Michael Camilleri | 10 | +9 | -423 |
| 2026-05-02 08:13 | Fix needless game parsing on key strokes | Michael Camilleri | 5 | +156 | -28 |
| 2026-05-02 08:09 | Reenable ProMotion | Michael Camilleri | 2 | +3 | -0 |
| 2026-05-02 04:13 | Disable ProMotion | Michael Camilleri | 2 | +0 | -3 |
| 2026-05-02 01:36 | Allow certain logging to be disabled | Michael Camilleri | 5 | +109 | -55 |
| 2026-05-02 01:06 | Support toggling iCloud syncing | Michael Camilleri | 4 | +78 | -17 |
| 2026-05-02 00:52 | Increase granularity of logging | Michael Camilleri | 1 | +29 | -1 |
| 2026-05-02 00:42 | Make grid squares equatable | Michael Camilleri | 2 | +16 | -7 |
| 2026-05-02 00:06 | Add performance logging to SwiftUI-related functions | Michael Camilleri | 4 | +164 | -1 |
| 2026-05-01 23:22 | Reduce workload during flushes | Michael Camilleri | 3 | +122 | -4 |
| 2026-05-01 23:14 | Add more detail to performance logging | Michael Camilleri | 2 | +30 | -4 |
| 2026-05-01 23:06 | Add performance logging | Michael Camilleri | 10 | +429 | -91 |
| 2026-05-01 22:48 | Defer CloudKit move enqueues while typing | Michael Camilleri | 5 | +140 | -17 |
| 2026-05-01 22:41 | Reduce puzzle input work | Michael Camilleri | 4 | +92 | -9 |
| 2026-05-01 17:47 | Improve responsiveness in puzzle view | Michael Camilleri | 3 | +168 | -106 |
| 2026-05-01 16:32 | Reduce calculations during rendering | Michael Camilleri | 2 | +45 | -17 |
| 2026-05-01 13:54 | Improve scoreboard reveal | Michael Camilleri | 3 | +38 | -15 |
| 2026-05-01 13:14 | Add scoreboard to success panel | Michael Camilleri | 3 | +187 | -25 |
| 2026-05-01 11:47 | Recover existing CloudKit zone shares | Michael Camilleri | 1 | +95 | -14 |
| 2026-05-01 11:04 | Use panel rather than sheet on puzzle completion | Michael Camilleri | 2 | +30 | -37 |
| 2026-05-01 09:20 | Switch to using canvas for thumbnail previews | Michael Camilleri | 1 | +31 | -65 |
| 2026-05-01 08:54 | Tweak centring of puzzle again | Michael Camilleri | 1 | +1 | -0 |
| 2026-05-01 07:52 | Add separation between title and grid | Michael Camilleri | 1 | +1 | -1 |
| 2026-05-01 07:37 | Adjust centring approach again | Michael Camilleri | 1 | +1 | -1 |
| 2026-05-01 07:28 | Adjust centring approach | Michael Camilleri | 1 | +34 | -28 |
| 2026-05-01 04:35 | Centre grid in puzzle view | Michael Camilleri | 1 | +119 | -47 |
| 2026-04-30 23:45 | Support high refresh rates | Michael Camilleri | 2 | +3 | -0 |
| 2026-04-30 23:33 | Detect more forms of cross-referenced clues | Michael Camilleri | 2 | +127 | -11 |
| 2026-04-30 22:04 | Make last update time update live | Michael Camilleri | 1 | +37 | -5 |
| 2026-04-30 21:52 | Change display of cross-referenced clues | Michael Camilleri | 5 | +218 | -73 |
| 2026-04-30 21:50 | Add scripts to translate JSON to XD | Michael Camilleri | 3 | +128 | -0 |
| 2026-04-30 12:51 | Change reveal tool to only mark mistakes as correct | Michael Camilleri | 2 | +41 | -2 |
| 2026-04-30 05:05 | Tweak threshhold for roomier display | Michael Camilleri | 1 | +1 | -1 |
| 2026-04-30 05:00 | Make game list styling dependent on scene size | Michael Camilleri | 1 | +59 | -38 |
| 2026-04-30 04:36 | Change date formatting in PuzzleView | Michael Camilleri | 1 | +2 | -2 |
| 2026-04-30 04:30 | Tweak game list styling | Michael Camilleri | 1 | +75 | -14 |
| 2026-04-30 04:17 | Show unread badge for unseen shared puzzle changes | Michael Camilleri | 6 | +186 | -4 |
| 2026-04-30 03:55 | Navigate to games from notification taps | Michael Camilleri | 1 | +52 | -0 |
| 2026-04-30 03:43 | Remove remote-alert notification path | Michael Camilleri | 11 | +11 | -404 |
| 2026-04-30 02:30 | Use synced pings for activity notifications | Michael Camilleri | 3 | +103 | -35 |
| 2026-04-29 14:30 | Add app notifications for shared puzzle activity | Michael Camilleri | 15 | +738 | -10 |
| 2026-04-29 12:50 | Use grey for thematic colouring | Michael Camilleri | 1 | +2 | -2 |
| 2026-04-29 10:34 | Add Crossmake tool | Michael Camilleri | 6 | +355703 | -0 |
| 2026-04-29 07:32 | Fix 'ghost' player in roster | Michael Camilleri | 1 | +2 | -1 |
| 2026-04-29 04:44 | Fix name broadcasting in share puzzles | Michael Camilleri | 6 | +70 | -15 |
| 2026-04-28 23:34 | Drop parent references from Move, Snapshot and Player records | Michael Camilleri | 3 | +2 | -52 |
| 2026-04-28 23:24 | Show peer cursor in shared puzzles | Michael Camilleri | 15 | +718 | -15 |
| 2026-04-28 17:37 | Add more logging for shared games | Michael Camilleri | 3 | +77 | -14 |
| 2026-04-28 09:05 | Add poll-based synchronisation when inside puzzle | Michael Camilleri | 2 | +30 | -0 |
| 2026-04-28 05:52 | Treat italicised clues as related group | Michael Camilleri | 3 | +94 | -6 |
| 2026-04-28 05:11 | Add CloudKit shares to a queue on launch | Michael Camilleri | 3 | +60 | -51 |
| 2026-04-28 03:46 | Fix handling of shared games from links | Michael Camilleri | 3 | +64 | -2 |
| 2026-04-28 03:44 | Tweak display of puzzles in GameListView | Michael Camilleri | 7 | +88 | -21 |
| 2026-04-28 02:49 | Fix puzzle timestamp updating | Michael Camilleri | 3 | +35 | -0 |
| 2026-04-28 02:35 | Avoid flash as iCloud link is checked | Michael Camilleri | 1 | +1 | -1 |
| 2026-04-28 02:25 | Use existing link in share sheet | Michael Camilleri | 2 | +58 | -2 |
| 2026-04-28 02:14 | Tweak share sheet | Michael Camilleri | 1 | +3 | -10 |
| 2026-04-28 01:17 | Replace share sheet with link creation sheet | Michael Camilleri | 9 | +482 | -252 |
| 2026-04-28 00:11 | Fix share link creation | Michael Camilleri | 3 | +111 | -31 |
| 2026-04-27 00:31 | Revert to previous share sheet | Michael Camilleri | 5 | +23 | -157 |
| 2026-04-27 00:10 | Gate share button | Michael Camilleri | 5 | +157 | -23 |
| 2026-04-26 23:47 | Switch share sheet to ShareLink | Michael Camilleri | 6 | +83 | -110 |
| 2026-04-26 12:44 | Improve display of share sheet | Michael Camilleri | 1 | +13 | -3 |
| 2026-04-26 11:03 | Extract CloudService and ImportService from AppServices | Michael Camilleri | 7 | +161 | -119 |
| 2026-04-26 10:43 | Remove unnecessary lock | Michael Camilleri | 6 | +18 | -49 |
| 2026-04-26 10:25 | Tighten up tests | Michael Camilleri | 6 | +76 | -47 |
| 2026-04-26 05:03 | Add missing tests and fix colour cleanup on game delete | Michael Camilleri | 8 | +465 | -5 |
| 2026-04-26 02:29 | Use shorter identifiers | Michael Camilleri | 4 | +14 | -14 |
| 2026-04-26 02:23 | Defer snapshot move pruning until upload succeeds | Michael Camilleri | 6 | +226 | -13 |
| 2026-04-26 02:09 | Unify CKContainer instances | Michael Camilleri | 1 | +2 | -3 |
| 2026-04-26 01:55 | Share player names in multiplayer | Michael Camilleri | 12 | +971 | -15 |
| 2026-04-24 19:12 | Add CKShare sharing via per-game zones and dual sync engines | Michael Camilleri | 20 | +1088 | -176 |
| 2026-04-24 09:08 | Make iCloud error recording asynchronous | Michael Camilleri | 1 | +13 | -4 |
| 2026-04-24 08:01 | Add reset database button to Settings | Michael Camilleri | 2 | +19 | -20 |
| 2026-04-24 07:57 | Fix gaps in synchronisation logic | Michael Camilleri | 2 | +16 | -0 |
| 2026-04-24 04:06 | Fix correctness issues in new data flow | Michael Camilleri | 4 | +43 | -13 |
| 2026-04-24 03:46 | Improve snapshots creation | Michael Camilleri | 9 | +224 | -29 |
| 2026-04-23 21:53 | Ensure that list previews are up to date | Michael Camilleri | 3 | +54 | -1 |
| 2026-04-23 21:35 | Adopt move-log architecture and CKSyncEngine | Michael Camilleri | 21 | +1135 | -2444 |
| 2026-04-22 09:36 | Begin process of moving to snapshots and move log | Michael Camilleri | 5 | +588 | -0 |
| 2026-04-22 09:19 | Improve throttle avoidance | Michael Camilleri | 6 | +222 | -17 |
| 2026-04-22 09:00 | Avoid data loss caused by pending updates | Michael Camilleri | 2 | +210 | -0 |
| 2026-04-21 23:11 | Support shaded cells in certain crosswords | Michael Camilleri | 1 | +64 | -2 |
| 2026-04-21 21:59 | Change version format | Michael Camilleri | 2 | +2 | -2 |
| 2026-04-21 21:48 | Use clue list to display long clues | Michael Camilleri | 4 | +94 | -1 |
| 2026-04-21 20:52 | Support relative relationships between clues | Michael Camilleri | 7 | +364 | -1 |
| 2026-04-21 19:25 | Provide feedback to user when puzzle is filled in | Michael Camilleri | 2 | +94 | -0 |
| 2026-04-21 19:07 | Support direction toggle via the Clue Bar | Michael Camilleri | 1 | +4 | -0 |
| 2026-04-21 19:02 | Fix auto-advancing | Michael Camilleri | 1 | +19 | -7 |
| 2026-04-17 20:26 | Tweak app icon | Michael Camilleri | 2 | +0 | -0 |
| 2026-04-17 10:04 | Revert Clue Bar to having a dynamic height | Michael Camilleri | 1 | +0 | -5 |
| 2026-04-17 09:42 | Fix clue sliding | Michael Camilleri | 1 | +23 | -23 |
| 2026-04-17 09:13 | Add padding above custom keyboard | Michael Camilleri | 1 | +1 | -0 |
| 2026-04-17 08:32 | Add draft toggling to the keyboard overflow | Michael Camilleri | 1 | +12 | -1 |
| 2026-04-17 08:26 | Display location in all caps | Michael Camilleri | 1 | +1 | -0 |
| 2026-04-17 08:21 | Tweak change name alert | Michael Camilleri | 1 | +4 | -0 |
| 2026-04-17 06:51 | Tidy up naming | Michael Camilleri | 1 | +10 | -15 |
| 2026-04-17 06:32 | Rename UbiquityMonitor to DriveMonitor | Michael Camilleri | 6 | +294 | -294 |
| 2026-04-17 05:52 | Inject sync services via environment | Michael Camilleri | 5 | +15 | -12 |
| 2026-04-17 03:24 | Improve separation of concerns in architecture | Michael Camilleri | 10 | +265 | -180 |
| 2026-04-14 22:58 | Ensure Core Data changes are sent to iCloud | Michael Camilleri | 6 | +221 | -19 |
| 2026-04-14 17:32 | Sync deletion of games | Michael Camilleri | 4 | +181 | -24 |
| 2026-04-14 17:19 | Ensure game creation triggers iCloud sync | Michael Camilleri | 2 | +31 | -9 |
| 2026-04-14 17:04 | Refactor to use @FetchRequest | Michael Camilleri | 5 | +86 | -139 |
| 2026-04-14 16:00 | Support repairing of broken games | Michael Camilleri | 1 | +52 | -0 |
| 2026-04-14 15:20 | Attempt to address missing entity ID | Michael Camilleri | 1 | +26 | -5 |
| 2026-04-14 14:38 | Change gating logic for iCloud fetches | Michael Camilleri | 1 | +13 | -9 |
| 2026-04-14 14:03 | Add telemetry for iCloud debugging | Michael Camilleri | 1 | +26 | -2 |
| 2026-04-14 13:36 | Ensure zone ID is known before pushes and fetches | Michael Camilleri | 1 | +31 | -2 |
| 2026-04-14 11:59 | Remove Crossmate heading | Michael Camilleri | 1 | +8 | -3 |
| 2026-04-14 10:04 | Clarify scope of XD file support | Michael Camilleri | 2 | +3 | -0 |
| 2026-04-14 09:52 | Improve support for importing XD puzzles | Michael Camilleri | 6 | +118 | -1 |
| 2026-04-14 09:42 | Improve robustness of puzzle selection | Michael Camilleri | 6 | +90 | -23 |
| 2026-04-14 05:06 | Add player menu | Michael Camilleri | 3 | +87 | -4 |
| 2026-04-14 00:23 | Add submit button to calendar picker | Michael Camilleri | 2 | +49 | -4 |
| 2026-04-13 23:20 | Add date field to XD struct | Michael Camilleri | 6 | +34 | -24 |
| 2026-04-13 21:26 | Change colours used in clue bar and start squares | Michael Camilleri | 3 | +35 | -7 |
| 2026-04-13 09:51 | Add support for external puzzles | Michael Camilleri | 8 | +357 | -45 |
| 2026-04-12 23:39 | Ensure game records are saved before square records | Michael Camilleri | 3 | +103 | -33 |
| 2026-04-12 21:39 | Expand instrumentation of sync logic | Michael Camilleri | 2 | +87 | -6 |
| 2026-04-12 19:54 | Switch to different iCloud container | Michael Camilleri | 2 | +3 | -1 |
| 2026-04-12 19:42 | Add write probe as part of iCloud debugging support | Michael Camilleri | 1 | +42 | -0 |
| 2026-04-12 17:29 | Add even more iCloud debugging support | Michael Camilleri | 3 | +56 | -1 |
| 2026-04-12 17:09 | Add more iCloud debugging support | Michael Camilleri | 2 | +28 | -0 |
| 2026-04-12 15:36 | Add sync monitor | Michael Camilleri | 7 | +346 | -15 |
| 2026-04-12 11:17 | Ensure placeholder file is added to iCloud Drive | Michael Camilleri | 1 | +12 | -0 |
| 2026-04-12 08:13 | Set initial version to 1.0 | Michael Camilleri | 4 | +46 | -4 |
| 2026-04-12 07:52 | Add support for additional puzzle sources | Michael Camilleri | 17 | +675 | -10 |
| 2026-04-12 02:09 | Settings and NYT authentication | Michael Camilleri | 9 | +740 | -0 |
| 2026-04-11 10:20 | Add puzzle catalog | Michael Camilleri | 11 | +791 | -80 |
| 2026-04-11 10:14 | Add CloudKit-based sync engine | Michael Camilleri | 23 | +2011 | -129 |
| 2026-04-09 21:22 | Add persistence | Michael Camilleri | 6 | +298 | -3 |
| 2026-04-09 21:06 | Add support for specials | Michael Camilleri | 4 | +51 | -16 |
| 2026-04-09 20:55 | Add initial prototype | Michael Camilleri | 19 | +2291 | -0 |
| 2026-04-08 22:53 | Initial commit | Michael Camilleri | 1 | +10 | -0 |