Skip to content

Upgrade to Native SDK 0.9.0; re-cut the HiDPI patch - #35

Merged
perminder-klair merged 1 commit into
mainfrom
chore/sdk-0.9.0
Aug 13, 2026
Merged

Upgrade to Native SDK 0.9.0; re-cut the HiDPI patch#35
perminder-klair merged 1 commit into
mainfrom
chore/sdk-0.9.0

Conversation

@perminder-klair

Copy link
Copy Markdown
Collaborator

Closes the two loose ends left after #34.

SDK 0.9.0

The patch is still needed. Upstream has not fixed vercel-labs/native#156 — all seven scale-reporting sites in 0.9.0's gtk_host.c still read an integer API (four gtk_widget_get_scale_factor, three gdk_surface_get_scale_factor, zero uses of the fractional gdk_surface_get_scale). Checked by grep before regenerating, not assumed.

The patch had to be re-cut, unlike 0.8.4. gtk_host.c changed in 13 hunks (0.9.0 adds native_sdk_gtk_hide_window, a libsecret credentials store, a deferred-show path), none overlapping the eight patched regions — a patch --fuzz=0 --dry-run against the pristine tarball still applies. But additions at line 358 push everything down, so where 0.8.4 regenerated byte-identical, 0.9.0 needs the eight @@ headers re-cut. Every +/- line is unchanged — the diff on patches/native-sdk-local.patch is 8 insertions / 8 deletions, all hunk headers.

Both version pins move together, which is what apply-sdk-patches.sh enforces: patch_sdk_version and the setup-native action's native-sdk-version.

0.9.0 is additive everywhere this app touches, so nothing under src/ changed:

Surface 0.8.4 → 0.9.0
Effects pub fn list additions only (~35): persist, store*, db*, credentials*, hideWindow, setDockPresence
Platform *_fn services additions only (7): hide_window_fn, set_dock_presence_fn, set_launch_at_login_fn, …
PlatformFeature, manifest permissions, markup vocabulary, builtin icons identical
Automation protocol / minimum_zig_version / trace default 0x096c8aa4730c11ec / 0.16.0 / still .events

Two standing claims re-verified against the 0.9.0 tree rather than carried forward: still no OS media-controls surface (no MPRIS / MPNowPlayingInfoCenter / SystemMediaTransportControls) and still no audio output-device API.

One follow-up deliberately not done here: fx.hideWindow finally gives an app-driven, reversible "get it off the glass" verb — exactly what toggle_mini's minimizeWindow comment says the SDK lacked, so mini mode could stop animating the full player into the Dock. That is a behavior change, not an upgrade step; noted in docs/sdk-notes.md instead.

Housekeeping

  • .gitignore gets .DS_Store.
  • design-reference/desktop-player.dc.html (the Claude Design export) is now tracked next to claude-design-brief.md.

Verification

native test (106 passed / 1 skipped, same as before the bump), native check clean, scripts/check-release-flags.sh ok, apply-sdk-patches.sh verified idempotent on a second run, and the app was built and run on 0.9.0 with a screenshot taken through native automate. The HiDPI patch itself can only be observed on a fractional-scale Linux display, so on macOS it is verified by construction (zero-fuzz apply + the six converted call sites), not by eye.

… export

Upstream has NOT fixed vercel-labs/native#156: all seven scale-reporting sites
in 0.9.0's gtk_host.c still read an integer API (four
gtk_widget_get_scale_factor, three gdk_surface_get_scale_factor, zero uses of
the fractional gdk_surface_get_scale), so the fractional-HiDPI patch is still
required. Confirmed by grep before regenerating, not assumed.

gtk_host.c changed in 13 hunks (0.9.0 adds native_sdk_gtk_hide_window, a
libsecret credentials store and a deferred-show path), none overlapping the
eight patched regions — patch --fuzz=0 --dry-run against the pristine tarball
still applies. Unlike 0.8.4, regenerating did not reproduce a byte-identical
file: additions at line 358 push everything down, so the eight @@ headers are
re-cut against 0.9.0. Every +/- line is unchanged.

Both version pins move together, which is what apply-sdk-patches.sh enforces:
patch_sdk_version and the setup-native action's native-sdk-version.

0.9.0 is additive everywhere this app touches — effects and platform services
gain ~35 and 7 entries respectively, while the PlatformFeature enum, manifest
permissions, markup vocabulary, builtin icons, automation protocol id and
minimum_zig_version are all identical. Nothing under src/ needed changing;
same 106 passed / 1 skipped before and after, and the app was run and
screenshotted on 0.9.0. Trace still defaults to .events, so -Dtrace=off stays
mandatory.

Two standing claims re-verified against the 0.9.0 tree rather than carried
forward: still no OS media-controls surface (no MPRIS / MPNowPlayingInfoCenter
/ SystemMediaTransportControls) and still no audio output-device API.

docs/sdk-notes.md gets the usual per-release section, including the one thing
worth acting on later: fx.hideWindow finally gives an app-driven, reversible
"get it off the glass" verb, which is what toggle_mini's minimizeWindow comment
says the SDK lacked. Deliberately left as a follow-up — it is a behavior
change, not an upgrade step.

Also housekeeping: gitignore .DS_Store, and track the Claude Design export
design-reference/desktop-player.dc.html next to the brief.
@perminder-klair
perminder-klair merged commit 49834b0 into main Aug 13, 2026
4 checks passed
@perminder-klair
perminder-klair deleted the chore/sdk-0.9.0 branch August 13, 2026 11:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant