Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
0455c5c
deps: add @wailsio/runtime to omniviewdev-runtime package
joshuapare Mar 20, 2026
d54b793
build: replace Makefile and wails.json with Taskfile build system
joshuapare Mar 20, 2026
ad88d31
feat: add v3 menu system with context menu stubs and keybindings
joshuapare Mar 20, 2026
ecaef56
feat: add WindowManager with main window hide-on-close recycling
joshuapare Mar 20, 2026
b6a1034
deps: add wails v3 dependency alongside v2 for migration
joshuapare Mar 20, 2026
049a5fd
feat: add wails v3 vite plugin, update vite to v8
joshuapare Mar 20, 2026
620a9b6
refactor: migrate EventEmitter interface and all call sites to wails …
joshuapare Mar 20, 2026
1def890
feat: add typed event registration for v3 TypeScript binding generation
joshuapare Mar 20, 2026
e4e9e3c
feat: migrate main.go entry point, app service, and asset handler to …
joshuapare Mar 20, 2026
4dd9fff
feat: migrate resource controller to v3 service, delete client wrapper
joshuapare Mar 20, 2026
88a480a
feat: migrate all remaining controllers to v3 services, remove all wa…
joshuapare Mar 20, 2026
9dbce11
feat: migrate runtime package to re-export @wailsio/runtime v3 APIs
joshuapare Mar 20, 2026
5ebe586
feat: migrate all frontend event listeners to @wailsio/runtime Events…
joshuapare Mar 20, 2026
3345c98
deps: remove wails v2 dependency — go mod tidy confirms zero v2 usage
joshuapare Mar 20, 2026
2cccdb7
build: delete legacy wails.json and Makefile — replaced by Taskfile
joshuapare Mar 20, 2026
0a64df7
feat: complete frontend migration to v3 bindings
joshuapare Mar 20, 2026
4233b9e
ci: migrate PR checks from make to task, install wails3 + go-task
joshuapare Mar 20, 2026
0581944
fix: update remaining v2 Window API calls to v3 Window object methods
joshuapare Mar 20, 2026
b2cd3b1
fix: migrate remaining UI files from v2 namespace patterns to v3 dire…
joshuapare Mar 20, 2026
d1651cb
fix: complete UI model import migration to v3 direct imports
joshuapare Mar 20, 2026
57a0060
fix: use export type for EmitFunc re-export (isolatedModules)
joshuapare Mar 20, 2026
a99db02
fix: resolve multi-arg event payloads and restore CreateTerminal binding
joshuapare Mar 20, 2026
e40c0da
fix: eliminate binding warnings with proper service wrappers
joshuapare Mar 20, 2026
4951351
fix: replace interface embedding with explicit method delegation for …
joshuapare Mar 20, 2026
8198530
feat: type all events properly for v3 typed event system
joshuapare Mar 20, 2026
9448617
fix: resolve all TypeScript type errors in runtime hooks
joshuapare Mar 20, 2026
7eeb7c9
fix: rewrite all Taskfiles to match canonical wails3 scaffold
joshuapare Mar 20, 2026
dd70a65
fix: add build:dev script matching wails3 scaffold pattern
joshuapare Mar 20, 2026
4861bab
fix: remove -q flag from pnpm build command (unsupported by vite 8)
joshuapare Mar 20, 2026
7a5df52
fix: set vite dev server port to 9245 to match wails3 config
joshuapare Mar 20, 2026
2882f28
fix: reorder service registration so controllers initialize before pl…
joshuapare Mar 20, 2026
35356b5
fix: update vite config for plugin-react v6 and Vite 8
joshuapare Mar 20, 2026
cd2d1dc
fix: final migration sweep — delete legacy v2 runtime, add dist/.gitkeep
joshuapare Mar 20, 2026
e2848bb
fix: add per-card error boundaries to prevent plugin crashes from tak…
joshuapare Mar 21, 2026
54ab01a
fix: improve card error fallback with centered layout and truncated e…
joshuapare Mar 21, 2026
9ef4e40
fix: configure Vite HMR to connect directly to dev server
joshuapare Mar 21, 2026
f9ba01e
fix: remove custom server config to match wails3 scaffold — fixes HMR
joshuapare Mar 21, 2026
7291553
fix: restore HMR config with localhost/ws protocol per wailsapp/wails…
joshuapare Mar 21, 2026
c7ad4d4
fix: add explicit clientPort to HMR config for Wails webview compatib…
joshuapare Mar 21, 2026
adea807
fix: use dedicated HMR port to bypass Wails WebSocket blocking
joshuapare Mar 21, 2026
59374a7
fix: use application.AssetFileServerFS instead of http.FileServerFS
joshuapare Mar 21, 2026
82fffa3
cleanup: remove unnecessary HMR port workaround
joshuapare Mar 21, 2026
da92f99
feat: add server mode for Playwright E2E testing
joshuapare Mar 21, 2026
e87c826
feat: configure Playwright E2E for Wails v3 server mode
joshuapare Mar 21, 2026
814ef25
chore: gitignore omniview binary
joshuapare Mar 21, 2026
0a35964
ci: migrate all workflows from Wails v2 to v3
joshuapare Mar 21, 2026
4f18b5c
fix: add dist/.gitkeep so go:embed works before frontend build
joshuapare Mar 21, 2026
2b797b1
ci: install correct Wails v3 Linux deps with cached apt action
joshuapare Mar 21, 2026
35c5b1c
ci: update Node.js to v24, install correct Wails v3 Linux deps
joshuapare Mar 21, 2026
4e325e9
chore: update toolchain — Node 24, Go 1.26, pnpm 10, @types/node latest
joshuapare Mar 21, 2026
ded3c99
ci: disable E2E (server mode broken in alpha.74), fix setup-task rate…
joshuapare Mar 21, 2026
d9e330e
ci: create proper macOS .app bundles in all build workflows
joshuapare Mar 21, 2026
7b7d8bc
fix: render Info.plist from config.yml — fixes corrupt macOS .app bundle
joshuapare Mar 21, 2026
59173c3
fix: address code review findings
joshuapare Mar 21, 2026
174656c
fix: add dist/.gitkeep for go:embed (force-add past .gitignore)
joshuapare Mar 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
120 changes: 74 additions & 46 deletions .github/workflows/nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ concurrency:

