Commit graph

75 commits

Author SHA1 Message Date
Pat Hartl
1558af8a98 Initial scaffolded plugin framework code 2026-07-23 19:47:22 -05:00
Pat Hartl
217fcfa0b6 Merge branch 'main' into release/2.2.0
# Conflicts:
#	LANCommander.Server.Services/ActionService.cs
#	LANCommander.Server.Services/SavePathService.cs
2026-07-22 17:13:51 -05:00
Pat Hartl
4acf5936c5 Add shorter timeout for server notifications 2026-07-21 18:01:34 -05:00
Pat Hartl
f31925e399 Add runtime platform flag to actions, scripts, and save paths 2026-07-08 02:15:54 -05:00
Pat Hartl
ec8af3f268 Log any version mismatch 2026-07-07 01:53:22 -05:00
Pat Hartl
6c6a0245c6 Load images from local when in offline mode 2026-07-07 01:49:46 -05:00
Pat Hartl
6e954ff5b8 Log exceptions from save upload failures 2026-07-04 14:27:00 -05:00
Pat Hartl
38db011de8 Show library before it's fully imported
Loads the user's library from the /Library/Games endpoint and displays it immediately. This route returns a full data set for the user's games. Images are rendered directly from the server. The import still runs in the background, preserving any offline functionality.
2026-07-04 03:33:13 -05:00
Pat Hartl
862f266275 Reorder components of game installations
Game installs now install items in the following order:
1. Base Game
2. Addons
3. Tools
4. Redistributables

Ref #414
2026-07-02 20:42:21 -05:00
Pat Hartl
8d96acc98d Ensure tools are uninstalled before game is uninstalled
Ref #414
2026-07-02 20:21:08 -05:00
Pat Hartl
1e4555edf1 Add versioning support to launcher 2026-06-30 20:48:13 -05:00
Pat Hartl
f87756243e Add support for defining PowerShell modules
Adds a new section "Scripting" in the server UI where PowerShell modules can be defined. These can be used for defining a library of functions that can be used in any script. These modules are automatically synced to the launcher and imported upon script execution.
2026-06-28 23:02:35 -05:00
Pat Hartl
171e7dcaf0 Invalidate profile cache when logging out
Fixes #422
2026-06-27 18:44:24 -05:00
Pat Hartl
4d32f958cc Additional gating of UI for user libraries
Ref #423
2026-06-27 18:18:55 -05:00
Pat Hartl
8760b2d961 Default action ServerHost value to LANCommander server address 2026-06-27 17:59:17 -05:00
Pat Hartl
f53d5bfc4c Add "Always Install" option to tools
Ref #414
2026-06-27 12:11:17 -05:00
Pat Hartl
42ca077416 Add auto redirect to provider to launcher 2026-06-22 21:08:48 -05:00
Pat Hartl
6b2610a200 Rework Tool installation / action resolution
Amends the tool installation to use game install directory and correctly populate actions. Tools previously used an undocumented/unpopulated/inaccessible global install directory. This has been changed to use the game's install directory. Uninstall scripts are also now executed for tools when the game is uninstalled.

