Upgrade to Native SDK 0.9.0; re-cut the HiDPI patch - #35
Merged
Conversation
… 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.cstill read an integer API (fourgtk_widget_get_scale_factor, threegdk_surface_get_scale_factor, zero uses of the fractionalgdk_surface_get_scale). Checked by grep before regenerating, not assumed.The patch had to be re-cut, unlike 0.8.4.
gtk_host.cchanged in 13 hunks (0.9.0 addsnative_sdk_gtk_hide_window, a libsecret credentials store, a deferred-show path), none overlapping the eight patched regions — apatch --fuzz=0 --dry-runagainst 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 onpatches/native-sdk-local.patchis 8 insertions / 8 deletions, all hunk headers.Both version pins move together, which is what
apply-sdk-patches.shenforces:patch_sdk_versionand the setup-native action'snative-sdk-version.0.9.0 is additive everywhere this app touches, so nothing under
src/changed:Effectspub fnlistpersist,store*,db*,credentials*,hideWindow,setDockPresence*_fnserviceshide_window_fn,set_dock_presence_fn,set_launch_at_login_fn, …PlatformFeature, manifest permissions, markup vocabulary, builtin iconsminimum_zig_version/ trace default0x096c8aa4730c11ec/ 0.16.0 / still.eventsTwo 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.hideWindowfinally gives an app-driven, reversible "get it off the glass" verb — exactly whattoggle_mini'sminimizeWindowcomment 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 indocs/sdk-notes.mdinstead.Housekeeping
.gitignoregets.DS_Store.design-reference/desktop-player.dc.html(the Claude Design export) is now tracked next toclaude-design-brief.md.Verification
native test(106 passed / 1 skipped, same as before the bump),native checkclean,scripts/check-release-flags.shok,apply-sdk-patches.shverified idempotent on a second run, and the app was built and run on 0.9.0 with a screenshot taken throughnative 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.