env:
NODE_OPTIONS: "--max-old-space-size=4096"
GO_VERSION: "1.24"
NODE_VERSION: "20"
GO_VERSION: "1.26"
NODE_VERSION: "24"
PNPM_VERSION: "10"

jobs:
Expand Down Expand Up @@ -89,27 +89,46 @@ jobs:
cache: true
cache-dependency-path: "go.sum"

- name: Install Wails
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Wails v3
shell: bash
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest

- name: Build runtime package
- name: Build frontend
shell: bash
run: pnpm run build
working-directory: packages/omniviewdev-runtime
run: task common:build:frontend

- name: Build Omniview
shell: bash
env:
CGO_ENABLED: "1"
CGO_CFLAGS: "-mmacosx-version-min=10.15"
CGO_LDFLAGS: "-mmacosx-version-min=10.15"
MACOSX_DEPLOYMENT_TARGET: "10.15"
run: |
wails build -platform darwin/universal \
-webview2 download \
-ldflags "\
go build -tags production -trimpath -buildvcs=false \
-ldflags "-w -s \
-X github.com/omniviewdev/omniview/internal/version.Version=${{ needs.check-changes.outputs.nightly_version }} \
-X github.com/omniviewdev/omniview/internal/version.GitCommit=${{ github.sha }} \
-X github.com/omniviewdev/omniview/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
-X github.com/omniviewdev/omniview/internal/version.Development=true \
-X github.com/omniviewdev/omniview/internal/telemetry.buildOTLPEndpoint=${{ secrets.TELEMETRY_OTLP_ENDPOINT }} \
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}"
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}" \
-o bin/Omniview .