Fixes #414
2026-06-21 21:16:45 -05:00
Pat Hartl
6e7bcccf45 Add more logging to archive extraction, allow customization of retry attempts on install 2026-06-20 03:33:29 -05:00
Pat Hartl
fa63e8e95a Add uninstall script to Redistributables 2026-06-19 20:37:13 -05:00
Pat Hartl
814d0b3395 Add "Allow Registration" setting to server
Fixes #408
2026-06-14 21:46:29 -05:00
Pat Hartl
ecaecd21bb Send keepalive while game is running
Sends a keepalive/heartbeat signal across RPC while a game is running. Server-side this enables the ability to manage play session state with realtime information instead of hoping that the client will stop the play session. Keepalives are tracked in server cache allowing for future potential horizontally-scaled server instances.
2026-06-14 00:53:45 -05:00
Pat Hartl
4fd268d9c3 Check redistributables for updates 2026-06-10 21:51:12 -05:00
Pat Hartl
c605c5e8d6 Refresh manifest and scripts on disk if no update exists 2026-06-10 20:39:50 -05:00
Pat Hartl
62c03621a3 Rework update functionality as an additional download workflow 2026-06-08 19:00:56 -05:00
Pat Hartl
819cb28d17 Packager app improvements, metadata endpoints
- Add ability to connect to server
- Add uploading of finished package to server
- Add metadata lookup when connected to server
- Fix layout when specifying action
- Hide finish button at generate step
2026-06-03 19:43:45 -05:00
Pat Hartl
70a74599c4 Rename Install-LatestArchive to Expand-LatestArchive. Add to redist + tools 2026-05-31 22:29:00 -05:00
Pat Hartl
4c89aa60fe Add cmdlet for extracting the latest archive for a game 2026-05-31 22:19:03 -05:00
Pat Hartl
f88ef42c42 Normalize save paths to use / before regex matching
Fixes #266
2026-05-28 22:46:24 -05:00
Pat Hartl
68b112d6ce Implement RunWrapper script execution for redistributables
RunWrapper scripts were defined as a script type but never executed. This adds full execution support during game launch, with proper game running state tracking and cancellation/stop support including child process cleanup.
2026-05-26 20:11:53 -05:00
Pat Hartl
527d3abaf2 Add more save handling logging 2026-05-25 04:16:19 -05:00
Pat Hartl
1897fc50b9
Merge pull request #403 from akifreak/fix-beacon-discovery
Fix beacon discovery
2026-05-24 22:24:16 -05:00
Pat Hartl
2bb95e8a12 Formatting 2026-05-24 00:09:13 -05:00
Pat Hartl
d8452efb5a Track redist files
Tracks files created in the game's install directory when the install script is run. This results in the ability to delete redist files when the game is uninstalled.
2026-05-23 22:59:56 -05:00
Pat Hartl
d2b6d65c93 Always run redist install if no detect script exists 2026-05-23 22:17:32 -05:00
Pat Hartl
8772b3a000 Add Discord rich presence 2026-05-17 20:38:50 -05:00
akifreak
d6ea7936b1 Forward probe beacon responses to BeaconClient event 2026-05-17 09:53:44 +02:00
akifreak
ae144043f3 Harden DiscoveryProbe receive callback error handling
Split the single try/catch into three isolated blocks so that:
- ObjectDisposedException on EndReceiveFrom stops the loop cleanly
- Other socket errors still re-arm the socket to keep listening
- Non-JSON packets (e.g. loopback of our own probe) are silently
  dropped without killing the receive loop
2026-05-17 09:53:44 +02:00
akifreak
8569b56ffe Use socket directly for broadcast send in DiscoveryProbe
Switch SendAsync from UdpClient.SendAsync to Socket.SendTo, and enable
the broadcast socket option before binding. The UdpClient path was not
reliably sending to broadcast addresses on all platforms.
2026-05-17 09:46:29 +02:00
Pat Hartl
5ad55faa5a Add support for tools 2026-05-14 00:29:48 -05:00
Pat Hartl
90220b69ac Fix Avalonia token redemption for SSO 2026-05-12 19:57:43 -05:00
Pat Hartl
2a98a85de0 Fix OIDC auth handling, add external provider support to Avalonia launcher 2026-05-12 17:21:53 -05:00
Pat Hartl
e5815a7eb8 Implement IDisposable for chat 2026-05-09 19:42:41 -05:00
Pat Hartl
16cf4dbcce Share HTTP client across server pings 2026-05-09 19:42:09 -05:00
Pat Hartl
823b543519 Dispose cancellation token after game stopped 2026-05-09 19:41:52 -05:00
Pat Hartl
92f863246d Don't delete redist files 2026-05-07 23:39:28 -05:00
Pat Hartl
70557e4a9b Fix script working directory for games 2026-05-07 23:12:15 -05:00
Pat Hartl
879885c640 Add alert message if action failed to start 2026-05-07 23:12:00 -05:00
Pat Hartl
f9abb08141 Stream video using new endpoint, adjust video overlay UI 2026-04-26 02:14:45 -05:00
Pat Hartl
3f2b8e32d9 Add transfer speed chart to download queue items, arrange task list as timeline, restyle queue. 2026-04-22 01:54:07 -05:00