aboutsummaryrefslogtreecommitdiff
path: root/src-vue/src
AgeCommit message (Collapse)Author
2023-03-02Merge branch 'main' into feat/basic-log-parsingfeat/basic-log-parsingGeckoEidechse
2023-03-02feat: Allow installing PRs from DeveloperView (#139)GeckoEidechse
* feat: Initial backend code to get list of PRs Hardcoded for launcher right now * refactor: Autogen TS bindings from Rust code using `ts-rs` as done in #140 * fix: Fix incorrect typing What is returned is actually an array of `PullsApiResponseElement` * feat: Prototyping frontend UI for installing PR * fix: Use right repo Used Mods instead of Launcher * feat: Enable installing launcher pull request * refactor: Rename variables to indicate approp repo NorthstarLauncher vs NorthstarMods * style: Formatting fixes * feat: Initial code for getting mods PRs * feat: Add backend code for installing mods PRs * feat: Add note about launching in notification * fix: Remove commented out code * refactor: Depduplicate code * refactor: Remove unnecessary use of anyhow * refactor: Use already existing function for checking game path * feat: Add comment about profile / batch file * chore: Remove leftover print statements * feat: Add clickable link for each PR * refactor: Reduce duplicate code * refactor: Rename enum * fix: Use proper type * fix: Remove leftover `console.log`s * style: Revert accidental formatting change * refactor: Remove second API call for mods PRs * refactor: Rename variable * refactor: Remove second API call for launcher PRs * refactor: Move API URL string to `constants.rs` So that all constants are in a single place * fix: Restore lines deleted in merge * style: Formatting fixes * fix: Print line when done installing PR * feat: Show notification for install start/done Displays a notification that PR install has started and upon completion replaces it with one saying that install has completed. * fix: Remove left-over console log * feat: "Install PR" UI (#197) * refactor: export pull requests selector to dedicated component * refactor: regroup launcher+mods collapses in one collapse component * refactor: load pull requests when opening selector collapse item * refactor: review progress loaders' style * fix: don't fetch PRs if they've already been loaded * feat: update collapse style * refactor: remove fetch success notification * refactor: both collapses can be opened at the same time * fix: non-accordion collapse sends an object as event parameter * fix: Iterate over multiple pages of GitHub CI API This ensures we can still grab older artifacts. Max page is capped at 10 as going too high will cause us to hit API rate limits. Also refined error message accordingly. * refactor: Move stored PRs to submodule as suggested in review * refactor: Move getPullRequests to store submodule I order to clean up PullRequestSelector.vue Other functions will follow in separate commits. Currently TypeScript compilation fails on undefined type of `state` * fix: Properly define state type * refactor: Move installLauncherPR to store submodule * refactor: Move installModsPR to store submodule --------- Co-authored-by: Rémy Raes <contact@remyraes.com>
2023-02-25feat: Add button to force reinstall Northstar (#154)GeckoEidechse
* feat: Add button to force reinstall Northstar Useful for reinstalling Northstar after installing a developer version. * fix: Remove leftover `console.log()` * fix: Properly update which NS is installed * feat: Show notification when done Sends a notification to indicate that reinstall process has started and sends a second one once the process has finished/failed while also clearing the old notification.
2023-02-14refactor: Get TS package API response from backend (#168)GeckoEidechse
* refactor: Get TS package API response from backend Previously Thunderstore package index was done in frontend. Should be moved to backend instead as backend is reponsible for such tasks while frontend should just be used to store and display information. * refactor: Filter TS API response in backend * refactor: Rename function Makes it more descriptive what it does * refactor: Use gen. binds instead of duped struct Replaces the current TypeScript interface defintions with autogenerated bindings. * fix: Properly type variable * fix: Correct imported path of interface file * fix: Update struct field types to fix typing issue i32 should be big enough unless Thunderstore and Northstar suddenly becomes really huge and we start seeing over 4 million downloads on some mod * fix: Correct imported path of interface file
2023-02-12feat: Display Northstar playercount and servercount in frontend (#130)GeckoEidechse
* feat: Initial backend code to get the playercount from the Northstar master server together with servercount * fix: Push correct backend code * feat: Load playercount on application load and show on PlayView * refactor: Store global const in separate file Moved user agent there for now * refactor: User user agent from global const * refactor: Move masterserver URL into global const * refactor: Remove temporary variable * fix: Do proper typing for playercount return value * feat: Change text if unable to load playercount So instead of showing some wrong value, we just say that we were unable to load it. * fix: Remove leftover print statement * refactor: Move struct to library source file * fix: Remove break element * refactor: serverlist endpoint var to global const * fix: Remove unused import * fix: add some space to stats container top * fix: Change text to lowercase --------- Co-authored-by: Alystrasz <contact@remyraes.com>
2023-02-08Merge branch 'main' into feat/basic-log-parsingGeckoEidechse
2023-02-07feat: Show mod version in LocalMods View (#159)GeckoEidechse
* refactor: Parse using serde deserialisation * refactor: Parse using serde deserial. (TS mod str) Reduce code by making use of serde deserialisation. Still supports legacy method * chore: Remove commented out fields While useful, it just made the code messy... * feat: Show mod version in LocalMods view * refactor: Move mod version to new line in source code Makes diffing in git easier * fix: Hide version number if not available
2023-02-06feat: Show text when hovering Thunderstore icon (#167)GeckoEidechse
in LocalModsView
2023-02-06feat: Show TS icon for TS mods (#160)GeckoEidechse
In LocalModsView, show the Thunderstore icon for Northstar mods that have been installed from a Thunderstore mod.
2023-02-06feat: Check log for Northstar crashGeckoEidechse
2023-02-06feat: Parse whether mod is enabled/disabledGeckoEidechse
2023-02-05refactor: Use wrapper functionGeckoEidechse
that calls into dedicated parser functions and then assemble object inside the wrapper function
2023-02-05fix: Remove accidentally committed testing codeGeckoEidechse
2023-02-05refactor: Use custom object to expose resultsGeckoEidechse
Allows for expandability in the future
2023-02-05Merge branch 'main' into feat/basic-log-parsingGeckoEidechse
2023-02-05feat: Auto-generate TS bindings (#140)GeckoEidechse
* feat: Initial trial to auto-generate TS bindings That way instead of manually duplicating code, we can just run `cargo test` to generate them. * fix: Update forgotten imports * refactor: Move FlightCoreVersion to autogen bind TypeScript binding autogenerated from Rust code * refactor: Move ReleaseInfo to autogen binding TypeScript binding autogenerated from Rust code * docs: Explain how to generate TS binds from Rust * feat: Check for binding changes in CI Checks for uncommitted binding changes in CI and fails if they differ * style: Formatting fixes
2023-02-05feat: Add ability to get installed mods from logsGeckoEidechse
Parses the copy/pasted log text
2023-01-29fix: Set current route as menu active item (#149)Rémy Raes
fix: set current route as menu active item
2023-01-19fix: Fix wrong comments (#138)GeckoEidechse
Typo and referencing wrong functionality
2023-01-14refactor: Mods view (#134)Rémy Raes
* feat: add UI skeleton for new mods interface * fix: only apply app menu style to app menu items * feat: add menu skeleton * feat: add thunderstore mods view into mods view * refactor: remove thunderstore mods view from router + menu bar * refactor: move search input into mods view * fix: adjust ts mods container padding * refactor: center pagination components * refactor: rework media queries to adapt cards container width * fix: set mods view navigation min-width * refactor: compute mods container width with CSS variables * refactor: remove horizontal padding around ts mods container This will allow them to take much screen space. * feat: Thunderstore mods container is larger * feat: add layouts for 5 to 8 Thunderstore mod columns * feat: add some space to separate navigation menu subparts * fix: move search pagination reset in ThunderstoreModsView component * feat: retrieve Thunderstore mod categories when fetching mods * feat: add mod categories selector component * feat: mod categories selector now filters Thunderstore mods * fix: reset pagination index if needed when selecting mod categories * fix: first mod does not appear anymore while selecting any mod category First mod's categories array was used as an accumulator (in a reduce call) to regroup all mod categories; we now use an empty array as initial value for the accumulator. * feat: add a selector component to sort mods * feat: set sort selector default value on view mount * fix: set default sorting select value as selected in dropdown list * feat: add date_updated field to ThunderstoreMod type * feat: pass sorting value to ThunderstoreModsView as a prop * feat: mods can be sorted by name and release date * feat: mods can be sorted by most downloaded and top rated * fix: don't display sorting select on local mods view * refactor: remove local mods title * refactor: export local mods view code in dedicated component * refactor: export search value in a search-dedicated store * fix: display "no matching mods" message when no mods match This message was previously displayed only if no mods matched AND search input was not empty; now that we have categories selector, we can have no matching mods with an empty input. * refactor: remove unused input prop * fix: mods can be sorted by rating * refactor: remove unused searchValue computed property * style: adjust SortOptions import * refactor: move selected mod categories into search store module * refactor: move mod sorting into search store module * refactor: export mods menu component to dedicated file * fix: remove compare method initialization * feat: local mods can be filtered with search input * build: add ES2018 lib to typescript compiler options * refactor: remove unused variable * fix: retrieve SortOptions values from string input * refactor: move Thunderstore mods view into dedicated folder * style: add missing trailing newline to SortOptions.d.ts
2023-01-13feat: Add backend code for getting playercount (#135)GeckoEidechse
* feat: Initial backend code to get the playercount from the Northstar master server together with servercount * fix: Push correct backend code * feat: Load playercount on application load and show on PlayView * refactor: Store global const in separate file Moved user agent there for now * refactor: User user agent from global const * refactor: Move masterserver URL into global const * refactor: Remove temporary variable * fix: Do proper typing for playercount return value * feat: Change text if unable to load playercount So instead of showing some wrong value, we just say that we were unable to load it. * fix: Remove leftover print statement * refactor: Move struct to library source file * fix: Remove break element * fix: Remove frontend display of playercount This allows for separate PR for adding backend code early. * refactor: serverlist endpoint var to global const
2023-01-08feat: Delete given Thunderstore mod (#111)GeckoEidechse
* feat: Expose installed NS mod directory This allows other functions to get a mod directory directly which is useful for e.g. deleting a mod. * feat: Add button to delete Northstar mod * refactor: Return vector of NorthstarMod instead of unnamed Tuples * feat: Delete given Thunderstore mod * refactor: replace information button by a dropdown menu with remove item * refactor: only display removal mod option if said mod is installed * feat: only display dropdown menu for installed mods * refactor: Remove leftover print statement * chore: Remove leftover todo comment * feat: Show confirm warning before deleting mod * refactor: Call func directly instead of proxy Removes the `func_caller` pattern * fix: Call reloading mods after attempted delete * feat: Hook up deleting mod backend function Now clicking "Remove Mod" calls the appropriate backend function that removes the corresponding mod. * refactor: Call func directly instead of proxy Removes the `func_caller` pattern * style: Autoformat * feat: Support removing outdated mods No longer include the version number in the comparison check * fix: Rephrase error message * feat: Show pop-up confirmation before deleting mod for Thunderstore mod in ThunderstoreView Co-authored-by: Alystrasz <contact@remyraes.com> Co-authored-by: Remy Raes <raes.remy@gmail.com>
2023-01-07style: Formatting fixes in TypeScript code (#132)GeckoEidechse
* style: Add missing spaces between curly braces * style: Fix indentation
2023-01-04feat: Add button to delete Northstar mod (#110)GeckoEidechse
* feat: Expose installed NS mod directory This allows other functions to get a mod directory directly which is useful for e.g. deleting a mod. * feat: Add button to delete Northstar mod * refactor: Return vector of NorthstarMod instead of unnamed Tuples * refactor: Remove leftover print statement * chore: Remove leftover todo comment * feat: Show confirm warning before deleting mod * refactor: Call func directly instead of proxy Removes the `func_caller` pattern * fix: Call reloading mods after attempted delete
2023-01-04refactor: Remove unnecessary caller function pattern (#128)GeckoEidechse
* refactor: Remove unnecessary caller function Instead call `disable_all_but_core` directly * refactor: Remove unnecessary caller function Instead call `get_installed_mods_and_properties` directly * refactor: Remove unused exposed backend function * refactor: Remove unnecessary caller function Instead call `set_mod_enabled_status` directly * refactor: Remove unnecessary caller function Instead call `verify_game_files` directly * refactor: Remove unnecessary caller function Instead call `get_log_list` directly
2023-01-04feat: Thunderstore mods pagination (#122)Rémy Raes
* feat: add basic pagination * refactor: put paginator inside filters container * fix: limit filter container width * refactor: filters container is now responsive * fix: add missing type to pagination listener parameter * fix: don't display entire mods list while filtering mods * refactor: filteredMods is now a computed value * refactor: store mods per page value on UI store * feat: user can change modsPerPage count in settings * fix: limit mods count (min=5, max=100) * feat: add control on pages value When leaving settings vue, we check if the pages value is a number and is included in the interval [5-100]. If that's not the case, we reset it to 20. * feat: retrieve and save pages value in persistent store * fix: don't load an empty value from persistent store on boot * fix: cast modsPerPage to string to check if it's empty * refactor: remove search debounce * Update src-vue/src/plugins/store.ts * style: add trailing comma * fix: mention impact on TS mods only * refactor: remove limitations on modsPerPage * style: explicitly cast mods_per_page to number * feat: disable pagination with modsPerPage === 0 * feat: add pagination under thunderstore mod cards * fix: adjust bottom pagination padding * feat: clicking bottom pagination scrolls to page top * fix: use same containers for both paginations * feat: do not display pagination if mods fit on one page * style: trailing spaces * style: trailing spaces * feat: add a button to reset modsPerPage * feat: add explanation text about disabling pagination
2023-01-04feat: Show newest version number (#124)GeckoEidechse
* refactor: Move getting new FC version to own func * refactor: Deserialize into object * refactor: Return whole object instead of 2 strings More readable * refactor: Rename variable * refactor: Use fields of object directly instead of assigning to variables first * feat: Expose backend func to get newest FC version and then call it to get newest version number if current is outdated. This way we can display to the user how far behind their currently installed version is.
2022-12-22feat: Maximize button + clean menubar layout (#119)Rémy Raes
* feat: add a button to toggle window maximize status * fix: attach services container to bottom Container was fixed, but with no positioning indication, which fucked its location while going fullscreen. * refactor: encase menu in navigation container * fix: remove CSS ID duplication * refactor: put window controls inside menu bar * feat: add style to additional submenu * fix: don't color focused menu items * fix: restore menu bar debug indicator
2022-12-21fix: Mod view with no game install (#114)Rémy Raes
* refactor: set installedMods as a ModsView computed property * feat: display a message on ModsView instead of cards if no mods were found * refactor: remove error notification on game path discovery failure * Revert "refactor: remove error notification on game path discovery failure" This reverts commit db4af9ff78dc17bda77ce94283e35f9f1e961086. * fix: don't invoke get_installed_mods_caller with no game path set
2022-12-12feat: Expose installed NS mod directory (#109)GeckoEidechse
* feat: Expose installed NS mod directory This allows other functions to get a mod directory directly which is useful for e.g. deleting a mod. * refactor: Return vector of NorthstarMod instead of unnamed Tuples
2022-12-05feat: Show warning banner on DevView (#105)GeckoEidechse
* feat: Show warning banner on DevView * feat: Show icon in banner * fix: Switch banner type to warning * fix: Use light theme for warning
2022-12-02build: disable context menu in release buildsRemy Raes
2022-12-02fix: do not display deprecated mods in thunderstore viewRemy Raes
2022-12-02fix: blur all views except main oneRemy Raes
2022-12-02fix: prevent channel switching while game is runningRemy Raes
2022-12-02fix: increase background scale to hide white border on WindowsRemy Raes
2022-11-30feat: Release channel selector (#86)Rémy Raes
* refactor: Move release channel button to settings * chore: Revert single newline removal * feat: add basic selector * feat: add basic selector style (to match button style) * fix: remove box-shadow on selector * feat: selector displays release canal from UI store * refactor: export toggleReleaseCandidate to store, for it to be used by release canal selector * feat: selector effectively changes release canal * fix: selector members typing issue * refactor: adjust selector labels * refactor: remove channel switching button Since the channel selector on the play view allows users to switch channels, this button is now useless. * feat: add a switch to toggle releases switching * feat: switch only appears if corresponding flag is enabled * feat: adjust button corners regarding releases switching state * feat: switch value is saved in persistent store * refactor: update release candidate label * fix: set release canal to RELEASE when switch is toggled off
2022-11-30refactor: Remove the "Origin running" check from frontend (#94)GeckoEidechse
* refactor: Remove Origin running check in frontend We already perform the check in the backend. Frontend does not check for OS and as such on Linux will just always tell you that Origin is not running. * feat: Show notification toast, not alert pop-up * refactor: Perform OS check before Origin check
2022-11-30feat: Add scrollbar to all views (#91)Rémy Raes
* feat: add new CSS class for UI containers * feat: add a scrollbar to developer view * refactor: use CSS class in all views * feat: put a scrollbar in settings view
2022-11-28feat: Give example for modstring in text box (#83)GeckoEidechse
Co-authored-by: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com> Co-authored-by: Jack <66967891+ASpoonPlaysGames@users.noreply.github.com>
2022-11-27feat: Option to launch NS bypassing update check (#59)GeckoEidechse
* feat: Option to launch NS bypassing update check Hidden behind dev view * refactor: Use existing function to launch NS Instead of duplicating code * feat: Adjust button to allow bypassing all checks
2022-11-26style: Group View import lines together (#73)GeckoEidechse
ThunderstoreView was further below
2022-11-25feat: Thunderstore mods listing (#54)Rémy Raes
* feat: add ThunderstoreMod type * feat: add view component to develop mods layout * feat: mount view component in router * feat: display thunderstore section in menu * refactor: create thunderstore package * feat: add ThunderstoreModVersion type * feat: add icon field to mod version type * feat: add basic card layout for mods * refactor: card button text is computed In the future, we want the button text to change regarding status of the current mod (installed, deprecated or not installed at all). * feat: display mod owners * feat: display download and like counts * feat: fetch mods from Thunderstore API * fix: type issue * fix: prevent texts from overflowing * fix: all cards have same height * feat: add some space between cards * feat: add basic search bar to filter mods * fix: convert search string to lowercase to avoid font case issues * feat: remove some mods from listing * feat: a button opens mod page on Thunderstore website * feat: display some text if no mod matched searched words * fix: description size * fix: display mod's total downloads count * docs: add documentation to methods * refactor: store thunderstore mods in store * docs: remove TODO notes * style: add trailing line to ThunderstoreModVersion.d.ts * feat: cards container is responsive Mods cards will always appear centered on the screen, and cards container width adjusts to window width. * fix: debounce mods filtering Since filtering mods with search string is costly, we don't do it for each character entered into search bar, but rather wait (300ms) for the user to stop typing. * feat: add full_name field to ThunderstoreModVersion type * feat: mods can be installed by clicking the card button * feat: card displays a loader while mod is being installed * refactor: move installed mods list to frontend store Installed mods are now stored in the frontend store, so they can be used in all views. * feat: card button text varies regarding current mod's status Button can now tell if current mod is being installed, or if it is already installed on local file system. * refactor: export mod status computation in a dedicated method * feat: color buttons regarding associated mod's state * fix: set search debounce timeout to 200ms * refactor: local mods load is done by frontend store * fix: load locally-installed mods before fetching thunderstore mods * fix: display mods while typing in search bar * fix: type issue * fix: CI doesn't know NodeJS namespace * fix: adjust NorthstarMod member types (string instead of String) * feat: tell if a mod is outdated by checking its Thunderstore dependency string prefix * fix: update mods list after installing one from Thunderstore This way, after installing a mod, button text will display "Installed" instead of "Install". * refactor: export Thunderstore mod card to dedicated component file * refactor: rename computed variables * fix: use computed latestVersion member * feat: display "updating" on button when updating an already-installed mod * feat: add some background blur on thunderstore mods view * Update src-vue/src/views/ThunderstoreModsView.vue * Update src-vue/src/plugins/store.ts * fix: zoom background container a bit to hide white border on Windows
2022-11-23feat: Store game path in persistent store (#61)GeckoEidechse
* feat: Store gameinstall in persistent store This includes both path and type (Steam/Origin/EA/UNKNOWN) * feat: Add method to clear persistent store * fix: Only check for NS version if installed Otherwise we incorrectly set the button to `Install`. * fix: Remove leftover `console.log()`
2022-11-21fix: Catch error for missing handle (#60)GeckoEidechse
Setting install path manually when one exists already will error out on trying to delete the non-existing "no install found" notification using its non-existing handle.
2022-11-19feat: Return Thunderstore mod string of installed mods. (#56)GeckoEidechse
* refactor: Rename function to better differentiate what it does * refactor: Add TS mod string field to NS mod struct This allows us to expose to frontend which Thunderstore mod a Northstar mod may belong to. Field is optional as not all mods may contain a Thunderstore mod string for example when they were installed manually. * feat: Add TS mod string field to NS mod interace * feat: Parse TS mod string and expose to frontend * fix: Mark unused variable as such
2022-11-19feat: Initial support for installing mods from TS (#32)GeckoEidechse
* feat: Initial support for installing mods from TS This is the basic code needed to install a mod from Thunderstore * refactor: Remove console log, show msg in notif Instead of console logging result message, show it in notification instead. * refactor: Rename function to indicate behaviour Function not only installs but also downloads mod first. Although it does remove downloaded zip post installation. * refactor: Move install logic to dedicated module `mod_management` module didn't exist when this PR was created * chore: Trim single leftover newline * fix: Update code for newer `libthermite` version * feat: Allow installing older versions of mods Installs the given version number instead of only allowing latest. * fix: Explicit error msg for installing NS as mod While it would fail during install anyway, having explicit error message is nicer * feat: Write TS mod string to mod.json Write Thunderstore mod string of installed mod to its `mod.json` This way we can later check whether a mod is outdated based on the Thunderstore mod string * fix: Early return on empty string Prevent trying to install the first mod that matches an early string. We should never pass an empty string in the first place but better safe then sorry. * build: Add dependency for recursive async Needed for recursive mod dependency install * feat: Recursively install mod dependencies * fix: Early catch installing R2modman as mod Just in case to prevent someone trying to install R2modman as a mod. * refactor: Remove debug prints * fix: Allow installing mods having NS as dependency They would previously error out as Northstar cannot be installed as dependency. We now catch that specific error and return Ok(()) * fix: Delete download folder after mod install Deletes download folder after mod install if non-empty. * fix: Do not early leave when dependency is NS Logic error, instead of skipping installing Northstar as dependency it would previously just return early with success. * chore: Remove leftover commented out code
2022-11-14feat: Add element-plus scrollbar to mods view (#53)Rémy Raes
* feat: add element-plus scrollbar to mods view * refactor: remove unused style
2022-11-13feat: Show stripped title bar on debug build (#48)GeckoEidechse
* 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. * fix: Only show striped menubar for debug builds
2022-11-11feat: Add categories for dev mode buttons (#45)GeckoEidechse