Instead of assuming each column has the width of the text `88:88:88`, we
now determine the largest string per column (based on unicode scalar
values) and adjust the column width accordingly. There is still a fixed
minimum width based on the string `88:88`, which ensures that the
columns don't switch sizes too often, especially if you start with empty
splits. We could've also chosen `8:88:88`, which would ensure there's no
column size change as you approach the hour mark. However, this would
increase the size of delta columns unnecessarily. So it's a little bit
of a trade-off.
This switches the rendering of the layout from using HTML and CSS to
using a canvas (technically it's two). This not only should improve the
performance but also brings the rendering in line with our native
renderers, enabling new features such as vertical resizing and
horizontal layouts. This also removes a lot of code specific to the HTML
rendering and thus greatly simplifies the codebase. There is one slight
regression in that the layout editor doesn't allow clicking and dragging
the individual components directly on the layout anymore. This is
however something we can explore directly in `livesplit-core` in the
future, so other frontends can benefit from it as well.
This allows stepping through the Rust code. `wasm-bindgen` 0.2.89 just
got released and it finally properly allows keeping the debug symbols
that Rust creates around fully. Thankfully `webpack` does not pose a
problem here and the debug symbols now properly work in Chrome, allowing
us to step through the Rust code in the developer tools.
This implements the following settings / features for the Detailed
Timer:
1. The ability to set / override the colors of the timer, segment timer,
segment name, comparison names and comparison times.
2. The ability to turn off the gradient of the timer and segment timer.
3. The ability to set the accuracy of the comparison times.
This also updates all the npm packages to their latest versions.
This updates all the remaining dependencies that I was able to update.
React is still at version 16 because some of the components I use
apparently haven't been updated to support more recent versions of
React.
This updates `livesplit-core` to the latest version. This mostly adds
custom variable columns and allows for the timer to visualize the delta
for the background. There's some performance improvements as well.
Also we now build `livesplit-core` in debug mode by default when
building locally. So compilation is a little bit
faster and additional debug checks are active, such as integer
overflows.
It seems like the game icon size has changed. It is now always a square
rather than trying to fit the icon in the space. We'll have to
investigate later what is going on.