0negal / viper Goto Github PK
View Code? Open in Web Editor NEWLauncher+Updater for TF|2 Northstar
Home Page: https://0negal.github.io/viper
License: GNU General Public License v3.0
Launcher+Updater for TF|2 Northstar
Home Page: https://0negal.github.io/viper
License: GNU General Public License v3.0
What feature would you like added?
Since Thunderstore provides mods versioning, Viper should be able to update installed mods if updates are available.
This behaviour should be configurable, for example CLI/server users may want to fix mods versions they use.
Why should this feature be added?
Get mod updates as soon as they're available: all fixes/new content is automatically installed.
Describe The Bug
After Clicking the "Check for updates" button in the Northstar tab, "ns_startup_args.txt" is set back to its default filename "ns_startup_args.txt.excluded"
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The startup args file should not be affected by the checking for updates button.
Screenshots
If applicable, add screenshots to help explain your problem.
Version:
v1.2.1
Additional Info
Any extra info should go here!
The issue with the current logo is that it is the same as the one NorthstarCN uses.
To avoid confusion the two projects (Viper and NorthstarCN) should probably use different logos. As NorthstarCN is closer in content to Northstar (it's just Northstar but with tweaks for the Chinese community) it makes more sense for the to use an icon that closely resembles that of Northstar.
Therefore I'd argue it would probably be best for Viper to use a different logo.
Either something else related to Northstar (the titan), like
or
Or something related to Viper (the TF|2 character), like
That way the two projects should be better set apart and Viper would have it's own more individual look.
What feature would you like added?
I'd like to propose Flatpak as an additional distribution format.
Why should this feature be added?
Flatpak is rising to become the defacto standard for distributing up-to-date end-user-facing graphical applications (usually referred to as "apps" by end users). It's distro agnostic thanks to isolation features and runtimes, and it features built-in auto-update by the Flatpak environment (so a user doesn't need to open Viper to update it).
Further Flatpaks will be supported out of the box on Steam Deck so with a Flatpak release future Steam Deck users could install Viper without needing to enter any form of developer mode on their device.
Additional Info
There are some drawbacks with adding a Flatpak version. In particular I'm not sure if we can deprecate other Linux formats in favour of Flatpak as even with widespread support on major distros some users might not have Flatpak installed in their repo by default. Most prominent example being Ubuntu (all its derivates support it out of the box). This means we'll have to support yet another distribution format.
(This feature request was created out of a discussion in the Northstar Discord)
Before updating local Northstar version, we should check if the latest available version is not already installed (do we have a way to check local Northstar version?).
If a newer version is available online, I'm not sure whether we should download and install it automatically, maybe we should ask for user approval?
Describe the bug
The release notes of Northstar v1.6.0
are not properly rendered in Viper
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The linked PRs in the release notes should be properly rendered like with release notes for other versions of Northstar.
Version:
v1.3.1
Additional Info
My assumption is that whatever library Viper uses for rendering Markdown, it does not properly handle HTML tags in the release note contents. For reference, here's the head of the Northstar v1.6.0
release notes
<div>
<a><img src="https://user-images.githubusercontent.com/16687318/156849195-06d5c58f-d472-45a7-9ec4-26abc72bc27f.png" width="49%"></a>
<a><img src="https://user-images.githubusercontent.com/16687318/154815173-454084a4-3b88-48ca-b62b-6df09fe853ff.png" width="49%"></a>
</div>
**Features**
Update private match map select menu ([#194](https://github.com/R2Northstar/NorthstarLauncher/pull/194))
I'm well aware that this is more of a minor issue and has no priority to be fixed. However depending on how "stylish" we go with future release notes for Northstar by using HTML tags for embedding images in a certain layout, it will again not get properly rendered within Viper ^^
Config files commonly modified by players, like R2Northstar\mods\Northstar.CustomServers\mod\cfg\autoexec_ns_server.cfg
should not be overwritten without warning if their content has been changed.
To check if their content has changed, compare the content with that of the unmodified version of the file of the current install.
It's probably enough to have a few "whitelisted" files to perform this check on. Doing it over all files is likely not necessary.
@Alystrasz, @AA-Delta some more strings that need translation :)
"cli.gamepath.lost": "Gamepath not found, make sure it's mounted!",
"gui.settings.title.language": "Language",
"gui.settings.autolang.title": "Auto-Detect Language",
"gui.settings.autolang.desc": "When enabled, Viper tries to automatically detect your system language, when disabled you can manually change the language below.",
"gui.settings.forcedlang.title": "Language",
"gui.settings.forcedlang.desc": "When \"Auto-Detect Language\" is disabled, this will decide the language. Requires a restart to take effect.",
"gui.gamepath.lost": "Gamepath no longer exists/can't be found!\n\nMake sure your drive is mounted properly, or if you moved your game location that you update the game path.\n\nViper may not work properly until next restart!",
Also with the new language selectors I had to make more user friendly names for the languages, and chose to do add a lang.title
in the top of the files, which is what it shows up as in the settings. I translated them with Google Translate, but given they're just the name of the language, in it's language I don't assume there's any real way Google can mess this one up. But please do check it just to make sure.
fr.json
)es.json
)Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
npm i
Expected behavior
All dependencies are installed.
Version:
1.2.3
Maybe this has something to do with dmg-license dependency being deprecated (used in electron-builder?).
I would love to add support for Linux users to also be able to Launch the game through Viper, albeit it'll probably take some manual configuration from the user, like setting a command to launch Vanilla and Northstar.
However if the user has Lutris installed we could try and parse lutris --list
, and same with Steam. To try and find the launch command.
We'll likely need this in #34 anyway, at least for the Linux side of that issue.
On Windows, by running Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Respawn\Titanfall2\
, you can get game folder, without having to ask user for it.
I don't know if we can find game folder this way on Linux?
@Alystrasz @AA-Delta, the following strings need translation:
"cli.help.novpupdates": "overwrites viper.json and disables Viper updates",
"gui.browser.noresults": "No results...",
"gui.browser.filter.mods": "Mods",
"gui.browser.filter.skins": "Skins",
"gui.browser.filter.client": "Client-side",
"gui.browser.filter.server": "Server-side",
fr.json
)es.json
)Describe the bug
When launching Viper without an internet connection you may see various errors, related to your DNS not being set, and so on. This isn't very useful to a user.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A more descriptive alert box, or simply Viper launching as normal but without functionalities that require an internet connection. If we go for the latter requests.js
should probably just return a cached version of the release notes and so on, even if it's supposed to have been refreshed. As to not have empty release notes, however we should still expect that a new user may not have an internet connection and so we should still display an error if no cache is found.
Screenshots
There's 3 identical error alerts, stemming from our 3 api.github.com
requests (NS latest version, NS release notes and Viper release notes) in requests.js
What feature would you like added?
Instead of linking to releases in the README, link directly to the install files, i.e. something like
# Install
[Windows](https://github.com/0neGal/viper/releases/download/v1.1.0/Viper-Setup-1.1.0.exe) | [Windows (portable)](https://github.com/0neGal/viper/releases/download/v1.1.0/Viper-1.1.0.exe) | [Linux (AppImage)](https://github.com/0neGal/viper/releases/download/v1.1.0/Viper-1.1.0.AppImage) | <the rest of the links>
which would be rendered as
Windows | Windows (portable) | Linux (AppImage) | <the rest of the links>
Why should this feature be added?
I already had multiple people ask me how to download Viper when I linked them the repo. In particular they asked which version to download when going to the release page via the link in the README. By offering a more direct download button this sort of friction could be resolved or at least reduced.
Additional Info
Perhaps instead of links even use some sort of badges for the different platforms to make it especially easy for someone to find the download link for their platform.
As briefly discussed in a PR we need to consider which distribution format we're going to use (#2)
It doesn't seem like it is reproducible, and must just be Windows caching the icon or something similar, because I built and installed it, and the icon popped up just fine, everywhere.
Perfect then!
I'm more referring to whether or not there's any other install methods we should include, like .deb, .tar.gz, pacman package, .rpm. Personally I think all of those which I just mentioned should be included. I don't think a snap package is really in the interest, of literally anyone. And if we have the tar file there's no point in zip, or other archive formats. As for Windows, besides the installer, a portable build might also be convenient.
We should discuss it on a dedicated issue I think, because choosing distribution format implies a lot of things (about Windows for instance, if you want your app to be able to update itself with GitHub releases, it's only possible with NSIS format)
According to the documentation:
Northstar itself has no filter as to what mods it loads
however this is not true, as there is R2Northstar\enabledmods.json
which defines which mods are loaded.
So instead of moving mod folders, it would probably be better to just update the value in the JSON file. This would also show the mods as "disabled" when checking the mods page while running Northstar and when disabling a mod from within Northstar, it would also show as "disabled" in Viper.
What feature would you like added?
Instead or relying on its own version flag for the installed Northstar version, Viper should instead read-out the version provided in mods.json
of the default Northstar mods (Northstar.Custom
, Northstar.Client
, ...) as well as the version resource field in the NorthstarLauncher.exe
.
Reading out version resource of a current release of NorthstarLauncher.exe
using exiftool
:
$ exiftool NorthstarLauncher.exe
ExifTool Version Number : 11.88
File Name : NorthstarLauncher.exe
Directory : .
File Size : 60 kB
File Modification Date/Time : 2022:02:18 16:39:04+01:00
File Access Date/Time : 2022:02:28 14:29:27+01:00
File Inode Change Date/Time : 2022:02:28 14:29:27+01:00
File Permissions : rw-rw-r--
File Type : Win64 EXE
File Type Extension : exe
MIME Type : application/octet-stream
Machine Type : AMD AMD64
Time Stamp : 2022:02:18 17:38:29+01:00
Image File Characteristics : Executable, Large address aware
PE Type : PE32+
Linker Version : 14.30
Code Size : 29184
Initialized Data Size : 56832
Uninitialized Data Size : 0
Entry Point : 0x7070
OS Version : 6.0
Image Version : 0.0
Subsystem Version : 6.0
Subsystem : Windows command line
File Version Number : 1.5.1.0
Product Version Number : 1.5.1.0
File Flags Mask : 0x003f
File Flags : (none)
File OS : Windows NT 32-bit
Object File Type : Executable application
File Subtype : 0
Language Code : English (British)
Character Set : Unicode
Company Name : Northstar Developers
File Description : Northstar Launcher
File Version : v1.5.1
Internal Name : NorthstarLauncher.exe
Legal Copyright : Copyright (C) 2021
Original File Name : NorthstarLauncher.exe
Product Name : Northstar Launcher
Product Version : v1.5.1
Why should this feature be added?
Currently installing Viper after Northstar means that Viper will detect the current version as unknown. Similarly manually updating Northstar without Viper will result in Viper re-updating Northstar. Using the version fields in the core mods and launcher instead of its own text file means that Viper can more accurately detect the currently installed version of Northstar.
Additionally this reduces the number of added files to the Titanfall2 directory by 1 ¯\_(ツ)_/¯
Additional Info
Both version fields (Launcher and Mods) are set via CI when creating a release of Northstar (since version v1.5.0
of Northstar) and therefore should accurately reflect the currently installed Northstar version.
Conversely older versions of Northstar have a mismatch between launcher and mods (v1.4.0
had mods at 1.1.0
while launcher was 1.4.0
) or did not correctly reflect Northstar version at all (when we created the patch release v1.4.1
with backported fixes we didn't have CI setup properly yet and forgot to update the version field in the launcher resulting in it saying 1.3.0
)
Additionally viper would also need to be able to handle release candidate version numbers as well, for example v1.5.1-rc2
has launcher version as
$ exiftool NorthstarLauncher.exe
ExifTool Version Number : 11.88
File Name : NorthstarLauncher.exe
Directory : .
File Size : 60 kB
File Modification Date/Time : 2022:02:17 14:40:32+01:00
File Access Date/Time : 0000:00:00 00:00:00
File Inode Change Date/Time : 2022:02:28 14:47:13+01:00
...
Company Name : Northstar Developers
File Description : Northstar Launcher
File Version : v1.5.1-rc2
Internal Name : NorthstarLauncher.exe
Legal Copyright : Copyright (C) 2021
Original File Name : NorthstarLauncher.exe
Product Name : Northstar Launcher
Product Version : v1.5.1-rc2
and the core mods as:
{
"Name": "Northstar.Custom",
"Description": "Custom content for Northstar: extra weapons, gamemodes, etc.",
"Version": "1.5.1-rc2",
"LoadPriority": 1,
...
}
What feature would you like added?
We probably wanna add some CI/CD pipeline (probably just GitHub actions) to create builds of each commit pushed to the repo as well as creating builds on release.
Why should this feature be added?
CI/CD pipeline would improve testing new features by 3rd parties. E.g. some user requests feature, new branch gets created and feature implemented, CI/CD builds package in all formats, user can download package and test it themselves without needing to build from source.
Additional we could also add integration testing to spot bugs early but my main idea was to use it to build packages for each commit to test new features without needing to setup a build environment.
Additional Info
For some reason GitHub actions are super lenient when it comes to free CI time. Northstar org for example has unlimited CI build time (including Windows hosts, which honestly is ridiculous ^^) so using up free CI time per month shouldn't be a worry.
There's an ongoing discussion on discord (northstar-installer-talk thread) about modding and installers in general.
Let's focus on one piece of software instead of several.
I recently added some status toasts for when you install mods, an error occurs, or a mod isn't follow the folder structure that it should, with this comes new localization.
@Alystrasz @AA-Delta
The following strings are missing:
"gui.toast.title.installed": "Mod installed!",
"gui.toast.title.failed": "Failed to install",
"gui.toast.title.malformed": "Incorrect folder structure!",
"gui.toast.desc.installed": "has been installed successfully!",
"gui.toast.desc.malformed": "has an incorrect folder structure, if you're the developer, you should fix this.",
"gui.toast.desc.failed": "An unknown error occurred while trying to install the mod. This may be the author's fault, and it may also be Viper's fault.",
If Bob validates this launcher, we should put some effort into translating it.
What feature would you like added?
-would it be possible to get the launcher signed for windows
Why should this feature be added?
-getting viper signed would make it much easier to install for those who are new to modding and have an overzealous antivirus
Additional Info
-I'm not sure this is really feasible, however another option could be to also distribute the launcher on itch so it can be run in itch's secure environment
One main interest of this software is that it has a command-line interface, which allows servers owners to update their configurations without any GUI.
We probably should be more explicit in telling how to install and use this in console.
Describe the bug
Viper fails to auto-detect Titanfall2 path when launching for the first time.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Viper should be able to detect the game path. Especially SteamDeck which brings a lot of Linux noobs needs this feature to work.
(AFAIK auto-detecting path should work on Linux with #53)
Screenshots
Forgot to take a screenshot of the message (if you really want one, let me know where Viper stores the game path and I'll grab one)
Version:
v1.2.5
Additional Info
By default, the install for SteamDeck games is on /home/deck/.steam/steam/steamapps/common/
. This of course changes if the game is installed on a SD card.
Viper should also allow installing/removing Northstar mods.
We should also think how we can update them, since there's no standard version to do it (yet).
What feature would you like added?
Viper should prioritise checking for its own updates over Northstar updates, checking for Northstar updates only after the Viper update check has been completed.
Why should this feature be added?
The idea is that if anyone uses an older version of Viper that might have issues with a newer version of Northstar, said version of Viper won't be able to download the Northstar update until the user either updated Viper or dismissed the update dialogue.
Such a situation hasn't occurred yet nor might it ever occur but the idea is should there ever be a moment where Viper has issues with a new release of Northstar, an update for Viper can be pushed that resolves the problem and Viper users will get the update for Viper before updating Northstar.
Conversely without this, say a new Northstar version causes a crash for Viper when trying to download it. User's will restart their Viper client and it tries to auto-download Northstar again, causing it yet to crash. Viper won't auto-update due to Viper updates not being prioritised. Users will have to manually update Viper by downloading the release from Github to resolve the hypothetical crash-loop scenario.
Additional Info
Overall this is a pretty low priority feature until it's too late already :P
Describe the bug
Northstars's ns_startup_args.txt
is moved to ns_startup_args.txt.excluded
, when checking for Northstar updates. However, if Northstar is already up to date the file is not restored and there is no ns_startup_args.txt
, only ns_startup_args.txt.excluded
remains, which Northstar ignores.
There is the same issue with ns_startup_args_dedi.txt
.
To Reproduce
Check for Northstar updates within Viper, when Northstar is already on the latest version. There will be no more ns_startup_args.txt
in the game path.
Expected behavior
Don't move ns_startup_args.txt
, if no update is found.
Describe the bug
If you click "Cancel" or the close button on the windows explorer popout when clicking "Install Mod" in the Northstar "Mods" tab, every option in the Northstar tab will be greyed out until Viper is re-opened, or "Check for updates / Up-to-date" is clicked.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Either the buttons should not be greyed out when opening explorer, or the buttons should be clickable again after explorer is closed.
Screenshots
(Buttons before opening explorer) https://prnt.sc/26xhfr0
(Buttons while explorer is open) https://prnt.sc/26xhgmf
(Buttons after explorer is closed) https://prnt.sc/26xhh0q
Version:
Release 1.2.2
Additional Info
Any extra info should go here!
The Anti-Virus software "Kaspersky" found a Trojan in the C:\Users\ ---\AppData\Local\viper-updater\pending folder
File name: Viper-Setup-1.2.2.exe
It didn't ping when installed
A random scan was started and this popped up
Viper is installed for about 1-2 weeks now
Once installed with compatible formats (Windows NSIS and Linux AppImage), Viper should be able to automatically install newer versions of itself.
Describe the bug
Error window appears on startup
clicking ok gives a different error window with a similar message
Viper window still pops up but no buttons work
Game still runs on steam
worked fairly recently, don't think I made any major changes to computer settings
Is this a problem with my computer or a glitch in the program
version 1.3.1
already tried reinstalling viper, same problem
When first launching Viper, the user say where is located his Titanfall game.
Once done, he can click the "Northstar" button to launch the game, which will fail, because Northstar has not been installed on his folder.
I think we should replace "Northstar" button text with "Install" (if NorthstarLauncher.exe
is not found for instance) and install ns on first click, instead of trying to run an executable we know is not there.
What feature would you like added?
We should be able to drag a mod file into the Viper window to install the mod like you would with the install mod button.
Why should this feature be added?
More convenient to install mods from the Discord, or any mods that arent on ThunderStore.
Additional Info
Feel free to put anything here or delete it if not relevant.
Since Viper HTTP requests to GitHub are not authenticated, we have a rate-limit of 60 requests/hour, which is not much and can be reached quicky on certain occasions (when developing, for example...).
We use GitHub requests for two reasons:
I think we should cache these requests' results for like 5-10 minutes.
Source: https://docs.github.com/en/rest/overview/resources-in-the-rest-api#rate-limiting
What feature would you like added?
Add a command line argument like --skip-viper-update-check
to prevent Viper from performing an update check (and self-updating)
Why should this feature be added?
Mostly needed as part of #75 to prevent a Flatpak packaged version of the Viper AppImage perform an update in an environment that it wasn't designed for.
Might also be useful for other packaged solutions like chocolatey, scoop, winget, and snap.
Additional Info
I know that viper.json
has a field called "autoupdate"
. I'm not quite sure how it would come into play. Would --skip-viper-update-check
cause Viper to ignore "autoupdate"
. Or do we maybe wanna just somehow make sure that "autoupdate"
is always set to false
for packaged solutions?
Describe the bug
Technically not so much a bug as unexpected behaviour from a user's perspective. For a while now I was wondering why when launching Northstar from Viper would reset my ns_startup_args.txt
even without an update pending.
(I usually launch Northstar via the Launcher executable)
Turns out Viper stores the state of the startup args in it's own storage (I think) and overwrites ns_startup_args.txt
on launch / when saving settings.
This is problematic when a user manually edits ns_startup_args.txt
, as then launching Nortstar with Viper wipes the made changes. When opening the settings, Viper should read out the contents of ns_startup_args.txt
and display those.
To Reproduce
Steps to reproduce the behavior:
ns_startup_args.txt
ns_startup_args.txt
, file was reset to state displayed in ViperExpected behavior
Viper should read out ns_startup_args.txt
when opening settings instead of relying on its own internal save.
Screenshots
None
Version:
v1.2.4
Additional Info
None
What feature would you like added?
It would be nice to set a list of custom launch arguments within the Viper GUI. These are then appended to ns_startup_args.txt
on every Northstar update and also are passed on as command parameters, when starting vanilla TF2.
Why should this feature be added?
The convenience of not having to manually edit ns_startup_args.txt
after every update or using a shortcut outside of Viper to launch vanilla TF2 with custom arguments.
Additional Info
These launch arguments are supported but TF2/Northstar:
pcgamingwiki.com
Northstar-Wiki
I personally find these arguments useful:
-novid
-high
-noborder
+cl_showfps 1
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Supposed to be in english, ask what language I want to use or at least let me change it in-app
Version:
1.3.1
Additional Info
My pc is in french but I like having the apps in english
Describe the bug
The option to manually set language seems to have no effect when using the Viper AppImage.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Language change should be applied to UI after restart.
Version:
v1.3.2
Additional Info
Viper Flatpak also crashes completely but that seems to related due to unpacking the AppImage and is discussed in flathub/com.github._0negal.Viper#1
Describe the bug
If Steam is installed via Flatpak, Viper is unable to detect the Titanfall2 install location.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Viper should be able to auto-detect the Titanfall2 install location even if Steam is installed as a Flatpak
Version:
v1.2.5
Additional Info
I wanted to check whether the failure to auto-detect install location as part of #94 also affects versions of Linux that aren't SteamOS. So I tried it on another Linux machine of mine, where it promptly failed. I realised however that this was due to the fact that Steam was installed as a Flatpak which probably wasn't anticipated when auto-detecting install path on Linux was added to Viper in #53.
For the Flatpak version of Steam, the default install location of Titanfall2 is ~/.var/app/com.valvesoftware.Steam/.steam/steam/steamapps/common/Titanfall2
Content of ~/.var/app/com.valvesoftware.Steam/.steam/steam/steamapps/libraryfolders.vdf
which contains the appid for Titanfall2 (1237970
):
"libraryfolders"
{
"contentstatsid" "1743050728782069232"
"0"
{
"path" "/home/asus/.var/app/com.valvesoftware.Steam/.local/share/Steam"
"label" ""
"contentid" "1743050728782069232"
"totalsize" "0"
"update_clean_bytes_tally" "0"
"time_last_update_corruption" "0"
"apps"
{
"228980" "135939663"
"1237970" "68431323338"
"1887720" "1112259872"
}
}
}
Also I noticed that ~/.var/app/com.valvesoftware.Steam/.steam/steam
links to ~/.var/app/com.valvesoftware.Steam/.local/share/Steam
so I guess the two paths can be used interchangeably?
When updating NS it simply unpacks the zip in the game path, however that means if a file was removed in the core mods, when you then update the old files will still be there, instead we should therefore remove core mods when updating.
We should also do the same when installing mods, aka if a mod is detected to already be installed, remove the original then install, as to avoid those leftover files...
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.