From 46919acb8b134483d63a995348da52307d7ed628 Mon Sep 17 00:00:00 2001 From: levev Date: Fri, 6 Feb 2026 00:53:23 +0100 Subject: [PATCH 1/8] feat: Start breaking up config into separate sections --- icons/winboat_iconify.svg | 36 ++ src/renderer/App.vue | 37 +- src/renderer/components/ConfigButton.vue | 39 ++ src/renderer/components/FancyIcon.vue | 25 ++ src/renderer/router.ts | 34 +- src/renderer/views/Config.vue | 447 +---------------------- src/renderer/views/Config/General.vue | 3 + src/renderer/views/Config/Winboat.vue | 3 + src/renderer/views/SetupUI.vue | 4 +- 9 files changed, 173 insertions(+), 455 deletions(-) create mode 100644 icons/winboat_iconify.svg create mode 100644 src/renderer/components/ConfigButton.vue create mode 100644 src/renderer/components/FancyIcon.vue create mode 100644 src/renderer/views/Config/General.vue create mode 100644 src/renderer/views/Config/Winboat.vue diff --git a/icons/winboat_iconify.svg b/icons/winboat_iconify.svg new file mode 100644 index 00000000..20e0bd40 --- /dev/null +++ b/icons/winboat_iconify.svg @@ -0,0 +1,36 @@ + + + + + + + + + diff --git a/src/renderer/App.vue b/src/renderer/App.vue index 89b4521b..82c67f8f 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -115,15 +115,13 @@ - {{ route.name }} + {{ splitRoute(route.path)?.at(-1)?.token }}
@@ -134,11 +132,16 @@

WinBoat

- - -

- {{ useRoute().name }} -

