Skip to content

Support pre-release tags, and keep Metal debug info out of shipping builds - #30

Open
whoisaldo wants to merge 4 commits into
mainfrom
release/prerelease-support
Open

Support pre-release tags, and keep Metal debug info out of shipping builds#30
whoisaldo wants to merge 4 commits into
mainfrom
release/prerelease-support

Conversation

@whoisaldo

Copy link
Copy Markdown
Owner

Groundwork for handing a build to an external tester before v0.2.0 is final.

Pre-release tags. A v0.2.0-rc1 tag published as a normal release would become /releases/latest — which docs/download.html reads — so an RC would be advertised to every visitor. Any semver pre-release tag (one containing a hyphen) now publishes with --prerelease: testers get a real download link while the website keeps pointing at the newest stable build. The release body also leads with the version-parity rule, since protocol v2 is a clean break and a mismatched host/app pair is the likeliest way a tester's first attempt fails.

Metal debug info. MTL_ENABLE_DEBUG_INFO: INCLUDE_SOURCE was in the target's settings.base, so shader source and debug info were compiled into Release builds too — including anything uploaded to TestFlight. Now debug-only. (Flagged in the review's tail list.)

Verified with a Release-configuration device build (-configuration Release -destination generic/platform=iOS), which is the closest check to the real TestFlight build available without signing certificates: BUILD SUCCEEDED.

EternalMonitor is Windows-only, but nothing on the site said so above the
fold, so Mac visitors had to read the subtitle or hit the download page to
find out. Show them a dismissible notice naming the free native option that
already solves their problem.

Detection requires platform "Mac" AND maxTouchPoints <= 1: iPadOS reports
"MacIntel" as its platform, and iPad users are the audience, not the ones to
turn away.

Dismissal is stored in sessionStorage, so it does not nag while browsing but
returns on a fresh visit.
…uilds

Testers need a real download link before the final release exists, but a
v0.2.0-rc1 tag published as a normal release would become
/releases/latest — which is exactly what the website reads, so an RC
would be advertised to everyone. A semver pre-release tag (anything with
a hyphen) now publishes with --prerelease: testers get a link, the site
keeps pointing at the newest stable build.

The release notes now also state the version-parity rule up front, since
protocol v2 is a clean break and a mismatched pair is the most likely
way a tester's first attempt fails.

Separately, MTL_ENABLE_DEBUG_INFO: INCLUDE_SOURCE sat in the target's
base settings, so shader source and Metal debug info were compiled into
release builds too, including anything uploaded to TestFlight. It is now
debug-only.
The download page reads /releases/latest, which by definition skips
pre-releases — so a build that exists only for testing was invisible
there and testers had to be sent a link by hand.

A preview card now appears when a pre-release exists, styled as a
warning rather than an offer: it leads with "This is a test build, not a
release", uses the quieter ghost button so it can't be mistaken for the
stable download, and spells out that the Windows host and the iPad app
must come from the same preview, since protocol v2 makes a mismatched
pair fail. It carries the tag, file size and SHA-256 like the stable
card, and hides itself again once a stable release supersedes it.
FRIENDS_TESTING gains the full path for putting a build in a tester's
hands without them needing Xcode: archive and upload (both the Xcode
route and the CLI one), the App Store Connect steps, why the first
external build waits on Beta App Review, and the two links a tester
needs. QUICKSTART now names TestFlight explicitly and leads with the
rule that bites hardest, which is that the host and the app must be the
same version.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant