Commit graph

142 commits

Author SHA1 Message Date
Pat Hartl
76cb9f9246 Also handle .ini files 2026-06-10 20:21:18 -05:00
Pat Hartl
ca713f6d3f Rework .reg importing in script editor
Script editor now supports drag and drop for .ps1, .reg, and other text files. .ps1 files will be handled by replacing the contents of the text editor. .reg files will be converted to PowerShell commands and inserted into the script editor. Any other text file will be inserted as an escaped string.
2026-06-10 20:19:06 -05:00
Pat Hartl
5e37efb3cf Fix uploader 2026-06-06 02:34:28 -05:00
Pat Hartl
6f71d4c2e0 Fix packager LCX upload 2026-06-04 22:03:18 -05:00
Pat Hartl
4948dbc0d5 Add background uploading
Fixes #298
2026-05-28 22:26:24 -05:00
Pat Hartl
02750d6d62 Improve file manager UX
- Faster enumeration of large directories
- Add toggleable columns
- Add Created and Type columns
- Fix breadcrumbs
- Properly build left view tree with support for cross-platform roots and special folders
2026-05-28 19:54:33 -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
2c58c12ec6 Fix closing of upload dialog when file selected 2026-05-18 22:02:14 +00:00
Pat Hartl
15bc84016a Add UI for editing option schema
- Moves Redistributables for games to separate panel
- Add option override for games
- Add Monaco completions for option schema editing
- Add UI for editing options for a redistributable
- Add config importing to translate from INI, JSON, XML, etc to redist option schema
2026-05-16 19:28:04 -05:00
Pat Hartl
19459f767b Include all cmdlets in completion 2026-05-11 04:06:51 -05:00
Pat Hartl
b5e93cbb88 Fix completion rendering 2026-05-10 19:53:41 -05:00
Pat Hartl
885032547b Improve script editor with context-aware completions, validation, and UX
- Filter variable completions and hover by script type so only relevant variables appear (e.g. $AllocatedKey only in KeyChange scripts)
- Add inline validation warnings for package scripts missing New-Package and for variables used outside their valid script type
- Extend debug console to support tools and redistributables, add stop button and elapsed time display
- Disable minimap, enable bracket pair colorization and word wrap
- Add snippet insertion via Monaco snippet controller with selection replacement support
- Add script templates that auto-populate on new script creation
- Add Variables dropdown in editor toolbar based on current script type
- Change Add Script button to type-selection dropdown, auto-populate script name from type, remove Type field from editor dialog
- Move Requires Admin checkbox to toolbar row, move toolbar and editor outside Form to prevent dropdown clicks from closing the modal
- Set MaskClosable=false on script editor modals so Monaco autocomplete clicks don't dismiss the dialog
2026-05-10 19:33:48 -05:00
Pat Hartl
402af57f79 Enhance PowerShell completions with generated type definitions 2026-05-08 02:13:36 -05:00
Pat Hartl
59795ff222 Add code completion for built-in cmdlets and variables 2026-05-08 02:02:33 -05:00
Pat Hartl
71de97e04f FIx preview page uploader. Add progress when downloading videos. Fix large video downloads. 2026-04-27 17:58:48 -05:00
Pat Hartl
b8cba6b024 Use observable collection for chat messages 2026-04-12 20:00:44 -05:00
Pat Hartl
f9863043d1 Bump to .NET 10 2026-04-10 02:19:50 -05:00
Pat Hartl
afa20bee72 Merge branch 'avalonia-launcher' 2026-04-10 01:52:20 -05:00
Pat Hartl
0ab6ee5262 Basic chat window 2026-04-07 23:10:45 -05:00
akifreak
80bb5d59ee Replace var with const/let and remove unused variable in ChunkUploader
- var request and var response in Init() → const (never reassigned,
  var is function-scoped and hoisted which is undesirable in class methods)
- let formData in UploadChunk() → const (never reassigned)
- chunkResponse in UploadChunk() removed (assigned but never read)
- let start in GetChunks() → const (never reassigned)
- var percent in UpdateProgressBar() → const (never reassigned)
2026-04-04 15:05:06 +02:00
akifreak
7dbb1b7619 Remove unused UploadInitResponse import from ChunkUploader 2026-04-04 15:05:06 +02:00
akifreak
4065232e61 Null-guard progress bar DOM elements in UpdateProgressBar
document.querySelector() can return null if the elements are not
yet in the DOM. Dereferencing null would throw inside the axios
onUploadProgress callback, which is caught by UploadChunk's catch
and re-thrown as a string - causing the whole upload to fail
silently with an undefined message.
2026-04-04 15:05:06 +02:00
akifreak
9882f14d04 Fix undefined error message when UploadChunk throws a string
UploadChunk throws a template literal string, not an Error object.
Accessing .message on a string primitive returns undefined, so
JSOnUploadError was always called with undefined and the server log
showed no useful detail. Use String(ex) as fallback so the message
is always populated.
2026-04-04 15:05:06 +02:00
akifreak
a439cf5638 Propagate init net failure instead of swallowing
The original catch block was simply swalloing errors instead of
propagating them upwards.
When the /api/Upload/Init request failed it set this.Key = null, logged
to the console, and returned normally. From the caller's perspective
Init() had succeeded.

