* attempt at running with typescript
* release notes
* working jest tests for TS files
* working docker image build
* remaining docker images
* cleanup
* ensure vitest is working
* get tests passing in ci
* less strict
* update release notes
* use tsc compiled assets in the published package
* scripts
* update yarn.lock
* Use build path for electron app
* PR feedback: move sync-server build out of bin/build-browser
* PR feedback: undo moduleResolution change
* extend main tsconfig and fix types
* PR feedback on scripts and when the sync-server build runs
* fix lint (unrelated change)
---------
Co-authored-by: alecbakholdin <alecbakholdin@gmail.com>
* playwright testing for electron
* pipeline updates
* fix normal e2e scripts
* fix path to artifact
* listing out whats there
* attempt to fix ci
* umm
* again
* setting a viewport
* window size to be consistent across machine for tests
* now it work... Righhttt?
* hmm
* do it
* worflow
* will this work
* oops
* dont skip
* trust in the pipeline gods
* remove update snapshots, just do it in the pipeline
* change name of snapshot to account for os
* lint
* fix package script
* seperate build folders for easier switching between web and electron builds
* gitignore
* release notes
* one directory back from electron
* spelling mistake
* Update 3801.md
* test
* making it correct
* huh
* urghh
* again
* account for api bundle which uses electron bundle for some reason
* hu-
* lets go
* remove comment
* add electron logging to main browser process console
* add logging
* removing old way
* release notes
* adding some logs in to test mac build
* repent satan
* i caste yeee oooott sinner
* derp
* hmmm<
* forcing nodegyprebuild
* not like this.... Not like this... 😢
* hmm
* dunno
* will it recognise it if i link it manually.. 👀
* give up
* rebuild
* merge asars fasle
* update package
* manually do it ffs work damnit
* remove the cmd
* dont rebuild cause i build it manually
* dafuq is this, two bettersqlite modules installed huhhhhh
* test
* does this work?
* bloody hell
* couple more logs
* test this out
* arch in name
* adding the rebuild step back into first build
* try rebuild before pack - so we know what arch we need
* having a laugh
* tidying up
* release notes
* move package up a bit
* exit process if no electron verison
After #1115, new Node.js versions will be able to be used for
development of the frontend. This PR changes the recommended Node.js
version to 18 (the current LTS version). I have also tested with 16 and
20 and it works.
I also took the opportunity to:
- move the build script that was at the project root to the `bin/`
folder
- update the `browserslist` to target Electron 24 (which is the version
we currently build against). This results in a slightly smaller bundle
due to no longer having to transpile optional chaining.
Updates to the latest version of electron and moves the backend-frontend
communication from node-ipc to websockets. This resolves the previous
roadblock regarding `nodeIntegration` .
Done
- Remove node-ipc in favour of websockets.
- Move file copying out of `preload.js` to avoid importing module `fs`
there
- Bump all electron pacakge versions to the latest
- Added new package for finding open ports as node-ipc is gone
- Tweaked webpack config for above changes
Partially fixes#468
Questions/ Pending:
- Literally every single test fails for me, presumably some issue with
my setup/environment.
- The websocket communication is not using TLS. I'm not sure how to
enable this, or if we even need to as its all local.
- Still need to create the CI for building/deploying but I'm not sure
where start in this regard as i have no exp with it. Presumably we will
need to point the electron auto-updater to the github releases url's. If
people are happy with this PR I will look at adding the CI before its
merged.
- In dev mode only, I have disabled TLS security becuase my docker
container's cert is not signed. I _assume_ this will be true for other
people who spin up the server on thier own hardware. Perhaps I just need
to change my cert to one from letsencrypt or something...
Notes.
I have not touched javascript in eons so my apologies if the commit
trail is a bit fragmented. I tried to keep them fairly contained and
then there is a slightly gnarly final commit fixing all the linter
issues... Please let me know if you want me to squash some commits etc.
I initially tried to move this to web workers the same way the web app
does it but this was unsuccessful. I have found no way to spin up a
worker in one place (frontend/backend) and then pass this worker to the
other. The electron ipc channels don't allow you to directly pass
objects such as workers, everything is cloned/serialised. Passing a port
number so the other end can spin up its own socket works fine.
---------
Co-authored-by: Shazib Hussain <contact@shazib.com>
Co-authored-by: Jed Fox <git@jedfox.com>