Installer/Updater/Launcher for Northstar

Overview

FlightCore

A Northstar installer, updater, and mod-manager

Roadmap

--> See #1

Development

Make sure you have the necessary dependencies installed: https://tauri.app/v1/guides/getting-started/prerequisites

Install npm dependencies with

npm install

Then for developing

# terminal 1 (UI localhost for hot-reload)
npm run ui-dev

# terminal 2 (for the Rust/App hot-reload)
npm run tauri dev

Note On Windows instead of npm run ui-dev, you may need to run ./node_modules/.bin/rollup --config --watch and ./node_modules/.bin/servor dist index.html 8080 --reload in two separate console windows

Tips

Note that you can adjust the behaviour of Tauri windows in tauri.conf.json, e.g.

"windows": [
  {
    "fullscreen": false,
    "resizable": true,
    "alwaysOnTop": true,
    "x": 1200,
    "y": 0,
    "height": 500,
    "width": 300,
    "title": "FlightCore"
  }
]

Building

Release builds are generally done via CI. To build locally, make sure typescript is compiled (./node_modules/.bin/rollup --config), then run npm run tauri build.

Why yet another Northstar intaller/updater/mod-manager instead of contributing to an existing one?

The 3 main GUI tools for handling such tasks with Norhtstar are

while they get most of the work done, each of them has their own problem.

  • r2modman has not too great UX and given that it also has to support other games there's not a(n easy) way to quickly add new features specific to Northstar
  • Viper probably has the best UX but is missing features such as Origin process runtime detection (to avoid LSX errors) and lacks the ability to install Northstar from Thunderstore. Further there are still cases where JavaScript errors are not handled properly simply showing the stack trace and confusing users.
  • VTOL has recently undergone a rewrite that removes a lot of older issues (such as requiring to be run as admin), however it is Windows exclusive and requires installing an additional library not shipped directly with the application, confusing some users. It also has a lot of edge case handling that while giving a smoother user experience blows up code base complexity.

With that said, FlightCore is not written from scratch. For handling Northstar specific logic, functions are re-used from the CLI-only Northstar installer called papa by making use of the underlying library libthermite.

The plan is to upstream any changes to libthermite so that it can be re-used by any other Rust-based Northstar installer.

Additional info

Based on source code for the Rust Tauri Introduction Video

