Files
sfxkeeb/main.go
T
end 3a5d9d849f feat(wails): add native file dialogs and video streaming
FileService exposes open/save dialogs for video, project JSON, and WAV
export. User-selected videos stream from disk at /localmedia/video with
range request support for seeking in the webview.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 22:22:37 -07:00

59 lines
1.4 KiB
Go

package main
import (
"embed"
"log"
"net/http"
"github.com/wailsapp/wails/v3/pkg/application"
)
//go:embed all:frontend/dist
var assets embed.FS
func main() {
var fileService *FileService
app := application.New(application.Options{
Name: "sfxkeeb",
Description: "Annotate keyboard key presses on a video timeline",
Assets: application.AssetOptions{
Handler: application.AssetFileServerFS(assets),
Middleware: func(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == localMediaVideoPath && fileService != nil {
fileService.serveVideo(w, r)
return
}
next.ServeHTTP(w, r)
})
},
},
Mac: application.MacOptions{
ApplicationShouldTerminateAfterLastWindowClosed: true,
},
})
fileService = NewFileService(app)
app.RegisterService(application.NewService(fileService))
app.Window.NewWithOptions(application.WebviewWindowOptions{
Title: "sfxkeeb",
Width: 1280,
Height: 900,
MinWidth: 960,
MinHeight: 600,
Mac: application.MacWindow{
InvisibleTitleBarHeight: 50,
Backdrop: application.MacBackdropTranslucent,
TitleBar: application.MacTitleBarHiddenInset,
},
BackgroundColour: application.NewRGB(27, 38, 54),
URL: "/",
})
if err := app.Run(); err != nil {
log.Fatal(err)
}
}