A launcher for the OpenGOAL Project to simplify usage and installation
Go to file
dependabot[bot] c2b75b64c9
build(deps): bump the backend-deps group in /src-tauri with 6 updates (#426)
Bumps the backend-deps group in /src-tauri with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [chrono](https://github.com/chronotope/chrono) | `0.4.31` | `0.4.33` |
| [semver](https://github.com/dtolnay/semver) | `1.0.20` | `1.0.21` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.108` | `1.0.113`
|
| [sysinfo](https://github.com/GuillaumeGomez/sysinfo) | `0.30.1` |
`0.30.5` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.52` |
`1.0.56` |
| [zip-extract](https://github.com/MCOfficer/zip-extract) | `0.1.2` |
`0.1.3` |

Updates `chrono` from 0.4.31 to 0.4.33
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/chronotope/chrono/releases">chrono's
releases</a>.</em></p>
<blockquote>
<h2>0.4.33</h2>
<p>This release fixes the broken docrs.rs build of <a
href="https://github.com/chronotope/chrono/releases/tag/v0.4.32">chrono
0.4.32</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>Make <code>rkyv</code> feature imply <code>size_32</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1383">#1383</a>)</li>
<li>Fixed typo in <code>Duration::hours()</code> exception (<a
href="https://redirect.github.com/chronotope/chrono/issues/1384">#1384</a>,
thanks <a
href="https://github.com/danwilliams"><code>@​danwilliams</code></a>)</li>
</ul>
<h2>v0.4.32</h2>
<p>In this release we shipped part of the effort to reduce the number of
methods that could unexpectedly panic, notably for the
<code>DateTime</code> and <code>Duration</code> types.</p>
<p>Chrono internally stores the value of a <code>DateTime</code> in UTC,
and transparently converts it to the local value as required. For
example adding a second to a <code>DateTime</code> needs to be done in
UTC to get the correct result, but adding a day needs to be done in
local time to be correct. What happens when the value is near the edge
of the representable range, and the implicit conversions pushes it
beyond the representable range? <em>Many</em> methods could panic on
such inputs, including formatting the value for <code>Debug</code>
output.</p>
<p>In chrono 0.4.32 the range of <code>NaiveDate</code>,
<code>NaiveDateTime</code> and <code>DateTime</code> is made slightly
smaller. This allows us to always do the implicit conversion, and in
many cases return the expected result. Specifically the range is now
from January 1, -262144 until December 31, 262143, one year less on both
sides than before. We expect this may trip up tests if you hardcoded the
<code>MIN</code> and <code>MAX</code> dates.</p>
<p><code>Duration</code> had a similar issue. The range of this type was
pretty arbitrary picked to match the range of an <code>i64</code> in
milliseconds. Negating an <code>i64::MIN</code> pushes a value out of
range, and in the same way negating <code>Duration::MIN</code> could
push it out of our defined range and cause a panic. This turns out to be
somewhat common and hidden behind many layers of abstraction. We
adjusted the type to have a minimum value of <code>-Duration::MAX</code>
instead and prevent the panic case.</p>
<p>Other highlights:</p>
<ul>
<li><code>Duration</code> gained new fallible initialization
methods.</li>
<li>Better support for <code>rkyv</code>.</li>
<li>Most methods on <code>NaiveDateTime</code> are now const.</li>
<li>We had to bump our MSRV to 1.61 to keep building with our
dependencies. This will also allow us to make more methods on
<code>DateTime</code> const in a future release.</li>
</ul>
<p>Complete list of changes:</p>
<h2>Fixes</h2>
<ul>
<li>Fix panic in <code>TimeZone::from_local_datetime</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1071">#1071</a>)</li>
<li>Fix out of range panics in <code>DateTime</code> getters and setters
(<a
href="https://redirect.github.com/chronotope/chrono/issues/1317">#1317</a>,
<a
href="https://redirect.github.com/chronotope/chrono/issues/1329">#1329</a>)</li>
</ul>
<h2>Additions</h2>
<ul>
<li>Add <code>NaiveDateTime::checked_(add|sub)_offset</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1313">#1313</a>)</li>
<li>Add <code>DateTime::to_utc</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1325">#1325</a>)</li>
<li>Duration features part 1 (<a
href="https://redirect.github.com/chronotope/chrono/issues/1327">#1327</a>)</li>
<li>Make methods on <code>NaiveDateTime</code> const where possible (<a
href="https://redirect.github.com/chronotope/chrono/issues/1286">#1286</a>)</li>
<li>Split <code>clock</code> feature into <code>clock</code> and
<code>now</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1343">#1343</a>,
thanks <a
href="https://github.com/mmastrac"><code>@​mmastrac</code></a>)</li>
<li>Add <code>From&lt;NaiveDate&gt;</code> for
<code>NaiveDateTime</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1355">#1355</a>,
thanks <a
href="https://github.com/dcechano"><code>@​dcechano</code></a>)</li>
<li>Add <code>NaiveDateTime::from_timestamp_nanos</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1357">#1357</a>,
thanks <a
href="https://github.com/Ali-Mirghasemi"><code>@​Ali-Mirghasemi</code></a>)</li>
<li>Add <code>Months::num_months()</code> and <code>num_years()</code>
(<a
href="https://redirect.github.com/chronotope/chrono/issues/1373">#1373</a>,
thanks <a
href="https://github.com/danwilliams"><code>@​danwilliams</code></a>)</li>
<li>Add <code>DateTime&lt;Utc&gt;::from_timestamp_millis</code> (<a
href="https://redirect.github.com/chronotope/chrono/issues/1374">#1374</a>,
thanks <a
href="https://github.com/xmakro"><code>@​xmakro</code></a>)</li>
</ul>
<h2>Changes</h2>
<ul>
<li>Fix panic in <code>Duration::MIN.abs()</code> (adjust
<code>Duration::MIN</code> by 1 millisecond) (<a
href="https://redirect.github.com/chronotope/chrono/issues/1334">#1334</a>)</li>
<li>Bump MSRV to 1.61 (<a
href="https://redirect.github.com/chronotope/chrono/issues/1347">#1347</a>)</li>
<li>Update windows-targets requirement from 0.48 to 0.52 (<a
href="https://redirect.github.com/chronotope/chrono/issues/1360">#1360</a>)</li>
<li>Update windows-bindgen to 0.52 (<a
href="https://redirect.github.com/chronotope/chrono/issues/1379">#1379</a>)</li>
</ul>
<h2>Deprecations</h2>
<ul>
<li>Deprecate standalone <code>format</code> functions (<a
href="https://redirect.github.com/chronotope/chrono/issues/1306">#1306</a>)</li>
</ul>
<h2>Documentation</h2>
<ul>
<li>Improve doc comment and tests for timestamp_nanos_opt (<a
href="https://redirect.github.com/chronotope/chrono/issues/1299">#1299</a>,
thanks <a
href="https://github.com/mlegner"><code>@​mlegner</code></a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7c419a358e"><code>7c419a3</code></a>
Prepare 0.4.33 release</li>
<li><a
href="a9b37c4c81"><code>a9b37c4</code></a>
Make <code>rkyv</code> feature default to <code>size_32</code></li>
<li><a
href="a73b54320a"><code>a73b543</code></a>
Don't assume <code>rkyv-(16|32|64)</code> implies the <code>rkyv</code>
feature</li>
<li><a
href="b5381f8fb5"><code>b5381f8</code></a>
Fixed typo in Duration::hours() exception</li>
<li><a
href="bf704191f2"><code>bf70419</code></a>
52</li>
<li><a
href="7757386368"><code>7757386</code></a>
Prepare 0.4.32 release</li>
<li><a
href="cee242a656"><code>cee242a</code></a>
Fix typos in Datelike impl for DateTime</li>
<li><a
href="6ec8f97d16"><code>6ec8f97</code></a>
Add from_timestamp_millis to DateTime&lt;Utc&gt; (<a
href="https://redirect.github.com/chronotope/chrono/issues/1374">#1374</a>)</li>
<li><a
href="65f0cc2aa4"><code>65f0cc2</code></a>
CI Linting: Fix missing sources checkout in <code>toml</code> job.</li>
<li><a
href="5536687c0d"><code>5536687</code></a>
Add Months::as_u32() (<a
href="https://redirect.github.com/chronotope/chrono/issues/1373">#1373</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/chronotope/chrono/compare/v0.4.31...v0.4.33">compare
view</a></li>
</ul>
</details>
<br />

Updates `semver` from 1.0.20 to 1.0.21
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/semver/releases">semver's
releases</a>.</em></p>
<blockquote>
<h2>1.0.21</h2>
<ul>
<li>Update proc-macro2 to fix caching issue when using a rustc-wrapper
such as sccache</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f9cc2df941"><code>f9cc2df</code></a>
Release 1.0.21</li>
<li><a
href="87914b14dc"><code>87914b1</code></a>
Pull in proc-macro2 sccache fix</li>
<li><a
href="b6171889ac"><code>b617188</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/semver/issues/309">#309</a>
from dtolnay/optionifletelse</li>
<li><a
href="5481cb9574"><code>5481cb9</code></a>
Remove option_if_let_else clippy suppression</li>
<li>See full diff in <a
href="https://github.com/dtolnay/semver/compare/1.0.20...1.0.21">compare
view</a></li>
</ul>
</details>
<br />

Updates `serde_json` from 1.0.108 to 1.0.113
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/serde-rs/json/releases">serde_json's
releases</a>.</em></p>
<blockquote>
<h2>v1.0.113</h2>
<ul>
<li>Add <code>swap_remove</code> and <code>shift_remove</code> methods
on Map (<a
href="https://redirect.github.com/serde-rs/json/issues/1109">#1109</a>)</li>
</ul>
<h2>v1.0.112</h2>
<ul>
<li>Improve formatting of &quot;invalid type&quot; error messages
involving floats (<a
href="https://redirect.github.com/serde-rs/json/issues/1107">#1107</a>)</li>
</ul>
<h2>v1.0.111</h2>
<ul>
<li>Improve floating point parsing performance on loongarch64 (<a
href="https://redirect.github.com/serde-rs/json/issues/1100">#1100</a>,
thanks <a
href="https://github.com/heiher"><code>@​heiher</code></a>)</li>
</ul>
<h2>v1.0.110</h2>
<ul>
<li>Update proc-macro2 to fix caching issue when using a rustc-wrapper
such as sccache</li>
</ul>
<h2>v1.0.109</h2>
<ul>
<li>Documentation improvements</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="09d865b34b"><code>09d865b</code></a>
Release 1.0.113</li>
<li><a
href="5aeab4eaf6"><code>5aeab4e</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1109">#1109</a>
from serde-rs/remove</li>
<li><a
href="ca3c2ca369"><code>ca3c2ca</code></a>
Add swap_remove and shift_remove methods on Map</li>
<li><a
href="7fece969e3"><code>7fece96</code></a>
Release 1.0.112</li>
<li><a
href="6a6d2bbd9e"><code>6a6d2bb</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1107">#1107</a>
from serde-rs/unexpectedfloat</li>
<li><a
href="83d7bad54b"><code>83d7bad</code></a>
Format f64 in error messages using ryu</li>
<li><a
href="107c2d1c42"><code>107c2d1</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1106">#1106</a>
from serde-rs/invalidvalue</li>
<li><a
href="62ca3e4c01"><code>62ca3e4</code></a>
Handle Unexpected::Unit in Error::invalid_value</li>
<li><a
href="296fafb8f3"><code>296fafb</code></a>
Factor out JSON-specific Display impl for serde:🇩🇪:Unexpected</li>
<li><a
href="e56cc696bd"><code>e56cc69</code></a>
Merge pull request <a
href="https://redirect.github.com/serde-rs/json/issues/1105">#1105</a>
from keienWang/master</li>
<li>Additional commits viewable in <a
href="https://github.com/serde-rs/json/compare/v1.0.108...v1.0.113">compare
view</a></li>
</ul>
</details>
<br />

Updates `sysinfo` from 0.30.1 to 0.30.5
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/GuillaumeGomez/sysinfo/blob/master/CHANGELOG.md">sysinfo's
changelog</a>.</em></p>
<blockquote>
<h1>0.30.5</h1>
<ul>
<li>Windows: Correctly retrieve processes name on 32 bits
platforms.</li>
<li>Windows: Fix swap memory computation.</li>
</ul>
<h1>0.30.4</h1>
<ul>
<li>Windows: Fix misaligned read.</li>
</ul>
<h1>0.30.3</h1>
<ul>
<li>Improve dependency stack by updating the <code>windows</code>
dependency.</li>
</ul>
<h1>0.30.2</h1>
<ul>
<li>Add <code>ThreadKind</code> enum.</li>
<li>Add <code>Process::thread_kind</code> method.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/GuillaumeGomez/sysinfo/commits">compare
view</a></li>
</ul>
</details>
<br />

Updates `thiserror` from 1.0.52 to 1.0.56
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dtolnay/thiserror/releases">thiserror's
releases</a>.</em></p>
<blockquote>
<h2>1.0.56</h2>
<ul>
<li>Update proc-macro2 to fix caching issue when using a rustc-wrapper
such as sccache</li>
</ul>
<h2>1.0.55</h2>
<ul>
<li>Work around improperly cached build script result by sccache –
second attempt (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/280">#280</a>)</li>
</ul>
<h2>1.0.54</h2>
<ul>
<li>Work around improperly cached build script result by sccache – first
attempt (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/279">#279</a>)</li>
</ul>
<h2>1.0.53</h2>
<ul>
<li>Reduce spurious rebuilds under RustRover IDE when using a nightly
toolchain (<a
href="https://redirect.github.com/dtolnay/thiserror/issues/270">#270</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="77d0af46dd"><code>77d0af4</code></a>
Release 1.0.56</li>
<li><a
href="d4caabdb38"><code>d4caabd</code></a>
Pull in proc-macro2 sccache fix</li>
<li><a
href="6089273df5"><code>6089273</code></a>
Release 1.0.55</li>
<li><a
href="322a2ae5c9"><code>322a2ae</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/280">#280</a>
from dtolnay/depinfo</li>
<li><a
href="fd7d7a568c"><code>fd7d7a5</code></a>
Emit dep-info for probe.rs in case sccache needs it</li>
<li><a
href="447c328719"><code>447c328</code></a>
Release 1.0.54</li>
<li><a
href="4619db8644"><code>4619db8</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/279">#279</a>
from dtolnay/depinfo</li>
<li><a
href="7b53bff3e6"><code>7b53bff</code></a>
Make env-dep:RUSTC_BOOTSTRAP get listed in probe's dep-info</li>
<li><a
href="e0500add5e"><code>e0500ad</code></a>
Merge pull request <a
href="https://redirect.github.com/dtolnay/thiserror/issues/277">#277</a>
from dtolnay/nightlyci</li>
<li><a
href="48cea47164"><code>48cea47</code></a>
Make CI verify that error_generic_member_access works in latest
nightly</li>
<li>Additional commits viewable in <a
href="https://github.com/dtolnay/thiserror/compare/1.0.52...1.0.56">compare
view</a></li>
</ul>
</details>
<br />

Updates `zip-extract` from 0.1.2 to 0.1.3
<details>
<summary>Commits</summary>
<ul>
<li><a
href="90fe07d6ed"><code>90fe07d</code></a>
chore: Release zip-extract version 0.1.3</li>
<li><a
href="9e2479b4f7"><code>9e2479b</code></a>
update dev-dependencies (dir-diff v0.3.3, tempfile v3.9.0)</li>
<li><a
href="012ae6144f"><code>012ae61</code></a>
update log to v0.4.20</li>
<li><a
href="a78922f2b2"><code>a78922f</code></a>
update zip to v0.6.6</li>
<li><a
href="96a53629b4"><code>96a5362</code></a>
fix: mirror the features of the zip crate (<a
href="https://redirect.github.com/MCOfficer/zip-extract/issues/15">#15</a>)</li>
<li>See full diff in <a
href="https://github.com/MCOfficer/zip-extract/compare/v0.1.2...v0.1.3">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-30 21:33:08 -05:00
.github build(deps): bump actions/setup-node from 3 to 4 (#359) 2023-11-05 13:13:17 -05:00
.tauri release: update release metadata to latest 2023-11-06 05:45:45 +00:00
.vscode migrate: switch to Svelte 2022-04-14 19:49:13 -04:00
docs New Crowdin updates - Dutch / German / Italian / Polish / Romanian / Spanish (#213) 2023-05-08 21:50:00 -04:00
public/images/jak1 Dynamically change game background based on user's game completion (#298) 2023-08-29 22:01:56 -04:00
scripts release: fix appimage release asset link 2023-07-31 17:03:32 -04:00
src New Crowdin updates (#429) 2024-01-30 21:31:30 -05:00
src-tauri build(deps): bump the backend-deps group in /src-tauri with 6 updates (#426) 2024-01-30 21:33:08 -05:00
.gitignore tests: Start writing tests, Splash and some of the lib/ functions (#280) 2023-07-22 00:07:23 -04:00
.prettierignore frontend: fix frontend styling (#269) 2023-07-08 18:01:47 -04:00
.prettierrc.json macOS support and a handful of bug fixes encountered along the way (#291) 2023-07-30 21:25:21 -04:00
crowdin.yml i18n: make the app translatable (#196) 2023-05-06 13:10:54 -04:00
index.html build(deps-dev): bump the frontend-deps group with 8 updates (#289) 2023-07-24 18:38:03 -04:00
LICENSE add a license 2022-06-01 00:27:22 -04:00
package.json build(deps): bump the frontend-deps-tauri group with 2 updates (#415) 2023-12-29 11:13:17 -05:00
postcss.config.cjs UI Overhaul (#35) 2022-09-27 20:40:13 -04:00
README.md New Crowdin updates (#199) 2023-05-06 14:12:22 -04:00
svelte.config.js UI Overhaul (#35) 2022-09-27 20:40:13 -04:00
tailwind.config.cjs UI Overhaul (#35) 2022-09-27 20:40:13 -04:00
tsconfig.json tests: Start writing tests, Splash and some of the lib/ functions (#280) 2023-07-22 00:07:23 -04:00
tsconfig.node.json renamed files and updated config files accordingly 2022-05-30 10:20:24 -04:00
vite.config.ts build(deps-dev): bump the frontend-deps group with 8 updates (#289) 2023-07-24 18:38:03 -04:00
vitest.config.ts tests: Start writing tests, Splash and some of the lib/ functions (#280) 2023-07-22 00:07:23 -04:00
yarn.lock build(deps): bump the frontend-deps-tauri group with 2 updates (#415) 2023-12-29 11:13:17 -05:00

OpenGOAL Launcher

Crowdin

Our attempt at distributing the OpenGOAL releases in a cross-platform and easy to use and update way. It also is a place for features involving the games, such as texture pack or mod management.

The launcher uses the Tauri framework, if you are interested in our motivation for why see below.

Usage

See the documentation on our website for hopefully up to date instructions on how to use it.

Asking for help

When asking for help, please download the support package which includes logs to help someone diagnose the problem.

If you cannot do this (for example, the bug relates to making the package / the application won't launch) then you can find the application logs in the following folders:

  • Windows C://Users/<YOUR_USER_NAME>/AppData/Roaming/OpenGOAL-Launcher/logs
  • Linux /home/<YOUR_USER_NAME>/.config/OpenGOAL-Launcher/logs

Note that both AppData and .config are hidden folders.

Development

Tauri requires a valid Rust installation, as well as a valid NodeJS installation.

For installing Rust, it's recommended to follow the instructions here https://www.rust-lang.org/tools/install

Windows

scoop install nodejs
npm install -g yarn

Linux (Ubuntu 22.04)

sudo apt install libwebkit2gtk-4.0-dev build-essential curl wget libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev # tauri deps, see - https://tauri.app/v1/guides/getting-started/prerequisites#setting-up-linux
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # installs Node Version Manager (ubuntus package is woefully out of date)
source ~/.bashrc
nvm install lts/hydrogen # installs latest nodejs 18.X
npm install -g yarn

Building and Running

To build and run the application locally, all you have to do is run:

yarn install
yarn tauri dev

Code Overview

TODO

References

Why Tauri?

The gut reaction from many when looking at the launcher is ugh, another Electron app. This however is not the case. Tauri leverages typical HTML/CSS/JS for rendering the frontend -- but it does not do so by bundling Chromium. Instead it leverages the native WebView providers found on modern operating systems. This is also why the distribution is quite small (majority of the download size is for fonts/images/videos).

Here's a non-exhaustive list of all the benefits we get out of the box with Tauri that we'd have to build ourselves / straight-up not have available to us if we went with a non-electron GUI application framework.

  • A built-in updater with private key signing
  • Bundling scripts for MSI installers, AppImages, DMGs
  • Essentially no differences frontend-wise across all operating systems
  • No need to ship an interpreter (ie. PyQt)
  • Typical web UI workflows that many people are familiar with
  • The ability to painlessly write application logic in Rust
  • Plethora of frontend E2E testing frameworks -- most of these are non-existant or cost money for other frameworks like Qt