| Commit message (Collapse) | Author | Age |
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
| |
We can't do this in the renderer package, because we need to import MUI
files that are not exported (MUI v6 is not ESM yet).
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
|
| |
This decreases bundle size and avoid layout shifts due to font loading.
Where it is not apparent wheter people can interact with a button, icons
were added to disambiguate the button from the surrounding text.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
| |
We inject a CSS file that applies the theme background color even before
the javascript for the renderer is loaded.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
| |
Use explicit prop threading to pass the MainStore to components, which
makes the data dependencies more explicit and enables better
testability.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
|
|
| |
The top-level Suspense might trigger before the StoreProvider sets the
store, which causes an error to be thrown in the useStore hook.
We pass the store explicitly as a prop into the components that should
load before the Suspense, which gets rid of the error.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
It seems moving the emotion cache into a separate file makes vite less
likely to try to hot-reload @emotion/cache (which would fail due to
creating the default cache twice).
We still have some vite hot reload problems, possibly connecte to
loading versions of react components with a different number of hook
calls.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
| |
We need a sylis plugin for this according to
https://mui.com/material-ui/guides/right-to-left/#3-install-the-rtl-plugin
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
|
|
| |
Make sure the RendererStore is in a state consistent with the MainStore
before attempting to initialize the application.
This avoids, e.g., race conditions when trying to load the default
locale spuriously before loading the actually selected locale.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Due to https://github.com/i18next/i18next/issues/1564 we still have to
implement our own language resolution, but we can rely on
resolvedLanguage to determine which language to pass through to the
renderer.
We will use the language detected by chromium as the system locale, so
there is no need to use os-locale for detection any more.
We use i18next in the main process do resolve the language, then set the
resolve (not requested!) language in the renderer process to avoid doing
resolution twice. This avoids the need in the renderer process to know
the list of supported languages.
We set the language and the writing direction in HTML in the renderer.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
| |
This should make the application load a tiny bit faster by delaying
loading the UI in parallel with setting up stores and localization.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
|
|
|
|
|
| |
Add react-i18n to make us able to use i18next translations in the
renderer process just like we do in the main process.
Translations are hot-reloaded automatically.
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Kristóf Marussy <kristof@marussy.com>
|
|
|
|
| |
Signed-off-by: Vijay A <vraravam@users.noreply.github.com>
|
|
|
|
| |
Signed-off-by: Vijay A <vraravam@users.noreply.github.com>
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Centralizes vite configuration to be able to add license banners to
outputs in one place.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Patches are send in one direction only, from the main to the renderer,
so all actions have to go through the context bridge and the renderer
IPC to modify the store in the renderer. This makes the store in the
main process a single source of truth, which simplifies debugging and
state persistence.
The store in the renderer is connected to redux devtools for inspection,
but playing back the state in the devtools won't change the sotre in
main process.
|
| |
|
| |
|
|
Project skeleton based on
https://github.com/cawa-93/vite-electron-builder
but we use react instead of vue and yarn instead of npm.
|