Note: Many earlier versions are not specified, that's too much work.
When a @types
dependency updates, they almost always don't affect anything.
- (css) Fix strategy disable not changing link color + slightly more accessible disabled color
- (code) Use new Set methods, simplifies code. This shouldn't break support for old browsers.
- (css) Fix explanation changing the size of Aside
- Chain explanations now include zero width spaces to break-word nicely.
- (use) Fix ANOTHER massive bug: editing multiple cells now works and is consistent with the visuals
- (use) Ctrl+A to select all cells
- (use) Fix massive bug in cell keyboard nagivation, where pressing an arrow key would focus the next cell and select the next next cell
- (a11y) Expand abbrevation (
strats
⇒strategies
) - (css) Fix some incorrect rtl display
- (use) Multiselectable cells! Select multiple cells at the same time with Ctrl+Click
- Instead of being turned off, a selection will be disabled when clicking off. This is to prepare for the on-screen keyboard later.
- (use) Diagonal keyboard movement!!! Holding Up and Left at the same time will now go both directions!
- (use) When editing a cell: the functions of Backspace and
(Shift or Ctrl)+Backspace have been switched.
- Previously, Backspace would delete all candidates. Now it adds back all candidates.
- Additionally it sets
pretend
totrue
, so it will still change to a single digit when typing.
- Additionally it sets
- (Shift or Ctrl)+Backspace used to add back all candidates; now it deletes all candidates.
- Previously, Backspace would delete all candidates. Now it adds back all candidates.
- (use-bug) Previously, if a bunch of keypresses happen to cause a cell to end up at 9 candidates again,
it was not a condition to
pretend
as described above. Now it is. Personally, despite my extensive usage, this edge-case has not been run into yet so I do not know if this should be reimplemented. - (temp-docs) The way the Tabs and the Cells handle multiple keypresses at the same time is different. Specifically, Cells use a global event handler, while Tabs only have a local event handler. This means that for example, holding down two keys then focusing the Tabs, the Tabs would only have one key stored on repeat.
- (use) Add "explanations" for some strategies.
- (ui) Fix margin in aside causing
1.5rem
misalignment in two-column mode. - (ui) Increase amount of blank space at the bottom of the page in one-column mode. (
20vh
⇒25vh
)
- (a11y) Theoretically, screen readers can tell now that a candidate is eliminated (or rarely, added).
- (a11y) Use
p
,span
, andlayout: grid
instead oftable
et al. As a side effect, the highlighting for cells is slightly bigger.
- (fix) Subtle bugs in pairCoversGroup causing incorrect eliminators
- (use) pairCoversGroup extension when the pair sees each other
- (code) Typescript v5 is necessary for tuple overload
- (ux) Do not lazy load anything
- I will add back this later. A better experience is loading things silently but ahead of time.
- 100% of the time, loading cells will be done. A better candidate is the strategies, or in the future, the settings page.
- (ui) When a strategy errors or solves, stop instead of going to "Check for solved"
- (bug) Fix theoretical bug where a skipped disabled strategy becomes undisabled, but the solver thinks the strategy was already done so skips it the second time. This is a true edge case scenario because the only way I can imagine a strategy being done twice is some undo shenanigans.
- (bug) Fix theoretical bug where if the successcount was -1, it was interpreted as an error. This could theoretically happen if the user deletes a solved cell. "check for solved" then succeeds because the amount solved changes by -1. This is intentional and not an error. There are two properties that represented success, the property that was visualized did not have the bug, and did not say "Error". Instead there's a subtle requirement to press "Step" twice for "check for solved". This was fixed by only having 1 property.
- (bug) Fix how the strategy wouldn't be retried when clicking step after a manual edit.
- (use) pairCoversGroup
- (use) wWing now tries both candidates AB and candidates BA on the same pattern
- (bug, use) fix how hiddenPairsTriplesAndQuads would add candidates back when there were multiple hidden pairs triples and quads
- (use) add wWing
- (ui) darken selection color slightly
- (a11y) add
aria-selected
inside the cell buttons - (deps) sonarjs to 0.15.0, yarn 3.2.3, github-pages 3.0.0, update browserslist
- Note that estree does not officially support the new version of Typescript (4.8.4)
- (use) Export with "." instead of "0" for eliminated candidates
- Makes it easier to distinguish
- (ui, use) Display export in monospace
- (tests) Yet another timeStrategies rewrite
- (use) Simplify browserslist, instead of selecting browsers, select what browsers support.
- (deps) Bump typescript
- (meta) Modify description a bit
- (use) Support importing sudoku representations in grid+
.
form - (css) Style candidates that are both blue and green
- (use) Add 2-string kite
- (deps) I will only note major dependency updates - not including devDependencies.
- (code) groups Api
- (code) Separate StrategyItem and Solver!!!!!
- (use) Don't support Internet Explorer 11
- (use) Improve errors on hiddenPairsTriplesAndQuads
- (code) Some strategy/test simplfying
- (docs) Improve and update readme and strategies and notes and changelog to do documentation
- (deps) Very unimportant updates but at least I now get to use typescript
override
- (css) Use
@supports selector
to check whether:dir(rtl)
is supported
- (ui) Remove coords
- Note that cells have a title set for that.
- (code) A few optimizations
- (security) Prevent some forms of xss
- I don't think this really does much, but it does prevent eval.
- (BUG, USE) For some reason solved cells sometimes weren't displayed as full digits, fix that.
- (BUG, USE) Fix skipping a strategy
- (BUG, USE) For some reason the candidates didn't highlight. Fixed that.
- (ui) Lessen the impact of gigantic loadings.
- (code) Rename
_to81
toto81
- (docs) Slightly better docs in many files
- (use, a11y)
Ctrl+Home
goes to the first cell andCtrl+End
goes to the last cell - (use, a11y)
Alt+{Remove}
now resets cells too (previously onlyShift+{Remove}
) - (bug, use, a11y) Use event.key instead of event.code
- (a11y) Set aria-labelledby and aria-controls
- (a11y) Set sudoku's role to grid
- (spd) Only
Array.from(stuff).sort
when needed - (spd) Make wing strategies skip lines with only 1 of such candidate
- (spd) Bind or move functions where they won't be redeclared all the time
- (code) Simplify keyboard code
- (code) Change type of Cell#state.candidateClasses
- (code) More linting and ternary
- (code) Make typescript allow
Set#has
,Set#delete
, andMap#has
to be called by any type
- (code) Speed up wing strategies and use 1 function for all of them. Saves like 0.5 kb.
- (css) Use sanitize.css
- (use, a11y) Add headers to prompts. autofocus textarea???
- (use, css, a11y) Better tab controls + classes + aria
- (use, a11y, code) Add titles to cells
- (ui) Fix github corner location on smaller screens
- (a11y) Slight aria improvement in github corner
- (use) Actually change the sudoku after undo
- (use) xyzWing
-
(use) Tabs!
- to done: a11y (done in 0.26.1)
- to done: Tabpanel + Tabpanel aria (done in 0.26.1)
-
(ui) Remove data
- TODO: More sudoku editing controls
-
(ui) Header is smaller
- TODO: New header with sudoku's title and author
-
(ui) Padding between two columns in two column layout
-
(ui) Unintentional, but the controls for strats were reordered.
-
(code) Remove
solverElement
andsudokuNullCheck()
fromSolver
-
(tests) Add changeTab
-
(tests) Only independent css does stuff with the StrategyList id
-
(deps) Update some dependencies
- (code) Use yarn 3.0.2
- (code / tests) Remove _expect
- (docs) Remove
@requiredProps
and@optionalProps
in favor of TypeScript
- (tests) Allow more time for 1 specific test
- (tests) Time how long strategies take
- (deps) Update everything
- (use) Slightly speed up
hiddenSingles
- (use) Fix bug in XY Chain where it eliminated some candidates invalidly
Note: The following two were undone:
- (use) Useless almost 5 KB save in initial loading!
- (use) This is done by lazyloading strategies. I'm not sure if this is a good change actually.
- (code) Use PureComponent, StaticComponent, separate _Function and _Callback, and some other random typing fixes
- (use) Fix css text direction bug in the Cell and StrategyItem borders
- (use) Use yarn. Fix build
- (use) Fix directional bug in xyChain
- (a11y) The StrategyItem's are labelled by their text
- (a11y) And so the StrategyToggler are not labelled by their text
- (a11y) Instead they are labelled by "StrategyTogglerLabel" which isn't highlightable and exists in the same space as the StrategyResult region
- (use) If you click the StrategyResult region, it toggles.
- (layout) checkboxes are finally aligned correctly
- (layout) Alert boxes finally stay in the bottom right
- (code) Labels and ExternalLink supports the id property
- (use) Lazyload PromptWindow / AlertNotice for faster initial loading
- (a11y) Correct tabbing order (Data vs Sudoku) to match visuals.
- (support) Don't ban Opera Mini
- (support) Don't use
Array#at
for chromebook compatibility - (docs) Update everything
- (use) Links like https://something.something/blahblahlbah?sudoku=123456789123456789123456789123456789123456789123456789123456789123456789123456789 can be imported directly! (As long as there are 81 or 729 digits in the url)
- (css + use) Better printing
- (code) Resolve all circular dependencies except for Solver importing SolverPart, moving a bunch of stuff around
- This is actually the main change
- (use) Extract XY Chain from XY Ring (Loop)
- (use) Export button now sends both an 81 and 729 representation
- (css) Set max width on alert boxes
- (code) Move assertGet, colorGroup, and getCellsWithTwoCandidates to utils
- (docs) Wow, my XY Ring implementation is more general than I thought! Nice!
- (use) In fact, it covers XY Chains!
- (use) But wait... it's way too general when eliminating in the XY Chain case... oops, fix bug.
- (use) Export button now exports candidates as well
- (use) XY Ring (Loop)
- (use) Fix highlighting
- (use) Fix link
- (code) New sudokuGenerator.py record
- (use) two minus one lines
- (css) fix rtl precedence
- (deps) Use CRA 5.0.0-next and remove craco!!! (and @babel/plugin-proposal-logical-assignment-operators)
- (css) Use percentages instead of rem (Possible TODO: Use flex or grid)
- (css + use) Better rtl support
- (css) Attempt to center align checkboxes
-
(use) Add y wing!
-
(code) Implement
sharedInArrays
in utils, simplifying skyscraper even more -
(css) Change
Candidate.green
toCandidate.solved
, then make actualCandidate.green
-
(deps) @types/react to 17.0.20
-
(deps) @types/node to 16.7.13
- (code) Simplify skyscraper
- (use) Fix simplified skyscraper
- (code) Remove Region + RegionLine for now
- (use) Move intersection removal before pairs/triples/quads strategies
- (code) Simplify updateCandidates.ts
- (code + use + tests) Don't warn (now error) unless the latestStrategyItem isn't null
- Basically, if the element is removed (like closing the tab) {especially tests}, don't error.
-
(use) Add skyscraper (finally)
-
(code) Add
src/Api/spaces
folder -
(code) Add Region + RegionLine (hopefully makes things... simpler (and easier))
- (docs) Add codefactor badge to readme
- (deps) @types/node to 16.7.1
- (deps) @types/react to 17.0.19
-
(use) Update skippable on clear, undo, and go
-
(use) Color candidate green in hidden singles
-
(use) Add export button
-
(deps) @types/react to 170.17
-
(docs) More Strategy docs
-
(tests) Move click everything test to the end
-
(other) New sudokuGenerator.py record
- (use) Jellyfish
- (use) Swordfish!!!!
- (use + layout) Add better candidate highlighting for x-wing
- (docs) More ideas
- (use + layout) Add better candidate highlighting for every strategy except X wing and hidden singles
- (future) Add "classes" and "candidateClasses" to Cell. In the future, strategies will change these classes
- (code) Add Cell#setExplainingToTrue and Cell#setExplainingToFalse
- (use) Don't show candidates if zero or nine candidates (fixes clear and undo)
- (AAA) Oops, X wing absolutely explodes example 2. Fixed that
-
(use) Add X wing strategy
-
(a11y) Remove
aria-checked
from StrategyToggler sincechecked
is already there -
(code) Simplify the
Strategy
type -
(code) Extract
getCandidateLocations
fromintersectionRemoval.ts
toPureSudoku.ts
-
(docs) More stuff added/fixed in Strategies.md
-
(deps) Bump @types/node to 16.4.7
Dependency bumps
-
(use) Expand times when strategies are skippable
-
(deps) Bump @types/node from 16.4.0 to 16.4.1
-
(use) Intersection Removal strategy
- It was easier than doing pointing pairs and box/line reduction separately
-
(failsafe) showCandidates if some are eliminated, even if
Cell#state.showCandidates
is false -
(deps) Bump @types/node from 16.3.3 to 16.4.0
- (css + use) Fix invalid css (typo).
prefers-reduced-motion
in github corner isreduce
notreduced
- (code) Apply second simplification in Notes.md -
INDICES_TO_NINE
- (use) After "Check for solved" fails, skip "Update candidates"
- (use) If n candidates must appear in <n cells, ERROR
- (bug) The current error system is really bad
- (use) Fix bug in hiddenParisTriplesAndQuads
- (tests) Test cases where there's an error
- (code) Comment out unused function
forComponentsToStopUpdating
- (tests) Check that
_expect
throws
Big changes:
- (layout + use) Add hidden pairs, triples, and quads
- (layout) Add the word
and
to "Pairs, triples, and quads" - (layout + bugfix) When clearing, explaining = false
Medium changes:
- (docs) More docs for pairs, triples, and quads
- (code) Extract
eliminateUsingConjugateGroups
and pairs, triples, and quads
- (tests) Found a bug in the hiddenSingles false positive test
- (tests) Add tests for empty boards
- (tests) The "Click everything" test now works!
- (docs) Updated method names
- (code)
whenCellMounts
andwhenCellUnmounts
instead ofupdateFromCell
- (code)
addCell
andremoveCell
instead ofupdateFromCell
- (code)
- (code) Handle unmounting properly
- (code) StrategyItem also checks
solver.latestStrategyItem
- What happens when you exit out the tab isn't too important.
- But ok, fine.
- (code) StrategyItem also checks
- (code) Solver cells can now be undefined or null
- (code) Is again slightly more complicated
Major changes:
- (use) Undo is implemented!
- (use / layout) Add css class for eliminated/added candidates when explaining a strategy
- (code) Add
Cell#state.explaining
andCell#state.previousCandidates
- (code) Add
CandidatesDiff
- (code) Add
Cell#undo
Minor changes:
- (docs) Update
Candidates
- (code)
Cell#updateCandidates
looks worse
Major changes:
- (layout) Reduce top margin in one column layout
- (layout) The checkbox/StrategyToggler's height is
--item-height
- (layout) The StrategyList uses
--item-height
in padding-left
- (layout) Remove the
height
css property inStrategyItem
Minor changes:
- (deps) Bump @types/node from 16.3.0 to 16.3.1
- (docs) Explain
--cell-fontsize
- (code) Extract
--item-height
- (code) Remove the css variables
scaling-factor
andvertical-padding
- (code) Move
toggleCandidate
aboverender
inCell.tsx
- (code) Move stuff from
StrategyList.css
intoStrategyItem.css
Major changes:
- (layout + use) Use links instead of tooltips
- (code) Replace
description
withhref
, now optional. - (layout) If href is not provided, the text will just be a
span
- (code) Replace
- (a11y + use) Different colors when
- clicking on a link
- a link has been visited
- (BUG) The github octobat is a link. And when you've visited it, it turns purple.
- (code) The ExternalLink class is now always added to the existing class, rather than being just the default class
Minor changes:
- (deps) Bump @types/jest from 26.0.23 to 26.0.24
- (deps) Bump @types/node from 16.0.0 to 16.3.0
- (deps) Bump @types/react from 17.0.13 to 17.0.14
- (deps) Bump @types/react-dom from 17.0.8 to 17.0.9
- (docs) Add docs for the remaining functions in
utils.ts
- (tests) Test passing
string[]
toconvertArrayToEnglishList
- (deps) Bump @craco/craco from 6.1.2 to 6.2.0
- (deps) Bump babel-plugin-const-enum from 1.0.1 to 1.1.0
- (deps) Bump @types/node from 15.14.0 to 16.0.0
- (docs) Explain
findConjugatesOfGroup
better - (types) Change
Solver#Step
return type fromPromise<undefined>
toPromise<void>
- (lint) More
.eslintrc
checks
- (tests)
Sudoku.test.tsx
Fix that v0.10.0 test again
- (layout + a11y) Darken the gray used for active cells
- (tests)
Sudoku.test.tsx
Fix the test added in v0.10.0 - (tests)
Sudoku.test.tsx
Test cell content when (unfocused + all candidates) - (deps) Bump @types/node from 15.12.5 to 15.14.0
- (deps) Bump @types/react from 17.0.12 to 17.0.13
- (deps) Bump web-vitals from 2.0.1 to 2.1.0
This is just a cleanup commit.
The second version number is bumped since version v0.9.0 says v0.10.0 will
start the changelog.
- (docs) Start the changelog
- (docs) Removed extra words in the readme's silly dependency note.
- (tests)
Sudoku.test.tsx
: Remove unused stuff - (tests)
Sudoku.test.tsx
: Test manually toggling all the candidates in addition to pressing Backspace - (code) Remove 2
Sudoku
methods, which both (!?) get aCell
instance.
These methods aren't actually used anywhere