Embed Wails runtime.js, serve it from custom asset handler
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
Desktop App / Build Linux (amd64) (push) Has been cancelled
Desktop App / Attach to Release (push) Has been cancelled

The SPA needs /wails/runtime.js for window.wails to be available.
Since we use a custom AssetOptions.Handler, Wails' internal routing
doesn't serve it. Embed the runtime and serve it explicitly.
This commit is contained in:
2026-07-13 23:40:50 +02:00
parent c31978042f
commit 0271727709
3 changed files with 12 additions and 0 deletions

View File

@@ -31,6 +31,9 @@ var assets embed.FS
//go:embed icon.png
var iconPNG []byte
//go:embed runtime.js
var runtimeJS []byte
const (
keyringService = "com.hubris.oikos-desktop"
keyringUser = "oikos"
@@ -330,6 +333,13 @@ func newAssetHandler(cfg *OikosConfig) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path
if path == "/wails/runtime.js" {
w.Header().Set("Content-Type", "application/javascript")
w.Write(runtimeJS)
return
}
if path == "/" || path == "/index.html" {
data, err := fs.ReadFile(distFS, "index.html")
if err != nil {

1
cmd/desktop/runtime.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -11,6 +11,7 @@
</head>
<body>
<div id="app"></div>
<script src="/wails/runtime.js"></script>
<script>window.__OIKOS_CONFIG__ = {};</script>
<script type="module" src="/src/main.ts"></script>
</body>