r2northstartools / flightcore Goto Github PK
View Code? Open in Web Editor NEWInstaller/Updater/Launcher for Northstar
License: MIT License
Installer/Updater/Launcher for Northstar
License: MIT License
In order to avoid any unformatted PRs getting merged.
Should we list contributors for every release? With #184 I can generate the list pretty easily, so should be no extra effort to do.
Question is what counts as a contributor for a release?
Add some button in the repair or dev menu that allows for force-reinstalling Northstar.
Mostly need this for myself to go back to latest release after installing some dev version.
From pg:
follow the same format as northstar, but use FlightCore instead of R2Northstar
Parse logs to extract certain useful information like
Add a searchbar to the installed mods tab
Right now Northstar is launched as a child which means it captures all the child's stdout which breaks stuff such as @ASpoonPlaysGames's colour console logs PR.
Once RepairView is released.
ns_has_agreed_to_send_token 2
from ns_startup_args.txt
(or replace with 1)https://discord.com/channels/920776187884732556/942391932137668618/1075835558078709840 (discussion about this in private channel on Northstar Discord server)
Suggestions made by @barnabwhy in private channels based on TFOR launcher source code
:root {
--background-image: url("../bg/img/arc.png") center / cover;
--background-image-fallback: url("../bg/img/arc.png") center / cover;
--background-color: rgb(23, 51, 107);
--background-color-transparent: rgb(23, 51, 107, 0.85);
--background-gradient: linear-gradient(transparent 25%, var(--background-color-transparent) 75%, var(--background-color) 90%), var(--background-image), var(--background-image-fallback);
--background-color-secondary: rgb(14, 25, 47);
}
body {
background: var(--background-gradient);
}
https://discord.com/channels/920776187884732556/1043871335543214102/1048643323755233401
Most comment crash according to sentry is lack of WebView2 on Windows. The FlightCore installer should also install WebView2 if missing but there are edge (hah) cases where the user cancels the install step or purposefully crippled their Edge install.
In such case from the user's perspective the app simply does not launch. If we could at least display an error dialogue, we could tell the user what to do to fix it.
works with:
with flightcore it just doesn't detect the button is clicked
enabledmods.json
)
enabledmods.json
might be missing (e.g. fresh install)enabledmods.json
(manually installed before game launch)dxdiag
and having an easy way of storing results somewhere so that they can be uploaded to ticketsN
5 times displays hidden nessie maybe?)When installing a mod with a dependency that requires an older version of said dependency than what is already installed, we should show a warning and/or option not to downgrade.
Currently it displays an alert()
which is an issue of its own and then also doesn't allow you to select location using the install/update/play button (I will refer to it as omni button from now on).
A smoother UX would be to use an Element Plus notification and re-use the omni button to select install location.
Right now I have to manually upload Windows debug symbols to sentry. I'd much rather have it happen automatically during the build creation step to avoid having to extra work and potentially forgetting to upload it.
FlightCore window cannot be dragged on the top bar, only inside the main window body which is kinda the opposite of how most operating systems handle window UX.
As a temporary resolution we could re-enable OS decorations and disable the custom close/minimise buttons.
( I'm personally more a fan of OS-side window decorations anyway :P )
Lots of methods currently fail if there's no internet connection.
We should display errors messages, instead of crashing the application.
Right now showing an ElNotification on frontend needs around 6 lines of code
ElNotification({
title: 'Success',
message: "Disabled all mods but core",
type: 'success',
position: 'bottom-right'
});
Now some are unavoidable but at the very least the position: 'bottom-right'
is used by every notification we send. Maybe there's a way to set the defaults so that we can at least remove that line?
With #99 we use game-scanner
as a library to get Origin Titanfall2 install on Windows. However this library adds quite a bunch of dependencies increasing build time.
@mrsteyk suggested using winreg
to query Windows registry directly instead.
Mod tab throws error when opening it without a selected Titanfall2 install. Instead it should simply show something like "No install found" or "No mods detected" or something along the lines.
Currently we just call the NorthstarLauncher.exe
binary. This means however that some prerequisites need to be met for Northstar to be able to launch successfully such as Origin already running for LSX authentication to function.
If we instead could just do something like steam://<Titanfall2 App ID> -northstar
(where -northstar
would be passed to the Titanfall2.exe
, and then in turn caught by our wsock32.dll
to launch Northstar), we could skip all the prerequisite checks and also get Linux+Steam support for free.
We got a few checks we need to perform before we can launch Northstar.
What is the best order to do them in to reduce number of branches in control flow? First OS then Steam/non-Steam? First Steam/non-Steam, then OS? Other things we need to check?
Related to #115
In particular I'm thinking Thunderstore taking the Thunderstore mod string into account. So that searching for Thunderstore mod author brings up the corresponding local mod.
When on a Windows machine where Titanfall2 is NOT installed with either Steam or Origin, the check for Titanfall2 Origin install fails and causes a panic.
called `Result::unwrap()` on an `Err` value: Powershell(Output { inner: Output { status: ExitStatus(ExitStatus(1)), stdout: "", stderr: "Get-ItemProperty : Cannot find path 'HKEY_LOCAL_MACHINE\SOFTWARE\Respawn\Titanfall2\' because it does not exist.
At line:1 char:1
+ Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Respawn\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HKEY_LOCAL_MACH...awn\Titanfall2\:String) [Get-ItemProperty], ItemNotFo
undException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand
" }, success: false })
Link to crash report (private): https://sentry.io/organizations/northstar-kv/issues/3673655072/?project=6692177&query=is%3Aunresolved&referrer=issue-stream&statsPeriod=14d
Didn't we speak about pinging master server every 5 minutes?
Originally posted by @Alystrasz in #135 (comment)
#54 added Thunderstore mod browser but the content is fetched from frontend.
I was willing to accept fetching from frontend to get code merged faster, so now is the time it should finally be switched over to backend
Would probably keep this as dev tool only. Reason to add this is mostly to help myself when testing PRs. Would only make this a general end-user tool once Northstar supports setting server config stuff outside of editing a file inside Northstar.CustomServer
. Otherwise a lot of logic for retaining this file would need to be added etc.
When downloading NorthstarMods directly from GitHub, the version remains as 1.9.0, making Flightcore think the version is outdated (even though it's not.)
Maybe the version should be grabbed from the Northstar executable instead?
Hmm, for that we need to signal core mods from backend to front-end. I don't think we have something for that yet... :/
Originally posted by @GeckoEidechse in #110 (comment)
Add an additional button to download CI builds. Sometimes one has a specialised setup or doesn't want to overwrite the existing install (as is the case for Launcher PRs) so it would be useful to have an additional button to download the PR, given that we already have all the code for finding the newest build.
CI currently takes 20 minutes to build. This means that when making a release, there's a 20 minute window where FlightCore will show a warning notification that it's outdated but not offer a way to update.
As such we should have a 1 hour (or some other duration) delay where we don't show the "FlightCore outdated" warning notification.
I already packaged a Flatpak before, so that part should be doable. My issue is that I want a release on this repo to also trigger an update on the Flatpak repo, so that I won't have to manually make a release on Flathub repo after creating a release on this repo.
To get Origin install location on Windows we parse registry. For this we use a PowerShell command. Apparently this opens powershell window for short second which is an issue as it unsettles players.
Newest libthermite
is currently at 0.3.1
, we are still using 0.2.0
.
Given that there seems to be some API changes, I'll need to take a closer look before bumping.
Is there a way to check if current mod is already installed? I would like for buttons to display "Installed" instead of "Install" if that's the case.
Not right now. I can look into it but it'll be a bit. I definitely want that feature but given that neither VTOL nor Viper have it either, I think we're fine with skipping it for this PR ;)
Originally posted by @GeckoEidechse in #54 (comment)
Seems to work fine in testing for the most part. mounted()
no only gets called when the view is actually opened, i.e. what we wanted to achieve with this PR ^^
One issue I noticed is that when enabling/disabling dev mode, the highlighted tab at the top gets updated incorrectly.
In particular, enabling dev mode highlights the DEV tab even though it isn't the open one:
and disabling dev mode switches back to PLAY view but doesn't highlight it:
Originally posted by @GeckoEidechse in #25 (review)
"C:\Program Files\EA" cannot be written to by other processes due to some Windows directory permission stuff.
To resolve, the solution is to move the game install to a different location.
We should detect such an issue and guide the user to the right location to resolve.
We pass some data from backend to frontend via custom objects/structs (whatever they are called). For typing to work in TypeScript we need to also define an interface for that object in TypeScript.
Keeping the Rust<->TypeScript object definition synced manually is annoying and prone to errors. Instead we should auto-generate them from the Rust code where applicable (usually the definition in Rust is the "main" one) so that any changes in the Rust object get automatically transferred to the frontend.
ChangelogView and ModsView use custom scrollbar for overflow content. The other views do not and as such the whole window becomes scrollable if the content overflows. Example:
Obviously this shouldn't happen but also just trying to e.g. wrapping DevView inner container in <el-scrollbar>
does nothing either. So uh @Alystrasz help please? ^^"
EA App is located in Program Files
and installs games there by default, which causes issues with being unable to install Northstar due to lack of perms, c.f.: R2Northstar/Northstar#368
Other mod managers can do this, so why not?
(could just edit ns_startup_args, or not, don't think it matters all that much)
In DevView, one should be able to filter the list of PRs by title, body, author, PR number, etc
Had someone where the dependencies for Halo Announcer didn't install.
See https://discord.com/channels/920776187884732556/922663696273125387/1068176583040446564
TODO more info here
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.