Skip to content

Pin SIMAI Framework ui-cb287da78ab1 with pro-b671241d4d34; action pages, badges, wrap long inline code - #17

Merged
zabarov merged 88 commits into
mainfrom
docs/repin-cb287
Nov 9, 2026
Merged

zabarov merged 88 commits into
mainfrom
docs/repin-cb287

Conversation

@zabarov

@zabarov zabarov commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Docs pinned to SIMAI Framework pair ui-cb287da78ab1 (ui-source 44a5efda, bind fd651a12b, npm 5.20261109.559, core.runtime 1.45.0) with the Pro package pro-b671241d4d34 (ui-pro b671241, archive fc4a964f, pair-range "within, built-over"). Carries the docs work since #16, shown on ui-doc.test.

  • Pin: version sync, generated reference, token table, property types, standards (component-set 1.2.0); English home re-accepted.
  • C20 shadows, C21 heading ladder, C22 compact density; object-form calls (toggleFor({anchor}), select({value})).
  • Actions pages on current names: ghost (was link), status="danger" (was error / destructive), cycle and theme-cycle on buttons and icon buttons; download file teaches file-type, preparing and error states; copy button defaults to ghost.
  • Badges: the text inset line (--sf-space-1/2: 12 px desktop, 8 px phone) and a sf-badge--tight example on both pages.
  • Home admin demo rebuilt from ui-admin 7ec6fb4 (pinned to this pair and Pro package); 28 new English strings.
  • Long inline code wraps (page transform scripts/inline-code-wrap.mjs), so no page scrolls sideways: 0 pages wider than the window at 1440; at 390 only the header tools (language button) remain at 400, fixed in the next Framework pair.

Checks: docs:check exit 0; migration idempotency (CI command) 0 Markdown changes; local release on ui-doc.test verified in headless Chromium, 3 loads at 1440 and 390 (runtime ui-cb287da78ab1, console clean except a pre-existing tags.min.js 404 on chat-window and property-view). Owner approved publishing (2026-11-09).

🤖 Generated with Claude Code

zabarov and others added 30 commits November 6, 2026 12:36
…ove into component pages