+
@@ -155,8 +158,8 @@ \ No newline at end of file diff --git a/src/renderer/components/FancyIcon.vue b/src/renderer/components/FancyIcon.vue new file mode 100644 index 00000000..cd10f594 --- /dev/null +++ b/src/renderer/components/FancyIcon.vue @@ -0,0 +1,25 @@ + + + \ No newline at end of file diff --git a/src/renderer/router.ts b/src/renderer/router.ts index 4ffb14bf..1f446c5c 100644 --- a/src/renderer/router.ts +++ b/src/renderer/router.ts @@ -8,16 +8,36 @@ import Blank from "./views/Blank.vue"; import Config from "./views/Config.vue"; import Migration from "./views/Migration.vue"; +import General from "./views/Config/General.vue"; +import Winboat from "./views/Config/Winboat.vue"; + export const routes: RouteRecordRaw[] = [ - { path: "/", name: "Loading", component: Blank, meta: { icon: "line-md:loading-loop" } }, - { path: "/home", name: "Home", component: Home, meta: { icon: "fluent:home-32-filled" } }, - { path: "/migration", name: "Migration", component: Migration, meta: { icon: "fluent:home-32-filled" } }, - { path: "/setup", name: "SetupUI", component: SetupUI, meta: { icon: "fluent-mdl2:install-to-drive" } }, - { path: "/apps", name: "Apps", component: Apps, meta: { icon: "fluent:apps-32-filled" } }, - { path: "/configuration", name: "Configuration", component: Config, meta: { icon: "icon-park-outline:config" } }, - { path: "/about", name: "About", component: About, meta: { icon: "fluent:info-32-filled" } }, + { path: "/", component: Blank, meta: { icon: "line-md:loading-loop" } }, + { path: "/Home", component: Home, meta: { icon: "fluent:home-32-filled", nav: true } }, + { path: "/Migration", component: Migration, meta: { icon: "fluent:home-32-filled", } }, + { path: "/Setup", component: SetupUI, meta: { icon: "fluent-mdl2:install-to-drive", } }, + { path: "/Apps", component: Apps, meta: { icon: "fluent:apps-32-filled", nav: true } }, + { path: "/Configuration", component: Config, meta: { icon: "icon-park-outline:config", nav: true }, }, + { path: "/Configuration/WinBoat", component: Winboat, meta: { icon: "game-icons:ram"} }, + { path: "/Configuration/General", component: General, meta: { icon: "icon-park-outline:config" } }, + { path: "/About", component: About, meta: { icon: "fluent:info-32-filled", nav: true } }, ]; +export type RouteToken = { + token: string; + icon?: string; +}; + +const iconLookup = Object.fromEntries(routes.map(route => { + const lastSlashIdx = route.path.lastIndexOf("/"); + const lastToken = route.path.substring(lastSlashIdx + 1); + return [lastToken, route.meta?.icon]; +})); + +export function splitRoute(url: string): RouteToken[] { + return url.substring(1).split("/").map(token => ({ token, icon: iconLookup[token] as string | undefined })); +} + export const router = createRouter({ history: createMemoryHistory(), routes, diff --git a/src/renderer/views/Config.vue b/src/renderer/views/Config.vue index 0647fe6d..111d06e0 100644 --- a/src/renderer/views/Config.vue +++ b/src/renderer/views/Config.vue @@ -1,441 +1,19 @@ - \ No newline at end of file diff --git a/src/renderer/router.ts b/src/renderer/router.ts index ab3838db..6249f38a 100644 --- a/src/renderer/router.ts +++ b/src/renderer/router.ts @@ -38,6 +38,10 @@ export function splitRoute(url: string): RouteToken[] { return url.substring(1).split("/").map(token => ({ token, icon: iconLookup[token] as string | undefined })); } +export function joinRouteTokens(tokens: RouteToken[]): string { + return `/${tokens.map(x => x.token).join('/')}`; +} + export const router = createRouter({ history: createMemoryHistory(), routes, diff --git a/src/renderer/utils/navigation.ts b/src/renderer/utils/navigation.ts new file mode 100644 index 00000000..083e25e1 --- /dev/null +++ b/src/renderer/utils/navigation.ts @@ -0,0 +1,19 @@ +import { router } from "../router"; + +export function mouseBack(e: MouseEvent) { + if (e.button === 3) router.back(); +} + +export function escBack(e: KeyboardEvent) { + if (e.key === "Escape") router.back(); +} + +export function addNavigationEvents() { + window.addEventListener("mouseup", mouseBack); + window.addEventListener("keyup", escBack); +} + +export function removeNavigationEvents() { + window.removeEventListener("mouseup", mouseBack); + window.removeEventListener("keyup", escBack); +} \ No newline at end of file diff --git a/src/renderer/views/Config.vue b/src/renderer/views/Config.vue index 325da245..df93974e 100644 --- a/src/renderer/views/Config.vue +++ b/src/renderer/views/Config.vue @@ -1,320 +1,24 @@ \ No newline at end of file From 255cc5ad1a585c5a3b9a256083c5042b4792e6d6 Mon Sep 17 00:00:00 2001 From: levev Date: Thu, 12 Feb 2026 00:35:16 +0100 Subject: [PATCH 5/8] feat: Fix UI responsibility issues --- src/renderer/App.vue | 2 +- src/renderer/components/ConfigButton.vue | 16 ++++----- src/renderer/components/FancyIcon.vue | 2 +- src/renderer/router.ts | 8 +++-- src/renderer/views/Config.vue | 41 ++++++++---------------- src/renderer/views/Config/Devices.vue | 3 ++ src/renderer/views/Config/Display.vue | 3 ++ 7 files changed, 35 insertions(+), 40 deletions(-) create mode 100644 src/renderer/views/Config/Devices.vue create mode 100644 src/renderer/views/Config/Display.vue diff --git a/src/renderer/App.vue b/src/renderer/App.vue index c5c39fdb..06f8dd07 100644 --- a/src/renderer/App.vue +++ b/src/renderer/App.vue @@ -128,7 +128,7 @@

WinBoat Beta v{{ appVer }} {{ isDev ? "Dev" : "Prod" }}

-
+

WinBoat

diff --git a/src/renderer/components/ConfigButton.vue b/src/renderer/components/ConfigButton.vue index 7747e908..7d915218 100644 --- a/src/renderer/components/ConfigButton.vue +++ b/src/renderer/components/ConfigButton.vue @@ -1,15 +1,15 @@ diff --git a/src/renderer/components/FancyIcon.vue b/src/renderer/components/FancyIcon.vue index 003d5f3c..eaf9c5d8 100644 --- a/src/renderer/components/FancyIcon.vue +++ b/src/renderer/components/FancyIcon.vue @@ -1,5 +1,5 @@ diff --git a/src/renderer/components/ConfigCard.vue b/src/renderer/components/ConfigCard.vue index 82a10329..3368c4b8 100644 --- a/src/renderer/components/ConfigCard.vue +++ b/src/renderer/components/ConfigCard.vue @@ -24,7 +24,7 @@ Subtract Add -

{{ props.unit }}

+

{{ props.unit }}

+ + + \ No newline at end of file diff --git a/src/renderer/views/Config/Display.vue b/src/renderer/views/Config/Display.vue index 2c3c71dc..6a51c64e 100644 --- a/src/renderer/views/Config/Display.vue +++ b/src/renderer/views/Config/Display.vue @@ -1,3 +1,130 @@ \ No newline at end of file +
+
+ + + + + + + + + +
+ +

+ FreeRDP Arguments + Advanced +

+
+ + + Press the buttons below to add arguments to FreeRDP, you can choose to either add a new + argument or modify an existing one to your liking via replacement + + + + +
+ + Original Argument + + + + New Argument + +
+ + + + +
+
+ +
+ + + Add Argument + + + + + Replace Argument + +
+
+
+
+ + + + \ No newline at end of file diff --git a/src/renderer/views/Config/General.vue b/src/renderer/views/Config/General.vue index d0665b18..629612aa 100644 --- a/src/renderer/views/Config/General.vue +++ b/src/renderer/views/Config/General.vue @@ -1,3 +1,69 @@ \ No newline at end of file +
+
+ + + + + + + +
+
+ + + + \ No newline at end of file diff --git a/src/renderer/views/Config/Winboat.vue b/src/renderer/views/Config/Winboat.vue index bf916786..801cb855 100644 --- a/src/renderer/views/Config/Winboat.vue +++ b/src/renderer/views/Config/Winboat.vue @@ -1,6 +1,6 @@