- name: Create macOS .app bundle
run: |
task common:generate:icons
mkdir -p bin/Omniview.app/Contents/MacOS
mkdir -p bin/Omniview.app/Contents/Resources
cp build/darwin/icons.icns bin/Omniview.app/Contents/Resources/
cp bin/Omniview bin/Omniview.app/Contents/MacOS/
cp build/darwin/Info.plist bin/Omniview.app/Contents/

- name: Import Code-Signing Certificates
uses: Apple-Actions/import-codesign-certs@v3
Expand All @@ -129,17 +148,17 @@ jobs:
--options runtime \
--entitlements build/darwin/entitlements.plist \
--sign "$APPLE_SIGN_ID" \
build/bin/Omniview.app
bin/Omniview.app

ditto -c -k --keepParent --rsrc build/bin/Omniview.app archive.zip
ditto -c -k --keepParent --rsrc bin/Omniview.app archive.zip

xcrun notarytool submit archive.zip \
--apple-id "$NOTARY_USER" \
--password "$NOTARY_PWD" \
--team-id "$TEAM_ID" \
--wait

xcrun stapler staple build/bin/Omniview.app
xcrun stapler staple bin/Omniview.app

- name: Checkout create-dmg
uses: actions/checkout@v4
Expand All @@ -153,25 +172,24 @@ jobs:
working-directory: ./build
run: |
VERSION="${{ needs.check-changes.outputs.nightly_version }}"
./create-dmg/create-dmg \
../build/create-dmg/create-dmg \
--no-internet-enable \
--volname "Omniview Nightly" \
--volicon "bin/Omniview.app/Contents/Resources/iconfile.icns" \
--text-size 12 \
--window-pos 400 400 \
--window-size 660 450 \
--icon-size 80 \
--icon "Omniview.app" 180 180 \
--hide-extension "Omniview.app" \
--app-drop-link 480 180 \
"bin/Omniview_${VERSION}_darwin_universal.dmg" \
"bin"
"../bin/Omniview_${VERSION}_darwin_universal.dmg" \
"../bin"

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: nightly-macos-dmg
path: build/bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_darwin_universal.dmg
path: bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_darwin_universal.dmg
if-no-files-found: error
retention-days: 1

Expand All @@ -188,10 +206,11 @@ jobs:
with:
submodules: recursive

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev
- name: Install Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
version: 1.0

- name: Setup Node
uses: actions/setup-node@v4
Expand All @@ -213,35 +232,39 @@ jobs:
cache: true
cache-dependency-path: "go.sum"

- name: Install Wails
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Wails v3
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest

- name: Build runtime package
run: pnpm run build
working-directory: packages/omniviewdev-runtime
- name: Build frontend
run: task common:build:frontend

- name: Build Omniview
run: |
wails build -platform linux/amd64 \
-tags webkit2_41 \
-webview2 download \
-ldflags "\
go build -tags "production,webkit2_41" -trimpath -buildvcs=false \
-ldflags "-w -s \
-X github.com/omniviewdev/omniview/internal/version.Version=${{ needs.check-changes.outputs.nightly_version }} \
-X github.com/omniviewdev/omniview/internal/version.GitCommit=${{ github.sha }} \
-X github.com/omniviewdev/omniview/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
-X github.com/omniviewdev/omniview/internal/version.Development=true \
-X github.com/omniviewdev/omniview/internal/telemetry.buildOTLPEndpoint=${{ secrets.TELEMETRY_OTLP_ENDPOINT }} \
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}"
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}" \
-o bin/Omniview .

- name: Rename executable
working-directory: ./build/bin
working-directory: ./bin
run: mv Omniview "Omniview_${{ needs.check-changes.outputs.nightly_version }}_linux_amd64"

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: nightly-linux-binary
path: build/bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_linux_amd64
path: bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_linux_amd64
if-no-files-found: error
retention-days: 1

