Skip to content

Release 3.15.0 - #68

Merged
zabarov merged 14 commits into
mainfrom
release/3.15.0
Nov 15, 2026
Merged

zabarov merged 14 commits into
mainfrom
release/3.15.0

Conversation

@zabarov

@zabarov zabarov commented Nov 15, 2026

Copy link
Copy Markdown
Contributor

Docara 3.15.0: the Framework pair ui-141822273efe, keyboard keys as Framework sf-kbd, the phone header with branding.logo_icon, no grey flash in example frames, 4 px reading-action gaps, hidden :::preserved blocks, an unclipped dropdown in example frames, Start as a list of links, and about a third fewer stylesheet links per page. See CHANGELOG.md for the full list.

🤖 Generated with Claude Code

zabarov and others added 14 commits November 15, 2026 07:14
…nts and tokens

Docara now bundles SIMAI Framework ui-994f9db407fa (registry bound at
698b188d6, npm @simai-studio/ui 5.20261114.1835) instead of
ui-7fb26d395af2. The change report since 7fb2 adds module.file-types and
utility.gradient, changes 151 units and removes none, so no tag or class
Docara's markup uses goes away. Sites get sf-menu-context 1.19, sf-menu 1.9,
sf-button 1.15, sf-button-icon 1.10, sf-alert 1.4.1, sf-modal 1.7.2, the
tree 1.3.3 and sf-tree 2.3.1, sf-contents 1.7.1, sf-search 1.7.5,
sf-language 1.4, sf-pager 1.3.2, sf-tabs 1.3.1, the highlighter 1.3.1, the
scrollbar 1.2, the key 1.3.3, sf-settings 1.2.1 and Core 1.55. The Recipe
contract stays at edition 1.1.0 with the same digest.

Two Docara adaptations follow the release. sf-button now requires
sf-menu-context and sf-button-icon for its split menu, which its Loader
rule loads lazily; the shared runtime closure followed every requires, so
the eager Smart set doubled and the shell lost its preload (dynamic
fallback). The closure, used by the planner and the Smart sync, now skips
a dependency the rule registry marks lazy: the eager set stays at 16
files. The theme palette now imports the shared deprecations module,
which the adapter answers with the release's own core/js/deprecations.js
(hash-checked from the bundled Recipe runtime), and the theme writes four
palettes, 64 tones and 80 steps, as the status colours are now fixed hues.

Sites that pin ui-7fb26d395af2 (Docara 3.14.3) build with the new release:
that lock is recorded as superseded. The update page lists the new pair and
the version of the old one; the theme page describes four palettes. The
runtime projection grows from 2250 to 2252 files, the Smart projection to
339. Tests follow the new identity, digests and counts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The kbd component now prints <kbd class="sf-kbd">, a key of one sign as
sf-kbd--square. Keys separated only by a plain-text + become one
<kbd class="sf-kbd--group"> with the + kept as a hidden .sf-kbd-join. The
Markdown authors write does not change. The kbd stylesheet is already
linked on every page by the shell group, since the search button's
shortcut uses it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Docara now bundles SIMAI Framework ui-141822273efe (registry bound at
442bae602, npm @simai-studio/ui 5.20261115.29), the release that
supersedes ui-994f9db407fa. Its change report since 994f changes 113 units
and adds or removes none: sf-menu-context 1.22.1, sf-menu 1.10.1, sf-button
1.16, sf-button-icon 1.10.1, sf-alert 1.4.2, sf-contents 1.7.2, sf-search
1.9.1, sf-language 1.4.2, sf-pager 1.3.3, sf-tabs 1.3.2, sf-header-site
1.10.2, sf-icon 1.3, sf-settings 1.4.1, Core 1.56 and its styles 1.13, the
role tokens and the table utilities. The key (component.kbd 1.3.3) and the
Recipe contract (edition 1.1.0, same digest) do not change.

sf-settings 1.4.1 is the 1.2.1 code under a new number; the C176 work
(sf-settings 1.4.0) is still on its own ui-source branch, so the side
panel stays as it is.

