Skip to content

Tell the release notes the redesign has landed (refs #439) - #488

Merged
tylervick merged 1 commit into
mainfrom
tylervick/rc2-notes-439
Aug 15, 2026
Merged

tylervick merged 1 commit into
mainfrom
tylervick/rc2-notes-439

Conversation

@tylervick

Copy link
Copy Markdown
Member

Refs #439. Notes only — no code, no workflow, no template. One file:
docs/release-notes/4.0.0.md.

The RC preamble has been writing a cheque since #474:

The Xcode-native report redesign lands later in the RC line, with its own
notes appended to this document as it arrives.

It has arrived — #476, #483, #484, #486 are all on main, and #482 gave the
Logs tab something to show. The document still said it was coming. This cashes
the cheque.

What changed

1. The preamble's tense. "lands later in the RC line" → "has landed", plus
what landed and that it is the second thing we are asking for soak time on. The
paragraph above it moves to the past tense for the same reason ("were the first
thing we asked for soak time on"), and the closing sentence now ends the
candidate line on both the reader rewrite and the redesign going a cycle
clean, not just the reader rewrite.

2. A new ## The Xcode-native report redesign section, six subsections:
the summary header and the failure digest; the tests tree; the per-view shell
and the device picker; the filters; the Logs view; and dark mode, contrast and
accessibility as one.

3. A pointer from the existing The Logs tab actually contains the log
section down to it. That section says the log exists; the new one says where
you read it.

Where the section sits, and why

Between What still differs between the two readers and Fixes.

Everything above it is the migration: why a major release, the --json break,
the reader flag, the content deltas both readers share, and what could not be
converged. The redesign is a different axis — presentation, independent of
either reader — so it reads best as "…and the report itself now looks like
this" after the reader has the content story, not interleaved into it.

It also has to come after The Logs tab actually contains the log, because the
Logs subsection is written as a callback to it: that log is the thing the
rebuilt Logs view now has to show. Putting the redesign higher would have made
that a forward reference to a section explaining a bug the reader had not met
yet.

Nothing rc2-specific is hardcoded

The #474 discipline holds: this document is looked up per X.Y.Z, so 4.0.0rc1,
4.0.0rc2, … and 4.0.0 final all resolve to this file, and the per-tag
banner release.yml generates is what carries the tag, the install line and the
asset name.

So the preamble names the candidate ordinally — "from the second candidate
on" — matching the "The first candidate is…" sentence already there. No tag
string, no install command, no archive name is added, and every sentence stays
true verbatim when 4.0.0 final publishes the same file.

grep -nE 'rc[0-9]|xchtmlreport-4' docs/release-notes/4.0.0.md matches exactly
one line, and it is the pre-existing `4.0.0rc1`, `4.0.0rc2`, … that
explains the scheme.

The F7 item is not due yet

F7 asks for the RC framing to come out. It stays, and this PR does not
touch it beyond tense. The framing is what tells a reader the tag they are
looking at is a pre-release, that Homebrew and Mint still resolve to 3.x, and
that a candidate is opt-in — all of which is true of every candidate including
this one. It is due at 4.0.0 final, when the same document publishes behind
no banner at all and "4.0 ships as a release-candidate line" would be the first
false sentence on the page.

Flagging one thing: I could not find F7's own text. #474 carries a single
CodeRabbit review (the hardcoded-rc1 finding, which is the discipline applied
above) and no numbered findings on the PR, in its comments, or anywhere in the
tree. The paragraph above is my reading of the item as the task described it,
not a quote — if F7 says something else, say so and I will redo this part.

Sourcing, and one correction to the brief

Every claim is from a merged PR body and then checked against main, not
transcribed. Spot-checks that changed the copy:

  • The header does not have device bars. Give the report a summary header it can be triaged from (refs #439) #476 added a "Devices &
    Configurations" card; Give each view its own surface and the report one device picker (refs #439) #484 dissolved it into the picker
    (RunSummary+HTML.swift: "the picker the header's device bars became"). A
    first draft described both, which would have documented a card that no longer
    renders. The section now has the header state the ring, the legend, the total,
    the duration and the digest, and hands the per-device bar and tally to the
    picker subsection, where it is something you can act on.
  • "The arrow keys were the only way down a long run" — wrong, and cut. The
    list took no focus, so Page Up/Down, Home and End did nothing in it; arrow
    keys ran off a document-level handler and worked, as did the wheel. The bullet
    now says what was actually broken.
  • 23 executions, N of M lines, tabindex="0" on both the tests list and the
    log body, and the absent "No Selected Attachment" placeholder are each grepped
    out of HTMLTemplates.swift rather than taken from a PR body.

Internal vocabulary is out by construction: no A1/A2/A3 labels, no
KnownLossMasker, no allow-list, no test names, no byte-region tables. Issue
numbers stay, because the document already cites them (#430 and #462 were
already in it; #439 and #460 are new).

The two behaviour changes, called out as behaviour changes

Asked for explicitly, and both are bolded Behaviour change: bullets rather
than left inside a feature list:

  • The sidebar's Identifier: line is gone. Since fix: derive report identifiers from bundle content so runs are reproducible #430 it carried the
    report's own path digest rather than the destination's identifier, so it named
    nothing a reader could match against anything outside the page.
  • The narrow layout is redesigned. Below 700px the views stack and the test
    list scrolls inside its own share of the height — it did not before, and
    because the page itself does not scroll, the overflow was unreachable: on a
    long run the last test in the report could not be brought on screen at all.

Verification

  • Markdown only; no Swift, no workflow, no template touched. swift test is not
    affected and was not run.
  • .githooks/pre-commit run manually: exit 0 (nothing staged that it lints).
    The commit is signed.
  • Rendered the file as GitHub Markdown to confirm the new headings and the two
    cross-references read correctly in a release body.
  • Branched off a fresh main at 611f78e, so the section describes the merged
    state of all five PRs rather than any one branch's.

The RC preamble has been promising that "the Xcode-native report redesign
lands later in the RC line, with its own notes appended to this document as
it arrives." It has arrived: the summary header, the tests tree restyle, the
per-view shell and its device picker, the filters, and a Logs view that can
be read and searched are all on main. The document still said it was coming.

So the preamble now says it has landed — ordinally, "from the second
candidate on", never as a tag string, because this document is shared by
every candidate and by the final release, and the per-tag banner is what
carries install lines and asset names.

The section itself is the user-facing story only, sourced from what the five
merged PRs actually changed for a reader: what the header states and what
clicking a failure digest row does; the outline's badges, indentation and
duration column, and that the list can finally be scrolled from a keyboard;
each view owning its surface, with the two behaviour changes called out as
behaviour changes — the sidebar's Identifier: line is gone, and the narrow
layout is redesigned around a list that used to put its last rows somewhere
unreachable; the filters, including the expected-failure bucket that had no
pill at all; and the Logs view leaving the iframe, which is both what makes
its filter possible and what fixes it rendering as a white slab in dark mode.

It sits after the parity table and before the fixes, so it reads as "and the
report itself now looks like this" once the reader has the migration's
content deltas. The existing "The Logs tab actually contains the log" section
gains a pointer to it: that section says the log exists, this one says where
you read it.

The RC framing itself stays. It comes out at 4.0.0 final, not at a candidate.
@tylervick tylervick added this to the 4.0 milestone Aug 15, 2026
@coderabbitai

coderabbitai Bot commented Aug 15, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@tylervick, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 39 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: d61d2588-ff3a-4ced-a482-da16eae63d0b

📥 Commits

Reviewing files that changed from the base of the PR and between 611f78e and 5a371fa.

📒 Files selected for processing (1)
  • docs/release-notes/4.0.0.md

Comment @coderabbitai help to get the list of available commands.

@tylervick
tylervick merged commit eadc598 into main Aug 15, 2026
10 checks passed
@tylervick
tylervick deleted the tylervick/rc2-notes-439 branch August 15, 2026 05:59
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