Evan Husted
a624fe64b9
UI: Scanning for mods on DLC content
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-29 13:33:34 -06:00
Evan Husted
2acc43e968
misc: chore: Use string.Empty in more places where it's snuck back
2025-01-28 22:17:11 -06:00
Evan Husted
191e158289
misc: chore: Use static instances of converters instead of using control resources
2025-01-28 22:11:48 -06:00
Evan Husted
a469f3d710
UI: Remove empty StackPanel in UserSelectorDialog
2025-01-28 21:47:29 -06:00
Evan Husted
502ce98b3a
UI: [ci skip] Make cheat window larger by default
2025-01-28 21:27:51 -06:00
LotP1
7085bafa60
PPTC Profiles ( #370 )
...
Added functionality that allows ExeFS mods to compile to their own PPTC
Profile and therefore store PTC data between sessions.
The feature calculates the hash of the currently loaded ExeFS mods and
stores the PPTC data in a profile that matches said hash, so you can
have multiple ExeFS loadouts without causing issues. This includes
different versions of the same mod as their hashes will be different.
Using this PR should be seamless as the JIT Sparse PR already laid the
groundwork for PPTC Profiles and this PR just allows ExeFS mods to load
and store their own profiles besides the `default` profile.
❗ ❗ ❗ **WARNING!** ❗ ❗ ❗
**This will update your PPTC profile version, which means the
PPTC profile will be invalidated if you try to run a PR/Build/Branch
that does not include this change!**
**This is only relevant for the default PPTC Profile, as any other profiles do not exist to older versions!**
2025-01-28 20:36:58 -06:00
Evan Husted
f3942968f9
UI: Convert the various options for LED into a popup window similar to motion & rumble config.
2025-01-26 17:18:27 -06:00
Evan Husted
ae90db2040
misc: chore: Use collection expressions in Avalonia project
2025-01-26 15:47:11 -06:00
Evan Husted
3cdaaa0b69
misc: chore: Fix object creation in Avalonia project
2025-01-26 15:16:50 -06:00
Otozinclus
f15aa8fba0
Fix LED turning on in input settings, despite TurnOffLed being set to true ( #583 )
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
The ColorPicker auotmatically sets the LED to the selected Color
whenever the Input Settings are opened. Therefore it now checks if the
setting is turned off before changing the color.
2025-01-25 17:15:17 -06:00
Evan Husted
be3bd0bcb5
misc: chore: Use explicit types in the Avalonia project
2025-01-25 14:00:23 -06:00
Otozinclus
1ce37ec317
Add option to change controller LED color ( #572 )
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
This allows the user to change the controller LED while using Ryujinx.
Useful for PS4 and PS5 controllers as an example.
You can also use a spectrum-cycling Rainbow color option, or turn the LED off for DualSense controllers.
---------
Co-authored-by: Evan Husted <greem@greemdev.net>
2025-01-24 14:47:36 -06:00
Evan Husted
7829fd8ee7
misc: chore: OS + CPU arch helpers
2025-01-23 16:58:48 -06:00
Evan Husted
f81cb093fc
misc: chore: Change references of GreemDev/Ryujinx to Ryubing/Ryujinx
2025-01-23 16:27:49 -06:00
Evan Husted
c140e9b23c
UI: Localize LED color & hide it until it's functional
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
Also moved IgnoreApplet to the System config section object.
2025-01-23 00:48:42 -06:00
Evan Husted
c03cd50fa3
UI: Add the ability to change a DualSense/DualShock 4's LED color.
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
Not functional yet. This is the UI & persistence side of #572 .
2025-01-22 19:53:39 -06:00
Evan Husted
13d411e4de
misc: chore: also ToLower the titleID for the OpenShaderDirectory button
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-22 08:54:39 -06:00
Evan Husted
cd8113dadf
misc: chore: Collapse adding a game/autoload dir into a single reusable method.
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-21 18:59:56 -06:00
Evan Husted
fe9d8d05bd
UI: Fixed the Amiibo keybind only working when the UI had been updated.
2025-01-21 18:00:51 -06:00
Evan Husted
880a8ae748
misc: chore: Remove duplicated styling blocks in MainMenuBarView in favor of a reusable Avalonia Style.
2025-01-21 17:50:55 -06:00
asfasagag
11531dacb6
UI: Option to automatically Hide UI when game launches ( #462 )
...
Quality of life feature
Similar in function to the "Start Games in Fullscreen" toggle
For users who want to run games in windowed/non-fullscreen mode with
menu UI hidden, this eliminates the need to always click "Hide UI"
2025-01-21 17:36:51 -06:00
Evan Husted
65374ed6cb
UI: [ci skip] clarify dirty hacks subtext
2025-01-21 16:57:05 -06:00
Evan Husted
789d6ab959
misc: chore: Improve autoloading DLC/updates logging, deliberately switch to Vulkan if Metal was somehow chosen on a non-mac system, add logger lines in the updater, cleanup enabled logs printing
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-21 14:59:08 -06:00
Evan Husted
bf584442b2
misc: chore: remove needless call to string.Format
2025-01-21 14:05:49 -06:00
Judas Drekonym
471e7ed2e4
Add TitleID sort method ( #553 )
...
Adds an additional application list sorting method for the TitleID. A
bit of a niche choice for sorting but I think the TID is a relevant
enough piece of metadata that it should be there. (And I personally
would be using it)
- Using existing TitleId constant in ApplicationSort, implying this was
meant to be in the sorting options at some point?
- Reuses the "DlcManagerTableHeadingTitleIdLabel" locale for fulfilling
the need already, might be better to make a unique one for this in the
long run but this codebase is new to me so I wanted to make the changes
as unobtrusive as possible
- Using app.Id for the comparer seems to work fine, not sure if using
something else like IdString would be better?
2025-01-21 11:06:40 -06:00
Evan Husted
ed64a63094
UI: Visually merge "Actions" and "Tools" menu bar items into Actions
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
The contents of the menu item are dependent on whether you're in a game.
No functionality has been removed.
2025-01-20 16:56:05 -06:00
Evan Husted
04ba762710
UI: Move DLC RomFS dumping under normal RomFS dumping.
...
Also removed it from DLC manager.
2025-01-20 14:30:28 -06:00
Evan Husted
d135385cab
Leftovers, oops
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-20 09:32:38 -06:00
Evan Husted
b360f4e721
UI: Dump DLC RomFS.
...
You can access this in the Manage DLC screen, it's the new button on each DLC line.
Closes #548
2025-01-20 09:28:58 -06:00
Evan Husted
bbd64fd5f0
misc: chore: Cleanup AppletMetadata usage
2025-01-19 19:40:49 -06:00
Evan Husted
e676fd8b17
UI: misc: simplify Intel Mac warning logic
2025-01-19 14:42:15 -06:00
Evan Husted
dd16e3cee1
misc: chore: very small cleanup in AvaHostUIHandler
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-19 13:18:40 -06:00
Evan Husted
f2f099bddb
remove Async suffixes; they're factory methods not actual async methods.
2025-01-19 12:46:32 -06:00
Evan Husted
2616dc57fb
misc: chore: RelayCommand helper
2025-01-19 12:44:07 -06:00
Evan Husted
0cdf7cfe21
UI: Open cheat manager in catch-all try
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-18 22:48:06 -06:00
Evan Husted
2ecf999569
misc: chore: change ThemeManager ThemeChanged to a basic Action since both arguments are unused
2025-01-18 22:48:06 -06:00
Jacob
52269964b6
Add the player select applet. ( #537 )
...
This introduces the somewhat completed version of the Player Select
Applet, allowing users to select either a user or a guest from the UI.
Note: Selecting the guest more then once currently does not work.
closes https://github.com/Ryubing/Ryujinx/issues/532
2025-01-18 20:40:33 -06:00
Evan Husted
ccdddac8fc
Fix compile warnings
2025-01-18 19:34:31 -06:00
Evan Husted
4868fface8
UI: Intel Mac warning
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
Upon launch, shows a warning about using an Intel Mac. This will only show once every boot. You can only turn it off by getting a better system.
2025-01-18 15:33:05 -06:00
Evan Husted
6fca4492d0
misc: chore: Remove status update event stuff in Headless
2025-01-18 15:15:08 -06:00
Evan Husted
e6bad52945
Revert "Only selectively compile Metal & fix some compilation issues"
...
This reverts commit beda3206e0 .
2025-01-18 10:56:58 -06:00
Evan Husted
beda3206e0
Only selectively compile Metal & fix some compilation issues
2025-01-18 10:52:32 -06:00
Daniel Nylander
6cd4866d76
Updated sv_SE in locales.json ( #513 )
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-17 18:04:18 -06:00
GabCoolGuy
a375faecc1
UI: Fix UpdateWaitWindow.axaml windows being too big on windows ( #314 )
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-17 14:14:19 -06:00
Evan Husted
41c8fd8194
misc: chore: lol this field was misspelled
2025-01-10 23:23:53 -06:00
Evan Husted
d4a7ee25ea
misc: chore: use ObservableProperty on input view models
2025-01-10 23:23:05 -06:00
Evan Husted
3141c560fb
misc: chore: remove sender parameter from LdnGameData receieved event
2025-01-10 23:15:55 -06:00
Evan Husted
de341b285b
misc: use ObservableProperty on HotkeyConfig fields
2025-01-10 23:15:37 -06:00
Evan Husted
cc95e80ee9
misc: chore: Move converters into a directory in Helpers. Namespace unchanged
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-10 20:24:53 -06:00
Evan Husted
d75ce52bd4
UI: Show play time in one time unit, maxing out at hours.
2025-01-10 20:23:47 -06:00
Evan Husted
cca429d46a
misc: chore: restore not enable
2025-01-09 21:42:54 -06:00
Evan Husted
27993b789f
misc: chore: fix some compile warnings
2025-01-09 20:23:26 -06:00
Evan Husted
d8265f7772
Embed compatibility list into executable
...
instead of downloading
Co-Authored-By: Vita Chumakova <me@ezhevita.dev>
2025-01-07 03:37:07 -06:00
Evan Husted
259526430c
UI: Properly space language menu items instead of prepending a space to the language name
2025-01-07 00:36:22 -06:00
Evan Husted
b5fafb6394
UI: stop using async voids in MainMenuBarView; use RelayCommands
2025-01-06 23:52:20 -06:00
Evan Husted
323c356d9c
UI: Widen compatibility list, and make search box take up all space horizontally
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-06 22:03:39 -06:00
Evan Husted
c4cc657b89
UI: Compatibility List Viewer
2025-01-06 07:31:57 -06:00
Evan Husted
9bb50fc6dd
misc: improve unpacking error & add nullability to SelectedIcon
2025-01-03 22:25:32 -06:00
Evan Husted
e956864697
misc: Remove needless AsObservableList
2025-01-03 22:25:32 -06:00
Evan Husted
88d11d3d8d
misc: some cleanups and fix compile warnings
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2025-01-01 02:14:59 -06:00
Evan Husted
fd2b5a7fc1
misc: Remove RendererHost AXAML
2025-01-01 01:55:10 -06:00
jozz024
978d2c132b
add a keyboard shortcut for opening amiibo .bin files ( #461 )
2024-12-31 22:45:52 -06:00
Evan Husted
732aafd3bb
misc: Prevent value change logging when the value is changed to the same thing it was before the value change.
2024-12-31 22:23:08 -06:00
Evan Husted
3fa714bb72
misc: DateTimeOffset Extract extension from Gommon
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2024-12-31 21:21:54 -06:00
Evan Husted
7c01633f13
UI: Show the path of the mod on the folder button
2024-12-31 21:15:50 -06:00
Evan Husted
27c5cba10b
misc: More Mvvm usage instead of writing out the observable properties
2024-12-31 21:11:57 -06:00
Evan Husted
3525d5ecd4
UI: clean up slider UI for shader translation delay
2024-12-31 20:11:49 -06:00
Evan Husted
61ae427a4d
misc: Add CommunityToolkit.Mvvm for observable property generation; apply it to MainWindowViewModel for now.
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2024-12-31 03:29:08 -06:00
Evan Husted
617c03119f
misc: clean vsync toggle log
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2024-12-31 00:52:39 -06:00
Evan Husted
e43d899e1d
misc: Use a few static helpers for Avalonia objects
2024-12-31 00:19:23 -06:00
Evan Husted
0cd09ea0c5
misc: Simplify ControlHolder checks in MainWindowViewModel
2024-12-31 00:04:23 -06:00
Evan Husted
4135d74e4d
UI: Only allow right click to create a context menu if a game is selected.
2024-12-30 23:50:55 -06:00
Evan Husted
a5cde8e006
misc: Update Gommon, apply new extension
2024-12-30 20:37:02 -06:00
WilliamWsyHK
e486b902b1
Skip processing application for LDN if it does not have control holder ( #460 ) [ci-skip]
2024-12-30 01:53:06 -06:00
Evan Husted
0ab5b41c4b
misc: Move dirty hack related stuff into a separate viewmodel, only show slider when translation delay is enabled.
2024-12-30 01:33:07 -06:00
Evan Husted
ec1020b165
UI: Dirty hacks clarification [ci skip]
2024-12-30 01:10:40 -06:00
Evan Husted
8e4a77aba0
UI: Text in the shader translation slider tooltip
2024-12-30 00:09:19 -06:00
Evan Husted
8fd8a776c9
misc: prevent crashes
2024-12-29 23:39:40 -06:00
Evan Husted
eec92c242c
misc: Remove shader translation delay dirty hack from UI
...
it doesn't do anything
2024-12-29 22:55:33 -06:00
Evan Husted
f362bef43d
misc: Overhaul DirtyHacks saving to support storing a value alongside an off/off flag.
2024-12-29 21:17:01 -06:00
Evan Husted
f5ce539de9
misc: Move the rest of Ryujinx.UI.Common into other parts of the project.
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2024-12-29 19:28:27 -06:00
Evan Husted
6caab1aa37
misc: move Models & Helpers into Common & Avalonia projects
2024-12-29 19:09:28 -06:00
Evan Husted
9baaa2b8f8
misc: Move image assets to Avalonia project
2024-12-29 18:37:37 -06:00
Evan Husted
32cdccde12
misc: Move UserError to Common project
2024-12-29 18:06:18 -06:00
Evan Husted
2aaaa7872f
UI: Improve XC2 hack hover tooltip information
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
2024-12-28 22:28:40 -06:00
Evan Husted
8b3a945b5f
misc: Dirty Hacks
...
Enable this settings screen via a boolean in Config.json
First one is the xb2 menu softlock fix
2024-12-28 22:04:21 -06:00
Evan Husted
56e45ae648
misc: Collapse LdnGameDataArray into the main class as an inner class
...
- privated the constructor; only obtainable by the static helper on the main LdnGameData class.
- constructor logic now in the static helper; constructor just directly sets the data it's given.
2024-12-27 15:33:31 -06:00
Evan Husted
07074272ca
Revert "UI: Directly proxy window properties on the view model back to the stored window"
...
This reverts commit 9754d247b5 .
2024-12-27 15:24:57 -06:00
Evan Husted
d3bc3a1081
UI: Simplify LDN data logic
2024-12-27 01:32:23 -06:00
Evan Husted
c69881a0a2
UI: chore: remove direct static MainWindowViewModel reference
2024-12-27 00:47:57 -06:00
Evan Husted
9754d247b5
UI: Directly proxy window properties on the view model back to the stored window
2024-12-26 23:32:53 -06:00
Evan Husted
267e9f6350
UI: Redirect IME errors to Debug instead of error
2024-12-26 23:13:35 -06:00
Evan Husted
d7b3dd12d1
UI: Set title bar icon to the already loaded one
2024-12-26 22:58:49 -06:00
Evan Husted
17233d30da
misc: give various threads dedicated names
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
Move all title ID lists into a TitleIDs class in Ryujinx.Common, with helpers.
Unify & simplify Auto graphics backend selection logic
2024-12-26 00:29:00 -06:00
Otozinclus
2bf48f57d2
Add more games to metal list ( #447 )
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
Mario Kart 8 Deluxe and Deltarune got tested by Isaac with help from
Peri previosly (His video: https://www.youtube.com/watch?v=GEVre_0ZVUg
)
Captain Toad, Cuphead and Animal Crossing I tested myself (side-by-side
Video comparison: https://youtu.be/auNS9MmZMPI )
Additional information:
Cuphead has flickering issues with certain UI elements on Vulkan via
MoltenVK. Metal fixes those and introduces no new issues, according to
my testing.
Animal Crossing is accurate, except for it having broken backgrounds in
interiors, causing them to appear as white instead of black. This is
caused by a hardware level sampler bug, that isaac never got to find a
workaround for.
However, this issue happens with Vulkan via MoltenVK as well, both Metal
and Vulkan have this issue, therefore Metal shouldn't have any downside
compared to using Vulkan in this game.
2024-12-25 14:19:53 -06:00
Evan Husted
412d4065b8
UI: Abstract applet launch logic for future potential applets
...
Canary release job / Create tag (push) Waiting to run
Canary release job / Release for linux-arm64 (push) Waiting to run
Canary release job / Release for linux-x64 (push) Waiting to run
Canary release job / Release for win-x64 (push) Waiting to run
Canary release job / Release MacOS universal (push) Waiting to run
Optimize locale loading (remove always loading english, that was only needed with the old system)
2024-12-25 00:56:01 -06:00
Evan Husted
e6644626fc
UI: Fix negative space savings in XCI trimmer
2024-12-25 00:06:29 -06:00
Evan Husted
0ca4d6e921
misc: Move StatusBarSeparator into Controls namespace, rename to MiniVerticalSeparator
...
add bulk property change event method
give each markup extension its own property name
2024-12-24 21:55:12 -06:00
Evan Husted
f0aa7eedf6
lol
2024-12-24 21:15:13 -06:00
Evan Husted
41acc4b1f3
UI: misc: Collapse repeated identical Border usages into a helper control.
2024-12-24 21:14:17 -06:00