Commit graph

139 commits

Author SHA1 Message Date
Pat Hartl
8bf006b1a4 Refactor TS to classes, remove factory in place of static Create factory method, rework module importing 2026-01-07 18:25:17 -06:00
Pat Hartl
e9b3f14896 Use Terminal component for server PowerShell debugger 2026-01-04 00:03:31 -06:00
Pat Hartl
fbcb02a863 Move useful terminal methods to component, remove old addon registration 2026-01-03 23:58:50 -06:00
Pat Hartl
698a7523b6 Code cleanup
- Move all Launcher components to LANCommander.Launcher.UI namespace
- Move all SCSS files next to components (when possible)
- Refactor styles that control overflow of content into titlebar to MainWindow only
- Remove use in launcher UI of SDK.Client
2025-12-31 20:01:04 -06:00
Aaron Powell
eee946c6e0 Updating some missing renames
Razor tooling doesn't detect property renames to update usages (known issue tracked in https://github.com/dotnet/razor/issues/7060)
2025-12-17 14:56:26 +11:00
Pat Hartl
17fa802c19 Implementation of script debugger component with RPC via SignalR 2025-12-10 20:55:38 -06:00
Pat Hartl
30423a139a Update import event handlers to AsyncEventHandler 2025-12-05 21:24:08 -06:00
Pat Hartl
b4e8925e0e Merge branch 'main' into development 2025-12-01 17:57:07 -06:00
Pat Hartl
50f02125a0
Merge pull request #368 from aaronpowell/library-page
Library page
2025-12-01 17:55:14 -06:00
Aaron Powell
8d8ea04fa9 More warnings and defensive code through the Library page and components 2025-12-01 22:54:38 +11:00
Aaron Powell
4eb299eec9 Cleaning up warnings in the GameActionBar 2025-12-01 22:46:38 +11:00
Aaron Powell
eb4adabb35 Adding some resiliance to the download queue 2025-12-01 22:40:47 +11:00
Pat Hartl
2ddcd75c19 Bind import UI events 2025-12-01 01:05:32 -06:00
Pat Hartl
6dfc0906ac Refactor launcher library importing, manifests
Switched the library importing in the launcher to work based on a queue. As a new game is added to the queue, it should find any related data and also add it to the queue. This should result in an easier to maintain importer while reducing the load on the launcher's DAL. This may result in more RAM usage while importing. Local manifests have also been refactored to match manifests in import/export LCX files, removing the old manifest format. This is a large breaking change that will probably break existing game installations. A migration will probably have to be created.
2025-11-29 18:24:27 -06:00
Pat Hartl
a281ef473e Fix script debugging in launcher, fix cmdlet registration 2025-11-26 22:38:04 -06:00
Pat Hartl
e6c12b4809 Refactor script debugging
Instead of providing delegates to a ScriptClient singleton, script execution now relies on dependency injection for debugging. This can be handled by registering an implementation of IScriptDebugger. Multiple script debuggers are supported. These changes required the creation of a PowerShellScriptFactory to handle DI of the service provider to the script.

