{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":744142336,"defaultBranch":"main","name":"open_source_sudoku","ownerLogin":"mdg1019","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-01-16T17:49:51.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1943510?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1705427515.0","currentOid":""},"activityList":{"items":[{"before":"c65dc6553e8c0063bf7255f4e9df506ef258695b","after":"165f424ad528a97228c80384d9e2989aa7d60dd9","ref":"refs/heads/main","pushedAt":"2024-02-21T13:50:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Updated README.md for recent changes.","shortMessageHtmlLink":"Updated README.md for recent changes."}},{"before":"62f1da05fa22fee66b370a47e02c2a7fb0468a13","after":"c65dc6553e8c0063bf7255f4e9df506ef258695b","ref":"refs/heads/main","pushedAt":"2024-02-21T13:21:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"The app now shows when a puzzle has been solved.","shortMessageHtmlLink":"The app now shows when a puzzle has been solved."}},{"before":"cc87f0fc85bf60852e0825acbc7cb09af76ec852","after":"62f1da05fa22fee66b370a47e02c2a7fb0468a13","ref":"refs/heads/main","pushedAt":"2024-02-07T14:34:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"After adding in a check for puzzles with multiple solutions, I decided to pregenerate a bunch of puzzles instead of having the app generate them. The additional check could take considerable time for more difficult levels. I create a puzzle generator in Rust that generates a file called pregenerated_puzzles.dart.","shortMessageHtmlLink":"After adding in a check for puzzles with multiple solutions, I decide…"}},{"before":"e266abe75002e3209c5606d7da645131d6143a08","after":"cc87f0fc85bf60852e0825acbc7cb09af76ec852","ref":"refs/heads/main","pushedAt":"2024-01-29T14:18:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added a LICENSE.md and updated README.md.","shortMessageHtmlLink":"Added a LICENSE.md and updated README.md."}},{"before":"fbe4557a5b28096c9dbe3a731df9e73c12bc84c8","after":"e266abe75002e3209c5606d7da645131d6143a08","ref":"refs/heads/main","pushedAt":"2024-01-29T13:48:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Wrapped the 'loading' and 'error' fields in MaterialApp widgets for settings.when() in main.dart.","shortMessageHtmlLink":"Wrapped the 'loading' and 'error' fields in MaterialApp widgets for s…"}},{"before":"39ae540848ebf0c712e54664fc03ae20f1e1af93","after":"fbe4557a5b28096c9dbe3a731df9e73c12bc84c8","ref":"refs/heads/main","pushedAt":"2024-01-29T11:45:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Updated the app's Android label.","shortMessageHtmlLink":"Updated the app's Android label."}},{"before":"dc9d6acf170a5a4dec5dbc469e99b6cc8146e3e4","after":"39ae540848ebf0c712e54664fc03ae20f1e1af93","ref":"refs/heads/main","pushedAt":"2024-01-29T11:07:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Removed unnecessary code.","shortMessageHtmlLink":"Removed unnecessary code."}},{"before":"5917fa211c7af69faf4a80c96a96becaa62f0004","after":"dc9d6acf170a5a4dec5dbc469e99b6cc8146e3e4","ref":"refs/heads/main","pushedAt":"2024-01-28T21:39:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added some Android icons. Not really satisfied with them, but they're better than the default ones for the time being.","shortMessageHtmlLink":"Added some Android icons. Not really satisfied with them, but they're…"}},{"before":"fd24bc4069fd879009006ec1bfe147979a172300","after":"5917fa211c7af69faf4a80c96a96becaa62f0004","ref":"refs/heads/main","pushedAt":"2024-01-28T11:47:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Updated the README.md file.","shortMessageHtmlLink":"Updated the README.md file."}},{"before":"85eb562a6c571aaa9ca93ecec5297b4d162f17c4","after":"fd24bc4069fd879009006ec1bfe147979a172300","ref":"refs/heads/main","pushedAt":"2024-01-28T11:41:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Changed the GeneratedPuzzle objects for a record of (NumericGrid, NumericGrid). Google needs to rename them as a tuple and not a record. That's what they're called by other programming languages and it confuses searches and AI when trying to find out more info about Dart 'records'.","shortMessageHtmlLink":"Changed the GeneratedPuzzle objects for a record of (NumericGrid, Num…"}},{"before":"f1431685e8cd25b6bc41e11da507f9dc7f8acf47","after":"85eb562a6c571aaa9ca93ecec5297b4d162f17c4","ref":"refs/heads/main","pushedAt":"2024-01-27T19:04:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"The state of the Sudoku object is now persisted to a file in the documents directory as sudoku.json","shortMessageHtmlLink":"The state of the Sudoku object is now persisted to a file in the docu…"}},{"before":"72a9cda00e412a039ed49150f6be083d52d77635","after":"f1431685e8cd25b6bc41e11da507f9dc7f8acf47","ref":"refs/heads/main","pushedAt":"2024-01-27T13:54:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Removed unused imports.","shortMessageHtmlLink":"Removed unused imports."}},{"before":"7bc4df3f236de5d70984155d805387071ceabdfd","after":"72a9cda00e412a039ed49150f6be083d52d77635","ref":"refs/heads/main","pushedAt":"2024-01-27T13:51:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Created generic functions for reading and writing json to files.","shortMessageHtmlLink":"Created generic functions for reading and writing json to files."}},{"before":"5612af374ef73716fc036da5bdcf4fe84b1fe28e","after":"7bc4df3f236de5d70984155d805387071ceabdfd","ref":"refs/heads/main","pushedAt":"2024-01-27T13:28:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Got rid of freezed. It just needlessly bloats the code.","shortMessageHtmlLink":"Got rid of freezed. It just needlessly bloats the code."}},{"before":"b606f1717c143f045f47f780e2ed78a3f078554a","after":"5612af374ef73716fc036da5bdcf4fe84b1fe28e","ref":"refs/heads/main","pushedAt":"2024-01-26T18:46:59.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added an updateShouldNotify() override to make it easier to automatically persist multiple fields in the future.","shortMessageHtmlLink":"Added an updateShouldNotify() override to make it easier to automatic…"}},{"before":"09597537726a47c1f8d99d5cb0a86a3f852a9694","after":"b606f1717c143f045f47f780e2ed78a3f078554a","ref":"refs/heads/main","pushedAt":"2024-01-26T17:59:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Saving the settings to a file called settings.json now instead of using shared preferences.","shortMessageHtmlLink":"Saving the settings to a file called settings.json now instead of usi…"}},{"before":"3621addf25f3df8df9ac2e1c8c9e520f37f515a0","after":"09597537726a47c1f8d99d5cb0a86a3f852a9694","ref":"refs/heads/main","pushedAt":"2024-01-26T11:42:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"When a cell is correctly solved, any notes that are no longer necessary for that number are erased.","shortMessageHtmlLink":"When a cell is correctly solved, any notes that are no longer necessa…"}},{"before":"c4d0e8f792cad96613d750f9e804097715d7f939","after":"3621addf25f3df8df9ac2e1c8c9e520f37f515a0","ref":"refs/heads/main","pushedAt":"2024-01-25T17:49:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added SudokuGrid.getLocationsInLineOfSight() to get a list of all cells that are in the same row, column, and box as a specified cell.","shortMessageHtmlLink":"Added SudokuGrid.getLocationsInLineOfSight() to get a list of all cel…"}},{"before":"3b682cf5c43cccdcc269ae3d0ef21dd126d94d93","after":"c4d0e8f792cad96613d750f9e804097715d7f939","ref":"refs/heads/main","pushedAt":"2024-01-25T17:34:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added a SudokuGrid.getLocationsInLineOfSightWithNumber() method to get a list of all cells that are in the same row, column, or box with the same number as a specific cell.","shortMessageHtmlLink":"Added a SudokuGrid.getLocationsInLineOfSightWithNumber() method to ge…"}},{"before":"2c53e0fc665dc0703c35d19f48a05f80583a31c1","after":"3b682cf5c43cccdcc269ae3d0ef21dd126d94d93","ref":"refs/heads/main","pushedAt":"2024-01-25T14:28:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"That should be the last of the refactoring. For now. :)","shortMessageHtmlLink":"That should be the last of the refactoring. For now. :)"}},{"before":"d3b790866d093eb53141b0bc9556f91db8121717","after":"2c53e0fc665dc0703c35d19f48a05f80583a31c1","ref":"refs/heads/main","pushedAt":"2024-01-25T13:47:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Refactored the remaining unit tests that I hadn't done yet.","shortMessageHtmlLink":"Refactored the remaining unit tests that I hadn't done yet."}},{"before":"e686f32f343d74b51794b42f6d538691c8fb4a94","after":"d3b790866d093eb53141b0bc9556f91db8121717","ref":"refs/heads/main","pushedAt":"2024-01-25T13:33:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added a starting field to the PuzzleCell class. This allows reseting the puzzle without having to retain the original GeneratedPuzzle object in memory.","shortMessageHtmlLink":"Added a starting field to the PuzzleCell class. This allows reseting …"}},{"before":"dd29d46f51cfcb6e1ed58e7a4b4be574ece38d49","after":"e686f32f343d74b51794b42f6d538691c8fb4a94","ref":"refs/heads/main","pushedAt":"2024-01-24T18:23:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"More refactoring. It's almost complete. For now. :)","shortMessageHtmlLink":"More refactoring. It's almost complete. For now. :)"}},{"before":"171292220d4c48894e21fd27799c9611b1da03f9","after":"dd29d46f51cfcb6e1ed58e7a4b4be574ece38d49","ref":"refs/heads/main","pushedAt":"2024-01-24T14:43:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Started refactoring a lot of the basic Shared code into a generic SudokuGrid and two concrete classes: NumericGrid and DisplayGrid. This will allow for much easier code reuse.","shortMessageHtmlLink":"Started refactoring a lot of the basic Shared code into a generic Sud…"}},{"before":"9638a7b498dee77e0a9de318e31e1ef396f7e019","after":"171292220d4c48894e21fd27799c9611b1da03f9","ref":"refs/heads/main","pushedAt":"2024-01-23T14:45:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"The Erase icon button now works. It will erase the current value if it's not a solved cell or it will erase the notes if there is no current value.","shortMessageHtmlLink":"The Erase icon button now works. It will erase the current value if i…"}},{"before":"df473a87b9944a3f163b914c071a403d174f3c3a","after":"9638a7b498dee77e0a9de318e31e1ef396f7e019","ref":"refs/heads/main","pushedAt":"2024-01-22T18:22:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"The notes system is working.","shortMessageHtmlLink":"The notes system is working."}},{"before":"d819e8fcafc903b19753fd53ac32e71650b103d6","after":"df473a87b9944a3f163b914c071a403d174f3c3a","ref":"refs/heads/main","pushedAt":"2024-01-22T13:49:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added a confirmation dialog for the Reset action and a dialog for the New action that allows you to select a level for the new game or cancel the action.","shortMessageHtmlLink":"Added a confirmation dialog for the Reset action and a dialog for the…"}},{"before":"6ae776462e5e72b7e4a6a6d9a3d8dd5f4ef551d1","after":"d819e8fcafc903b19753fd53ac32e71650b103d6","ref":"refs/heads/main","pushedAt":"2024-01-22T12:56:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Mistakes are now highlighted in red, which is themeable.","shortMessageHtmlLink":"Mistakes are now highlighted in red, which is themeable."}},{"before":"bab1f1a11f29793bcf51a778945577145031cb01","after":"6ae776462e5e72b7e4a6a6d9a3d8dd5f4ef551d1","ref":"refs/heads/main","pushedAt":"2024-01-22T12:35:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Numbers can be entered in unsolved cells and mistakes are counted.","shortMessageHtmlLink":"Numbers can be entered in unsolved cells and mistakes are counted."}},{"before":"9ef2ddb2abb821ce8b2bdb625f750c10d223026f","after":"bab1f1a11f29793bcf51a778945577145031cb01","ref":"refs/heads/main","pushedAt":"2024-01-22T12:25:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mdg1019","name":"Mark Goodwin","path":"/mdg1019","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/1943510?s=80&v=4"},"commit":{"message":"Added SudokuIconBar, SudokuNumberButton, and SudokuNumbersBar widgets.","shortMessageHtmlLink":"Added SudokuIconBar, SudokuNumberButton, and SudokuNumbersBar widgets."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEAOOiTwA","startCursor":null,"endCursor":null}},"title":"Activity · mdg1019/open_source_sudoku"}