Start() in the Blazor component then called Upload() immediately after,
which proceeded with this.Key = null. Every chunk was sent to the server
with a null key, the server returned 400 for each one, each UploadChunk
call threw, and the whole upload failed - but only after sending every
chunk, and only with the opaque "Error uploading chunk N/M" message
rather than anything pointing at the actual cause.

By removing the catch, an axios error in Init() propagates up through
the JS interop call InvokeVoidAsync("Init", ...) in Start(). That throws
a JSException in C#, Start() exits immediately before Upload() is ever
called, and the finally block resets Uploading so the UI recovers. The
user gets a failure where it actually happened.
2026-04-04 15:02:46 +02:00
akifreak
910504b7df Remove leftover debugger statement from ChunkUploader.Init 2026-04-03 21:22:22 +02:00
akifreak
a7bd41ff9d Fix game archive upload in web ui
bundle.js is built by webpack as an ES module (output.library.type:
'module'), ending with named exports such as:

  export { Be as ChunkUploader, s as InfiniteScroll, ... }

All three inclusion sites (App.razor, _Layout.cshtml,
ScriptLoader.razor) loaded it via a plain <script> tag, which is for
classic scripts only and does not support the 'export' keyword.

Edge throws a visible SyntaxError and uploading does not work.

Fixed by adding type="module" to the bundle.js script tag in all three
locations.
2026-04-03 21:21:40 +02:00
Pat Hartl
7cc857bcc8 Fix script editor bindings, update BlazorMonaco 2026-03-20 00:01:12 -05:00
Pat Hartl
1b21c77fe5 Make ArchiveId nullable for file pickers 2026-02-07 19:19:33 -06:00
Pat Hartl
3dc5e8010d Fix file manager styling 2026-01-24 23:02:54 -06:00
Pat Hartl
f4625ab134 Fix library list not scrollable and display of selected game details 2026-01-18 04:22:11 -06:00
Pat Hartl
77ad9b9c53 Add component for better Not Found message 2026-01-18 02:09:07 -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
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
fbcb02a863 Move useful terminal methods to component, remove old addon registration 2026-01-03 23:58:50 -06:00
Pat Hartl
eda3a8e7bc Fix infinite loader namespace 2026-01-03 23:22:35 -06:00
Pat Hartl
2d95541942 Remove overload for GetMessages 2026-01-03 23:22:25 -06:00
Pat Hartl
9b515623df Extend XtermBlazor to load addons 2026-01-03 18:27:26 -06:00
Pat Hartl
e85eeb01db Fix bundling, JS interop initialization 2026-01-03 18:26:30 -06:00
Pat Hartl
76b37fc46b Fix SplitPane factory 2026-01-03 15:57:01 -06:00
Pat Hartl
40871e24aa WIP infinite loader component 2026-01-03 15:53:17 -06:00
Pat Hartl
76aa51dc7a Extension method for creating interop types from factory pattern 2026-01-03 15:52:31 -06:00
Pat Hartl
7f21a1846f Refactor split pane as JS module 2026-01-03 15:52:09 -06:00
Pat Hartl
6021eca118 Refactor time provider as JS module 2026-01-03 15:51:47 -06:00
Pat Hartl
1e1fa1713d Refactor chunk uploader as JS module 2026-01-03 15:51:21 -06:00
Pat Hartl
81685f2da7 Style chat component 2026-01-02 02:10:42 -06:00
Pat Hartl
fb9370b21e Fix missing StyleBuilder utility class 2025-12-30 18:11:20 -06:00
Pat Hartl
e1c1469614 Fix chat component rendering
- Load thread after creation
- Change thread list from DataList to Flex
- Move unread badge to right side of chat thread list item
- Fix avatar rerendering after another message is added to message group
- Add styling to thread list
- Change message input to support markdown and add markdown rendering for message contents
2025-12-30 18:08:20 -06:00
Pat Hartl
83ff6a8237 Separate SignalR chat client from RPC client. Create abstraction for getting server address. Implement server-side chat client. 2025-12-23 21:12:06 -06:00
Pat Hartl
77f0e47e47 Make sure list of participants is populated 2025-12-22 21:12:19 -06:00