Expand Down Expand Up @@ -278,37 +301,42 @@ jobs:
cache: true
cache-dependency-path: "go.sum"

- name: Install Wails
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install Wails v3
shell: bash
run: go install github.com/wailsapp/wails/v2/cmd/wails@latest
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest

- name: Build runtime package
- name: Build frontend
shell: bash
run: pnpm run build
working-directory: packages/omniviewdev-runtime
run: task common:build:frontend

- name: Build Omniview
shell: bash
run: |
wails build -platform windows/amd64 \
-webview2 download \
-ldflags "\
go build -tags production -trimpath -buildvcs=false \
-ldflags "-w -s -H windowsgui \
-X github.com/omniviewdev/omniview/internal/version.Version=${{ needs.check-changes.outputs.nightly_version }} \
-X github.com/omniviewdev/omniview/internal/version.GitCommit=${{ github.sha }} \
-X github.com/omniviewdev/omniview/internal/version.BuildDate=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
-X github.com/omniviewdev/omniview/internal/version.Development=true \
-X github.com/omniviewdev/omniview/internal/telemetry.buildOTLPEndpoint=${{ secrets.TELEMETRY_OTLP_ENDPOINT }} \
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}"
-X github.com/omniviewdev/omniview/internal/telemetry.buildPyroscopeEndpoint=${{ secrets.TELEMETRY_PYROSCOPE_ENDPOINT }}" \
-o bin/Omniview.exe .

- name: Rename executable
working-directory: ./build/bin
working-directory: ./bin
run: Rename-Item -Path "Omniview.exe" -NewName "Omniview_${{ needs.check-changes.outputs.nightly_version }}_windows_amd64.exe"

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: nightly-windows-binary
path: build/bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_windows_amd64.exe
path: bin/Omniview_${{ needs.check-changes.outputs.nightly_version }}_windows_amd64.exe
if-no-files-found: error
retention-days: 1

Expand Down
56 changes: 43 additions & 13 deletions .github/workflows/pr-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ concurrency:

env:
GO_VERSION: "1.26"
NODE_VERSION: "20.18.1"
PNPM_VERSION: "9.15.0"
NODE_VERSION: "24"
PNPM_VERSION: "10"

jobs:
go-checks:
Expand All @@ -20,22 +20,34 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Install Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
version: 1.0

- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache: true

- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Build
run: make go-build
run: task check:go-build

- name: Vet
run: make go-vet
run: task check:go-vet

- name: Test
run: make go-test
run: task check:go-test

- name: Format check
run: make fmt-check
run: task check:fmt-check
continue-on-error: true

- name: Lint
Expand All @@ -53,16 +65,28 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Install Linux dependencies
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libgtk-3-dev libwebkit2gtk-4.1-dev libwayland-dev build-essential pkg-config
version: 1.0

- uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
cache: true

- name: Install wails
run: go install github.com/wailsapp/wails/v2/cmd/wails@v2.11.0
- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Install wails3
run: go install github.com/wailsapp/wails/v3/cmd/wails3@latest

- name: Check bindings are up to date
run: make bindings-check
run: task check:bindings-check

ui-checks:
name: UI checks
Expand All @@ -78,6 +102,12 @@ jobs:
with:
version: ${{ env.PNPM_VERSION }}

- name: Install Task
uses: arduino/setup-task@v2
with:
version: 3.x
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
Expand All @@ -90,15 +120,15 @@ jobs:
restore-keys: ${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: make ui-install
run: task check:ui-install

- name: Build
run: make ui-build
run: task check:ui-build

- name: Lint
run: make ui-lint
run: task check:ui-lint
continue-on-error: true

- name: Typecheck
run: make ui-typecheck
run: task check:ui-typecheck
continue-on-error: true
Loading
Loading