In the case of LANCommander, "debugging" scripts really just gives an opportunity for the application to break after a script's execution and provide a poor-man's pty. This could be expanded upon in the future to hook directly into PowerShell's debugging functionality, but would require a substantial refactor to script execution.
2025-11-26 01:09:52 -06:00
Pat Hartl
d6577564db Move launcher settings to separate assembly 2025-11-23 20:53:45 -06:00
Pat Hartl
49c4506478 Smoother load from Depot -> Library 2025-11-21 19:06:26 -06:00
Pat Hartl
fe9d1e72c1 Use single footer in main app window between routes 2025-11-21 18:20:01 -06:00
Pat Hartl
256b46e823 Fix storage of authentication token 2025-11-19 00:36:03 -06:00
Pat Hartl
4ffc6faf88 Force full load on route redirection 2025-11-13 18:17:30 -06:00
Pat Hartl
94db43eeba Provide default route for windows 2025-11-09 15:00:46 -06:00
Pat Hartl
acb91f8484 Fix login/logout UX
- Moves authentication back to a /Authenticate page route
- Flatten the namespaces of page components
- Implement top-level layouts as windows
- Move handling of redirecting to /Authenticate with component inside of an AuthenticatedLayout
- Use individiual injected services instead of SDK.Client
- Wipe out tokens on logout
- Process logout even if server can't be reached
2025-11-07 20:19:13 -06:00
Pat Hartl
7a562cdb10 Fix authentication limbo in launcher 2025-11-03 23:24:47 -06:00
Pat Hartl
50401469c4 Notify progress on dispatcher thread 2025-10-22 00:07:48 -05:00
Pat Hartl
30a1683c1b Organize components 2025-10-15 21:47:28 -05:00
Pat Hartl
d85e716bbb Add cancel install to launcher
Fixes #293
2025-10-15 21:26:40 -05:00
Pat Hartl
2f969a196d Add ability to browse files on Linux/macOS
Fixes #349
2025-10-15 20:21:54 -05:00
Pat Hartl
694b8b9842 Use SettingsProvider when getting any settings
SettingsProvider uses IOptionsMonitor to maintain the current value of settings. This gets updates on YML file changes and since it's a single instance (instead of injecting IOptions<Settings>), consumers always have the latest values.
2025-10-06 20:29:34 -05:00
Pat Hartl
2b30158764 Implement debounce to avoid thrashing disk on settings update 2025-10-06 19:25:24 -05:00
Pat Hartl
e7653cb33e Clean up selected library item main view
The library view was constructed to be a monolithic component. It has been split out to multiple components, with the potential for expansion into other library items types in the future (other than just a game). The handler for failed installs has also been moved to the queue.
2025-10-05 19:30:32 -05:00
Pat Hartl
382a270b03 Simplify connection state management 2025-10-05 17:13:47 -05:00
Pat Hartl
5cab1f3618 Remove old SettingsService, replace with Options pattern 2025-09-29 19:49:09 -05:00
Pat Hartl
d875377f15 Rename SDK services -> clients, implement new configuration, use dependency injection for clients 2025-09-24 20:58:23 -05:00
Pat Hartl
c223b3756c Improve import speed by using transactions 2025-09-05 02:00:59 -05:00
Pat Hartl
5a32bbf890 Add localization support to launcher
Adds localization across the launcher and includes English, German, Spanish, French, Italian, Japanese, Korean, Dutch, Portuguese, Ukranian, and Chinese. These localizations were generated by Claude 3.5 and need to be reviewed by a human for accuracy.
2025-08-18 21:29:38 -05:00
Pat Hartl
640f476986
Merge pull request #291 from RattleSN4K3/feature/LibraryGameModifySelective
Library changes to addon installation
2025-08-03 14:03:12 -05:00
Pat Hartl
a9660f7ebe Merge branch 'feature/ReworkOfflineMode' of https://github.com/RattleSN4K3/LANCommander into RattleSN4K3-feature/ReworkOfflineMode
# Conflicts:
#	LANCommander.Launcher/UI/Authenticate/Components/LoginForm.razor
#	LANCommander.Launcher/UI/Authenticate/Components/RegistrationForm.razor
#	LANCommander.Launcher/UI/Components/LibraryItemContextMenu.razor
2025-08-03 00:55:27 -05:00
RattleSN4K3
f87fc87f7e Stop timer events ignoring connection timeouts causing early connection-lost + show retry count in toast message 2025-06-16 01:36:39 +02:00
RattleSN4K3
7822a92612 Handle auth state in auth form, forward to specific state based on connection state 2025-06-15 23:39:31 +02:00
RattleSN4K3
e5d6faa6a9 Always allow logging out even in offline mode 2025-06-15 23:39:27 +02:00
RattleSN4K3
d778d88fd9 Option to switch to offline mode in temporary mode 2025-06-15 23:39:27 +02:00
RattleSN4K3
8933f4a60b Prevent showing non-auth view as long as authentication is validating 2025-06-15 23:39:22 +02:00
RattleSN4K3
a7df66ce93 Store connection state app-wide (in KeepAliveService) for consistency in all components 2025-06-15 23:39:21 +02:00
RattleSN4K3
6ddc1411c0 Fix handling import-event being called twice after logout and sequent login 2025-06-15 23:39:20 +02:00
RattleSN4K3
7e9ac8f4f8 Read username in offline mode from access token 2025-06-15 23:39:20 +02:00
RattleSN4K3
039cf4b1c7 Disable several UI options when offline 2025-06-15 23:39:19 +02:00
RattleSN4K3
374fc373dc Show primary actions in context menu of library
Keep primary actions hidden in Play-Button-context menu
2025-06-08 04:21:24 +02:00
RattleSN4K3
436acbb63d Fix updating context menu on parameter changes not refreshing menu items 2025-06-08 03:44:34 +02:00
RattleSN4K3
c996561e38 Validating files of mods/expansions, prioritizing files over another 2025-05-27 23:15:17 +02:00