53 Commits
Author SHA1 Message Date
Christopher Serr f03689bc81 Convert Everything to CSS Modules (#1032)
This converts the remainder of the CSS files to CSS modules. The
following are not converted:
1. `variables.scss`: I'm not entirely sure if variables can be converted
   to CSS modules. The documentation states you might need PostCSS for
   it. However, we probably may want to look into CSS variables anyway.
   So this would be done in a subsequent PR.
2. `main.scss`: This declares global styles. I'm not sure if it's
   possible to convert this as this is needed from the very beginning,
   before any React is even loaded.
2025-03-31 18:42:11 +00:00
Christopher Serr 349d95ebb0 Context Menu, CSS Modules and React 19 (#1015)
This replaces the context menu with our own. By doing that we no longer
need to force install our npm packages, as there are no longer any
conflicts. In fact, as part of this change, I updated us to the latest
React 19 and even enabled the React compiler.

I also explored CSS modules for the first time, which are going to allow
us to reduce conflicts between CSS rules and possibly even allow us to
fully remove SASS, as the need for it is going to be reduced.

I also found out that the latest Rust nightly is broken due to their
update to LLVM 20. So I pinned the version to the last working nightly
version.
2025-02-20 21:40:55 +00:00
Christopher Serr 51b91ac421 Update SASS (#1003)
The way importing works changed. Fortunately, they have a nice migration
tool that helped convert all the files.
2025-02-12 17:00:04 +00:00
Christopher Serr 98719cfcfe Update eslint and Remove Unused Dependencies (#1001)
Apparently the entire configuration format changed. I didn't fully
replicate the old configuration in order to reduce the complexity of it
all, hopefully resulting in fewer maintenance headaches in the future.

Additionally, I removed some unused dependencies that were no longer
needed.
2025-02-12 16:28:42 +00:00
Christopher Serr 5d3ee0402c Fix CI (#948)
Turns out it's not quite right yet.
2024-07-16 21:57:14 +02:00
Christopher Serr ccb4bbd1b4 Introduce a Tauri based desktop version (#940)
This introduces a Tauri based desktop version of LiveSplit One. For now
very few changes have been done. It's mostly global hotkeys that work
now. It's unclear if Tauri is the long term solution for LiveSplit One,
but it gets us global hotkeys and auto splitting with very little
effort, so we'll use it until something better comes along.
2024-07-15 21:14:45 +02:00
Christopher Serr 97c741c5db Make the PWA Icon maskable (#925)
Even though we added the margin, some Android devices still need it to
be maskable to properly understand the margin.
2024-06-09 17:33:37 +02:00
Christopher Serr d4eec06357 Store the comparison and timing method (#923)
We now automatically store the current comparison and timing method into
the Indexed DB. This allows us to restore the comparison and timing
method when the user reloads the page.

Changelog: The comparison and timing method (Real Time / Game Time) that
you choose now stay chosen when you reload LiveSplit One.
2024-06-08 20:51:04 +02:00
wooferzfg ea0a7783ba Use background for Android icon (#922) 2024-06-08 19:35:02 +02:00
Christopher Serr 641bcb17b1 Fix the margin for the PWA Icon on iOS (#921)
This adjusts the margin for the PWA Icon on iOS to roughly match the
Apple guidelines, but more importantly, to just finally look good.
2024-06-08 18:06:14 +02:00
Christopher Serr a0c0950a18 Implement Save On Reset (#910)
This adds a save on reset setting to the general settings. When enabled,
the splits are automatically saved when the timer is reset.

Changelog: You can now enable **Save On Reset** in the settings, which
will automatically save the splits when you reset the timer.
2024-06-03 16:49:02 +00:00
Christopher Serr 9a4c56adbc Fix Date matching for Changelog generation (#908)
Welp, the previous PR also broke something. This should fix it.
2024-06-01 10:31:31 +00:00
Christopher Serr 3b1b8b15c1 Clone the entire history in the CI workflow
This is necessary for the changelog generation to work correctly.
Additionally this includes an improvement to sort the contributors
alphabetically, if they have the same amount of contributions.
2024-06-01 12:05:18 +02:00
Christopher Serr 1578938aa8 Add a changelog and improve contributors section (#898)
This improves the contributors section in the About page. It now uses
flexbox to dynamically place the contributors. Additionally their avatar
is now being shown.

Also the ten most recent changes are now being shown in the About page.
The information is extracted from the git history. The idea is to mark
commit messages with a special changelog section at the end that's
specifically meant to be shown as a user facing change. It can be
arbitrary markdown and looks like this (which is also the first one):

Changelog: The About page now shows the most recent changes. The
contributors section has also been improved. It now shows the avatar of
each contributor.
2024-05-31 21:57:14 +02:00
Christopher Serr 392d669ed0 Clean up and move server connection to settings (#895)
This moves the server connection button to the settings and cleans the
entire functionality up in various ways. The server connection no longer
gets closed by navigating around the application. Additionally the
server URL is now being remembered between sessions.

This also improves the design of the toast messages.
2024-05-27 19:16:55 +02:00
Christopher Serr 267a3e9571 Switch to an SVG variant of the LiveSplit icon (#851)
This makes it scale better to HiDPI displays and is also smaller in
terms of file size.
2024-04-08 00:33:46 +02:00
Christopher Serr 6139d064eb Update dependencies (#799) 2023-08-14 22:28:39 +02:00
Christopher Serr 2c371bf9f7 Update most remaining dependencies (#737)
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.
2022-10-01 16:09:51 +02:00
Christopher Serr 30c38779ce Update some dependencies (#730)
This should hopefully allow dependabot to progress further.
2022-10-01 01:50:46 +02:00
Christopher Serr df51936aea Update livesplit-core (#716)
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.
2022-09-28 20:27:36 +02:00
Chris Santamaria 652e948cae Enable Webpack HMR, support React Fast Refresh 2021-10-22 21:17:36 -04:00
Christopher Serr 91361d14ea Update livesplit-core and use keydown event
Turns out that `keypress` is deprecated and only reacts to key presses
that results in actual visible characters. `keydown` however reacts to
all key presses and is not deprecated. Also this generally bumps
`livesplit-core`, so this brings other improvements as well.
2021-10-06 17:56:13 +02:00
wooferzfg 560ad7c6d7 Fix webpack config 2021-09-02 22:44:10 -04:00
wooferzfg 924dcc537e Fix webpack config issues 2021-09-02 22:07:36 -04:00
Christopher Serr f6901fdd2b Inline the main JS bundle into the HTML
By inlining a tiny amount of JS into the HTML, we can request the WASM
and other JS bundles much sooner, reducing the latency a bit. This also
inlines the most important styling, so that the loading screen is always
properly styled. We unfortunately have to use `syncWebAssembly` here as
it allows requesting the WASM file sooner than the other setting. It's
not a whole lot sooner, so once they remove the setting, we can switch
back without taking too much of a hit.
2021-07-02 18:48:44 +02:00
Christopher Serr 28d777c48f Implement Support for Custom Fonts
This implements support for custom fonts. Additionally it updates
livesplit-core and all our npm dependencies to the latest version. This
also switches how we propagate colors and fonts through the layout. We
are now using custom CSS variables instead of passing them through the
component tree.
2021-07-01 18:15:55 +02:00
wooferzfg 291d63c574 Inject contributors list commit hash, and date at compile time 2020-02-27 23:16:40 -06:00
Christopher Serr 84274da91a Improve the Service Worker
This cleans up the service worker such that unnecessary assets aren't
precached and instead dynamically cached at runtime. Additionally this
removes the `?homescreen=1` URL parameter from the app, which ensures it
works properly offline.

Resolves #261
Resolves #262
2020-02-21 20:05:55 +01:00
wooferzfg ebcac464b4 Remove commented out lines from webpack file 2020-02-21 07:53:17 -06:00
Christopher Serr f421d3215b Implement a Service Worker
GitHub Pages usually responds with the responses expiring after 10
minutes, so if you reload LiveSplit One after 10 minutes, you are not
getting any cache hits. With a service worker we can permanently store
the application data and only when we publish new changes, will the old
application cache entries be removed.

This allows full offline support and should make Chrome even offer to
install LiveSplit One as a Portable Web App.
2020-02-20 21:26:38 +01:00
Christopher Serr 29743f1879 Reduce download size of LiveSplit One
We do this by removing emojilib and reducing the size of the favicon.

Closes #215
Closes #109
2020-01-15 23:41:16 +01:00
Christopher Serr b9e498f0a4 Switch to wasm-bindgen
This introduces wasm-bindgen which will allow us to directly use all
kinds of JS APIs in WASM without us having to manually provide all the
functionality as imports. Instead we let wasm-bindgen handle all the
importing. Additional webpack now handles the instantiation of the wasm
module for us, which simplifies a bunch of things as well.
2019-12-27 15:00:28 +01:00
wooferzfg 3b1af4daf2 Switch from babel-preset-env to @babel/preset-env 2019-10-26 15:09:17 -05:00
wooferzfg aeea88b12c Use sass instead of node-sass 2019-10-19 17:27:20 -05:00
wooferzfg 9d658be453 Setup scss loading 2019-10-19 16:47:49 -05:00
Christopher Serr 61c7bbb358 Update tons of Dependencies
This also unifies the key value based components.
2019-10-15 22:27:58 +02:00
Christopher Serr 84f66004ba Initial Electron Support 2018-06-18 22:11:50 +02:00
Christopher Serr 2321b4e07c Fix Babel Bug and remove non-wasm Browsers 2018-06-15 16:00:59 +02:00
Christopher Serr d9d49b0c04 Package assets properly 2018-05-30 15:46:15 +02:00
Christopher Serr 3bbea149b4 Update all packages and use source maps 2018-05-30 13:56:27 +02:00
Christopher Serr a6bbd269d1 Handle textual Emoji Replacements 2018-05-29 22:46:05 +02:00
Christopher Serr cc6b9d572b Add Milliseconds and get webpack-dev-server working 2018-05-24 15:43:43 +02:00
Christopher Serr 03837fb9a1 Use React 16 RC2
This improves React's performance significantly.
2017-09-11 17:21:18 +02:00
Christopher Serr 6612d39a24 Use Babel
This allows us to use the latest JavaScript and TypeScript while supporting old browsers at the same time.
2017-09-02 20:07:02 +02:00
Christopher Serr 54a9ed652e Use Webpack Dev Server 2017-08-13 16:26:12 +02:00
Christopher Serr cd17b1b464 Load the CSS via Webpack 2017-08-13 15:15:30 +02:00
Christopher Serr a49849b7b8 Implement Detailed Timer 2017-06-26 02:48:21 +02:00
Christopher Serr 5370c68f8d Update livesplit-core
This now uses the new auto generated high level bindings.
2017-05-08 23:36:19 +02:00
Christopher Serr 70acc385a9 Live Validation in Run Editor 2017-02-13 21:38:47 +01:00
Christopher Serr b002cb9c1c Implement a Sidebar 2017-01-22 20:08:31 +01:00