This post documents my TypeScript sudoku app. It can be accessed and tried out at https://chbauman.github.io/sudoku-ts/. A screenshot is shown in the image above.
General Usage
To set a number in a cell, first click the cell and then the number you want to set. The numbers that would directly lead to an error in the sudoku cannot be set. The corresponding buttons on the number pad below the sudoku are grayed out and cannot be clicked.
In this section, all the buttons at the bottom of the page are listed and explained.

This button restarts the sudoku that is currently being solved. The current progress, including all possible hypotheses, will be lost.

If you want to start a new sudoku, try this button. It also lets you choose a difficulty (level) for the next sudoku.

Using this button will set the pencil marks specifying all possible numbers for every empty cells. When other cells are set, the pencil marks that would show an invalid possibility are automatically removed.

When activating this button, the next number that is set is assumed to be a guess and marked green. All previously set numberw will be colored black and assumed to be true. This is basically a save point and with the next button one can revert to the state before using this button when the guess (the hypothesis) turns out to be falsy.

With this button, everything that was done since the last hypothesis will be reverted. Together with the button above, this allows the user to manually perform a depth-first search for the solution of the sudoku.

When this button is clicked, an empty sudoku is shown. The user is then able to freely set cells, e.g., to setup a custom sudoku he wants to solve. When clicked a second time, the currently set numbers are fixed and the sudoku can normally be solved.

This is the information button, it shows an overview of the buttons from the bottom. It also offers two additional functionalities, solving the current sudoku or checking it for errors.
Note that there is no undo button. So if you are not careful, you will lose all your progress.