gui/pkg/display
Virgil 3098fc471a
Some checks failed
Security Scan / security (push) Failing after 28s
Test / test (push) Successful in 1m23s
refactor(ax): simplify display and webview constructors
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 08:52:54 +00:00
..
.github/workflows feat: initial Wails v3 desktop framework 2026-01-30 08:44:23 +00:00
assets feat: initial Wails v3 desktop framework 2026-01-30 08:44:23 +00:00
docs refactor(ax): simplify display and webview constructors 2026-03-31 08:52:54 +00:00
.gitignore feat: initial Wails v3 desktop framework 2026-01-30 08:44:23 +00:00
display.go refactor(ax): simplify display and webview constructors 2026-03-31 08:52:54 +00:00
display_test.go refactor(ax): simplify display and webview constructors 2026-03-31 08:52:54 +00:00
events.go refactor(ax): remove legacy compatibility aliases 2026-03-31 07:28:11 +00:00
FEATURES.md refactor(ax): clarify default and named window creation 2026-03-31 07:43:28 +00:00
interfaces.go refactor(display): migrate stale Wails calls to IPC, remove wrapper types 2026-03-13 14:53:50 +00:00
LICENSE feat: initial Wails v3 desktop framework 2026-01-30 08:44:23 +00:00
messages.go refactor(ax): align WebSocket and window naming 2026-03-31 07:23:22 +00:00
mocks_test.go refactor(display): remove extracted clipboard/dialog/notification/theme/screen code 2026-03-13 14:24:06 +00:00
README.md refactor(ax): make window bounds and state updates more declarative 2026-03-31 08:30:58 +00:00

Display

pkg/display is the Core GUI display service. It owns window orchestration, layouts, menus, system tray state, dialogs, notifications, and the IPC bridge to the frontend.

Working Locally

  1. Run the backend tests:
    go test ./pkg/display/...
    
  2. Run the full workspace tests when you touch IPC contracts:
    go test ./...
    
  3. Build the Angular frontend:
    cd ui
    npm install
    npm run build
    

Declarative Windows

Windows are created from a window.Window spec instead of a fluent option chain.

Use OpenWindow(window.Window{}) for the default app window, or CreateWindow(window.Window{Name: "editor", Title: "Editor", URL: "/#/editor"}) when you need a named window and the returned WindowInfo. Use SetWindowBounds("editor", 100, 200, 1280, 720) when you need to move and resize a window in one step.

The same spec shape is used by layout restore, tiling, snapping, and workflow presets.