Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
23 changes: 21 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,28 @@

All notable changes to the Native SDK (formerly zero-native) will be documented in this file.

## 0.4.3
## 0.4.4

<!-- release:start -->

### New Features

- **Native-only host builds (Windows)**: the build graph now infers web use from app.zon — a `.frontend` block, the `"webview"` capability, a `.shell` webview view, or the Chromium engine — and an app that declares none of them compiles its Windows host without the embedded WebView layer: no WebView2 header, no `WebView2Loader.dll` installed, staged, or referenced by the executable. A new `.webview_layer = "auto"|"include"|"exclude"` manifest field (and `-Dweb-layer`) overrides the inference, an exclude that contradicts a web declaration is rejected at validate, configure, and package time, and a native-only build that reaches webview creation at runtime fails fast with a teaching `WebViewLayerNotBuilt` error. `native check` and the package report print the web-layer verdict, and a CI cross-audit asserts the presence/absence of the loader reference in real cross-compiled executables (#107).
- **Native-only host builds (Linux)**: the WebKitGTK compile seam mirrors the Windows one — an app whose app.zon declares no web use compiles its GTK host with `NATIVE_SDK_ALLOW_WEBKITGTK_STUB`, so the executable neither links `webkitgtk-6.0` nor references any `webkit_`/`jsc_` symbol, building needs no WebKitGTK development package, and users need no `libwebkitgtk` at runtime. The web-layer auditor (`tools/audit_web_layer.zig`) grew a hand-rolled ELF reader (DT_NEEDED entries + dynamic symbols) that CI runs both ways: the native-only fixture must scan clean even with the dev package installed, and the Linux canvas smoke now builds on a runner without WebKitGTK at all. `native package` refuses to package a WebKitGTK-linking binary under a native-only decision, record→replay and automation-driven sessions are pinned on native-only apps, and the macOS GPU dashboard smoke asserts a native-only app spawns zero WebKit helper processes (#110).

### Improvements

- **Zig 0.16 guidance**: a new `zig` skill (`native skills get zig`) maps each pre-0.16 std idiom's compile error to the current one — `std.Io` file IO and writers, unmanaged `ArrayList`, `main(std.process.Init)`, spawning, clocks, `{t}`/`{f}` formatting, `build.zig` modules — with the same content for humans as the docs' Zig 0.16 Notes page; the native-ui skill carries the short table, and a failing `native build|test|dev` now points at the catalog when std members come up missing (#105).
- **Lazy Linux WebView startup**: GTK windows now create only GTK chrome at window creation and materialize the main `WebKitWebView` on first web use, so canvas-only apps do not start WebKit processes on Linux; child-WebView bridge responses no longer require a main WebView to exist (#106).

### Contributors

- @ctate
- @WhiteHades
<!-- release:end -->

## 0.4.3

### Improvements

- **Linear-light edge blending**: anti-aliased fringes on opaque rounded rectangles, path fills, and strokes now composite through a linear-light coverage path, removing the dark rims that sRGB blending produced on curved geometry while keeping opaque interiors, glyph coverage, and translucent overlays byte-identical (#89).
Expand All @@ -18,7 +36,8 @@ All notable changes to the Native SDK (formerly zero-native) will be documented
### Contributors

- @ctate
<!-- release:end -->
- @fleeting-zone
- @kvnwdev

## 0.4.2

Expand Down
5 changes: 3 additions & 2 deletions RELEASING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@ To prepare a release:
3. Run `npm --prefix packages/native-sdk run version:sync` to update all version references
4. Run `scripts/changelog-merge.sh` to fold any pending `changelog.d/` fragments into the `## Unreleased` section
5. Write the changelog entry in `CHANGELOG.md`, wrapped in `<!-- release:start -->` and `<!-- release:end -->` markers
6. Remove the `<!-- release:start -->` and `<!-- release:end -->` markers from the previous release entry; only the latest release should have markers
7. Open a PR and merge to `main`
6. Populate the entry's `### Contributors` from commit authors and `Co-authored-by` trailers in the release range, using GitHub handles when available; this marked block is also the GitHub release body
7. Remove the `<!-- release:start -->` and `<!-- release:end -->` markers from the previous release entry; only the latest release should have markers
8. Open a PR and merge to `main`

CI compares the version in `packages/native-sdk/package.json` to what's on npm. If it differs, it cross-builds the CLI for every platform, creates the GitHub release with the binaries, publishes the per-platform binary packages (`packages/native-sdk/npm/*`), and publishes `@native-sdk/cli` last — so the main package only lands once every binary package it pins is live. If npm already has the version but the GitHub release is missing assets, CI recreates the GitHub release from the marked changelog entry.

Expand Down
1 change: 0 additions & 1 deletion changelog.d/native-only-host-linux.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/native-only-host-windows.md

This file was deleted.

1 change: 0 additions & 1 deletion changelog.d/zig-016-guidance.md

This file was deleted.

2 changes: 1 addition & 1 deletion packages/native-sdk/npm/darwin-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-darwin-arm64",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for macOS on Apple silicon (arm64)",
"os": [
"darwin"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/darwin-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-darwin-x64",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for macOS on Intel (x64)",
"os": [
"darwin"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/linux-arm64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-linux-arm64-gnu",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for Linux arm64 (glibc)",
"os": [
"linux"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/linux-arm64-musl/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-linux-arm64-musl",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for Linux arm64 (musl)",
"os": [
"linux"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/linux-x64-gnu/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-linux-x64-gnu",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for Linux x64 (glibc)",
"os": [
"linux"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/linux-x64-musl/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-linux-x64-musl",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for Linux x64 (musl)",
"os": [
"linux"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/win32-arm64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-win32-arm64",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for Windows on ARM (arm64)",
"os": [
"win32"
Expand Down
2 changes: 1 addition & 1 deletion packages/native-sdk/npm/win32-x64/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli-win32-x64",
"version": "0.4.3",
"version": "0.4.4",
"description": "The native CLI binary for Windows x64",
"os": [
"win32"
Expand Down
18 changes: 9 additions & 9 deletions packages/native-sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@native-sdk/cli",
"version": "0.4.3",
"version": "0.4.4",
"description": "The Native SDK: the complete toolkit for building native desktop applications — declarative markup, native rendering, WebView surfaces, and OS capabilities",
"type": "module",
"bin": {
Expand All @@ -23,14 +23,14 @@
"LICENSE"
],
"optionalDependencies": {
"@native-sdk/cli-darwin-arm64": "0.4.3",
"@native-sdk/cli-darwin-x64": "0.4.3",
"@native-sdk/cli-linux-arm64-gnu": "0.4.3",
"@native-sdk/cli-linux-arm64-musl": "0.4.3",
"@native-sdk/cli-linux-x64-gnu": "0.4.3",
"@native-sdk/cli-linux-x64-musl": "0.4.3",
"@native-sdk/cli-win32-arm64": "0.4.3",
"@native-sdk/cli-win32-x64": "0.4.3"
"@native-sdk/cli-darwin-arm64": "0.4.4",
"@native-sdk/cli-darwin-x64": "0.4.4",
"@native-sdk/cli-linux-arm64-gnu": "0.4.4",
"@native-sdk/cli-linux-arm64-musl": "0.4.4",
"@native-sdk/cli-linux-x64-gnu": "0.4.4",
"@native-sdk/cli-linux-x64-musl": "0.4.4",
"@native-sdk/cli-win32-arm64": "0.4.4",
"@native-sdk/cli-win32-x64": "0.4.4"
},
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion tools/native-sdk/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const tooling = @import("tooling");
const automation_protocol = @import("automation_protocol");
const cli_build_info = @import("cli_build_info");

const version = "0.4.3";
const version = "0.4.4";

pub fn main(init: std.process.Init) !void {
const allocator = init.arena.allocator();
Expand Down
Loading