From c95a0d06bebe34bef18777f4a27602c7178f9108 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 14:51:38 +0100 Subject: [PATCH 1/9] chore: ignore electrobun.config.ts in oxlint --- .oxlintrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.oxlintrc.json b/.oxlintrc.json index f2af87a..b35e7b0 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,7 +1,7 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", "plugins": ["typescript", "react"], - "ignorePatterns": ["src/mainview/routeTree.gen.ts"], + "ignorePatterns": ["src/mainview/routeTree.gen.ts", "electrobun.config.ts"], "options": { "typeAware": true, "typeCheck": true From 09186b15854fad4c688d7c3e384b35e40b70145a Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 14:52:11 +0100 Subject: [PATCH 2/9] feat: bump version to 0.1.3 --- electrobun.config.ts | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/electrobun.config.ts b/electrobun.config.ts index 8a2b6bc..1deeb53 100644 --- a/electrobun.config.ts +++ b/electrobun.config.ts @@ -2,38 +2,40 @@ import type { ElectrobunConfig } from "electrobun"; export default { app: { - identifier: "lovelesscodes.storyforge.dev", - name: "Story Forge", - version: "0.0.1", - description: "A VintageStory mod manager built with Bun and React", - urlSchemes: ["storyforge", "storyforge-dev"], + identifier: 'lovelesscodes.storyforge.dev', + name: 'Story Forge', + version: '0.1.3', + description: 'A VintageStory mod manager built with Bun and React', + urlSchemes: [ + 'storyforge', + 'storyforge-dev', + ], }, runtime: { exitOnLastWindowClosed: true, }, release: { - baseUrl: "https://github.com/StoryForgeApp/storyforge/releases/latest/download" + baseUrl: 'https://github.com/StoryForgeApp/storyforge/releases/latest/download', }, build: { - // Vite builds to dist/, we copy from there copy: { - "dist/assets": "views/mainview/assets", - "dist/index.html": "views/mainview/index.html", + 'dist/assets': 'views/mainview/assets', + 'dist/index.html': 'views/mainview/index.html', }, linux: { - bundleCEF: process.env.NODE_ENV === "production", - icon: "icon.iconset/icon_512x512.png", + bundleCEF: false, + icon: 'icon.iconset/icon_512x512.png', }, mac: { bundleCEF: false, - icons: "icon.iconset", + icons: 'icon.iconset', }, - // Ignore Vite output in watch mode — HMR handles view rebuilds separately - // @ts-expect-error ElectrobunConfig doesn't have watchIgnore yet, but it should be added to avoid unnecessary restarts during development - watchIgnore: ["dist/**"], + watchIgnore: [ + 'dist/**', + ], win: { bundleCEF: false, - icon: "assets/icon_512x512.ico", + icon: 'assets/icon_512x512.ico', }, }, -} satisfies ElectrobunConfig; +} satisfies ElectrobunConfig \ No newline at end of file From afdd4c2228e1b3cae6c5a4200ed1b6c3b49c07c0 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 14:52:45 +0100 Subject: [PATCH 3/9] feat: add bump:electrobun script and update release command --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 0fe9f24..513fcd8 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "build:canary": "vite build && electrobun build --env=canary", "build:dev": "vite build && electrobun build", "build:stable": "vite build && electrobun build --env=stable", + "bump:electrobun": "bun run scripts/bump-electrobun.ts", "dev": "electrobun dev --watch", "dev:hmr": "bun run --parallel \"hmr\" \"electrobun dev --watch\"", "format": "bun run --parallel \"oxlint --fix\" oxfmt", @@ -13,7 +14,7 @@ "hmr": "vite --port 5173", "lint": "bun run --parallel \"oxlint\" \"oxfmt --check\"", "prepare": "husky", - "release": "bumpp", + "release": "bumpp --execute \"bun bump:electrobun\"", "start": "vite build && electrobun dev" }, "dependencies": { From e5d54d57551922723e0a3d69c3b6be6366b2f855 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 14:53:03 +0100 Subject: [PATCH 4/9] feat: extract messages type to reduce duplication --- src/shared/rpc.ts | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/shared/rpc.ts b/src/shared/rpc.ts index fd27d9c..a00d697 100644 --- a/src/shared/rpc.ts +++ b/src/shared/rpc.ts @@ -7,6 +7,12 @@ import { UtilsController } from "@/bun/controllers/utils"; import { VersionController } from "@/bun/controllers/versions"; import { WorldsController } from "@/bun/controllers/worlds"; +type MessagesType = ServerController["messages"] & + ModController["messages"] & + VersionController["messages"] & + LogController["messages"] & + UtilsController["messages"]; + // src/shared/types.ts export type StoryForgeRPCType = { // functions that execute in the main process @@ -27,18 +33,10 @@ export type StoryForgeRPCType = { response: boolean; }; }; - messages: ServerController["messages"] & - ModController["messages"] & - VersionController["messages"] & - LogController["messages"] & - UtilsController["messages"]; + messages: MessagesType; }; // functions that execute in the browser context webview: RPCSchema<{ - messages: VersionController["messages"] & - ModController["messages"] & - InstallationController["messages"] & - LogController["messages"] & - UtilsController["messages"]; + messages: MessagesType; }>; }; From af690e435756a8e152cf3c72c1d461ada857dc24 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 14:53:21 +0100 Subject: [PATCH 5/9] feat: sync electrobun version with package.json --- scripts/bump-electrobun.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 scripts/bump-electrobun.ts diff --git a/scripts/bump-electrobun.ts b/scripts/bump-electrobun.ts new file mode 100644 index 0000000..841df56 --- /dev/null +++ b/scripts/bump-electrobun.ts @@ -0,0 +1,38 @@ +import { writeFile } from "fs/promises"; +import { join } from "path"; +import electrobunConfig from "../electrobun.config"; + +async function bumpElectrobunVersion() { + const packageJsonPath = Bun.file(join(process.cwd(), "package.json")); + + // Read package.json to get the version + const packageJson = await packageJsonPath.json(); + const version = packageJson.version; + + if (!version) { + console.error("Error: Could not find version in package.json"); + process.exit(1); + } + + if (!electrobunConfig.app.version) { + console.error("Error: Could not find version field in electrobun.config.ts"); + process.exit(1); + } + + electrobunConfig.app.version = version; + + // Write the updated config back + await writeFile( + join(process.cwd(), "electrobun.config.ts"), + `import type { ElectrobunConfig } from "electrobun"; + +export default ${Bun.JSON5.stringify(electrobunConfig, null, 2)} satisfies ElectrobunConfig`, + ); + + console.log(`✅ Updated electrobun.config.ts version to ${version}`); +} + +bumpElectrobunVersion().catch((error) => { + console.error("Error:", error); + process.exit(1); +}); From ce23bea5864496210f7c1e317851fa4d6ecad18b Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 15:00:30 +0100 Subject: [PATCH 6/9] chore: remove manual version bump script and use package.json version The version is now sourced directly from package.json in electrobun.config.ts, removing the need for the manual bump script. --- .oxlintrc.json | 2 +- electrobun.config.ts | 34 ++++++++++++++++------------------ package.json | 3 +-- scripts/bump-electrobun.ts | 38 -------------------------------------- 4 files changed, 18 insertions(+), 59 deletions(-) delete mode 100644 scripts/bump-electrobun.ts diff --git a/.oxlintrc.json b/.oxlintrc.json index b35e7b0..f2af87a 100644 --- a/.oxlintrc.json +++ b/.oxlintrc.json @@ -1,7 +1,7 @@ { "$schema": "./node_modules/oxlint/configuration_schema.json", "plugins": ["typescript", "react"], - "ignorePatterns": ["src/mainview/routeTree.gen.ts", "electrobun.config.ts"], + "ignorePatterns": ["src/mainview/routeTree.gen.ts"], "options": { "typeAware": true, "typeCheck": true diff --git a/electrobun.config.ts b/electrobun.config.ts index 1deeb53..1287db0 100644 --- a/electrobun.config.ts +++ b/electrobun.config.ts @@ -1,41 +1,39 @@ import type { ElectrobunConfig } from "electrobun"; +import packageJson from "./package.json"; export default { app: { - identifier: 'lovelesscodes.storyforge.dev', - name: 'Story Forge', - version: '0.1.3', - description: 'A VintageStory mod manager built with Bun and React', - urlSchemes: [ - 'storyforge', - 'storyforge-dev', - ], + identifier: "lovelesscodes.storyforge.dev", + name: "Story Forge", + version: packageJson.version, + description: "A VintageStory mod manager built with Bun and React", + urlSchemes: ["storyforge", "storyforge-dev"], }, runtime: { exitOnLastWindowClosed: true, }, release: { - baseUrl: 'https://github.com/StoryForgeApp/storyforge/releases/latest/download', + baseUrl: + "https://github.com/StoryForgeApp/storyforge/releases/latest/download", }, build: { copy: { - 'dist/assets': 'views/mainview/assets', - 'dist/index.html': 'views/mainview/index.html', + "dist/assets": "views/mainview/assets", + "dist/index.html": "views/mainview/index.html", }, linux: { bundleCEF: false, - icon: 'icon.iconset/icon_512x512.png', + icon: "icon.iconset/icon_512x512.png", }, mac: { bundleCEF: false, - icons: 'icon.iconset', + icons: "icon.iconset", }, - watchIgnore: [ - 'dist/**', - ], + // @ts-expect-error - watchIgnore is not in the type definition but is in the docs + watchIgnore: ["dist/**"], win: { bundleCEF: false, - icon: 'assets/icon_512x512.ico', + icon: "assets/icon_512x512.ico", }, }, -} satisfies ElectrobunConfig \ No newline at end of file +} satisfies ElectrobunConfig; diff --git a/package.json b/package.json index 513fcd8..0fe9f24 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "build:canary": "vite build && electrobun build --env=canary", "build:dev": "vite build && electrobun build", "build:stable": "vite build && electrobun build --env=stable", - "bump:electrobun": "bun run scripts/bump-electrobun.ts", "dev": "electrobun dev --watch", "dev:hmr": "bun run --parallel \"hmr\" \"electrobun dev --watch\"", "format": "bun run --parallel \"oxlint --fix\" oxfmt", @@ -14,7 +13,7 @@ "hmr": "vite --port 5173", "lint": "bun run --parallel \"oxlint\" \"oxfmt --check\"", "prepare": "husky", - "release": "bumpp --execute \"bun bump:electrobun\"", + "release": "bumpp", "start": "vite build && electrobun dev" }, "dependencies": { diff --git a/scripts/bump-electrobun.ts b/scripts/bump-electrobun.ts deleted file mode 100644 index 841df56..0000000 --- a/scripts/bump-electrobun.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { writeFile } from "fs/promises"; -import { join } from "path"; -import electrobunConfig from "../electrobun.config"; - -async function bumpElectrobunVersion() { - const packageJsonPath = Bun.file(join(process.cwd(), "package.json")); - - // Read package.json to get the version - const packageJson = await packageJsonPath.json(); - const version = packageJson.version; - - if (!version) { - console.error("Error: Could not find version in package.json"); - process.exit(1); - } - - if (!electrobunConfig.app.version) { - console.error("Error: Could not find version field in electrobun.config.ts"); - process.exit(1); - } - - electrobunConfig.app.version = version; - - // Write the updated config back - await writeFile( - join(process.cwd(), "electrobun.config.ts"), - `import type { ElectrobunConfig } from "electrobun"; - -export default ${Bun.JSON5.stringify(electrobunConfig, null, 2)} satisfies ElectrobunConfig`, - ); - - console.log(`✅ Updated electrobun.config.ts version to ${version}`); -} - -bumpElectrobunVersion().catch((error) => { - console.error("Error:", error); - process.exit(1); -}); From 835c2d65718f7c38c2726eebc9cf698a3d7d6770 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 15:00:54 +0100 Subject: [PATCH 7/9] chore: remove electrobun.config.ts from oxfmt ignore patterns --- .oxfmtrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.oxfmtrc.json b/.oxfmtrc.json index c7ea818..b417b96 100644 --- a/.oxfmtrc.json +++ b/.oxfmtrc.json @@ -1,6 +1,6 @@ { "$schema": "./node_modules/oxfmt/configuration_schema.json", - "ignorePatterns": ["src/mainview/routeTree.gen.ts", "electrobun.config.ts"], + "ignorePatterns": ["src/mainview/routeTree.gen.ts"], "sortImports": { "newlinesBetween": false }, From b7e24d02de1d7a8bedfa4354a8b29bcaa2f6d0f7 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 15:01:55 +0100 Subject: [PATCH 8/9] chore: enable additional os versions in release workflow --- .github/workflows/release.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 670fecb..b2ab47d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,13 +9,14 @@ jobs: build-and-release: strategy: matrix: - os: [ - # macos-latest, + os: + [ + macos-latest, macos-26-intel, ubuntu-latest, - # ubuntu-24.04-arm, + ubuntu-24.04-arm, windows-latest, - # windows-11-arm, + windows-11-arm, ] runs-on: ${{ matrix.os }} From 3d90b998da190343add9a3c0c3689a2108985ae3 Mon Sep 17 00:00:00 2001 From: Mike Kold Hermann Date: Fri, 13 Mar 2026 18:43:11 +0100 Subject: [PATCH 9/9] chore: remove unnecessary line break in release config --- electrobun.config.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/electrobun.config.ts b/electrobun.config.ts index 1287db0..8a48e0d 100644 --- a/electrobun.config.ts +++ b/electrobun.config.ts @@ -13,8 +13,7 @@ export default { exitOnLastWindowClosed: true, }, release: { - baseUrl: - "https://github.com/StoryForgeApp/storyforge/releases/latest/download", + baseUrl: "https://github.com/StoryForgeApp/storyforge/releases/latest/download", }, build: { copy: {