Changelog
What changed, and when.
0
0.11
0.11.0 (2026-10-29)
Breaking Changes
- Atelier needs Quarto 1.9.38 or later, the highest version its embedded extensions need. (#63)
- If your project has its own copy of iconify, gitlink, code-window, toc-depth or collapse-output, remove it and its
filtersentry. Otherwise both copies run. (#63)
New Features
- feat: Style blockquotes with an inset bar, a decorative opening quote that screen readers skip, and a quieter attribution for
footer,citeand.attribution. (#61) - feat: Set section numbers smaller, in tabular numerals and in the primary colour. Listing and appendix headings keep the default look. (#61)
- feat: Include the iconify, gitlink, code-window, toc-depth and collapse-output extensions, so installing Atelier is enough for a documentation website. gitlink shows only its repository widget, and Code Window frames only blocks with a
filename. (#63) - feat: Draw a Code Window with the border, corner radius and spacing of a plain code block, in both colour schemes. (#63)
- feat: Add opt-in classes for a landing page: a hero, feature rows with an optional numbered legend, and a card grid whose cards are links. Modifiers change the layout, and add a title gradient and a figure glow from the primary colour. (#65)
Bug Fixes
- fix: Keep
aria-expandedoff the click area of the narrow-screen bar and the backdrop of the open sidebar, which have no role to carry it. (#74) - fix: Derive the small and large corner radii from
$border-radius, so a brand that sets only the base radius keeps the three in proportion. (#73) - fix: Remove the copy button of a
.visually-hiddencode block, which covered the text below when it had focus. (#73) - fix: Leave Ctrl, Alt and Meta shortcuts alone on a listing category, and filter once when Enter or Space is held down. (#72)
- fix: Give a link in a callout title the colour of the title and an underline, so it keeps a 4.5:1 contrast ratio on the tinted title band. (#71)
- fix: Make the skip link the first Tab stop on Quarto before 1.11.2, ahead of the navbar, the sidebar and the floating colour scheme toggle. (#70)
- fix: Update the embedded gitlink to 1.12.0, so a site with no repository no longer gets a gitlink warning on every page. (#68)
- fix: Print a filled button, such as
.btn-primary, with a readable label and a border, because browsers print without background colours. (#65) - fix: Show one focus ring on every control, including form fields, search, sidebar toggles, navigation tools, the copy button, the colour scheme toggle and pagination, and use the system highlight colour in forced colours mode. (#62)
- fix: Keep a focused control clear of the fixed navbar, including the secondary bar on narrow screens. (#62)
- fix: Cut every animation and transition to a blink, and stop smooth scrolling, when the reader prefers reduced motion. (#62)
- fix: Put the back-to-top button in the Tab order and show it while it has focus, so keyboard users can reach it and press it with Enter or Space. (#58)
- fix: Announce navbar menus as buttons rather than links, and drop the invalid
menurole from the collapsed navbar button. (#58) - fix: Hide navigation icons that sit beside text from screen readers, and name icon-only tools from their icon. (#58)
- fix: Make the search overlay a modal dialog. Tab stays inside it, the result count is announced, the highlighted result follows focus, and closing it puts focus back on the search button. (#58)
- fix: Size the colour scheme toggle in the sidebar tools like the icons beside it. (#58)
- fix: Move the floating colour scheme toggle to the start of the focus order, next to where it is drawn. (#58)
- fix: Show one skip link with Quarto 1.11.2 or later, which adds its own. (#58)
- fix: Underline links in table listings again. Quarto removes the underline, so colour alone marked links in running text. (#52)
- fix: Make listing categories reachable with Tab and usable with Enter or Space. Quarto renders them as plain
divelements. (#52) - fix: Give the author email link in the title block an accessible name, taken from the address. (#53)
- fix: Keep the text of title block category badges at full strength, so it passes the contrast check. (#53)
- fix: Fade h3 to h6 headings by their colour rather than their opacity, so links inside them keep their contrast. (#53)
- fix: Hide the title block metadata container when the page has no metadata. (#53)
- fix: Name each footnote back-link for screen readers and give it a 24 pixel target. The name is in English, because Quarto offers no translated string for it. (#54)
- fix: Draw the appendix at full opacity, so its back-links and licence link keep a 4.5:1 contrast ratio. (#54)
- fix: Apply the theme corner radius in website projects, where Quarto reset it to 0.25rem. A project theme that sets
$border-radiusor$border-radius-smstill wins. (#55) - fix: Remove the lightbox link of an image made for the other colour scheme from the tab order. (#55)
- fix: Make the header of a collapsible callout a button that exposes whether it is open, and keep a link in the title working. (#55)
- fix: Separate the callout type from the title for screen readers, so “Note Title” no longer reads as one word. (#55)
- fix: Paint Mermaid subgraphs from the page surface, so they are no longer dark grey on a light page and white on a dark one. (#55)
- fix: Default to the
arrow-lightandarrow-darkhighlighting themes, with every token colour at 4.5:1 or more on the default code surface. Manygithub-lighttokens failed that ratio. (#56) - fix: Put highlighted inline code on the code block surface, so its token colours stay readable in dark mode and in a link. (#56)
- fix: Keep a
.visually-hiddencode block hidden. It no longer shows a thin frame or a copy button, or leaves a scrollable box that the keyboard cannot reach. (#56) - fix: Keep the highlight of a selected code annotation inside the code block, level with the gutter highlight. (#56)
- fix: Mark the current page in the sidebar for screen readers, as the navbar already does. (#57)
- fix: Show the current page by more than its colour. It is bold in every sidebar style, and underlined in the navbar of a page without a sidebar. (#57)
- fix: Make sidebar section toggles 24 by 24 px, and space the sidebar links so that each one meets the 24 px target size. (#57)
- fix: Let keyboard users open the “On this page” and sidebar toggles that replace a side column when wide content overlaps it. The toggles now say whether they are open, and their hidden links leave the tab order. (#57)
- fix: Stop announcing the bar above the page on narrow screens as a navigation landmark, because its links are in the breadcrumbs. (#57)
- fix: Name the sidebar and page navigation landmarks, so that each landmark has its own name on Quarto 1.11.3 and earlier. (#57)
- fix: Let keyboard users open and close sidebar sections on Quarto 1.11.1 and earlier. (#57)
- fix: Start the names of the previous and next page links with “Previous” or “Next”, so that screen readers say which way each link goes. (#57)
- fix: Start the page outline with the page title, rather than with the “On this page” heading of a side table of contents. (#57)
0.10
0.10.7 (2026-10-15)
- fix: Keep the current item of a navbar or sidebar dropdown readable. It now takes the hover colours, rather than mixing Bootstrap’s active fill with the menu text colour. (#49)
- fix: Give the search field its localised “Search” name for screen readers in every search layout. Quarto names it “Submit” in a text box and gives it no name in the overlay. (#48)
0.10.6 (2026-10-11)
- fix: Theme Code Window through its
--code-window-bgand--code-window-title-bgvariables, so its title bar stays distinct in dark mode and a collapsible window’s filename stays readable. This needs Code Window 1.6.0 or later. (#43) - fix: Always inset code inside its frame so it stands apart from prose, and show code blocks as outlines when
code-block-bgisfalse. A filename title bar no longer picks up that frame. (#44) - fix: Blend the code annotation gutter into the code surface, so annotated code no longer shows a light strip down its edge. (#44)
- fix: Keep the copy button clear of the annotation markers on annotated code. (#44)
- fix: Space code at the start or end of a callout like text, and keep its copy button inside the frame. (#45)
- fix: Hold inline code, the navbar and sidebar accent, and footer text to a 4.5:1 contrast ratio on the surface each one sits on. (#46)
- fix: Fade callout titles by colour rather than opacity, so code in a title keeps its contrast, and give a callout with no type a light title band. (#46)
- fix: Derive muted text, such as the previous and next page links, from the page colours at a 4.5:1 contrast ratio or more. Set
$atelier-text-mutedto change it. (#46)
0.10.5 (2026-09-23)
Documentation
- docs: Serve the extension’s social card as the Open Graph image, so a shared link shows the card rather than the first image on the page. (#38)
Refactoring
- build: Update the vendored Lua modules to 2.5.0. The three modules this project type uses changed only by dropping the version line from their headers, so their checksums moved and their behaviour did not. (#39, #40)
0.10.4 (2026-09-06)
Refactoring
- build: Declare the vendored Lua modules in
_extensions/atelier/_dependencies.ymland move them to_extensions/atelier/_vendor/. Each module names the release it came from, so it can be checked against that release. (#33)
0.10.3 (2026-08-26)
- fix: Paint the close button of a modal, an offcanvas, a toast, and a dismissible alert from the text colour around it, so it stays readable in both colour schemes. (#31)
0.10.2 (2026-08-01)
- fix: keep the gitlink widget’s menu inside the sidebar, so a docked sidebar carrying it no longer has a permanent horizontal scrollbar. Quarto gives the column
overflow-y: autoand leavesoverflow-xatvisible, which computes toauto, so anything wider scrolls it sideways rather than being clipped; the menu is anchored to its trigger’s left edge and sized to its content, and the theme centres the tools row, so it ran past the right edge. It raised the scrollbar even while shut, because it is hidden withvisibilityand so still takes part in layout. It is now anchored to the tools row, which spans the column.
Documentation
- docs: Move the website into
docs/, matching the layout every other extension in the family now uses, so the release workflow detects it and the Pages workflow deploys it from the release tag. - docs: Generate a changelog page from
CHANGELOG.md, through the shared pre-render and post-render scripts. - docs: Build the site from the copy of the extension synced from the repository root, so it is rendered by the version being released.
- docs: Trim
README.mdto a landing page pointing at the website. - docs: Add the Pages workflow and the Quarto Extensions Updates workflow.
- docs: Serve the site in the book-like layout the rest of the family uses: no navbar, with the docked sidebar carrying the navigation, the search, and the repository widget, and a three-part footer.
--profile navbarrenders the same pages with the navbar the project type ships by default. - docs: Rename
example.qmdtoexamples.qmdandreference/index.qmdtoreference.qmd, so the pages are named as they are everywhere else. - docs: Pin the installs the site offers to the release tag it is built from, and offer them from the editor through Quarto Wizard.
0.10.1 (2026-08-01)
- fix: frame an
.embed-artcard at the dimensions of what it holds rather than at a fixed shape. An<img>is framed at its own dimensions and an<embed>at thewidthandheightgiven on the image, so the padding stays the same on all four sides; anything that did not match the old fixed 1.5 was letterboxed inside it, which read as a band of padding down one axis and none on the other.--atelier-embed-art-widthand--atelier-embed-art-rationow apply only to an<embed>given no size of its own, which is the one case with nothing to follow.
0.10.0 (2026-08-01)
New Features
feat:
.embed-art, a utility class that frames an embedded document or an image as a tilted, centred card. The class goes on the image itself, so no wrapper div is needed.--atelier-embed-art-width,--atelier-embed-art-ratio, and--atelier-embed-art-tiltresize or straighten it, and the card holds its resting angle underprefers-reduced-motion: reduce.fix: cancel the tabset link colour transition under
prefers-reduced-motion: reduce. It was the one motion the theme introduced that the guard did not cover.
0.9
0.9.0 (2026-07-31)
Breaking Changes
- The navbar, the page footer, and the sidebar now follow the colour scheme by default rather than staying dark in both. Set
$atelier-chrome: dark;in the defaults block of a project stylesheet to keep the previous appearance. website.navbar.background,website.navbar.foreground,website.page-footer.background, andwebsite.page-footer.foregroundno longer have any effect: the chrome palette sets$navbar-bg,$navbar-fg,$footer-bg, and$footer-fgfrom a layer Quarto evaluates first. The project type no longer sets them either.
New Features
feat:
$atelier-chrome, takingauto,light, ordark, which decides whether the chrome follows the colour scheme or is pinned to one palette in both. The three bars are drawn from one triple,$atelier-chrome-bg,$atelier-chrome-fg, and$atelier-chrome-accent, each of which can be set on its own; the two pinned palettes are$atelier-chrome-dark-*and$atelier-chrome-light-*. An unknown value fails the render with a named error rather than compiling to something arbitrary.feat: hand the resolved palette to Quarto’s own
$navbar-*,$sidebar-*, and$footer-*variables from a defaults layer evaluated after_brand.yml. This is what puts the colours Quarto bakes into its own markup, which CSS cannot reach afterwards, on the same palette as everything else, and it retires most of the!importantrepainting the theme carried.feat:
--atelier-navbar-control-borderand--atelier-sidebar-control-border, the boundary of a boxed control, at 55% of the chrome foreground. The existing border tokens stay the hairline between two surfaces, which is what the sidebar edge, the section dividers, and the navbar and footer edges want.feat:
--atelier-navbar-control-size,--atelier-navbar-control-icon-size,--atelier-navbar-search-icon-size, and--atelier-navbar-control-gap, the one box the navbar-right controls are drawn in. The defaults are the numbers the gitlink widget uses, so the bar reads the same whether or not that extension is installed.feat: fall back per scheme to the brand background for
extensions.atelier.theme-color, so a site with a_brand.ymlgets both<meta name="theme-color">tags without restating colours it has already declared. The value is the one Quarto compiles into$body-bgfor that bundle, which is the colour the page is painted with; an explicittheme-colorstill wins, scheme by scheme, and a site with neither still emits nothing.fix: ink the reader-mode toggle from the chrome foreground. Quarto bakes
$sidebar-fginto the glyph’s SVG markup, which on the sidebar was the page ink and could match the column it sat on.fix: run the chrome foreground and accent through Quarto’s
theme-contrast()at the AA level, which lifts either only when it falls under 4.5:1 against the bar. A brand primary picked against the page can fall under the ratio on a tint of that page.fix: draw the sidebar search field and the gitlink widget pill from the new control-border tokens. Both took the hairline token, which against the bars is around 1.5:1 and reads as no border at all, where WCAG 1.4.11 asks 3:1 of a user-interface component; 55% clears it on a light bar as well as a dark one.
fix: size the navbar search button, the colour-scheme toggle, and the navbar tools from one control box, so the bar carries one set of controls rather than three. Quarto draws the search as a 40px button with a 26px glyph, leaves the toggle an inline link with no height of its own, and gives a tool icon the link font size. The search’s
margin-left: autois replaced by the control gap at every width, which also retires the collapsed-navbar rule that did the same for small screens alone. The magnifier itself sat in a block wrapper whose height was a line box rather than the icon, which left uneven space above and below it and dropped the glyph off the button’s centre, and it draws in 20 units of a 24-unit viewBox, so at the shared icon size it painted a sixth shorter than the colour-scheme glyph beside it.fix: give the sidebar tools their own line, below the title and above the search field, following
sidebar.align. Quarto renders them inside the sidebar title whenever a titled sidebar has no navbar, as an inline row pulled up six pixels, which left the colour-scheme toggle trailing the title text. The rule forces nothing the gitlink extension sets, so a sidebar tool widget keeps its column layout and its ordering between the icon tools and the search.
Documentation
- docs: document the chrome as one palette across the three bars: the
$atelier-chromemodes, the pinned palettes, the resolved triple, and when to reach for the Sass variables rather than the custom properties. - docs: add a
sidebarQuarto profile to the demo site, rendering it withnavbar: falseand a pinned, docked sidebar carrying the navigation and alocation: sidebar,type: textboxsearch, which is the book-like layout the README describes. Run it withquarto preview --profile sidebar.
0.8
0.8.0 (2026-07-31)
New Features
feat: dark-pinned docked sidebar, so a book-like
website.sidebarwithstyle: dockedjoins the navbar and the footer as one chrome in both colour schemes. Quarto derives that surface from the page instead, which alongside a navbar leaves the column following the body, and without one falls back to Bootstrap’s$light, painting a near-white column beside a dark page.feat:
--atelier-sidebar-*custom properties, each defaulting to its--atelier-navbar-*counterpart, driving the whole column: item ink, active item pill, section dividers, collapse chevrons, group labels, header and logo link, sidebar tools and their dropdown menus, sidebar search, the mobile bar carrying the sidebar toggle and the breadcrumbs, the sidebar edge, the sidebar scrollbar, and the focus ring. Astyle: floatingsidebar keeps Quarto’s page-coloured treatment, since it has no surface of its own.fix: colour sidebar links, hover, and the active item from the sidebar accent instead of
$primary, which with the default tokens was 3.2:1 against the dark column in the light scheme. The focus ring inside the sidebar takes the accent for the same reason.fix: ink the sidebar search field, caret, placeholder, and magnifier, and the overlay search button beside them. Quarto colours the field from
$body-colorand the button only inside.sidebar-tools-*, either of which can match the surface it sits on.fix: paint the mobile secondary navigation bar, which Quarto paints with the sidebar surface this theme replaces.
fix: draw the sidebar’s right edge and the footer’s top edge from the border tokens, so all three bars carry the same hairline. Quarto draws both from its baked
#dee2e6, the sidebar with!importantsincesidebar.borderdefaults to true when docked, and the footer through abody-prefixed rule that outranked the previous selector.
Documentation
- docs: document the sidebar tokens, the book-like sidebar configuration, that
website.sidebar.backgroundandforegroundhave no effect on a docked sidebar, and that a project settingnavbar: falserenders no search until the sidebar asks for it.
0.7
0.7.1 (2026-07-27)
- fix: keep a small gap between the colour-scheme toggle and the search button once they are grouped at the right edge of the collapsed navbar. Cancelling Quarto’s automatic margin also removed every space between the two controls.
0.7.0 (2026-07-27)
- fix: group the colour-scheme toggle with the search button at the right edge of the collapsed navbar and centre the brand. Quarto hands all the free space to the search button alone, which left the toggle stranded beside the brand and the search on its own at the far right.
0.6
0.6.0 (2026-07-26)
- fix: build
og:urlfrom the page’s output file rather than from its input name, so a page settingoutput-fileno longer advertises a URL that does not exist and that disagrees with its own canonical link. - fix: emit the canonical link through Quarto’s own
canonical-url, now on by default, instead of from the bundled filter.canonical-urlis a render key and never reaches a Lua filter, so a project that set it shipped two<link rel="canonical">tags. Quarto builds the same directory URL for a directory index, so the tag itself is unchanged; setcanonical-url: falseon a page served from more than one URL, as the bundled 404 front matter now does.
Documentation
- docs: add a reference page listing the website, format, and
extensions.atelieroptions the project type contributes, which is also the demo site’s first page below the site root. - docs: correct the icon path note. Since 0.5.0 the filter writes each path exactly as configured and Quarto’s resource resolver applies the page offset.
- docs: note that
sitemap.xmllists a directory index asindex.htmlwhile the canonical link uses the directory URL, that both serve the same page, and that the canonical is the stronger signal.
0.5
0.5.0 (2026-07-26)
- fix: write the icon, Apple touch icon, and manifest
hrefexactly as configured. Quarto’s website resource resolver already prefixes each page’s offset to the project root onto everylink[href]it finds, so adding one in the filter doubled it and broke every icon on pages below the site root. - fix: point
og:urland<link rel="canonical">of a directory index at its directory rather than atindex.html, since that is the URL the site serves and the one a scraper de-duplicates against.
0.4
0.4.0 (2026-07-26)
New Features
- feat: bundled
social-metadatafilter emitting the head tags Quarto’s website machinery has no configuration for:og:type, a per-pageog:urland<link rel="canonical">, and<meta name="description">from the page’sdescriptionorsubtitle(Quarto never populates the pandocdescription-metavariable its own HTML template reads). - feat:
extensions.atelieroptions foricon,apple-touch-icon,manifest, and a light and darktheme-color, each emitted only when set, with paths rewritten per page so they resolve underquarto previewand under a project-path prefix alike. - feat:
og:localeset toen_GBto match the format’slang: en-GB, and the Twitter card switched on assummary_large_image, which Quarto otherwise leaves off entirely.
Documentation
- docs: document the social metadata and icon options, including the YAML anchor needed to reach
website.site-urlfrom a Lua filter, and theproject.resourcesentries that get the icon and manifest files copied to the output directory.
0.3
0.3.0 (2026-07-26)
Documentation
- docs: document that format options go under
atelier-html, since declaringhtmlreplaces the format and silently drops the bundled scripts,lang, and the theme. - docs: document how to add a project stylesheet, including the
body-mix()function and the$brand-*variables generated from_brand.yml. - docs: document which controls receive a tooltip, and that a navbar item with visible text is given an
aria-labelinstead.
0.2
0.2.0 (2026-07-26)
- fix: give icon-only navbar links a themed tooltip and an accessible name when the glyph is not an
iconify-icon, such as an inline SVG or a CSSmask-imagemark; the link previously kept the browser’s unstyled tooltip and gained no label.
0.1
0.1.0 (2026-07-24)
New Features
- feat:
atelierproject type providing a portable, accessible documentation-website foundation (dark-pinned navbar with search, page footer, repo actions, Open Graph, page navigation, back-to-top, andllms-txt). - feat: dark-mode-correct code surfaces, tabset panels, and scrollbars derived from the brand palette through
body-mix(), working around Quarto’s baked light greys and the never-setdata-bs-themeselector (Quarto marks the scheme withbody.quarto-darkand swaps the stylesheet bundle). - feat: accessibility scaffolding (keyboard-reachable skip link, visible focus outline, navbar tooltips, external-link treatment) and ordinal-date rendering via bundled scripts.
- feat: dark-pinned navbar tokens exposed as
--atelier-navbar-*custom properties so a project can override the neutral-slate defaults to match its palette. - feat: bridge the
--atelier-navbar-*tokens onto the gitlink widget’s--gitlink-widget-*custom properties so the navbar widget matches the dark-pinned navbar out of the box (inert without the extension). - feat: sidebar, table-of-contents, and back-to-top styling; active links and the TOC border take the palette accent, and the back-to-top pill gains a
body-mix()hairline. - feat: palette-accent code-copy button, legible on the tinted code surface in both schemes.
- feat: heading letter-spacing exposed as
--atelier-heading-letter-spacing. - feat: dark-pinned footer repainted from the navbar tokens, including link colours.
- feat: scheme-stable announcement-banner colours pinned per alert type via
--atelier-announcement-*custom properties. - feat: styled 404 page pattern;
.atelier-404ghost-numeral hero derived frombody-mix(), demonstrated by the site’s own404.qmdand documented in the README.