Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
23d3899
build: add a Zig test name filter option
jinzhongjia Oct 6, 2026
2ee60e5
test(app): run socket integration scenarios on macOS
jinzhongjia Oct 6, 2026
efbdc1d
test(app): wait for client registration before editing eval IDs
jinzhongjia Oct 6, 2026
4dc207d
fix(app): track wait close intent and startup timeout per window
jinzhongjia Oct 6, 2026
7c469cd
feat(app): expose call name, origin, and connection cookies
jinzhongjia Oct 6, 2026
3ec7851
feat(app): serve the upstream default favicon as a fallback
jinzhongjia Oct 6, 2026
57fd705
feat(app): compose html, handler, folder, and entry as site content
jinzhongjia Oct 6, 2026
d35b7bf
feat(app): install replacement content without navigation
jinzhongjia Oct 6, 2026
e329b36
test(app): tolerate server-closed sockets and async event handlers
jinzhongjia Oct 6, 2026
6b75e47
test(app): wait for client registration before checking isShown
jinzhongjia Oct 6, 2026
baa2d41
refactor(app): give each window its own directory monitor task
jinzhongjia Oct 6, 2026
c9c1902
feat(app): create and destroy windows while the app runs
jinzhongjia Oct 6, 2026
0217564
fix(app): notify a destroyed window's pages before cancelling its han…
jinzhongjia Oct 6, 2026
5c0e178
test(app): bound the authentication deadline ping loop by elapsed time
jinzhongjia Oct 6, 2026
051683a
feat(browser): write WebUI app-mode settings into Firefox profiles
jinzhongjia Oct 6, 2026
1d7c06b
feat(browser): launch Firefox windows with generated app-mode profiles
jinzhongjia Oct 6, 2026
6227333
feat(browser): tell registered Chromium from Chrome on Windows
jinzhongjia Oct 6, 2026
941eb54
feat(browser): find macOS browser bundles outside /Applications
jinzhongjia Oct 6, 2026
4ba7781
fix(native): build the WebView2 backend for aarch64 Windows
jinzhongjia Oct 6, 2026
3500f24
refactor(native): share one WebView2 event handler implementation
jinzhongjia Oct 6, 2026
f9dba77
feat(native): mirror page titles into the host window title
jinzhongjia Oct 6, 2026
07cece6
fix(native): allow slow WebView2 cold starts to finish initializing
jinzhongjia Oct 6, 2026
4814365
test(native): collect tests from the platform backend
jinzhongjia Oct 6, 2026
5eb62dc
feat(native): drag and edge-resize frameless GTK windows
jinzhongjia Oct 6, 2026
3e0157c
feat(native): enable WebView2 drag regions and resizable frameless fr…
jinzhongjia Oct 6, 2026
badeb71
feat(native): move frameless Cocoa windows by their background
jinzhongjia Oct 6, 2026
83dddd2
feat(native): report how pages declare window drag regions
jinzhongjia Oct 6, 2026
4f7f923
test(native): drag and resize frameless windows with real input
jinzhongjia Oct 6, 2026
887bf0a
docs: document frameless drag regions and close the native interactio…
jinzhongjia Oct 6, 2026
3ad1b31
docs(native): move the Handle doc comment back to Handle
jinzhongjia Oct 6, 2026
bb49021
feat(native): decide page navigations through an engine-level handler
jinzhongjia Oct 6, 2026
cbc7ebd
feat(native): decide WKWebView navigations through the handler
jinzhongjia Oct 6, 2026
3f40493
feat(native): decide WebView2 navigations through the handler
jinzhongjia Oct 6, 2026
cefae00
test(native): exercise engine navigation decisions in the smoke
jinzhongjia Oct 6, 2026
7c62c1f
docs: document native navigation decisions and close the last semanti…
jinzhongjia Oct 6, 2026
4fea754
test(native): let window-manager state changes settle in the smoke
jinzhongjia Oct 6, 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
6 changes: 3 additions & 3 deletions .github/workflows/parity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ jobs:
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-0 libwebkit2gtk-4.1-0 xvfb xauth dbus-x11 openbox xcompmgr
sudo apt-get install -y libgtk-3-0 libwebkit2gtk-4.1-0 xvfb xauth dbus-x11 openbox xcompmgr xdotool
- name: Core, bridge and example gates
run: |
zig version
Expand All @@ -79,7 +79,7 @@ jobs:
xcompmgr -a & compositor=$!
trap "kill $wm $compositor 2>/dev/null || true; wait || true" EXIT
sleep 1
zig-out/bin/native --smoke
zig-out/bin/native --smoke --require-input
'
env -u DISPLAY -u WAYLAND_DISPLAY zig-out/bin/native --expect-unavailable
- name: macOS native WebView gate
Expand All @@ -91,7 +91,7 @@ jobs:
timeout-minutes: 3
shell: pwsh
run: |
& zig-out/bin/native.exe --smoke --loader "$env:WEBUI_WEBVIEW2_LOADER"
& zig-out/bin/native.exe --smoke --require-input --loader "$env:WEBUI_WEBVIEW2_LOADER"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
& zig-out/bin/native.exe --expect-unavailable --loader "$env:RUNNER_TEMP/nonexistent-WebView2Loader.dll"
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Expand Down
217 changes: 186 additions & 31 deletions README.md

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion build.zig
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ pub fn build(b: *std.Build) void {
.imports = &.{.{ .name = "Linsang", .module = linsang }},
});

const tests = b.addTest(.{ .root_module = webui });
const test_filters = b.option(
[]const []const u8,
"test-filter",
"Run only Zig tests whose names contain this text",
) orelse &.{};
const tests = b.addTest(.{ .root_module = webui, .filters = test_filters });
const test_step = b.step("test", "Run unit and integration tests");
test_step.dependOn(&b.addRunArtifact(tests).step);

Expand Down
67 changes: 41 additions & 26 deletions docs/PURE_ZIG_REFACTOR.md

Large diffs are not rendered by default.

417 changes: 411 additions & 6 deletions examples/native/main.zig

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions examples/public-tls/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ pub fn main(init: std.process.Init) !void {
.public = true,
.use_cookies = true,
.tls = .{ .certificate_pem = certificate, .private_key_pem = private_key },
// Remote visitors arrive whenever they like; never time out the
// first connection.
.startup_timeout = null,
});
defer app.deinit();
const window = try app.createWindow(.{ .content = .{ .html = "<!doctype html><title>Caller-provided TLS</title><h1>Pure Zig WebUI over TLS</h1><script src='webui.js'></script>" } });
Expand Down
Loading
Loading