Owner, 2026-11-06: the header keeps Руководство, Утилиты, Компоненты and
Смарт-компоненты. Component sets are cards on the home page (status,
licence, link to the set's site or its current pages); Pro pages keep their
addresses and are reached from those cards, so the reachability audit counts
sections the home page links into. A separate «Решения» section is dropped:
its examples become «Применение» in the component pages (language in the
menu, dropdown and segmented switch; theme in settings; user menu and sign-in
on the avatar; the full header tools on the site header), and the page
standard admits «Применение» for class and Smart pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build e7b79c3a9, bind 108a0e7eb, ui-source 5443d10d,
ui-builder 9c9c1b1, npm 5.20261105.2041. It carries ui-62b1d9b6dc8d
(sf-alert-bar, sf-list, sf-list-feed, SF.readingPosition, the format
modules, sf-input-date 1.4.0 with mode datetime and time, field renderers
1.3.0) and ui-4cd23cd8b490, and adds sf-alert-bar 1.0.1 and core.runtime
1.29.0. The Pro package pro-db5cc2a375bd is the one built for this pair:
sf-message-log 2.0.0 (a dated alias of sf-list-feed until 2027-01-01),
sf-editor 1.2.0, sf-chat-window 1.13.0, sf-admin-menu 1.7.1. No Pro
package was built for ui-62b1d9b6dc8d, and the materializer takes a
receipt only for the pinned pair.

The version sync moves every pinned value, the CDN examples and the block
kit link name 5.20261105.2041; the English home is re-accepted. The
standards sync adds simai.admin-navigation-port 1.1.0. 85 manifest strings
and the two card heading variables get Russian text.

Corrections for what the pair changed:
- Встроенные типы: layout.grid holds three columns on every screen, the
  form.* types, the accent section; the 1.26.0 types keep naming
  ui-c3015f76bcc2 (a keep span, so the sync no longer moves it).
- Отрисовщики полей: a datetime is one sf-input-date mode="datetime", the
  time type, splitTime and composeTime.

Reviews recorded: menu contract, composition contract (11 pages), Smart
lessons at source 5443d10d (field renderers only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…, reading position, sf-editor 1.2.0

New pages on the third Smart standard, each with live examples:
- Плашка уведомлений (smart/feedback/alert-bar): levels, sizes, the
  minimized state, ordering, closing, events and close().
- Список (smart/content/list): groups by day and by key, sizes, loading
  and empty, the open row, row actions, rename in place, the next page.
- Лента (smart/content/list-feed): empty and growing entries, earlier
  history, upsert in place, renderItem, stream events, methods.
They are registered in the Smart reference, the reference-page standard,
the catalogue groups and the catalogue index.

Календарь: mode datetime and time, min-time, max-time, minute-step, the
time row's keys, typing and the change detail's mode and time, with an
example. Лента сообщений: sf-message-log is the dated name of sf-list-feed
until 2027-01-01, with the table of former names; its examples use the
2.0 names. Редактор страниц: page settings (pageSettings, the page slot,
sf-editor-page-change and -page-action), reset to the variant, the
sectioned catalogue. JavaScript API: SF.readingPosition and SF.format with
the side-effect-free format modules.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The single mixed example becomes three, the arrangements sf-settings-menu
had before it was folded into sf-context-menu: drill with the value under
the name, rows with the control at the end, tiles on top. Prose events use
the canonical sf-menu-context-* names.

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

The pair is ui Build 1ec283e85, bind d77d78a7b, ui-source 82cf89e2,
ui-builder 9c9c1b1, npm 5.20261106.1926: sf-language 1.0.0, sf-button-group
1.2.0 (items[].lang), sf-button-icon 1.4.1 (a host aria-label changed after
the first drawing reaches the button), sf-list-feed 1.0.1 (docs), core.runtime
1.30.1. The Pro package pro-ff58cea49d9a is the one built for this pair
(receipt framework.release ui-1ec283e856cd, archive sha 768bd72a, no unit
changed since pro-22376674af4e).

Docara moves from 3.10.0 to 3.11.1 (page templates, generated regions, the
SIMAI Framework site header); the runtime is materialized again after the
update.

The version sync moves every pinned value and the CDN examples; the block kit
link on Блоки names 5.20261106.1926; the English home is re-accepted.

Corrections for what the pair changed:
- На странице: a style set on the tag reaches the markup of every component
  (smart-base keeps the inherited part and the custom properties on the host).
- Отрисовщики полей: placeholder reaches the dropdown of a choice and a
  choices field.

Reviews recorded: menu contract (files unchanged), composition contract
(core.js changes only CORE_RUNTIME), Smart lessons at source 82cf89e2.

sf-language gets its page in the next commit; until then the reference
builder reports it unplaced.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Выбор языка (smart/navigation/language), on the third Smart standard: the
look by count (2-3 a segmented switch, 4-7 the translate button with a menu,
8 and more the menu with search), codes instead of names, sizes, the
disabled state, what a choice does (change first, cancellable; href, else
SF.language.use with lang and dir), an address per language, remembering
the choice and restoring it before the first paint, the form field,
select() and toggleMenu(), the site header and right-to-left languages.
Inline examples use apply="none" so they never switch the documentation
page; the framed ones apply the language to their own frame or cancel
change and say where the site would go. 19 manifest strings get Russian
text, and three strings of the repin (button-group items, list rows, the
dropdown placeholder).

Группа кнопок names items[].lang; Кнопки с иконкой says a changed
aria-label reaches the inner button.

examples/shared/event-log.js is a small panel that lists what an example's
components fire (name and a short detail). A frame cannot load a site file,
so scripts/sync-example-helpers.mjs writes the helper into every index.js
that asks for it with an <example-helper event-log> region, and
`composer docs:check` fails when a copy differs.

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

Owner remarks R007 and R006 on the buttons page, applied to every Smart and
Pro component page:

- build-smart-reference writes one badge line under the H1 with the tag and
  version of each component the page documents, and no longer renders
  «Прежние имена» or alias events on component pages. Earlier names are
  collected into the generated «Прежние имена по компонентам» of the names
  guide.
- audit-reference-pages fails a Smart page without the badge line, with a
  version in its prose or with earlier names on it; message-log documents
  the sf-list-feed alias as its subject and is exempt (alias_of).
- Inline versions and retired names removed from page prose (buttons,
  icon buttons, chat window, thread list, chat message, mail canvas,
  message log) and from the Russian appearance description of sf-button.
- Variant headings on the buttons page name their attribute.
- reference-page-standard describes the badges, the earlier-names rule, the
  specimen grid and the shared event log.

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

Owner remarks R002, R005, R008 and R011 on /ru/smart/actions/buttons/:

- Every variant and state example is one specimen grid: equal cells, the
  specimen centred, the value alone in a small muted line under it; the
  attribute lives in the H3. Inline, utilities only.
- Loading names its spinner (the one sf-spinner draws), shows the page look
  set by data-sf-spinner with the four looks side by side, and has its own
  size scale.
- Live examples for href (links print where they go), pressed (the page
  flips the state on sf-button-press), the form and onClick, and the
  shortcut, each with the shared event log.
- Example frames are sandboxed without allow-forms, so submit never fires
  there: the form examples (buttons and sf-language) read the press of the
  submit button and print what the form would send.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build 5bebd29af, bind 36389497f, ui-source 9a978ec4,
ui-builder 9c9c1b1, npm 5.20261106.2300. It carries the sf-settings pair
ui-d1abe5f216c9 (sf-settings 1.0.0, sf-menu-context 1.6.1, component.context-menu
1.1.2, core.runtime 1.30.2) and the button fixes: sf-button 1.4.1 (one line at
a segment join, keys that show on a filled button, square one-character keys),
component.buttons 1.3.0, component.icon-buttons 1.1.3. The Pro package
pro-836ad432a36a is the one built for this pair (receipt framework.release
ui-5bebd29af045, archive sha 768bd72a, no unit changed since pro-ff58cea49d9a).
Docara stays at 3.11.1.

The version sync moves every pinned value and the CDN examples; the block kit
link on Блоки names 5.20261106.2300; the English home is re-accepted. The
generated class and variable tables follow the release: the Buttons component
page lists sf-button-shortcut-key--square and --sf-button-shortcut--ink in
place of the chars-N keys, the context menu page the choice option height.

Corrections for what the pair changed:
- Кнопки (Smart): one-character keys are squares, multi-letter keys hug their
  word, keys take the button's own ink on default and tonal.

Reviews recorded: menu contract (files unchanged), composition contract (the
button manifest changes only its version, core.js only CORE_RUNTIME), Smart
lessons at source 9a978ec4 (hashed files unchanged).

sf-settings gets its page in the next commit; until then the reference
builder reports it unplaced.

Docara 3.11.1 still prints its search trigger with the removed class
sf-button-shortcut-key--chars-4; the live sf-button redraws it with the new
runtime.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Настройки (smart/navigation/settings), on the third Smart standard, beside
Контекстное меню in navigation: the items as data (JSON island or property)
and the row kinds; the three looks as separate live examples (drill, rows,
tiles), each a specimen with its value and the shared event log; the size
ladder as a specimen grid; a disabled setting and option; the popup by the
trigger slot or for, or in the page's flow; the fixed width with long names
and values; change and changed with a page that saves first and answers
with setValue; setValue, setAll, show and reset with their outcomes;
remember, shown by drawing a new element that takes the kept values. 16
manifest strings get Russian text; the reference section and version badges
are generated.

The three settings examples of the context menu page move to the
sf-settings page and are rewritten for <sf-settings>. On the context menu
page «Строки со значением» is now one paragraph: value rows serve a mixed
menu (a profile menu with a theme choice), a panel of settings alone is
sf-settings (owner, 2026-11-07).

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

«Поиск на стороне хоста» gets its example: search.remote, each query as
sf-menu-context-search with detail.query, the host answering from a slow
server with the first six sites and a note on the rest, a stale answer
dropped, the choice as sf-menu-context-select; the shared event log under it.

The page's prose and its examples name the menu's events by their current
names (sf-menu-context-select, -open, -close, -search, -tab), as the
reference table does; the sf-context-menu-* names are dated aliases.

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

sf-button hands data-* attributes to its inner button, so the method buttons
of the methods example and the redraw button of the remember example had no
handler: the clicks are now read from whichever element carries the
attribute. The sizes example holds JSON islands, which only a sandboxed
example admits; it moves from inline to the frame.

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

A menu whose host answers a remote search with no rows closes and drops the
focus (ui-5bebd29af045) instead of showing search.empty. The example answers
an empty result with one note row, so the menu stays open with its empty
text and a hint; the defect goes to the SIMAI Framework thread.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build 98143c0a0, bind 6fd937abd, ui-source c8c78ffa,
ui-builder 9c9c1b1, npm 5.20261107.34. It carries sf-menu-context 1.7.0
(a search stays put over its rows, a chosen row is filled, a tick leads;
docs review R012/R013 and owner decision R016), component.context-menu 1.2.0
and sf-settings 1.0.1. The Pro package pro-07d3b344cc4d is the one built for
this pair (receipt framework.release ui-98143c0a0728, archive sha 768bd72a,
no unit changed since pro-836ad432a36a). Docara stays at 3.11.1.

The version sync moves every pinned value and the CDN examples; the block kit
link on Блоки names 5.20261107.34; the English home is re-accepted. The
generated class table of the context menu component page lists
sf-context-menu-content--search, sf-context-menu-list and
sf-context-menu-item--chosen.

Reviews recorded: menu contract and composition contract (files unchanged),
Smart lessons at source c8c78ffa (hashed files unchanged).

The pages describe the new search and chosen-row behaviour in the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he chosen row's fill

sf-menu-context 1.7.0 and component.context-menu 1.2.0 (R012, R013, R016):
- Контекстное меню (Smart): «Отмечен» puts a check box's tick on the left,
  in the icon column; a new «Выбранная строка» with its own example (a sort
  list) marks the chosen pick-one row by its fill, with no check and no end
  column; a new «Поиск» under «Поведение» with a live example (18 cities):
  the field stays on top, only the rows scroll under it, 8 px around the
  field. Entries, the language menu and accessibility say the same.
- Контекстное меню (classes): «Поиск» (sf-context-menu-content--search,
  sf-context-menu-search, sf-context-menu-list) and a new «Состояния» with
  «Выбранная строка» (sf-context-menu-item--chosen, the check in
  sf-context-menu-item-lead), each with a static example.
- Выбор языка: the menu marks the chosen language by its fill and keeps the
  field in place over the scrolling rows.
- Настройки: the drill look's options mark the chosen one by its fill.

The host-search example keeps its one-note answer for an empty result: on
ui-98143c0a0728 a menu whose host answers a remote search with no rows still
closes and drops the focus.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Move simai/docara from v3.11.1 to v3.12.0 (5bbd7731). Inline HTML
examples now open in the full-screen viewer with desktop, tablet and
mobile widths (docs review R001: examples could not be opened or
expanded).

The Framework pair is unchanged (ui-98143c0a0728 / pro-07d3b344cc4d);
the runtime was rematerialized after the update. simai-framework.lock.json
follows Docara 3.12, which serves every tag from its component's current
folder instead of a forwarding script under a former path.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rule D12 (owner, 2026-11-07): the first paragraph of a component page does
not start with or repeat its tag; the title and the generated tag and version
badges already show it. Rewrite the lead of 72 Smart pages in plain Russian:
what the component does for the reader and when to take it, without terms
such as "renders a native button" or "host". Facts and links are kept; the
badge line, the class-page line, examples and reference stay untouched.
segmented.md has no badge line and keeps its lead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Smart Buttons page is reorganised around the reader's questions, as
three critics agreed (ui-control control/docs-review/buttons-page-plan.md):
when to choose a button, everyday tasks with ready code (save with loading,
delete, link as a button, toggle, form submit, shortcut), then the look,
the states, working from code, traps and accessibility. Headings are plain
Russian words; each feature heading has one attribute line with its default
and a reference link; values of three or more are tables.

Facts checked against ui@98143c0a0728 and a live browser: sf-button-press
fires on a person's press (click, Enter, Space, shortcut-listen) and not on
host.click() or an inactive link, where click still fires; neither fires on
a disabled or loading button; data-* moves to the inner control; the value
property is the settings object, the value attribute goes with the form;
button.loading = true writes the attribute.

- audit-reference-pages: standard 4 (section order of the new outline,
  live example under every H3 of «Внешний вид» and «Состояния»);
  build-smart-reference renders the same reference for standard >= 3;
  the standard document describes it as a draft pending the owner.
- Sizes specimen grid: one column, five from 44rem, short label, so no
  empty cell.
- Icon buttons page links the new «Атрибуты данных» anchor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Page: no top-level «Учтите»; the traps (data-* on the inner control, the
  value property, forwarded attributes) are «Для разработчика» at the end of
  «Справочник». «Учтите:» kept only where it is a trap. Toggle lives in one
  place (its state section), «Сочетание клавиш» is its own section after
  «Состояния», delete markup appears once, code that repeats an example's
  HTML tab is dropped, example tabs are named in two or three words, tables
  carry no «(по умолчанию)», methods link the reference.
- Events, checked in a browser: sf-button-press on a person's click, Enter
  or Space on a button or link and on a shortcut-listen key, with click as
  well; click() on the tag sends click only; an inactive link sends click
  only; a disabled or loading button and a loading link send neither.
  detail is an empty object.
- Generator (every page on standard 3 and 4): no release sentence above the
  reference (the release is in «О компоненте»); template, root-class and
  root-style close the attributes under «Общие для всех компонентов»; an
  empty detail reads «пустой объект»; a hand-written «### Для разработчика»
  after the tables is kept; an event whose manifest only points at the
  vocabulary takes its words from config event_summaries.
- Translations: button size, disabled, loading (спиннер), shortcut,
  expanded, pressed and native-type say «кнопка внутри», not «нативная».
- Samples: colour shows the filled look; loading by size is one row of five
  like the size grid; spinner looks are labelled «Загрузить».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build 579db8035, bind 7d0293746, ui-source 5a0bf39b,
ui-builder 9c9c1b1, npm 5.20261107.1157. It carries sf-menu-context 1.7.2
(a host-searched menu stays open on its field when nothing is found; a panel
insets its rows 8 px like its field; a menu whose rows fit shows no
scrollbar), component.context-menu 1.3.0, component.dropdown 1.1.0,
sf-input-lookup 1.2.1, sf-profile-picker 1.1.11, core.runtime 1.31.1, and
from ui-b58b5dec35e4 sf-button 1.5.0 (form, name, value), sf-steps 1.2.0
(skipped and running labels) and the new sf-wizard and sf-wizard-step. The
Pro package pro-d9a8c8053869 is the one built for this pair (receipt
framework.release ui-579db8035fa9, ui-pro d9a8c805, archive sha 7d985c5d;
View 1.3.0: smart.view-properties 1.11.0). Docara is unchanged.

The version sync moves every pinned value and the CDN examples; the block kit
link on Блоки names 5.20261107.1157; the English home is re-accepted. The
reference adds Russian text for the five new manifest strings (sf-button
form, name, value; sf-steps skipped-label, running-label). sf-wizard and
sf-wizard-step have no page yet: config/smart-reference.json skips them with
that reason until their page lands. The generated sections list the 8 px
context-menu panel inset and the running and skipped step stages.

Reviews recorded: menu contract (source files unchanged; the bundled
position helper in menu.js changed, the page does not describe it),
composition contract (sf-button manifest gained three attributes; the pages
do not change), Smart lessons at source 5a0bf39b (hashed files unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sf-menu-context 1.7.1 keeps a host-searched menu open on its field when the
host answers with no rows, and shows search.empty. The example drops the
one-note answer of b345cad and gives the menu no rows for an empty result.

The menu panel now insets its rows 8 px like the search field (1.7.2), so
the context menu pages no longer call the field's 8 px a step more than the
panel's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Move simai/docara from v3.12.0 to v3.12.1 (dcc72d83). The page contents
no longer carry inline code, inline code is not split mid-token, code
blocks scroll horizontally on phones instead of wrapping, untagged
fences are labelled HTML, the phone contents button sits under the page
title, and code block headers lose the backdrop blur.

The Framework pair is unchanged (ui-579db8035fa9 / pro-d9a8c8053869);
the runtime was rematerialized after the update and
simai-framework.lock.json came out byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build 2a671352d, bind 3f56fa78a, ui-source 4638e4ff,
ui-builder 9c9c1b1, npm 5.20261107.1410 (ledger ui-control 8a8282c). It
carries sf-menu-context 1.8.0 and sf-popover 1.2.0 (offset; an anchor that
draws no box is measured through what it draws), sf-badge 1.3.0 /
component.badges 1.2.0 (one height per size, --sf-space-1/2 side room by
default, tight keeps the old room), sf-switch 1.3.0, component.highlight
1.1.1, the set standard simai.component-set 1.1.0, core.runtime 1.32.0 and
core.styles 1.4.0. The Pro package pro-dc021e7bc57d is the one built for
this pair (receipt framework.release ui-2a671352d67b, ui-pro dc021e7, archive
sha ee65c555; ledger ui-control 1ae3899). Docara stays 3.12.1.

The version sync moves every pinned value and the CDN examples; the block kit
link on Блоки names 5.20261107.1410; the English home is re-accepted. The
reference adds Russian text for sf-badge tight and sf-popover offset, the
generated sections for the two new sf-badge variable texts (border width,
side room); nothing is unplaced. The standards copy takes
simai.component-set 1.1.0 in place of 1.0.0.

Reviews recorded: menu contract (source files unchanged; the bundled
position helper in menu.js measures an anchor that draws no box, the page
does not describe it), composition contract (index.mjs gains render's
resolveSource and the unknown: 'placeholder' option, builtins.mjs the list
port under sf-view-table 1.1.0 with the sf-table 1.0.0 manifest frozen; the
API page's render context table now lists unknown and resolveSource), Smart
lessons at source 4638e4ff (smart-base.js: after-render for an element that
renders no template, a fresh lit part after a cut-short first render;
field-renderers/index.js: the choice cell badge is tight; the lessons do not
change).

Buttons page, colour: each family is shown in its place, as the Framework
defines them: secondary as a tonal filter button, on-surface as an outline
«Отмена», on-surface-variant as an outline search trigger. The table says
the same and notes that on-surface-variant in the default look is the same
as on-surface.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Move simai/docara from v3.12.1 to v3.12.2 (cabb94a3). The page script read a
code block's language only from data-requested-lang and relabelled every
fenced block «Code»; it now reads the language-* class, so the headers say
HTML and JavaScript again.

The Framework pair is unchanged (ui-2a671352d67b / pro-dc021e7bc57d); the
runtime was rematerialized after the update and simai-framework.lock.json
came out byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oes to Button group and Segmented

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The three button groups sat in a three-column grid; at the desktop width the
first group (undo/redo, 306 px) was wider than its column and ran 33 px past
the frame's left edge, cutting off the undo icon. The groups now sit in a
centred wrapping row, each as wide as it draws; a narrow frame still stacks
them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…attribute, not a forwarded one

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

Move simai/docara from v3.12.2 to v3.13.0 (c3b066cd); the constraint is now
^3.13. Docara 3.13 gives every example an optional log (log, log_console,
log_open, docara.example.log), draws a spaced bullet as a separator in prose
and puts the Framework's sf-language in the header. Docara bundles the same
Framework release this site pins.

The Framework pair is unchanged (ui-2a671352d67b / pro-dc021e7bc57d); the
runtime was rematerialized after the update and simai-framework.lock.json
came out byte-identical.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
zabarov and others added 28 commits November 8, 2026 21:09
The description list of label and value pairs is new in ui-0c23f6a0af12 and
had only a skip entry in the reference. The page, under Содержимое и медиа,
shows the markup and the row fields, the layout (columns, stacked, auto),
the three sizes, the dividers, wrapping and truncating long values, the
empty value, and the value link's navigate request in the example log. The
reference adds Russian text for its 9 rows and the skip entry is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The activity timeline is new in ui-0c23f6a0af12 and had only a skip entry
in the reference. The page, under Содержимое и медиа, shows the markup and
the event fields, grouping by day or one list, relative and exact time with
a fixed now, normal and compact density, the three sizes, the empty list,
«Показать ещё» and its loading, and in the first example a working next
page (load-more) and a title link (navigate) in the example log. The
reference adds Russian text for its 14 rows and the skip entry is gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The long-job progress is new in ui-0c23f6a0af12 and had only a skip entry in
the reference. The page, under Уведомления и состояния after Шкала
прогресса, opens with a job the example plays itself (step() and chunk()),
whose Cancel, Retry and Hide go to the example log; then the markup and the
step fields, the two sizes, done, failed and cancelled with their result
words, the three buttons, the output pane (appended live, download cancelled
and toggle in the log), and the events. The reference adds Russian text for
its 22 rows and the skip entry is gone; the skip list is now empty of this
release's components.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
sf-menu draws first-level groups (group, collapsible, open: false), a status
dot per row and a count since ui-0c23f6a0af12, and the page did not say so.
Two variants with live examples: a fixed and a collapsible group side by
side (toggle and navigate in the example log, toggle("site") answering
"fixed"), and the five status tones with counts. The branch-control list
gains the "fixed" refusal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The class menu styles a group: sf-menu-item--group with its heading and
label over a nested list labelled by the heading, a button heading when the
group collapses, and a status dot with its hidden word. The page shows the
markup, says what the parts look like, and says plainly that the class
script does not build groups (a nested list is a branch to it): sf-menu
draws them, and the example is that smart menu.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each variant subsection now opens with the attributes it shows, their
default where there is one, and a link to the reference, like the other
smart pages; the chart subsection names its slot.

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

Drafted for the repin onto the first pair carrying ui-source feat/c20-shadows
(c4b96c78); the pinned pair ui-e22fefb3c1f8 does not have the place classes,
so the utility class checks stay red until that repin.

- guide/colour/elevation: the four places (flat, raised, overlay, modal), their
  geometry on the size ladder, key and ambient colours per theme, the scrim
  (black 64), which components stand on which place, theme overrides.
- utilities/shadows: element-shadow, drop-shadow and elevation describe the
  place classes; the coloured shadow pages say they leave on 2027-01-01 with
  no successor and what to use instead; examples use shadow-flat/-raised/
  -overlay/-modal and drop-shadow-* on their places' surfaces.
- guide/connection/updating: "Новые имена теней", the old name -> place table
  for classes and variables, what leaves without a successor; names guide
  points to it (D03: transitions live in the update guides).
- borders-and-radii, themes, colour-roles: read the places, not the levels.
- build-reference-sections: utility classes the journal keeps only as former
  names of a successor leave the class table and are listed in one line under
  it (no change at the current pin; at the repin it also covers the C16
  bg-surface renames).
- build-token-reference: --sf-ui-shadow-* and --sf-scrim-* join the shadow
  group; all-tokens regenerated at the current pin (rows moved only).

Generated sections (Классы, Переменные, all-tokens) are left to the repin's
builders.

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

- A component's slots and public CSS variables become «Места» and
  «Переменные» tables once config/smart-reference.json describes every one
  the release declares (confirm, file-download, button-copy); --check fails
  on a stale or missing name.
- attribute_summaries gives an undescribed attribute the page's words
  (file-download target and aria-label; button-copy size, appearance,
  success-icon, success-text, error-text), written from the component docs.
- event_summaries for button-copy and file-download events.
- An event field that lists its values reads as those values, not `any`.
- A pipe that code() escaped is not escaped twice: «number\|null» showed
  its backslash on the page.
- Confirm methods in plain words; answer() takes {accepted}.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Docara draws every example in sandbox="allow-scripts": a file link
downloaded nothing and every copy button logged a Permissions policy
violation. A page transform adds allow-downloads, allow-popups and
allow-popups-to-escape-sandbox to the example frames and
allow="clipboard-write *"; the frame keeps its opaque origin. Docara should
take this into its frame markup; the transform goes when it does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pre-check 2026-11-09 (CF, DF, CB) against decisions D01-D15, C01-C24.

- Each page has «Когда не брать» (standard 4 allows it after «Когда брать»).
- Confirm: the question in a real file-table row, cancel and delete, with
  «Вернуть файлы»; a server example that succeeds and one that fails and
  reopens; a restartable ten-second deadline; the waiting specimen drawn by a
  press (spinner on the answer); rows level; disabled its own state;
  danger wording; undo named as the better choice.
- Download file: attachments that really download (data: files and a CSV
  the page builds), a «Ссылка на файл» example that downloads and opens a
  tab, real sizes in the size slot, one-column size ladder that wraps at
  phone width, the HEAD request described without the English-units defect.
- Copy button: @simai-studio/ui, every copied value visible next to its
  button and copied by target, code under the example is its own markup,
  one look per scene, link/ghost shown as one look, the native title
  described in accessibility.
- Specimen captions in plain Russian; attributes stay on the D13 line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
.table-frame sets vertical-align: top on its cells with a selector a
utility cannot beat, so text-middle on the rows changed nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build d6f01121b (the runtime), bind 5570d6648 (the release
lock contracts/releases/ui-d6f01121baca.lock.json), ui-source 277ef3bf,
ui-builder 9c9c1b1, npm 5.20261108.2127. The Pro package pro-a046f296acd0
is ui-pro a046f29, archive sha 75e8a8f1, builder 2751772, built for this
pair. Docara stays as pinned.

The version sync moves every pinned value and the CDN examples; the block
kit link on Блоки names 5.20261108.2127; the English home is re-accepted.
The reference adds Russian text for the new manifest rows (38 strings:
sf-button 1.9.0 cycle, theme-cycle, change, ghost and danger, and the
other changed components) and 13 public variable texts (kbd tuning
surface among them; former-name clauses left out per D03). The generated
sections, token table and property types follow the pair. The standards
copy takes change-lifecycle 1.0.1, component-package 1.1.2, component-set
1.1.1 and linkage 1.0.1.

Reviews recorded: menu contract (source files unchanged), composition
contract (the smart-component guide now lists every smart.button
property, form, name, value, href, target, rel, pressed, text-pressed and
theme-cycle included), Smart lessons moved to the new source, core and
smart revisions with their hashes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Drafted for the repin onto the first pair carrying ui-source fix/c18-sizes
(0db598f4, tokens.typography 1.5.0); until then the live example draws the
pinned pair's old steps (h3 2, h4 1, h5 2).

- guide/size-and-type/typography: the role table reads 6, 5, 3, 2, 1, 1; new
  section «Лестница заголовков» with the size/line table for desktop
  (36/40, 32/36, 24/28, 20/24, 16/18, 16/18) and phone (24/28, 22/26, 18/20,
  16/18, 14/16, 14/16), the rule that a level is never larger than the one
  above, spaces unchanged, and a live example (guide/fundamentals/heading-ladder).
- guide/size-and-type/default-text and utilities/typography/title-size: the
  heading-to-step mapping follows the ladder.
- en legacy font-size category pages: the heading variable table follows.

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

Drafted for the repin onto the first pair carrying ui-source feat/c22-density
(local head 1e2a9f35; origin cae60640 lacks the width-scale rule d79cc32d and
the connect-time capture dca70fae, so the pair must be cut from 1e2a9f35 or
later). Until the repin the three live examples draw both columns alike.

- guide/size-and-type/density (new, after the size ladder): where compact
  applies (admin 14, docs and sites 16; the product chooses), the
  data-sf-density attribute on <html> or a container, the desktop step
  table from control/evidence/2026-11-09-density/step-table.tsv, the 1/3
  floor, desktop only (60rem; the phone ladder is already dense), an
  explicit size wins and template-given part sizes follow the region,
  data-sf-density="normal" restores, a width size (sf-drawer, and any size
  on sf-modal) does not count, popups placed at the end of the body take
  the density of where they were opened.
- examples guide/density/compact, explicit-size, popups: specimen grids
  with the value under each sample.
- size-ladder: spacing is per control, density is per region (link);
  section index and glossary list the page.

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

Drafted for the repin onto the first pair carrying ui-source
fix/action-call-defects (1ae1a576, core.runtime 1.43.0). The generated
reference (fix/action-signatures 9d2eeb8e) gives every action one args
object, and 1ae1a576 drops the 16 "positional" reference entries, so the
pages and examples now write the same form:

- select({value}) on sf-segmented/sf-button-group (pages and the events
  example), answer({accepted}) only on change-confirm (the former
  answer('accept') mention dropped), upsert({item, options: {replaces}}) on
  the message log, removeItem({index}), setError({message}),
  openPanel/closePanel({options: {...}}) on the date field.
- the 16 actions 1ae1a576 moves to the object form: sf-editor-overlay
  attach/attachFrame/setDocument/setNodes/setDropFilter/setActions/
  setMessages/setInsertionTarget/select/edit (composition-overlay page,
  moving-blocks guide, page-editor and overlay examples), sf-editor-inline
  edit({element, options}), sf-menu-context openFor/toggleFor({anchor,
  options}) and their outcome answer (not Promise<boolean>), sf-tabs
  setData({data}).

The class-written forms (editor-overlay, editor-inline, menu-context,
tabs) take the object form only from 1ae1a576: at the pinned pair
ui-e22fefb3c1f8 those examples break, so this commit rides that pair and no
earlier. Generated "Методы" tables refresh at the repin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
control/evidence/2026-11-09-tree-perf (tests/browser/tree-scale.browser.mjs
on ui-source main 277ef3bf, headless Chromium, CPU x1, median of 3): first
draw of 2 000 and 10 000 entries 33 / 32 ms, relabel, expand, collapse,
select, check one and ArrowDown 30-33 ms, 1-2 rows rewritten; the two-frame
measuring floor. "Drawn in one frame" was below what the probe can tell;
the note now says two frames and adds the 10 000 case. True at the pinned
pair (the windowed flat rows are 43de471f). The many-selection speed-up
(fix/tree-perf-43 a4f94523) is not claimed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne (the example shows the markup)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair renames sf-button-group to sf-segmented (the old tag is an alias
until 2027-01-01) and makes the track the default look with a raised
plate (D11c). Docara refuses inline previews of the old tag, so the build
of the segmented page stopped. Every Smart example and page now writes
sf-segmented: appearance="segmented" becomes "track", a tag without
appearance keeps its former look with appearance="buttons", and the
scripts wait for and query sf-segmented. The page describes the track
first as the default, the plate default as raised, and the old tag and
values in one line under former names. The plate specimen sets
plate="scheme" where it shows colours.

The badges page moves a long class example into a code block: inline
code does not wrap, and at 390 px it pushed the page sideways.

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

The drafts written for the first pair carrying ui-source feat/c20-shadows,
c18-sizes (C21), c22-density and action-call-defects; ui-cb287da78ab1
(source 44a5efda) carries all of them. Conflicts kept this branch's
sf-segmented page, sf-menu-context event names and the removed button-group
page and segmented events example; the object form of select, openFor and
toggleFor is applied to them and to the three context-menu examples the
drafts did not reach. The token table is regenerated at the repin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pair is ui Build cb287da78 (the runtime), bind fd651a12b (the release
lock contracts/releases/ui-cb287da78ab1.lock.json), ui-source 44a5efda,
ui-builder 993e4be, npm 5.20261109.559, core.runtime 1.45.0. The Pro
package pro-b671241d4d34 is ui-pro b671241 (the receipt's package source
revision), archive sha fc4a964f, builder 993e4be, built over this pair;
its pair-range.json (sha abf2e77e, interface 2ed7a43d) checks "within,
built-over" for ui-cb287da78ab1 with ui-builder e87e47d set-pair-range.py.

The version sync moves every pinned value and the CDN examples; the block
kit link on Блоки names 5.20261109.559; the English home is re-accepted.
The reference adds Russian text for the new manifest rows (19 strings,
C25 actions among them) and 7 public variable texts. Generated sections,
token table (722 tokens) and property types follow the pair. Standards:
component-set 1.2.0 replaces 1.1.1.

Reviews recorded: menu contract (hand-written groups, page already
documents them), composition contract, smart lessons (hashes moved to
44a5efda/cb287; density marking in smart-base and the medium date format
in field-renderers leave the lessons unchanged).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Buttons, icon buttons and the copy button teach ghost (link is a former
name) and status danger (error is a former name), with a new section and
examples for cycle and theme-cycle; icon buttons drop the secondary and
surface tiles. The copy button defaults to ghost at size 1. Confirm uses
status=danger (destructive is a former name): filled danger answer, quiet
Отмена. Download file teaches file-type, target, and the preparing and
error states with a new example. Settings uses ghost.

Tabs: the long inline item string moves into a code block, so the page no
longer overflows at 390. Density: the compact and explicit-size examples
render inline, because compact applies from a 60rem viewport and the
example frames are narrower.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The bundled admin scene on the home page is the ui-admin polygon at 7ec6fb4
(pinned to ui-cb287da78ab1 with pro-b671241d4d34): src/polygon.ts built
into one ES module with Vite 8, its stylesheet, and data/polygon.json and
data/navigation.json from the same commit. The embedding adaptations the
previous take carried are applied to the source before the build: data and
logo under assets/, no address history, no stale-page notice, links and
forms kept on the page; the data's logo links read assets/logo.svg as
before. The English copy gets the 28 new strings (pinning refusal, licence
confirmation, licence field values, module bodies, no-permission titles,
the sanitiser sample). It now uses sf-header-page, sf-view, sf-view-table
and sf-view-properties with their current event names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both badge pages say where the text sits: --sf-space-1/2 from the edge,
12 px on a computer and 8 px on a phone like the whole spacing ladder, and
sf-badge--tight keeps the size's own room. Each page gets an example of
the default and the tight badge (the tight attribute on sf-badge, the
sf-badge--tight class on the core badge).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Docara keeps inline code on one line. A long one (a path, a URN, a call
with its arguments, a line of markup) is wider than a phone column, and on
the Pro pages wider than the desktop column too, so 87 pages scrolled
sideways at 390 and the Pro table and chat window pages at 1440 (table
1554, chat window 1504).

A page transform, scripts/inline-code-wrap.mjs, lets inline code in the
article wrap when it is longer than 32 characters (16 in a heading): at
its spaces first, inside a token only where one token is still wider than
the line. Code blocks, tables and live inline examples keep their own
scrolling. A link whose text is one long token wraps the same way. The
transform is idempotent (a second run changes nothing).

After it, no page is wider than the window at 1440, and at 390 the only
pages wider than the window are those whose header carries the language
button (400 at 390), which the next Framework pair fixes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The standards copy carries change-lifecycle 1.0.1 and component-package
1.1.2 since the ui-d6f01121baca pin, and the site exports only those, so
the map's links to 1.0.0 and 1.1.1 were broken (Quality: verify all
generated local references).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Docara 3.13 adds a device-width copy of each inline example, marked
data-docara-example-responsive-frame and kept display:none until the
reader opens the full-screen viewer. The smoke waited 5 s for each copy
and read it as an empty example, so the theme-generator and modal pages
ran past the 45 s page limit in CI.

Only a frame carrying Docara's marker that is still display:none is
skipped; a marked frame on display and every other frame are waited for
and checked as before, so a visible empty example still fails. The
output names how many hidden copies were skipped on each page.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@zabarov
zabarov merged commit c903d4f into main Nov 9, 2026
2 checks passed
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