Repository navigation
Make the tool choosers consistent - #2258
Merged
Merged
Conversation
Contributor
📝 Preview Deployment🔍 Full site preview: https://deploy-preview-2258.quarto.org 🔄 Modified Documents |
Contributor
📝 Preview Deployment🔍 Full site preview: https://deploy-preview-2258.quarto.org 🔄 Modified Documents |
Contributor
|
Backport failed for Please cherry-pick the changes locally and resolve any conflicts. git fetch origin prerelease
git worktree add -d .worktree/sync-2258-to-prerelease origin/prerelease
cd .worktree/sync-2258-to-prerelease
git switch --create sync-2258-to-prerelease
git cherry-pick -x dab304ac66444f870c8950bfa3a9c42d8a641120 |
This was referenced Oct 2, 2026
cwickham
added a commit
that referenced
this pull request
Oct 6, 2026
* Fix skipped heading levels in markdown headings (#2227) * Heading order fixes * Remove extra h1 and reflow * Fix headings that should have been "captions" * Update freeze (cherry picked from commit c56f6cb) * Fix contrast of the extensions chooser and listing description links (#2235) * Use the theme link color for the extensions category chooser The chooser tiles hard-coded #5092dd, which is 3.23:1 on white (WCAG 1.4.3 needs 4.5:1). var(--bs-link-color) gives 5.15:1 in light mode and 7.27:1 in dark mode. Clears axe color-contrast-0f9515 (20 instances on 5 pages). * Underline links in listing-table descriptions Quarto's listing-table styles remove link underlines, so description links rely on color alone: 2.23:1 against body text, short of the 3:1 WCAG 1.4.1 needs. Clears axe link-in-text-block-82c7eb and the extensions-page instances of link-in-text-block-7b0c90. (cherry picked from commit e26940f) * Make the tool choosers consistent (#2258) * Make the tool choosers consistent with a shared page-chooser shortcode * Use --bs-border-color for chooser tiles in light mode (cherry picked from commit dab304a) * Close the listing-link rule so the visually-hidden code rule applies again (#2257) #2235 left out the closing brace of the listing-description link rule. Browsers then read the #2234 rule for screen-reader-only code blocks as a nested rule that never matches, and the blocks became scrollable regions again (axe scrollable-region-focusable). (cherry picked from commit 6f27b3f) * fix(a11y): give embedded videos an iframe title (#2141) Screen readers announce an iframe by its title. The video shortcode emits title="" when the author omits the title argument, so these two embeds failed axe's frame-title check (serious, WCAG 2.0 A, SC 4.1.2). Add title="CERN: The Journey of Discovery" to the two live {{< video >}} calls, and to the escaped copies the same pages display as source, so the shown example matches the rendered output. In tables.qmd the call sits inside a data-qmd="..." attribute, so the title uses single quotes. (cherry picked from commit ccf7a9e)
3 of 5 tasks
cderv
added a commit
that referenced
this pull request
Oct 16, 2026
…2293) * Merge sync PRs to prerelease right away and retry failed backports Since the v1.10 release merge, every auto-backport to prerelease has failed, and the fixes reached prerelease only through manual backports weeks later. Most failures were an ordering race rather than real divergence: sync PRs stay open for minutes to hours, and a second PR to main touching the same file is cherry-picked onto a prerelease that does not have the first change yet. #2141 conflicted on a freeze file because the sync PR of #2138 merged 19 seconds after it. Failed backports are never retried, so each one then breaks every later PR on the same files (#2227 after #2141, #2258 and #2257 after #2235). The workflow now merges a clean sync PR immediately and publishes prerelease itself, since a merge made with GITHUB_TOKEN does not fire the push event publish.yml listens to. A failed backport labels the source PR backport-failed, so the missing changes are listable instead of buried in bot comments. After each sync merge, and after any manual merge into prerelease, the workflow comments /sync-prerelease on the oldest labeled PR, so a backport that only waited on an earlier change applies on its own. No concurrency group: GitHub cancels a pending run when another queues, which would drop backports silently when several PRs merge within minutes. The cost of merging without review is that a main-only PR now needs the no-sync-prerelease label before it merges, where it used to be enough to leave the sync PR unmerged. * Label sync PRs that fail to merge A sync PR can also fail to merge when prerelease moves between the cherry-pick and the merge. That backport now gets the backport-failed label too, instead of being missed by the list and the retry. The open sync PR is left for a manual merge. Publishing no longer depends on the label cleanup succeeding after the merge, since nothing else publishes a GITHUB_TOKEN merge. * Retry the oldest failed backport even past 30 labeled PRs gh pr list returns at most 30 results by default, newest first, so with more labeled PRs the sort only saw the newest 30 and the oldest backport, often the one the others wait on, would never be retried.
Merged
3 of 5 tasks
github-actions Bot
added a commit
that referenced
this pull request
Oct 16, 2026
…2293) (#2295) * Merge sync PRs to prerelease right away and retry failed backports Since the v1.10 release merge, every auto-backport to prerelease has failed, and the fixes reached prerelease only through manual backports weeks later. Most failures were an ordering race rather than real divergence: sync PRs stay open for minutes to hours, and a second PR to main touching the same file is cherry-picked onto a prerelease that does not have the first change yet. #2141 conflicted on a freeze file because the sync PR of #2138 merged 19 seconds after it. Failed backports are never retried, so each one then breaks every later PR on the same files (#2227 after #2141, #2258 and #2257 after #2235). The workflow now merges a clean sync PR immediately and publishes prerelease itself, since a merge made with GITHUB_TOKEN does not fire the push event publish.yml listens to. A failed backport labels the source PR backport-failed, so the missing changes are listable instead of buried in bot comments. After each sync merge, and after any manual merge into prerelease, the workflow comments /sync-prerelease on the oldest labeled PR, so a backport that only waited on an earlier change applies on its own. No concurrency group: GitHub cancels a pending run when another queues, which would drop backports silently when several PRs merge within minutes. The cost of merging without review is that a main-only PR now needs the no-sync-prerelease label before it merges, where it used to be enough to leave the sync PR unmerged. * Label sync PRs that fail to merge A sync PR can also fail to merge when prerelease moves between the cherry-pick and the merge. That backport now gets the backport-failed label too, instead of being missed by the list and the retry. The open sync PR is left for a manual merge. Publishing no longer depends on the label cleanup succeeding after the merge, since nothing else publishes a GITHUB_TOKEN merge. * Retry the oldest failed backport even past 30 labeled PRs gh pr list returns at most 30 results by default, newest first, so with more labeled PRs the sort only saw the newest 30 and the oldest backport, often the one the others wait on, would never be retried. (cherry picked from commit 35c61f4) Co-authored-by: Christophe Dervieux <christophe.dervieux@gmail.com>
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.
The five "Choose your tool" interfaces had different labels and markup, and copied CSS and JS. This PR makes them consistent.
page-choosershortcode (_extensions/page-chooser/) replaces three copies of the markup, CSS and script. Each chooser is now a<nav>named by a visible label, witharia-currenton the active page. The items are in_metadata.yml.tools-tabset:aria-labelledbyon the visible label replacesaria-hiddenplusaria-label. A selected tab no longer changes size.role="button"is removed from the links. The manuscripts logos are decorative (alt=""). The cards now show a visible focus ring (WCAG 2.4.7).<style>in the extensions chooser is removed. The.toolrules are the same in bothtutorial.cssfiles, and these rules no longer apply to other links on the page.An axe scan of the same 32 pages before and after the change shows no new findings. Screenshots below.
Where to check
Related: #2222. This PR adds new files and changes
filters/tools-tabset.lua, which #2222 renames. There is one small conflict instyles.css.