Repository navigation
v0.2.0
The release 0.1.1 should have been. It carries what 0.1.1 carried, plus two
fixes found afterwards, in the version position the stability contract asks
for.
0.1.1 is not retracted or moved. It stays published, and anything pinned
exactly to it keeps resolving.
Read this before upgrading
Source-breaking. Four PayloadKey constants are gone:
runContextIsDebugrunContextIsSimulatorrunContextIsTestFlightrunContextIsAppStore
They are replaced by runContextChannel, carrying dev, beta or store.
EnvironmentSnapshot.init changed with them: it takes channel: instead of
the four booleans. testPartition(for:) asks whether the channel is .store.
The adapter still emits the vendor's RunContext.isTestFlight wire name on
every channel, not only beta, so dashboards built before the collapse keep
resolving. A chart filtering on isTestFlight == false reads an absent key as
missing rather than false, which is why the flag rides even where it reads
false.
The from: "0.1.0" hazard. from: is upToNextMajor, so it resolves to
>=0.1.0 <1.0.0. Anyone pinned that way picks this release up on their next
resolve and hits the removed keys and the changed initializer at build time.
This is the reason the release sits in the minor position rather than the
patch one, and the reason 0.1.1 was mis-numbered: it made the same break in a
position that promises no break. STABILITY.md now states which position a
0.x release moves.
The ingest URL
ingestURL handed appending(path:) a path already ending in a separator
together with directoryHint: .isDirectory, so the result depended on which
Foundation resolved it: v2// on 6.2, v2/ on 6.3. The vendor 404s the
doubled form and the adapter drops a 404 as permanent.
The path is now assembled through URLComponents, writing each separator
exactly once, so the URL is identical on every Foundation. Every trailing
separator on the base is stripped rather than one, so a base ending in //
cannot leave a doubled separator behind — the gap 0.1.1 shipped with.
Two properties come with that construction: work happens on the percent-encoded
path, so an already-encoded base segment survives verbatim, and the namespace
is encoded as a single component, so a slash inside it stays data instead of
inventing a path segment the server routes on.
The payload version
sdk.version is 1.1.0. It answers which payload shape a row arrived in, and
the shape changed when the run-context fields collapsed. Rows sent by 0.1.1
are stamped 1.0.0 despite carrying the new shape; rows from this release
onward are stamped correctly.
99 tests in 12 suites.