Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
dbeb91c
initial project movements
Rinary1 Jul 26, 2026
e7b5a92
no more indexer
Rinary1 Jul 26, 2026
138d2b4
replace localization indexing
Rinary1 Jul 26, 2026
7c9fa08
localization in WebUI
Rinary1 Jul 26, 2026
c435e48
replace AppState to LocalizedComponentBase
Rinary1 Jul 26, 2026
5174f11
namespace changes and first bridging iteration
Rinary1 Jul 26, 2026
9da0b24
bridging 2
Rinary1 Jul 26, 2026
9c90823
bridge iteration 3
Rinary1 Jul 26, 2026
155cf96
resolve all UI errors, bridge iteration 4
Rinary1 Jul 26, 2026
794195e
no MAUI yes Avalonia(Blazor Host via Kestrel)
Rinary1 Jul 26, 2026
7f14fd4
Avalonia methods
Rinary1 Jul 26, 2026
86576bd
bridge last iteration
Rinary1 Jul 26, 2026
f839f7e
static assets
Rinary1 Jul 27, 2026
32360aa
fix themes
Rinary1 Jul 27, 2026
81b73aa
markdown support + fix version mismatch
Rinary1 Jul 27, 2026
fc9a292
fix error
Rinary1 Jul 27, 2026
b1c6064
build workflow
Rinary1 Jul 27, 2026
a488877
new release
Rinary1 Jul 27, 2026
81522d3
auto-updater for linux/mac
Rinary1 Jul 27, 2026
a7cdec7
trying to fix deeplink
Rinary1 Jul 27, 2026
9968ad6
updated copy
Rinary1 Jul 27, 2026
3eba12b
fix http client missing
Rinary1 Jul 27, 2026
bc1a3f7
deeplink fixes
Rinary1 Jul 27, 2026
9039a81
new changelog + some missed parts
Rinary1 Jul 27, 2026
d7d4754
fix scroll + dev tools
Rinary1 Jul 27, 2026
864240a
app state return
Rinary1 Jul 27, 2026
ea82c13
fixed warnings
Rinary1 Jul 27, 2026
ab50d26
fixed closing
Rinary1 Jul 27, 2026
0d2b404
protected allowed
Rinary1 Jul 27, 2026
1947f2a
another misc warnings
Rinary1 Jul 27, 2026
21b3b7c
fix should update on pre-release
Rinary1 Jul 28, 2026
b2d6f7a
fixed spinner
Rinary1 Jul 28, 2026
4a4e059
prettify settings page
Rinary1 Jul 28, 2026
a1b8b69
another misc fixes
Rinary1 Jul 28, 2026
6ac428a
fix file picker on linux
Rinary1 Jul 28, 2026
be15afd
small clean up
Rinary1 Jul 28, 2026
cd48bba
small fixes
Rinary1 Jul 28, 2026
a297792
another small fix
Rinary1 Jul 28, 2026
81040c5
fix replays
Rinary1 Jul 28, 2026
b5a976f
fix text fields for linux
Rinary1 Jul 28, 2026
376b638
fix deeplink for linux
Rinary1 Jul 28, 2026
14056b7
fix
Rinary1 Jul 28, 2026
30fb499
output name consistent
Rinary1 Jul 28, 2026
ce29ea2
new navbar + margin + fix input on Linux
Rinary1 Jul 28, 2026
164eb93
totally experimental thingy
Rinary1 Jul 28, 2026
948d7a2
remove bootstrap
Rinary1 Jul 28, 2026
65de795
temp check
Rinary1 Jul 28, 2026
8d4f154
fix enter in auth page
Rinary1 Jul 28, 2026
da9698b
custom nativewebview
Rinary1 Jul 29, 2026
013bf03
custom avalonia and webview
Rinary1 Jul 29, 2026
f1f0b35
project fix
Rinary1 Jul 29, 2026
bcd00d4
fix x2
Rinary1 Jul 29, 2026
4af335b
upd build
Rinary1 Jul 29, 2026
a2a864a
package fixes
Rinary1 Jul 29, 2026
17bdc5b
upd
Rinary1 Jul 29, 2026
7cef4db
another try
Rinary1 Jul 29, 2026
0db14bc
probably fix closing
Rinary1 Jul 29, 2026
784ccfc
rounded borders
Rinary1 Jul 29, 2026
a2ffca2
try 3
Rinary1 Jul 29, 2026
7147032
temporary rallback patch
Rinary1 Jul 30, 2026
cc8bb97
return patch
Rinary1 Jul 30, 2026
f8f9204
trying to fix logins issue
Rinary1 Jul 30, 2026
b3f24a0
next avalonia patch
Rinary1 Jul 30, 2026
7f4b200
auth fixes
Rinary1 Jul 30, 2026
ffa4a4a
fancy auth page
Rinary1 Jul 30, 2026
ed60302
new themes
Rinary1 Jul 30, 2026
69b5018
fix tray
Rinary1 Jul 30, 2026
429a12d
small fix
Rinary1 Jul 30, 2026
22432f6
fix fetcher
Rinary1 Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
13 changes: 11 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,12 @@ dotnet_code_quality_unused_parameters = all:warning

# Suppression preferences
dotnet_remove_unnecessary_suppression_exclusions = none
dotnet_diagnostic.IDE0079.severity = warning # flag suppressions that are no longer needed - complements the line above

# Unused code
dotnet_diagnostic.IDE0005.severity = warning # unused using directives - the actual ask; needs EnforceCodeStyleInBuild=true in csproj to fire during `dotnet build`, not just in the IDE
dotnet_diagnostic.IDE0051.severity = warning # private member is never used
dotnet_diagnostic.IDE0052.severity = warning # private member's value is never read (assigned but unused)

# New line preferences
dotnet_style_allow_multiple_blank_lines_experimental = false:warning
Expand Down Expand Up @@ -144,8 +150,8 @@ csharp_style_prefer_range_operator = true:warning
csharp_style_prefer_tuple_swap = true:warning
csharp_style_prefer_utf8_string_literals = true
csharp_style_throw_expression = true:warning
csharp_style_unused_value_assignment_preference = discard_variable
csharp_style_unused_value_expression_statement_preference = discard_variable
csharp_style_unused_value_assignment_preference = discard_variable:warning
csharp_style_unused_value_expression_statement_preference = discard_variable:warning

# 'using' directive preferences
csharp_using_directive_placement = outside_namespace:warning
Expand Down Expand Up @@ -288,5 +294,8 @@ dotnet_naming_style.begin_s_.required_suffix =
dotnet_naming_style.begin_s_.word_separator =
dotnet_naming_style.begin_s_.capitalization = camel_case

# I don't want to comment every shit
dotnet_diagnostic.CS1591.severity = none

[*.{cs,vb}]
dotnet_diagnostic.CA1873.severity = none
37 changes: 37 additions & 0 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: build-test
on:
pull_request:
branches: [ main ]

env:
DOTNET_VERSION: '11.0.x'
MAIN_PROJECT: 'Starlight.Launcher/Starlight.Launcher.csproj'
LOADER_PROJECT: 'Robust.Loader/Robust.Loader.csproj'

jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: windows-latest
rid: win-x64
- os: ubuntu-latest
rid: linux-x64
- os: macos-latest
rid: osx-arm64
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/setup-dotnet@v4
with:
dotnet-quality: preview
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Build launcher
shell: bash
run: dotnet build ${{ env.MAIN_PROJECT }} -c Release -r ${{ matrix.rid }}
- name: Build loader
shell: bash
run: dotnet build ${{ env.LOADER_PROJECT }} -c Release -r ${{ matrix.rid }}
224 changes: 198 additions & 26 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
name: build-and-release

on:
push:
tags: ['v*']
workflow_dispatch:

permissions:
contents: write

env:
DOTNET_VERSION: '11.0.x'
MAIN_PROJECT: 'Starlight.Launcher/Starlight.Launcher.csproj'
Expand All @@ -22,48 +19,29 @@ jobs:
- uses: actions/checkout@v4
with:
submodules: recursive

- uses: actions/setup-dotnet@v4
with:
dotnet-quality: preview
dotnet-version: ${{ env.DOTNET_VERSION }}

- name: Restore Workloads
shell: pwsh
run: |
dotnet workload restore ${{ env.MAIN_PROJECT }}
dotnet workload restore ${{ env.LOADER_PROJECT }}

- name: Resolve version
id: ver
shell: pwsh
run: |
$v = "${{ github.ref_name }}" -replace '^v',''
echo "version=$v" >> $env:GITHUB_OUTPUT

- name: Publish (win-x64, self-contained)
shell: pwsh
run: |
dotnet publish ${{ env.MAIN_PROJECT }} -c Release -f net11.0-windows10.0.19041.0 -r win-x64 --self-contained true -p:WindowsAppSDKSelfContained=true -p:FullRelease=true -p:Version=${{ steps.ver.outputs.version }} -o publish/win-x64
dotnet publish ${{ env.MAIN_PROJECT }} -c Release -r win-x64 --self-contained true -p:FullRelease=true -p:Version=${{ steps.ver.outputs.version }} -o publish/win-x64
dotnet publish ${{ env.LOADER_PROJECT }} -c Release -r win-x64 --self-contained true -p:Version=${{ steps.ver.outputs.version }} -o publish/win-x64/loader

- name: Verify launcher output
shell: pwsh
run: |
Get-ChildItem Starlight.Launcher/bin/Release -Recurse | Select-Object FullName

