Skip to content

Conversation

@NinjaPedroX
Copy link
Contributor

@NinjaPedroX NinjaPedroX commented May 13, 2025

The goal of this PR is to further polish the Nitrox launcher before the next release. Some of the below TODOs may be pushed for a future release.

TODO:

  • Make Server Imbed/external radio buttons automatically save and apply its setting instead of requiring user input to save.
  • Starting an external server from ManageServerView doesn't disable advanced settings buttons (needs to be disabled).
  • Disable "Restore Backup" button when changes are made to ManageServerView settings.
  • Improvements to Restore Backup window (better naming, reversing list order so that it's descending by dates).
  • Disabled command textbox/Send button in ManageServerView and Console button in ServersView while server is being stopped.
  • Fix server crashing not allowing server to be stopped when imbedded (7 second timeout w/ force shutdown afterwards).
  • Implement Light Mode :(
  • Improvements to hyperlink textblocks (tooltip showing link, right click context menu to copy the link)
  • Allow multiple instances of Subnautica via launcher option - Closes Allow multiple instances running LOCALLY #2341
  • Implement IPC communication between the server and launcher
    • Add a Dialog Box for running a second server on the same port as the first (ask to change port of second server).
    • Add launcher feature to find external servers that are already running and set those as running (send input to/read output from the pipe for imbedded servers).
    • Fix server player count not updating in the Launcher.
  • Added player leave message for the server.
  • Other improvements (see commit titles)

Pushed for later:

  • Implement autocomplete for commands in EmbeddedServerView.
  • Fix multi-line selection in ImbeddedServerView (I'm already several hours into this one to no avail).

Feel free to make any more suggestions for Launcher Improvements that could be included in this PR.

…anageServerView

Changing that value will now instantly save the setting instead of requiring you to click the "Save" button every time. This was annoying me during previous embed/external server tests
It will now be impossible to edit the fields within the Advanced Settings window while the server is running (which was possible before when an external server was started within the ManageServerView).

I also added a max height to DialogBoxModal so that long errors don't make the error window height go off screen like it did for me while making this commit.

Known issue: The setting fields in the Advanced Settings window will not re-enable when the external server is closed via the CMD window. This can be worked around by closing and opening the advanced settings window.
…View

It should now be impossible to restore a backup while changes are being made to the server config settings
Gave better naming to the BackupItem listings and changed them to be ordered by descending date, putting the newest backup on the top of the list.
@dartasen dartasen added this to the 1.8 milestone May 16, 2025
@dartasen
Copy link
Member

Light mode seems like a lot amount of work for the 1.8 timeline

@Measurity
Copy link
Collaborator

Measurity commented May 16, 2025

Light mode is already functional but no toggle. All that's left is fine tuning. But I doubt we'll get all of these features before 1.8 (e.g. auto complete for commands, fix multi-line select) as these are weeks of work.

Should split this PR on what's necessary for 1.8.

@VazarinX
Copy link

light mode 💀

@dartasen
Copy link
Member

@VazarinX 🐦‍⬛

NinjaPedroX and others added 7 commits May 17, 2025 15:17
Added a 7 second timeout to the stop server command, where it'll then force shutdown the server if it doesn't close correctly. I decided that adding a dialog box would be hard to do and not necessary since the user can't do anything different if the server isn't forcefully shut down.

This feature can be tested by deleting a json file in a save folder.

Co-Authored-By: dartasen <10561268+dartasen@users.noreply.github.com>
I continue to not know what I'm doing :(
Gave up on the IPC for now and decided to start work on this horrendous feature (I hope you're happy, Tornac)
This keeps it consistent with the color scheme of the "Primary" and "Abort" style buttons
Server commands are now being sent over IPC pipes and (so far) seem to work as they did before. Yipee!
@dartasen dartasen requested a review from Measurity May 27, 2025 09:46
The option has now been added by request. It will default to false for first time users, but will show in the launcher as true and behave like it's true while in DEBUG mode.
Measurity and others added 10 commits May 28, 2025 14:50
This reduces discrepancies between DEBUG and RELEASE, which makes testing and maintaining code easier.
Fixed checking for process exist not using exe name, which caused logic to always return false.
Made tooltips only show above the switch for the OptionsView Launcher Settings. Also gave all RichTextBlocks that have the hyperlink style a tooltip that displays the link (and prepends "https://" to the tooltip text if it's not contained within the link text. It looked weird without it)
Users can now copy the link that "link" style textblocks have in case they don't trust clicking on it directly.

Also fixed the click event handler for link text blocks to run on both left and right click (in order to allow for the context menu to open with right click).

Additionally, I fixed a small typo that I randomly found in BlogView.
The only remaining issue so far is that the logger for the imbedded server in the launcher bugs out at a very specific point during server startup (at the Autosave line) and then stops working, despite the server continuing to run normally in the background.

After an hour of investigating, I'm not sure how to fix this. Measurity pls perform your black magic :(
This makes it less likely to trigger the 270 characters limit when the full server path is generated.
…oom.

Disabled horizontal scroll in server list since server names now trim their length.
Measurity and others added 15 commits July 15, 2025 05:58
Thought this was a bug when I saw there was no player leave message during a test, but it was apparently never implemented in the first place.
Hides the aforementioned error while on release mode. Not sure why it happens, but it does so inconsistently and doesn't seem to affect server functionality at all.
Previous visits of the view with an online server would bug out the view when managing another, offline, server.
Because of the virtualization of ItemsControl, the horizontal scroll bar would always be changing its width as log lines came in and out of virtualization. Now, the scrollviewer will remember its maximum width and set its MinWidth property to that value, which gives the illusion of the list not being virtualized.

The only thing this doesn't change its minimum width for is when Auto Scroll is turned off and new lines of output that are longer than the min width are not yet brought into view. But in that case, once the user scrolls to that line, the min width value will update properly.
Removed deprecated dependencies
@Measurity Measurity added the Area: user interface (launcher) Related to UI/UX in the launcher label Jul 30, 2025
@dartasen dartasen merged commit 8ef7dab into SubnauticaNitrox:master Aug 1, 2025
@NinjaPedroX NinjaPedroX mentioned this pull request Aug 13, 2025
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: user interface (launcher) Related to UI/UX in the launcher

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow multiple instances running LOCALLY

4 participants