📝 docs: upgrading to 0.2.0-preview.57 (EN + pt-BR)
Written from the surface diff of the PUBLISHED .56 packages against the .57
build, not from the pull requests. That mattered more than usual this time: the
declared-API baseline was seeded at .55, so its retirements also carry .56's
breaks, and only the diff against what .56 actually shipped isolates this
version.
Every break has the pair a reader meets — the line that no longer compiles and
the line to write instead — and the four collapsed overloads say plainly that
most calls still compile. The entry closes with the one change that is not a
compile error at all, and is the easiest to miss for that reason: an
IServerPrefetch below the page now runs.
📝 docs: what 0.2.0-preview.56 changes, and the live region that came with it (EN + pt-BR)
📝 docs: upgrading to 0.2.0-preview.55 (EN + pt-BR)
📝 docs: three breaks the .54 notes left out, in both languages
Found by comparing the tag body against the public-surface diff, which is the check
that should have run BEFORE the notes were written rather than after them.
- RenderContext lost FIVE members, not the one the notes named: ServiceProvider,
SetGlobalServiceProvider, SetScopedServiceProvider, RegisterService and
TryGetService. Only GetService survives, and its return type changed.
- Navigator.Go's parameter is `destination` where it was `href`. A positional call is
untouched; a named one stops compiling, which is exactly the break a reader of
release notes does not expect to meet in a compiler error.
- BarRect went from eight positional parameters to five: the generated constructor,
the Deconstruct and X/Y/Width/Height went with it.
The notes said the geometry move and the painter, and let those three ride along
inside them. A consumer does not meet "geometry moved"; they meet `bar.X` not
resolving.
📝 docs: what 0.2.0-preview.54 changed under you, in both languages
Geometry moved to Primitives, Point's operators and RRect/Matrix2D are fenced,
ICanvasPainter takes a box, the node hierarchy is closed, and the runtime's route
surface was replaced — each with the one-line answer to the compile error it causes.
Opens with a correction to .53, whose own entry claimed a truncated native label
"now ends in …". The mark was right and the place was not: CoreText's constant 2 is
kCTLineTruncationMiddle, so on macOS .53 cut labels in the middle. Said out loud
rather than quietly fixed, because somebody read that entry and believed it.
📝 docs: .53 cuts the middle, and the entry says so
The entry told a reader a truncated label "now ends in `…`" — true of the mark and
wrong about where. `0.2.0-preview.53` passes CoreText's truncation constant `2` with
a comment calling it `kCTLineTruncationEnd`, and the header says 2 is Middle, so a
label on macOS reads `Replace hardco…with IAppTheme`.
A correction rather than a rewrite: `.53` is a released version and its entry is the
record of what it does. Someone deciding whether to take it needs to know, and the
web realizer beside it was always right.
Both languages, and the headings still match.
📝 docs: .53 — two consumer-found fixes and a grid the server never wrote
Both languages. The entry opens with what got simpler, as every entry does.
Three of these are worth a reader's attention rather than a changelog line: a
`.51` feature that was inert for exactly the themes it was built for; a `.52`
fix that did not work, with the measurement that explains why (the faster the
page, the more reliably it failed); and a spreadsheet that rendered as an empty
span to every crawler since the day it shipped.
The truncation change is the only one that moves pixels, so it says so and says
where: a truncated label on macOS now ends in an ellipsis and measures wider,
because a cut runs to the character where a wrap stops at the word.
📝 docs: .52 says what a cold load does now
Nothing breaks, which is the answer a reader most wants confirmed — the .47
entry set that precedent and this follows it.
The entry opens with what got simpler, as every entry now does: a bookmark link
lands in the same place whether it was followed inside the app or pasted into a
fresh tab, so a scroll nudge someone added to work around that can go.
📝 docs: a theme names its faces, and .51 says what it changed
Two pages, both languages.
DesignSystem gains "Naming a typeface" — the largest new surface in .51 and the
one with nothing written about it. `TypeStyle.Family` per role and
`IAppTheme.MonoFamily` for code, why they have to be two properties rather than
one, the report that names a face the machine could not resolve, and what a
family may be spelled with. It also says what the feature does NOT do: it does
not make a face available. Every claim on the page compiles in
`WikiClaimsCompile`, including the theme whose body the page elides.
Upgrading gains the .51 entry, and each entry now OPENS with what got simpler.
A page that only lists breakage never says whether the upgrade was worth taking,
and this release is mostly contracts finally honoured — the breakage is one
member changing shape.
📝 docs: Upgrading covers 0.2.0-preview.49 and .50, in both languages
The page stopped at .48 while two releases shipped, because the migration notes moved to
the annotated tag and nothing here noticed. The tag stays the full record; this page is
what it has always promised in its own opening line — the compile errors you will meet and
the one-line answer to each — so the entries are distilled from those notes rather than
pasted. The tag messages run to about 170 lines each; the entries here match the scale of
their neighbours.
.50 leads with the four behaviours that changed under code that still compiles, because a
compiler helps with none of them: the OpenUrl scheme policy, VisualNode.Key becoming real
identity (and duplicate sibling keys ceasing to be harmless), focus scrolling that jumps,
and two layout fixes that can move a screen. Its one compile error is the Charts package,
which is now the write-once library rather than the wrappers' shared assembly.
.49 is the Core dissolution, led by the method that actually works — assume the using is
dead, delete, compile — because on one site 31 of 36 files that imported it used nothing
from it, and the string literals a code-generating app holds are the ones a grep misses.
📝 docs: 0.2.0-preview.48 — the deletion, and three renames the wiki was still teaching
The release removes the pre-write-once component model and renames three things
in the vocabulary. The Upgrading page gains its first entry with real substance:
a table of what is gone and where to go instead, and a second one for the renames,
which are the half that bites an ordinary write-once app.
The rest is the wiki catching up with what stopped being true:
- Icons told a reader to implement `IIconProvider` and register it in DI. The
interface is gone; the section is replaced by how an icon actually reaches the
screen (a value, not a service) and the two real ways to have your own.
- Architecture's Server Actions example was written against `ComponentState<T>`
with a separate state class. Rewritten as write-once, state and lifecycle on
the component.
- `Sticky` became `Pinned`, `ZIndex` became `Layer`, `Alt` became `Label`, across
fourteen files. Read rather than find-replaced: lowercase "sticky" in prose is
the idea and stays, and `Alt` in a keyboard table is the key.
📝 docs: the Upgrading page offers the other language
Every other page in this wiki carries a `> 🌐 This page in: …` line under its
heading, and the new Upgrading page was the only pair without one — so a reader
who landed on either half had no way across, and the pt-BR translation existed
without being reachable from the page it translates.
Found by the site's own guards rather than by reading: ui.equantic.tech serves
these pages, and two of its tests exist for exactly this — one asserts a
translation links back to its canonical page, the other that the canonical page
offers the translation. Both named Upgrading.md the moment the submodule moved
to preview.47.
📝 docs: 0.2.0-preview.47, and four marks that had rotted
The release: the app you ship comes from `dotnet publish` (it came from the build
output, so trimming never reached it — 23 MB against 172 measured on our own
sample), the Info.plist declared in C#, notarization and a disk image, a pack
shipping only the glyphs an app names, and the two capabilities that let an app
be reached from outside and reach out to the file system.
Two things the pages say plainly because they read like they might not: no bundle
has actually been notarized by anyone here — that needs a Developer ID
Application certificate rather than more code — and the file dialogs were never
driven live, because a modal panel needs a person to answer it.
And four version claims that had gone stale in PROSE, where no guard can see
them. Three said "next release" about things that shipped in .46 (IConsent, the
GTM installer's status, `[ServerOnly]` on a class, twice). The fourth was worse
because it was advice rather than a date: Icons told a reader to choose a smaller
pack if they only need a handful of glyphs, which stopped being true the day a
pack started shipping only what an app names. A rule that ages into the opposite
of itself reads as current, which is why it is the expensive kind.
📝 docs: what breaks when you upgrade, written down where the next person looks
Four things stopped compiling for a site adopting 0.2.0-preview.46, and none of
them was in the release note: the icon-to-node change, the generated factory
resolving capabilities itself (so its arity dropped), the compiler walking
further into server-only types, and the Roslyn pin moving to 5.9.0.
All four were diagnosed and fixed by the consumer in under an afternoon, which
is exactly why they are worth a page: the second consumer would spend the same
afternoon on the same four, and the errors name their own project rather than
the SDK.
A new Upgrading page, in both languages and in both sidebars, starting at the
release that produced its first entries rather than pretending to a history
nobody recorded at the time.