Commit graph

134 commits

Author SHA1 Message Date
Pat Hartl
eaaaf39b8d Refactor install process to use major/minor task queue
Tasks are broken down into major and minor tasks. Major tasks are like install game, redistributable, or tool. These are reported as individual tasks in the download queue. Minor tasks are running of a script, downloading saves, extracting/downloading, etc.
2026-04-17 22:24:47 -05:00
Pat Hartl
c48bf31db1 Made allocation method on key nullable, added manual assign key dialog, reworked how the next available key is chosen 2026-04-12 19:58:47 -05:00
Pat Hartl
0ab6ee5262 Basic chat window 2026-04-07 23:10:45 -05:00
Pat Hartl
bcfa9768fc Add ratings to DB. Add popular/backlog games to depot. 2026-04-01 23:13:33 -05:00
Pat Hartl
6276823f86 Fix variables on action run, populate server variables when retrieving actions 2026-03-15 17:15:50 -05:00
Pat Hartl
2e46c6ecc5 Launcher: Only import games since last import 2026-03-09 22:12:57 -05:00
Pat Hartl
a875b2a258 Pass base game ID in manifest 2026-03-03 23:33:36 -06:00
Pat Hartl
46bbf85093 First pass of adding tool installation to launcher 2026-02-10 18:04:49 -06:00
Pat Hartl
120e14d40c Add Tools section to server app
Allows users to upload additional tools and tie them to games. This can be useful for software like map editors, trainers, etc.
2026-02-08 02:24:53 -06:00
Pat Hartl
c5506b440f Move Steam integrations to separate assembly, add cmdlets for various Steam actions 2026-01-24 16:37:07 -06:00
Pat Hartl
d5392af32d Fix game install when IGDB is null 2026-01-18 04:40:00 -06:00
Pat Hartl
4086cbaeeb Update read status when sending message, scroll to bottom on new message, merge message into group if gap < 5 mins 2026-01-11 21:21:12 -06:00
Pat Hartl
66abc6e59e Implement infinite loading with chat thread
- Chat messages are now loaded based on scroll position
- Read status is now updated and set by last message read
- Reworked script importing by using ScriptProvider
2026-01-11 14:38:24 -06:00
Pat Hartl
6bfaa7b9e6 Fix virtualized rendering of message groups 2025-12-30 18:03:57 -06:00
Aaron Powell
e2b2654a61 Adding SQLite database migration step
Created a new abstraction for migrations that have to run against the file system, so that we don't need to do the check in each migration.

Adding the default DB name to the settings so it's got a const value.

Updated the Settings migrator to check a few more places
2025-12-17 17:09:36 +11:00
Pat Hartl
5b0abac404 Merge branch 'main' into development 2025-12-15 23:15:40 -06:00
Pat Hartl
88301d9c79 Move config/user files to Data directory 2025-12-11 01:58:28 -06:00
Aaron Powell
22113f9ef2 Removing Serilig from the sdk 2025-12-11 16:18:33 +11:00
Pat Hartl
df521b60f3 Add method to check if manifest is legacy 2025-12-05 21:04:14 -06:00
Pat Hartl
414f728181 Inherit IKeyedModel, restrict ManifestHelper.Write to only manifests 2025-12-04 23:43:25 -06:00
Pat Hartl
18d58ec305 Include version in LCX manifest 2025-12-04 19:03:05 -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
256b46e823 Fix storage of authentication token 2025-11-19 00:36:03 -06:00
Pat Hartl
a92c7be6ec Enhance chat list
- Added SafeAvatar component for retrieving user avatars with fallback to initials
- Added a title/name for chat threads
- Moved chat input to a separate component
2025-11-03 23:27:05 -06:00
Pat Hartl
e98d4d449a Auth with RPC, simplify chat delegates, load threads and implement sending messages 2025-10-28 22:21:16 -05:00
Pat Hartl
14f8bfc372 Simplify settings write, increase debounce 2025-10-08 19:52:37 -05:00
Pat Hartl
4cbf672bb1 Fix auth, API response deserialization 2025-10-01 18:45:30 -05:00
Pat Hartl
d21a7dfc0d Store server address as string in Settings.yml 2025-09-29 19:51:16 -05:00
Pat Hartl
5cab1f3618 Remove old SettingsService, replace with Options pattern 2025-09-29 19:49:09 -05:00
Pat Hartl
7f99fb481c Use Options pattern, 2025-09-26 00:51:02 -05:00
Pat Hartl
22df6677bc Remove settings interfaces 2025-09-26 00:33:59 -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
9f17f92b78 Fix auth implementation 2025-09-23 00:57:48 -05:00
Pat Hartl
a648852292 Implement SDK using dependency injection
- API requests are now made through the ApiRequestBuilder with DI supplied via the ApiRequestFactory singleton
- Reliance on RestSharp and WebClient has been removed in favor of HttpClient
- Auth token is now being tracked by the ITokenProvider
- Network information (MAC address, broadcast addresses, IP address) is now supplied with the INetworkInformationProvider singleton
- Connection state is now being maintained by the ConnectionService, with a reliance on RPC (SignalR websocket) reporting actual connection state without relying on pings
- All download streams are now provided as a TrackableStream
- Singleton Client class has been removed. All usage of the SDK should happen via Dependency Injection