- name: Inspect output
shell: pwsh
run: |
Get-ChildItem publish/win-x64 -Recurse

run: Get-ChildItem publish/win-x64 -Recurse
- name: Download WebView2 bootstrapper
shell: pwsh
run: Invoke-WebRequest "https://go.microsoft.com/fwlink/p/?LinkId=2124703" -OutFile installer/MicrosoftEdgeWebview2Setup.exe

- name: Install Inno Setup
run: choco install innosetup --no-progress -y

- name: Build installer
shell: pwsh
run: >
Expand All @@ -73,14 +51,208 @@ jobs:
/DExeName=${{ env.EXE_NAME }}
"/DSourceDir=${{ github.workspace }}\publish\win-x64"
installer\Starlight.iss

- uses: actions/upload-artifact@v4
with:
name: windows-installer
path: installer/Output/*.exe

linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/setup-dotnet@v4
with:
dotnet-quality: preview
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Resolve version
id: ver
run: |
v="${GITHUB_REF_NAME#v}"
echo "version=$v" >> "$GITHUB_OUTPUT"
- name: Publish (linux-x64, self-contained)
run: |
dotnet publish ${{ env.MAIN_PROJECT }} -c Release -r linux-x64 --self-contained true -p:FullRelease=true -p:Version=${{ steps.ver.outputs.version }} -o publish/linux-x64
dotnet publish ${{ env.LOADER_PROJECT }} -c Release -r linux-x64 --self-contained true -p:Version=${{ steps.ver.outputs.version }} -o publish/linux-x64/loader
- name: Mark executables +x
run: |
chmod +x publish/linux-x64/Starlight.Launcher
chmod +x publish/linux-x64/loader/Robust.Loader

- name: Package as tar.gz
run: tar -czf Starlight.Launcher-linux-x64-${{ steps.ver.outputs.version }}.tar.gz -C publish/linux-x64 .
- uses: actions/upload-artifact@v4
with:
name: linux-tarball
path: Starlight.Launcher-linux-x64-*.tar.gz

- name: Assemble .deb package tree
run: |
set -e
PKG_VERSION="${{ steps.ver.outputs.version }}"
PKG_ROOT="deb/starlight-launcher_${PKG_VERSION}_amd64"

mkdir -p "$PKG_ROOT/DEBIAN"
mkdir -p "$PKG_ROOT/opt/starlight-launcher"
mkdir -p "$PKG_ROOT/usr/bin"
mkdir -p "$PKG_ROOT/usr/share/applications"
mkdir -p "$PKG_ROOT/usr/share/icons/hicolor/256x256/apps"

cp -R publish/linux-x64/. "$PKG_ROOT/opt/starlight-launcher/"
chmod +x "$PKG_ROOT/opt/starlight-launcher/Starlight.Launcher"
chmod +x "$PKG_ROOT/opt/starlight-launcher/loader/Robust.Loader"

ln -s /opt/starlight-launcher/Starlight.Launcher "$PKG_ROOT/usr/bin/starlight-launcher"

cp PublishFiles/icon.png "$PKG_ROOT/usr/share/icons/hicolor/256x256/apps/starlight-launcher.png" || true

cat > "$PKG_ROOT/usr/share/applications/starlight-launcher.desktop" << DESKTOP
[Desktop Entry]
Type=Application
Name=Starlight Launcher
Comment=Starlight Launcher for Space Station 14
Exec=/opt/starlight-launcher/Starlight.Launcher %u
Icon=starlight-launcher
Terminal=false
Categories=Game;
MimeType=x-scheme-handler/starlight;
DESKTOP

cat > "$PKG_ROOT/DEBIAN/control" << CONTROL
Package: starlight-launcher
Version: ${PKG_VERSION}
Section: games
Priority: optional
Architecture: amd64
Maintainer: Starlight Team <noreply@example.com>
Description: Starlight Launcher for Space Station 14
A modern, cross-platform launcher built on Avalonia and Blazor.
CONTROL

cat > "$PKG_ROOT/DEBIAN/postinst" << 'POSTINST'
#!/bin/sh
set -e
# Refreshes the desktop-file and MIME caches so the new app/association
# actually shows up without the user having to log out and back in.
update-desktop-database /usr/share/applications >/dev/null 2>&1 || true
gtk-update-icon-cache /usr/share/icons/hicolor >/dev/null 2>&1 || true
exit 0
POSTINST
chmod 0755 "$PKG_ROOT/DEBIAN/postinst"

- name: Build .deb
run: |
dpkg-deb --build --root-owner-group \
"deb/starlight-launcher_${{ steps.ver.outputs.version }}_amd64" \
"Starlight.Launcher-linux-x64-${{ steps.ver.outputs.version }}.deb"

- uses: actions/upload-artifact@v4
with:
name: linux-deb
path: Starlight.Launcher-*.deb

- name: Build AppImage
run: |
set -e
APPDIR=AppDir
mkdir -p "$APPDIR/usr/bin" "$APPDIR/usr/share/applications" "$APPDIR/usr/share/icons/hicolor/256x256/apps"

cp -R publish/linux-x64/. "$APPDIR/usr/bin/"
chmod +x "$APPDIR/usr/bin/Starlight.Launcher"
chmod +x "$APPDIR/usr/bin/loader/Robust.Loader"

cp PublishFiles/icon.png "$APPDIR/usr/share/icons/hicolor/256x256/apps/starlight-launcher.png" || true
cp PublishFiles/icon.png "$APPDIR/starlight-launcher.png" || true

cat > "$APPDIR/starlight-launcher.desktop" << DESKTOP
[Desktop Entry]
Type=Application
Name=Starlight Launcher
Exec=Starlight.Launcher %u
Icon=starlight-launcher
Categories=Game;
MimeType=x-scheme-handler/starlight;
DESKTOP

cat > "$APPDIR/AppRun" << 'APPRUN'
#!/bin/sh
HERE="$(dirname "$(readlink -f "$0")")"
exec "$HERE/usr/bin/Starlight.Launcher" "$@"
APPRUN
chmod +x "$APPDIR/AppRun"

wget -q https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage -O appimagetool
chmod +x appimagetool

./appimagetool --appimage-extract-and-run "$APPDIR" "Starlight.Launcher-linux-x64-${{ steps.ver.outputs.version }}.AppImage"

- uses: actions/upload-artifact@v4
with:
name: linux-appimage
path: Starlight.Launcher-*.AppImage

macos:
runs-on: macos-latest
strategy:
matrix:
rid: [osx-x64, osx-arm64]
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/setup-dotnet@v4
with:
dotnet-quality: preview
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Resolve version
id: ver
run: |
v="${GITHUB_REF_NAME#v}"
echo "version=$v" >> "$GITHUB_OUTPUT"
- name: Publish (${{ matrix.rid }}, self-contained)
run: |
dotnet publish ${{ env.MAIN_PROJECT }} -c Release -r ${{ matrix.rid }} --self-contained true -p:FullRelease=true -p:Version=${{ steps.ver.outputs.version }} -o publish/${{ matrix.rid }}
dotnet publish ${{ env.LOADER_PROJECT }} -c Release -r ${{ matrix.rid }} --self-contained true -p:Version=${{ steps.ver.outputs.version }} -o publish/${{ matrix.rid }}/loader
- name: Assemble .app bundle
run: |
APP="Starlight Launcher.app"
mkdir -p "$APP/Contents/MacOS" "$APP/Contents/Resources"
cp -R publish/${{ matrix.rid }}/. "$APP/Contents/MacOS/"
chmod +x "$APP/Contents/MacOS/Starlight.Launcher"
chmod +x "$APP/Contents/MacOS/loader/Robust.Loader"
cp Starlight.Launcher/Resources/AppIcon/icon.icns "$APP/Contents/Resources/icon.icns" || true
cat > "$APP/Contents/Info.plist" <<PLIST
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key><string>Starlight.Launcher</string>
<key>CFBundleIdentifier</key><string>com.starlight.launcher</string>
<key>CFBundleName</key><string>Starlight Launcher</string>
<key>CFBundleShortVersionString</key><string>${{ steps.ver.outputs.version }}</string>
<key>CFBundleIconFile</key><string>icon.icns</string>
<key>CFBundlePackageType</key><string>APPL</string>
<key>LSMinimumSystemVersion</key><string>12.0</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key><string>com.starlight.launcher.protocol</string>
<key>CFBundleURLSchemes</key><array><string>starlight</string></array>
</dict>
</array>
</dict>
</plist>
PLIST
- name: Package
run: ditto -c -k --sequesterRsrc --keepParent "Starlight Launcher.app" Starlight.Launcher-${{ matrix.rid }}-${{ steps.ver.outputs.version }}.zip
- uses: actions/upload-artifact@v4
with:
name: macos-${{ matrix.rid }}-build
path: Starlight.Launcher-${{ matrix.rid }}-*.zip

release:
needs: [windows]
needs: [windows, linux, macos]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v4
Expand Down
6 changes: 1 addition & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,4 @@ x86/
*.nuget.targets

# Publish Web Output
*.[Pp]ublish.xml


# Custom manifest for localization
**/[Rr]esources/[Rr]aw/[Ll]ocale/[Mm]anifest.json
*.[Pp]ublish.xml
8 changes: 0 additions & 8 deletions LocalizationIndexer/LocalizationIndexer.csproj

This file was deleted.

26 changes: 0 additions & 26 deletions LocalizationIndexer/Program.cs

This file was deleted.

Binary file added PublishFiles/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading