Surf 0.16.0: shared client core, Linux preview and native UI - #29
Merged
Merged
Conversation
Signed-off-by: seg6 <hi@seg6.space>
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.
Summary
Prepare Surf 0.16.0: extract the shared C99 client core, ship a usable Linux
client preview, repair downloads across clients/backend, restore native iOS
controls and improve dark appearance, and align the dashboard and repository
page in light/dark mode.
The dashboard appearance picker is in the footer; the Get iOS app button is
removed. Compatibility generation remains 1. Existing installations update in
place without uninstalling or resetting data.
Validation
make test(portable core, all Go packages, Rust workspace)make client-core-sanitizego test -race ./...visual review. Dashboard scripts parse and markup regressions are tested.
The backend CI job now runs the Go suite directly; C and Rust remain covered by
their own jobs with the required dependencies.
CI now declares the headless X11/media tools and clocked virtual audio device,
uses Node 24 actions, retains compiled Rust dependencies after test failures,
separately caches debug/release targets, and caches the native toolchain Docker
layers. Verified main builds warm release dependencies before a signed tag.
Functional streaming checks retain frame/deadline/queue/error assertions;
SURF_TEST_MIN_FPS=55enables the hardware benchmark on a controlled machine(latest local run: 58.17 FPS, 600 frames, zero decode errors).