Comments
  • feat: Thunderstore mods listing

    feat: Thunderstore mods listing

    This introduces interface components for Thunderstore mods listing.

    Capture d’écran de 2022-11-14 23-14-16

    • Displays information about mod
    • Thunderstore mod page can be opened in default browser via information button
    • Mods can be searched through (filtering by mod name / author / mod description)
    TODOs
    • [x] Responsive layout
    • [x] Pagination (displaying all mods is slow on some devices) (THAT'S FOR ANOTHER TIME)
    • [x] Search debounce (not to trigger search at each character input)
    • [x] "Install/Installed" button text
    • [x] Actual mod installation
    • [x] Blur background on this view
    • [x] Update view once a mod has been installed
    • [x] Display "updating" instead of "installing"
    opened by Alystrasz 30
  • feat: Initial backend code to get list of installed mods

    feat: Initial backend code to get list of installed mods

    For now simply parses enabledmods.json. Note that this file will not be up-to-date if the user just installed a mod but hasn't launched Northstar yet.

    opened by GeckoEidechse 10
  • feat: Parse actually installed mods

    feat: Parse actually installed mods

    Instead of using solely enabledmods.json parse the mod.json of found mods in mods folder.

    Use the mod.jsons to get list of mods and compare with enabledmods.json to set which mods are enabled.

    opened by GeckoEidechse 9
  • feat: Alternatively check if EA App is running

    feat: Alternatively check if EA App is running

    With EA switching from Origin to EA App, we need to check for that instead.

    Resolves an issue where EA App users are unable to launch Origin cause "Origin is not running".

    Longterm, we should just launch via Steam and/or EA App directly, passing -norhtstar in the process to get it to launch Northstar instead.

    opened by GeckoEidechse 6
  • feat: Initial support for installing mods from TS

    feat: Initial support for installing mods from TS

    This is the basic code needed to install a mod from Thunderstore.

    There's an issue where the removal of the temporary download folder does not work properly which I have yet to resolve.

    • [x] Basic install logic
    • [x] Prevent installing Northstar or NorthstarReleaseCandidate
    • [x] Handle dependencies -> Waiting on libthermite update as current is broken.
    • [x] Add Thunderstore dependency string to mod.json (for checking for updates).
    opened by GeckoEidechse 6
  • refactor: Move release channel button to settings

    refactor: Move release channel button to settings

    In a discussion in voice-chat with Emma and Spoon we concluded that switching to Northstar RC release channel should be more accessible without activating DevView.

    The goal is to strike a balance between easier to switch to release candidates while also being hard enough to deter someone from accidentally or unknowingly enable it and keeping it enabled.

    A suggested idea was having a checkbox to enable "Playtester mode" that then in turns allows switching release channel in PlayView using a dropdown menu or similar.

    opened by GeckoEidechse 5
  • feat: Option to launch NS bypassing update check

    feat: Option to launch NS bypassing update check

    Hidden behind dev view. Helps with testing as dev builds of Northstar do not update patch number so an update check bypassing button is necessary to launch dev builds of Northstar.

    high priority 
    opened by GeckoEidechse 5
  • feat: Patch notes

    feat: Patch notes

    Display Northstar release notes in application.

    image


    TODOs
    • [x] Scrollbar
    • [x] Keep menu visible when scrolling
    • [x] Dates style (use dark theme?)
    • [x] Display a loader while fetching notes
    • [x] Ensure HTTP call is not done on main thread
    opened by Alystrasz 4
  • feat: Add button to delete Northstar mod

    feat: Add button to delete Northstar mod

    Allows deleting a Northstar mod from within FlightCore

    • [x] Requires #109
    • [x] https://github.com/R2NorthstarTools/FlightCore/pull/110#pullrequestreview-1224588360 (81f5e7373bc399c646ff29c0fb8a3c647e2f56c4)
    opened by GeckoEidechse 3
  • fix: Do not crash on Origin install find failure

    fix: Do not crash on Origin install find failure

    The unwraps would cause the thread to crash in case FlightCore is unable to use Powershell output to find Origin Titanfall2 install path. Instead we just return the error message which is caught and handled by the parent function.

    opened by GeckoEidechse 3
  • feat: Show stripped title bar on debug build

    feat: Show stripped title bar on debug build

    Helps with differentiating which window is which when both developing FlightCore and is using release version at the same time. Wouldn't be the first time I accidentally nearly confused the two :P

    Rendered result: image

    opened by GeckoEidechse 3
  • Auto-generate TypeScript interfaces from Rust objects

    Auto-generate TypeScript interfaces from Rust objects

    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.

    opened by GeckoEidechse 0
  • fix: Add empty folder to stop macro complaining

    fix: Add empty folder to stop macro complaining

    A Tauri macro complains when the dist folder does not exist. Adding a .gitkeep means that cloning the repo, the folder will be created.

    Talking about this macro error image

    Note that the macro error does not prevent compilation in any way. It's purely an annoyance thing :P

    opened by GeckoEidechse 1
  • Warn when downgrading dependency mod

    Warn when downgrading dependency mod

    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.

    opened by GeckoEidechse 1
  • RFC: Variable tab bar demo

    RFC: Variable tab bar demo

    :warning: This is a draft PR to showcase the potential of having variable number of entries in the tab bar. :warning:

    Idea:

    By default only show base tabs but offer various buttons to open other views. Once opened this views will stay available on the tab bar until the end of the session (i.e. until the application is restarted).

    Advantages:

    • Switching between views is instant. E.g. switching from Thunderstore mod install to launching game is just 2 clicks (switch to PlayView, click on launch game). This is quicker compared to e.g. Viper where browsing mods opens a pop-up overlay.
    • No overwhelming new users by not showing all views "immediately"
    • No need for any subpages/subviews. Just add another tab :P
    • As usually not all tabs will be opened in one session, the tab bar will stay small in general.
    • Anything else?

    Disadvantages:

    • If buttons to open hidden views are not well placed, users might never discover them
    • Variable number of tab entries bad? (I don't see the issue personally but I might just be missing sth ^^)
    • Anything else?

    Rendered:

    https://user-images.githubusercontent.com/40122905/209241721-3d81ef59-8c5f-4ed8-9ce8-1c50d461548b.mp4

    Important note: The views to hide by default were chosen to be the ones that I deemed to be used less often. This does not mean we should actually hide these specific views by default on main. This was just for the sake of the demo. For example Thunderstore view is way too pretty to hide it :P

    opened by GeckoEidechse 3
  • Expose core mods from backend to frontend

    Expose core mods from backend to frontend

    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 https://github.com/R2NorthstarTools/FlightCore/pull/110#discussion_r1054898148

    opened by GeckoEidechse 1
Releases(v1.4.0)
Owner
null
Northstar is a horizontally scalable and multi-tenant Kubernetes cluster provisioner and orchestrator

Northstar Northstar is a horizontally scalable and multi-tenant Kubernetes cluster provisioner and orchestrator. Explore the docs » View Demo · Report

Lucas Clerisse 1 Jan 22, 2022
TW3 - menu filelist updater

Utility for quickly updating the filelist.txt files for mod menus introduced by the next-gen patch based on the currently installed mod-menus.

Thibault H 2 Dec 14, 2022
Rust executable packager, bundler and updater.

cargo-packager Rust executable packager, bundler and updater. A tool and library to generate installers or app bundles for your executables. It also h

CrabNebula Ltd. 9 Oct 6, 2023
A very simple Among Us mod launcher

Sussy Launcher ඞ A very simple mod launcher/loader for the game Among Us (Also referred to as Amogus ඞ). This Project is written with the Rust program

null 4 Aug 17, 2022
A cross-platform launcher for Fish Fight 🐠

Fish Fight Launcher A cross-platform launcher for Fish Fight. Features Install and launch (via GUI/CLI) Auto updates Mod management Download See avail

Fish Fight 52 Dec 18, 2022
A cross-platform launcher for Fish Fight 🐠

Fish Fight Launcher A cross-platform launcher for Fish Fight. Features Install and launch (via GUI/CLI) Auto updates Mod management Download See avail

Fish Fight 26 May 5, 2022
WinDbg installer/updater

windup Windup is an installer for WinDbg that uses the appinstaller file at https://aka.ms/windbg/download to install the latest version of WinDbg. It

Tim Misiak 19 Jul 12, 2023
Meteor Client Installer - Installer to automate the install of Fabric and Meteor Client

This is an installer that automates the install of Meteor and Fabric

Jake Priddle 3 Jun 23, 2021
AlterWare game modification updater & launcher

alterware-launcher Download latest release Unpack the archive and place alterware-launcher.exe in the game directory Run alterware-launcher.exe, after

mxve 4 Jun 12, 2023
Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

null 294 Dec 23, 2022
Northstar is a horizontally scalable and multi-tenant Kubernetes cluster provisioner and orchestrator

Northstar Northstar is a horizontally scalable and multi-tenant Kubernetes cluster provisioner and orchestrator. Explore the docs » View Demo · Report

Lucas Clerisse 1 Jan 22, 2022
Standalone Northstar RCON client.

Northstar RCON Client This is a small, cross-platform implementation of an RCON client for the Northstar mod, as it's implemented in the RCON PR. Ther

Tom Barham 3 Aug 15, 2022
A simple CLI DDNS Client updater.

DDNS Client A simple DDNS client updater. Supported DDNS Servers Duck DNS How to use it ddns_client ~/.config/ddns_client/config.yaml -t 600 Config sa

Lablack Mourad 2 Dec 6, 2022
TW3 - menu filelist updater

Utility for quickly updating the filelist.txt files for mod menus introduced by the next-gen patch based on the currently installed mod-menus.

Thibault H 2 Dec 14, 2022
Rust executable packager, bundler and updater.

cargo-packager Rust executable packager, bundler and updater. A tool and library to generate installers or app bundles for your executables. It also h

CrabNebula Ltd. 9 Oct 6, 2023
The Rust toolchain installer

rustup: the Rust toolchain installer Master CI Build Status Windows macOS Linux Etc rustup installs The Rust Programming Language from the official re

The Rust Programming Language 5.1k Jan 8, 2023
Installer Backend

distinst Distinst is a Rust-based software library that handles Linux distribution installer installation details. It has been built specifically to b

Pop!_OS 198 Dec 30, 2022
Installer for yuzu early access

This is installer is programmed for the 128BitBay Server! License 128Bit Yuzu Installer is licensed under the Apache 2.0 License, which can be found i

MostlyWhat 105 Jan 7, 2023
installer for project brunch (by sebanc)

Brunch-installer Installer for brunch (made by sebanc) This was made in an attempt to simplify the installation process of chromeos using project brun

null 2 Mar 30, 2022
minimalistic command launcher in rust

rrun Note: Apart from the occasional fix, this project is not actively developed anymore. rrun works fine and should run/compile for the time being on

null 105 Nov 18, 2022