// This file is only compiled with -tags gui. //go:build gui // +build gui package main import ( "embed" _ "embed" "log" "os" "path/filepath" "verstak/internal/core/storage" "verstak/internal/core/nodes" "verstak/internal/core/files" "verstak/internal/core/notes" "verstak/internal/core/actions" "verstak/internal/core/worklog" "verstak/internal/core/search" "verstak/internal/core/plugins" "github.com/wailsapp/wails/v3/pkg/application" ) //go:embed all:frontend/dist var assets embed.FS func main() { vaultPath := "." if len(os.Args) > 1 { vaultPath = os.Args[1] } abs, err := filepath.Abs(vaultPath) if err != nil { log.Fatal(err) } dbPath := filepath.Join(abs, ".verstak", "index.db") db, err := storage.Open(dbPath) if err != nil { log.Fatalf("Open vault: %v", err) } defer db.Close() // Initialize core services (registered for Wails bindings). _ = nodes.NewRepository(db) _ = files.NewService(db, abs) _ = notes.NewService(db, abs, nil, nil) _ = actions.NewService(db) _ = worklog.NewService(db) _ = search.NewService(db) plugins.NewManager(abs).Discover() app := application.New(application.Options{ Name: "verstak", Description: "Verstak — local-first working vault", Assets: application.AssetOptions{ Handler: application.AssetFileServerFS(assets), }, }) app.Window.NewWithOptions(application.WebviewWindowOptions{ Title: "Верстак", Width: 1200, Height: 800, }) if err := app.Run(); err != nil { log.Fatal(err) } }