This is just a base, non-functional refactor of the SDK to use DI. The following changes to the rest of the codebase need to be made:
- Usage of the SDK client in the launcher needs to be replaced in favor of injecting SDK services
- PowerShell cmdlets need to be able to have services injected. Most likely a separate scope will have to be opened up per PS runtime?
- Usage of the SDK client in the server needs to be replaced in favor of injecting SDK services. This should be minimal and should actually provide benefit when it comes to executing client-like features (scripts mostly) without needing a fully configured client that maintains connection state.
- Configuration of the client needs to be implemented using ILANCommanderConfiguration
2025-09-22 00:29:51 -05:00
Pat Hartl
b392e9b24f Change MessageGroups to ObservableCollection, build out message components 2025-08-24 19:34:14 -05:00
Pat Hartl
75e00ea54f Track threads, chat components 2025-08-21 17:47:30 -05:00
Pat Hartl
2d89d26e76 Built out hub logic, moved client side stuff to service 2025-08-20 20:53:48 -05:00
Pat Hartl
fd3fbf4a75 Initial backend implementation for chat 2025-08-19 03:08:30 -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
6c49d9041a Add basic workflow for packaging games via scripts 2025-08-02 00:22:16 -05:00
Pat Hartl
93523fe8e1 Fix exporting of scripts 2025-07-30 19:25:55 -05:00
Pat Hartl
a5dab5c094 Merge branch 'main' into refactor/optional-import-export
# Conflicts:
#	LANCommander.Server.Services/GameService.cs
#	LANCommander.Server.Services/ImportService.cs
#	LANCommander.Server.Services/Importers/GameImporter.cs
#	LANCommander.Server.Services/UserService.cs
#	LANCommander.Server/UI/Components/AvatarUploader.razor
#	LANCommander.Server/UI/Components/ImportUploadDialog.razor
2025-07-25 18:42:39 -05:00
Pat Hartl
47d5b0b58a Working selective export (at least for manifest) 2025-07-25 17:57:33 -05:00
RattleSN4K3
79d161769e Proper error messaging for login/register, utilizing ErrorResponse 2025-06-22 01:36:17 +02:00
RattleSN4K3
c38d9db31b Restore installation files on uninstallation of addons 2025-05-27 23:15:29 +02:00
RattleSN4K3
c996561e38 Validating files of mods/expansions, prioritizing files over another 2025-05-27 23:15:17 +02:00
RattleSN4K3
73ff5f258a Remove-game-library dialog to remove base game + addons 2025-05-25 22:25:17 +02:00
Pat Hartl
041a0069ee Add DiscoveryBeacon, DiscoveryProbe, new beacon message
Adds a discovery beacon and probe to the client and removes BeaconService from the server.
2025-04-23 21:23:33 -05:00
Pat Hartl
3abebaae4b Combine import/export context, start laying out export dialog 2025-04-12 02:37:14 -05:00
Pat Hartl
d75095aa64 Simplify importer DI, start laying out import dialog 2025-04-10 19:45:41 -05:00