The 994f lock is recorded as superseded beside the 7fb2 one. The
CHANGELOG entry names the new pair, the update page lists it. The static
verifier accepts the four-palette theme sheet (64 tones) the 994f palette
writes, as well as the former 128. Tests follow the new identity, Smart
file digests and counts: the documentation build writes 3309 files, the
stub site's shell stylesheets regroup into 56 bundles (10.375 links per
page, 20 at most), and the page-weight budgets of the surface, composition
and example-gallery pages are remeasured for the larger shared sheets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From sf-language 1.4 (owner decision C142) the header's language picker is
a size-1 button with the language icon, the code and a chevron: 100 px
below 60rem and 120 px from it, where 1.2 drew a 40 px icon. On a phone
the tools grew from 177 to 241 px, the brand slot shrank to 57 px, and the
123 px logo ran under the search button.

The place the header holds for the picker before it draws now has the
trigger's measured width (7.5rem, 6.25rem below 60rem), so the tools do not
shift when its script loads.

Choice of fix, in the coordinator's order of preference:
1. sf-header-site 1.10.2 has no compact-logo slot or fit attribute. Its
   collapse moves the nav and the actions slot into the side panel at one
   breakpoint for every width below it (1152 px here), which would take the
   picker out of the bar on tablets too. Its notes leave a phone bar that
   is too narrow to the page: the brand slot may shrink ("to the page's own
   ellipsis").
2. So Docara compacts its own brand: a new optional branding.logo_icon,
   an icon-only mark the docara.brand logo view prints beside the logo.
   Below 28.5rem (456 px: the menu button, search, language, settings and
   repository need 333 px beside the 123 px logo) the header shows the
   icon instead of the logo, in both themes. The documentation site uses
   its square mark, the file it already ships as the favicon. Without
   logo_icon the logo scales down inside the shrinking brand slot rather
   than running under the tools.
3. Below 360 px the tools alone (241 px) are wider than the bar leaves
   them, so Docara's own repository link leaves the bar there. The
   language picker stays in the bar at every width.

All of it is Docara markup and Docara CSS scoped to .docara-header; no
Framework rule or element is overridden.

Checked headless at 320, 360, 390, 430, 768 and 1440 px, light and dark,
on /en/, /ru/ and the kbd page: the boxes of the menu button, logo, search,
language, settings and repository link never intersect, the page does not
scroll sideways, and the console has no errors. The icon is 28 px at 320
and 27 px at 360 (of 32) and whole from 390. The branding page (ru, en)
describes logo_icon; tests cover the icon mark, its absence and the new
reserve.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The frame document draws its content before the Framework stylesheets
reach it by postMessage, so a Framework button's own 100 ms background
transition ran from the browser's default grey: a grey flash as a frame
scrolled in, and an off-screen frame, which is not rendered, kept the
grey start value that contrast audits read.

The frame document now carries
<style data-docara-example-transition-hold> in its head. Where the frame
reports docara:example-styled, the runtime reads the style once with the
hold in place and then removes it, so nothing animates from the
browser's look and later state changes animate as before. An environment
without stylesheets releases the hold at once, and a frame that hears no
environment releases it after ten seconds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The focus and outline toggles in div.docara-reading-actions sat 8px apart
(gap-1/3). Framework rule C144 puts buttons inside one toolbar group 4px
apart, so the row now uses the Framework utility gap-1/4
(--sf-space-1/4), bundled in the Framework's gap utilities; no Docara CSS
is added or overridden.

No divider is added. The rendered markup holds at most two visible
buttons in the row, the focus and outline toggles, which are one group of
view toggles; the focus-exit button is hidden until focus mode and then
stands fixed at the page corner, outside the row. The divider rule applies
between button groups only, and div.docara-reading-toolbar joins the
breadcrumbs (the page's location, not a button group) with the actions
group, so it keeps gap-1 (16px) without a divider.

C105 H5 (two inline code copy controls 18px apart in one list line) is
recorded in the changelog without a code change: on ui-doc.test the 18px
is the word between the codes ("behavior в scrollTo"), measured from the
end of one code to the start of the next with no margin involved. Those
codes are running text made copyable by the Framework's data-sf-code-copy,
not an action row, so shrinking the gap would break the sentence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ED_NOT_SHOWN

The page builder stopped on :::preserved as an unknown component alias,
and Markdown rendered elsewhere showed its text as a plain paragraph. The
block is now dropped, attributes included, before the page, its title or
its description are made; later lines keep their numbers. docara validate
page reports each block as the warning PRESERVED_NOT_SHOWN, the build
prints one summary line, and an unclosed block fails with
MARKDOWN_BLOCK_UNCLOSED instead of showing what follows (C75).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Framework fits an open menu to the frame's room and turns it above
its field when the room below is short. In a short frame at desktop width
the menu flipped up and shrank, so the frame saw a menu that fit and the
list was cut (18 px of the second dropdown example at 1440); only at
phone widths, where it stayed below, did the frame grow.

The frame now measures an open popover without its positioner's inline
max-height (its stylesheet caps stay) and, when the drawn box is smaller,
asks for that size below its flow, capped at the page's height that the
shell now sends with each measure request. The menu then opens below its
field at full size and hangs over the page; the clip path still shows
only its drawn box.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…137)

The Get started index was a :::steps timeline of eight pages to read in
any order; it is now a definition list whose terms are links, shown with
the description under the title in the caption colour. Steps keep the
C101 quiet look: a one-line marker with a regular number, 12/8 gap, 16
between steps, and no current step unless the author names one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s tag

sf-close and sf-icon-button are the other tags of the cl-button-close and
cl-button-icon rules. The shell already carries those rules' stylesheets
and SF_PRELOADED marks the rules loaded, so the Loader never asks for them,
yet the plan linked both files once more under the alias tag. Every page
on the documentation site linked two stylesheets fewer after this (21.5 to
19.5 on average) and fetches 5.4 KB less.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The bundler's byte budget was twice the bytes of the distinct segments,
which left documentation pages linking 10.5 shared stylesheets on average.
At 2.5 times they link 7.3 (at most 21 instead of 24): first-visit bytes
are unchanged, the build publishes 5.8 MB of bundles instead of 4.3 MB,
and the next page fetches about 575 KB of CSS again instead of 376 KB.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sheets

Every page linked Docara's brand.css, navigation.css and preferences.css
on their own. The asset planner now takes the bundled Docara Smart
stylesheets of the elements the page itself draws (data-docara-smart,
outside examples and code) as the first shell segments, where the page
linked them before, and the publisher drops their links. The verifier
re-plans from the final HTML, so it checks them like any other segment.
Project Smart stylesheets and any that name other files keep their links.

On the documentation site a page links 13.2 stylesheets instead of 16.2
(at most 24 instead of 27) for the same bytes; the header, sidebar and
open settings menu compute the same boxes and colours in light and dark.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The seven 3.15.0 branches were measured on their own bases; on one line
over SIMAI Framework ui-141822273efe some pinned numbers and assertions
no longer held. All numbers below come from a build of this tree.

- The narrow-screen landing test opened the first `not all and
  (min-width:60rem)` block of the shell, which the quiet steps now open
  with their own gap; it opens the block that holds the landing step.
- The documentation-site test checks the example measure request with
  the page height the squeezed-menu fix sends, and the published file
  count of the combined tree: 3310.
- The shell stylesheet test bound returns to TARGET_REQUESTS + 2.25: the
  stub site's pages link 8 shell stylesheets on average (53 bundles). Its
  comment no longer quotes 7.66 for the documentation site, and adds the
  measured 3.15.0 numbers.
- The changelog's stylesheet numbers are remeasured on the documentation
  site with the new pair: 18.3 to 16.3 links per page for the alias tags,
  16.3 to 15.0 for the larger shell sheets (shell sheets 12.3 to 10.9, at
  most 23 instead of 22), 15.0 to 12.0 for the Smart styles in the shell.
- page-weight.json gives region-aside and smart-alert (en, ru) their own
  budgets: a page whose example frame shows a whole demonstrator page
  shares fewer of the larger shell sheets with that frame and grows by
  about 0.2 MB, past the 5.5 MB default.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@zabarov
zabarov merged commit 5d5026a into main Nov 15, 2026
9 checks passed
@zabarov
zabarov deployed to simai-server November 15, 2026 14:08 — with GitHub Actions Active

This branch was successfully deployed

2 active deployments
simai-server — 5d5026aa Deployed Nov 15, 2026 by zabarov via deploy #61
github-pages — 5d5026aa Deployed Nov 15, 2026 by zabarov via deploy #74
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