Skip to content

Releases

REDZ.UI 0.19.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 14:29
Immutable release. Only release title and notes can be modified.

Added

  • A banner for a state of the whole system, app-banner with the tones app-banner-info (the default),
    app-banner-success, app-banner-warning and app-banner-danger: the first row of app, above its header, across
    the window and sticky with the header under it; first in the body of a page without the shell; off paper.
    REDZ.ui.banner({tone, text}) shows the one banner or replaces it, and answers a function that removes it;
    REDZ.ui.banner(null) removes it. The same tone and words again change nothing and say nothing, so a page may call it
    on every answer of its server. The words are said once, politely, at once for danger. Its height goes to
    --redz-app-banner-height on the root, which the header, the side navigation, --redz-sticky-top and the scroll
    padding add.

  • redz-ui-tools-<version>.zip in every release: the tools a project runs on its own server and never serves, each
    the very file the release was built and checked with - floor.php, the browser floor checker, with its list
    floor.json, and min.php, the minifier -, PHP 8.4 or newer with no extension, no network, and their passport
    redz-ui-tools.json: the PHP they need, the file of each tool and the sha256 of every file. tools/dist/ of the tag,
    written by php tools/build.php; the Check workflow runs both on PHP 8.4 with no extension loaded.

  • The floor checker for a project: php floor.php check [--allow=FILE] [--json] FILE…, a finding a line on standard
    output and the summary on standard error, exit 0 clean, 1 findings, 2 for anything else; --json prints the findings
    as objects. An exception of a project's own carries its reason: /* floor-allow NAME[, NAME…] -- reason */ covers its
    lines and the next one, --allow=FILE a set of files; one that allows nothing is a finding. It applies the release's
    exceptions of scope any only.

  • The minifier for a project: MIN__JsBlocks([$label => $js, …]) joins classic scripts, each in a block of its own, for
    one ES module, and refuses what reads otherwise there - a static import or export, a var or a function declared
    outside any function, this outside any function but an arrow, with, an HTML-like comment, a legacy octal number or
    escape; MIN__SelfTest() gives the samples it proves itself on that misfire. A class's private names #name are read.

  • Outside judges of the minifier on every commit, php tools/judge.php: Lightning CSS reprints every stylesheet it
    squeezes, the library's and the css-tokenizer-tests corpus, as written and as squeezed, which must read the same;
    esbuild parses every script it writes for the browser floor; a watch on the size of the two main files against esbuild
    --minify. Both are native binaries from npm, pinned by version and sha512.

  • The passport names the arguments of every text: args beside texts and plurals, and editor.args beside
    editor.texts, give each key the {names} the library fills in it, [] for none, ["count"] for a count. They
    are read from the scripts' calls, and the build fails when two calls of one key pass different names or the
    library's own English text of a key uses other names than its calls pass.

  • A combination that a button's or a link's aria-keyshortcuts names is the page's even while none of them can be
    pressed: disabled, busy, hidden, inert or outside the open modal, it never reaches the browser, so a page's save keeps
    Ctrl S from the browser's own save while it saves or has nothing to save. The first that can be pressed is pressed.

  • A password field tells the page each time its text is shown or hidden, by the person or on its form's submit or the
    page's return from the history: redz:reveal bubbles from it, detail.revealed true or false.

  • data-ago="short" on a ticking time says how long ago it was in the short words of the page's language ("42 min.
    ago", "42 мин. назад") for a narrow place such as a stat tile; data-ago alone keeps the long words.

  • Filter buttons: a button with command="--filter" and aria-controls naming a region shows only the items whose
    data-NAME holds a word of its value - NAME is the button's name, state without one. The buttons of one name
    are one choice, value="" shows all, and pressing the pressed one again shows all; names narrow together and with the
    search field. data-filter-count counts: in a button its items, in a data-filter-group the group's, with a region's
    id the page's text filter.count. A data-filter-group hides while none of its items shows. A press says the count;
    the region fires redz:filter with {count, total}; items the page puts in or changes are filtered again.
    REDZ.ui.filter(region, {name: value}) chooses from code and answers the count, null clears. Any element with a
    data-search is an item, and a table row matches its band's label too.

  • A search on the server: a field with data-filter-server fires redz:search with {query, form, signal} on the
    field 600 ms after the typing pauses, at once on Enter and Escape and when another control of its <search> or form
    changes; answered with a promise, the region is aria-busy and a field in a form-adorn shows a ring, a newer
    question aborts the one before and a late answer is dropped, and the count is said - the answer's count, else the
    items there are.

  • Show more: a button with command="--more" and aria-controls naming a list fires redz:more with {shown, signal} on the list; answered with a promise, the button is busy, then the focus goes to the first new item and the
    page's text more.loaded says how many came. The answer may say {total} or {done: true}; data-more-total is a
    total known from the start, data-more-max a cap whose data-more-cap sentence takes the button's place, and a
    data-more-count reads more.count ("10 of 23") or more.some ("10+"). list-more is the row under a list that
    holds them. A server search over the list starts it again.

  • Selection: an element with data-select holds a selection; a check with data-select-all heads its checks (or those
    of the scopes its aria-controls names) - checked, mixed or clear, and pressed it checks or clears them all. Only
    enabled checks in items a filter shows count: a checked row a filter hides leaves the count while hidden and is
    checked again when shown. A selection-bar inside hides at zero, a data-select-count says the page's text
    selected, and the scope fires redz:selection with {count, total, values}. data-select="rows" checks a row
    clicked anywhere but on its controls; a data-select inside another is a group; command="--select-all" and
    "--select-none" buttons do what a head does.

  • Sorting in place: a table-sort button with a value sorts its table's rows by each row's data-sort-VALUE, else
    the cell's data-sort-value, else its text - numbers as numbers, words in the page's language, an empty value last
    both ways, ties in the drawn order, a band's rows under it with its subtotal last. data-sort-first="descending"
    starts the other way; data-sort-reset on the table makes a third press bring back the drawn order. The page's texts
    sort.ascending, sort.descending and sort.none say it. The table fires the cancelable redz:sort with {key, direction} first, for a page that sorts itself; rows the page puts in are sorted the same, and REDZ.ui.sort(table)
    sorts again.

  • A question that waits for the server: REDZ.ui.confirm({..., run}) carries the answer out before the dialog closes -
    run({choice, phrase, signal}) answers a promise; meanwhile OK is busy, the other buttons unavailable, the body inert,
    Escape and a click outside held. Refused with words, a danger alert with them stands right above the footer, said at
    once, the buttons wake and the focus stays on OK. A dialog closed by code meanwhile aborts the signal, and a later
    refusal is a danger toast. choice: {label, items: [{value, text, hint}], value} puts radios above the phrase, and
    the answer is then the chosen value. A dialog of the page's own waits the same way: a form[method="dialog"] fires
    the cancelable redz:save with {form, data, submitter, signal} on its submit.

  • A third answer: REDZ.ui.confirm({..., alt: {text, tone, value}}) puts a button at the footer's start - Discard
    beside Stay and Save - that answers its value; focus: 'ok' or 'alt' starts the focus there instead of on Cancel.
    dialog-footer-start is that place in any footer, and a footer of three buttons in a dialog narrower than 368 px
    stacks them full width, the confirming one on top.

  • REDZ.ui.alert(box, {tone, text}) fills a box with an alert of the tone, its icon and the words, and says them -
    politely, at once for danger, the same words again said again; null empties it; a promise shows the page's text
    busy past 400 ms, then what it answers or its rejection. No live role on the box.

  • REDZ.ui.status(line, {tone, text, keep: true}) keeps a success or an info in the line.

  • A text download: command="--download" naming a field, a textarea or any element downloads its value or its text,
    data-file, data-type; a text/csv file starts with a UTF-8 byte order mark unless data-bom="false".
    REDZ.ui.download({text, file, type, bom}) or ({blob, file}) does it from code. Each download is said, in the
    page's text downloaded.

  • busy() on an item of a menu holds the button that opened the menu busy too, the outermost one for a menu inside a
    menu. A region's data-busy shows its words under the spinner and says them instead of busy. Any other element - a
    cell that checks - shows a small ring after 400 ms and, for a screen reader, the words of its data-busy or busy,
    saying nothing aloud.

  • Contents loaded the first time they show: data-lazy on a details or its accordion-body, a region a --toggle
    button ope...

Read more

REDZ.UI 0.18.2

Choose a tag to compare

@github-actions github-actions released this 06 Nov 11:58
Immutable release. Only release title and notes can be modified.

Pack it found a row's menu turning see-through, and the cause reaches further. Browsers now stop :hover, :active and
:focus-within at the top layer, so an open menu or dialog no longer tells the row around it that the pointer or the focus is inside.
A row now asks whether it holds an open layer. It no longer asks only where the pointer and the focus are.

Fixed

  • A menu or dialog inside table-actions is not dimmed with the row's actions.
  • A row keeps its actions lit while its menu is open, wherever the pointer goes, for a menu in the row and for one shared from outside
    the table. tree-actions too: they used to vanish while a button among them had its menu open.
  • A dialog or [popover] takes no text-align or white-space from where it stands. A long item of a menu in a table cell wraps, where
    it ran out of the menu.

Changed

  • A row holds its light while its menu is open.
  • The release files carry a banner of the name and the address, and the editor's its license too. css/icons.min.css stays as it is.

Docs

  • The table page shows a menu in a row.
  • On these pages a row's actions stayed dim under a real pointer and a tree's stayed hidden: the page's own state mirror did that, the
    library did not, and it is fixed.

Files. redz-ui-0.18.2.zip - the folder a project serves, as it is: css/, js/, LICENSE, LICENSE-editor, NOTICE and redz-ui.json, the passport (the version, the floor, the files to link, the vocabulary and the sha256 of every file). This release needs the icon pack redz-ui-icons 1.13.2, a release of its own. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.18.2/checks/.

Check the archive: gh release verify-asset v0.18.2 redz-ui-0.18.2.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.18.1

Choose a tag to compare

@github-actions github-actions released this 06 Nov 06:45
Immutable release. Only release title and notes can be modified.

Two fixes the ERP found moving onto 0.18.0.

Fixed

  • A step-list-body that is also a vstack takes a line of its own under the step's name. 0.18.0 put it beside the name.
  • A caption of a board's scale that would touch the one before it hides, by measure, in any language and at any width. It replaces
    the rule that hid every second caption in a narrow region, which let a long first word run into the next one.

Files. redz-ui-0.18.1.zip - the folder a project serves, as it is: css/, js/, LICENSE, LICENSE-editor, NOTICE and redz-ui.json, the passport (the version, the floor, the files to link, the vocabulary and the sha256 of every file). This release needs the icon pack redz-ui-icons 1.13.2, a release of its own. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.18.1/checks/.

Check the archive: gh release verify-asset v0.18.1 redz-ui-0.18.1.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.18.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 05:48
Immutable release. Only release title and notes can be modified.

What the ERP's walk and the move of its screens left: a step that waits for a press, step details that fit a phone without a
width in sight, and every table lighting its row.

Changed

  • Every table lights the row under the pointer, on a device with hover, so table-hover does nothing now and can go.
    --redz-row-hover sets the light, on the page or on one table, and table-static keeps a table's rows still. A tinted row keeps
    its tone and a selected one its color. The editor's Hover property writes table-static for no.
  • A step-list-detail stays at the end of the line while the name and it fit, and falls under the name, aligned with it, when
    they do not, at any width of the page. An empty one takes no room. The step's icon stands in its padding, out of the flow.
  • .diff scrolls in its own box past 25rem and prints in full; a max-h-* utility sets another height. One that may scroll
    takes tabindex="0" and a name.
  • A link nav-overflow folds is marked data-overflow alone, so hidden is always the page's. A page that read .hidden to
    find a folded link reads [data-overflow].

Added

  • data-state="ready" on step-list and stage-list: next, it waits for a press. It wears the look of current, and its icon
    stays still.
  • data-highlighted="hold": a mark the page sets itself stays until the page takes it away, whatever the pointer does.
  • --redz-lanes-track, the color of a board's track.

Fixed

  • d-none beats every display class on its element, vstack, hstack and grid among them; a width prefix still beats it.
  • nav-overflow looks again when the page sets or clears hidden on a link, a folded one too.
  • A stat keeps the tone of an icon-tile-* on its tile.
  • A vstack as an alert's words stays beside the icon however long its text.
  • REDZ.ui.confirm({title}) with nothing else has no empty body.
  • A lit lane of a board tints its track too, the grid on top.
  • A row with a stretched-link lights in the row's color, not a gray of its own.

Documentation

  • Icons from another host: a browser fetches a mask in CORS mode, so that host must send Access-Control-Allow-Origin on .svg.

Files. redz-ui-0.18.0.zip - the folder a project serves, as it is: css/, js/, LICENSE, LICENSE-editor, NOTICE and redz-ui.json, the passport (the version, the floor, the files to link, the vocabulary and the sha256 of every file). This release needs the icon pack redz-ui-icons 1.13.2, a release of its own. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.18.0/checks/.

Check the archive: gh release verify-asset v0.18.0 redz-ui-0.18.0.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.17.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 18:42
Immutable release. Only release title and notes can be modified.

The editor gets the rest of what was decided on the mockup: live facts, an AI that only suggests, a review word by word, the
tone pad, translations side by side, the page's reading, and who wrote what. No model is ever called from a page.

Changed - the license of the editor

  • From this release the editor, editor/ and its built files, is under PolyForm Strict 1.0.0, in dist/LICENSE-editor: noncommercial
    use only, no changes, no redistribution. It comes with REDZ products under their terms; anything else needs a separate license, see
    LICENSING.md. The library stays under MIT, and versions up to 0.16.0 stay under MIT as released.

Added - the editor

  • Live facts: <data value="KEY"> stands in every place a price, a date or a phone number is used, by options.facts.
    @ in the text puts one in, Facts in the foot counts its places and changes it in all of them through options.onFact.
    A value typed by hand where a fact holds it is found by the checks.
  • The AI's seam: options.ai(task, {signal, progress}) is the host's and async. Tasks rewrite, tones, translate,
    write, read and alt carry plain words, a fact as a token ⟦KEY⟧. A refusal answers {refusal} and is said as one. A
    closed block is never sent, and an answer whose block changed, whose fields do not fit or that lost a fact is left out.
  • The review: a suggestion is drawn word by word by Intl.Segmenter, each change taken or left alone, and the value stays
    what it was until the last one is decided. Marks on the words around a change stay. One task is one step of undo, and
    options.onBatch hears it as one batch.
  • The lock on what an AI writes: it answers flat blocks of the passport's schema editor.write, and the editor writes them
    as REDZ.UI markup by the catalog, so a kind, a tone or a size the library does not have cannot come out.
  • The tone pad: nine versions from one request, shorter to longer and stricter to warmer, opened at once and tried on the block.
  • Side by side: the source language in a frame of its own, row by row. data-from keeps the hash of the source's words a block
    was made from, so only the block that changed goes stale; a price that changes stales nothing. A stale row says what changed, by
    languages[].versions. Translate all sends every row left as one task. options.source names the language.
  • Ask the page: what a visitor's assistant would answer from this page alone.
  • Who wrote it: data-by and data-checked on a block, shown by the strip, kept with ids. Text nobody checked is listed in the
    checks. The right review signs it; a person without it can take a suggestion, and it stays unchecked.

Changed

  • languages: a language the session left keeps what was written in it when the session comes back to it, also without getLanguage.
  • The foot holds the AI's menu, Facts and Check. A page that looked for the Check button as the foot's first button looks for
    [data-editor-foot="check"].

Changed - the library

  • The budgets: the stylesheet at most 36 KB, the script 34 KB, gzipped.
  • A plain btn in an input-group wears the field's line, an accent face and weight 600, so the group reads as one control; a plain
    btn-icon there reads as input-group-text. Solid, outline, subtle and text buttons stay as they are.
  • A click on a control with aria-disabled="true" and a title shows the title for three seconds and says it, as a tap always did.
  • The mark of a table-danger, table-warning, table-active or current row stands on the first cell a phone shows, when a d-none
    cell comes first.

Fixed

  • The caret in a block whose text changed under it threw in Safari, which stopped undo.
  • A dialog and the palette keep their column while they close: for 0.2 s the header, the body and the footer stood in a row.
  • stat-label and stat-sub break one long word instead of running past a narrow tile.
  • A deep link to a tab's panel leaves the tabs in view, under a sticky header too.

Added

  • REDZ.ui.combobox.set(list, values) sets what a list holds from the page, as a choice does: its hidden fields, its button
    or chips, then input and change. A form's Discard can go back to the last saved value; reset goes back to the first.
  • data-changed on a nav-link draws the dot a field's mark has; the tab's aria-label says it to a screen reader.
  • form-more on a details folds a long hint under a field, with a chevron that turns.
  • data-tooltip-delay on a title or around it sets the wait of its tooltip; 0 shows it at once.
  • A folded rail's tooltip stands beside its link, so it covers no other icon.
  • --redz-progress-top-size, --redz-progress-top-track and --redz-progress-top-glow set how much the request bar shows.
  • A flush list group with an edge-start-*, a tinted bg-*-subtle or an alert row gives every row a card's side room, and edged rows keep
    their starts in line.
  • --redz-card-header-bg, --redz-drawer-header-bg and --redz-dialog-header-bg tint a section's head; a dialog's takes
    --redz-dialog-header-end and --redz-dialog-header-line for the room and the line under it.
  • table-scroll-last holds a wide table's last column in place, where a row's buttons stay in view.
  • --redz-table-head-bg, --redz-table-head-text, --redz-table-head-weight and --redz-table-head-border set the look of every
    table head from a product's tokens.

Fixed

  • data-show-when and a switch's hidden twin: a hidden field beside a checkbox or a radio of its name is what the form sends
    while none is checked, so data-show-in can name its value and a region without data-show-in no longer counts it.

Files. redz-ui-0.17.0.zip - the folder a project serves, as it is: css/, js/, LICENSE, LICENSE-editor, NOTICE and redz-ui.json, the passport (the version, the floor, the files to link, the vocabulary and the sha256 of every file). This release needs the icon pack redz-ui-icons 1.13.2, a release of its own. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.17.0/checks/.

Check the archive: gh release verify-asset v0.17.0 redz-ui-0.17.0.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.16.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 13:24
Immutable release. Only release title and notes can be modified.

The editor is rebuilt around a living block: nobody needs HTML to change a REDZ.UI element, and every setting the
library has is one click away. Every block has a stable id, so its history, protection and, later, its translations stay
with it.

Changed - the editor's words and marks, so update your pages

  • The editor's texts changed: the passport's editor.texts lists about 150 new keys, and editor.block, editor.block.up,
    editor.block.down, editor.block.edit, editor.block.columns, editor.block.delete, editor.columns.* and
    editor.image are gone. A page gives its island what the passport lists.
  • editor/ is split into modules, still one file in dist/. The classes editor-island* are gone.
  • A block's parts are no longer edited as HTML by everyone: the HTML of a block and of the page is an expert's, under the
    right html.
  • The value holds every block's data-block and data-lock only with the option ids. A CMS passes it.

Added - the editor

  • Blocks you can change without HTML: the words of a block are fields found by walking it, so typing never breaks its
    markup. Hover a table for the bars of its row and column, a list for the bar of its item, with plus, trash and arrows.
    Click a word for the element bar: the path of the block down to that word, its settings, copy, move and delete.
  • The catalog: tools/catalog.json names what can be changed on 19 elements, nested ones too, also in the passport as
    editor.catalog. The build refuses a class the stylesheets do not have, and a variant of a covered component that is
    neither in the catalog nor set aside with a reason, so a new variant cannot be forgotten.
  • The card of a block: settings tried on while hovered or focused and kept by a click, Esc takes them back; a list's
    words as bullets, numbers, a list group, cards, an accordion, steps or a table of two columns, the words untouched; the
    block's own history, one block going back while the others stay, options.versions adding what the host stored; on a
    table, the numbers of rows and columns and the header row. It stands beside the editor, and on a phone as a sheet on the
    side away from its block, so it never covers what it changes.
  • Rights: options.rights, flags html, ai, design, structure, facts, lock, review, and langs; left out,
    all but HTML and protection; given, a key left out is off. setRights() changes them on the open page. The passport lists
    them as editor.rights. They only hide controls: the server decides on every save.
  • Protection: data-lock="form" keeps the words open and closes the form, the place and the removal; data-lock="all"
    closes the words too. Neither a selection nor Backspace deletes a protected block, and in the page's source it is a
    marker that comes back untouched, even when its line is removed.
  • The expert mode: the HTML tab of a block and the source of the page, cleaned, naming what was taken out and the classes
    REDZ.UI does not know.
  • Typing: ##, ###, ####, >, -, *, 1., **bold**, *italic* and `code`; / on an empty line for the
    blocks; ⌘/ for all the commands; Alt Enter for the card; ⌘⇧ and an arrow to move a block; Tab and Shift Tab to nest a list;
    Tab through a table and a new row after its last cell.
  • The handle: a block moves by dragging it, with a drop line and a View Transition where there is one; pressed, it opens
    the card.
  • Paste: Word, Google Docs, spreadsheets and Markdown from a chat come in as REDZ.UI markup: a table stays a table, a
    heading a heading, every style and font stays behind. A link pasted over selected words links them.
  • The lens: the strip above the text changes the width, the theme, the site's stylesheets and the language under it, and
    the text stays editable.
  • The checks: the foot counts the words by the language's own word breaks, so Thai and Burmese count too, and lists an
    empty heading, a skipped level, an image without words, a vague link, a long paragraph and a table without a head.
  • The toolbar: 36 px buttons with 20 px icons, a filled pressed state, the block's style as a word, an Insert that stands
    out, one scrolling row on a phone, undo and redo from the editor's own history, the caret back where a change started.
  • Lists and formats are the editor's own: the browser's commands keep a paragraph with attributes around a list. The value
    says strong and em whatever the browser wrote.
  • The keys hold in fields in every engine: Safari no longer throws the caret out on Enter or pulls words out on Backspace,
    Firefox crosses blocks by the arrows. Nothing touches the text while a character is composed.
  • A line to type in between two blocks takes no room until the caret is in it, so the text stands as the page will.
  • Markup the catalog does not know, as a migrated body has it, comes back as it came: old font and center, styles, tables
    with colspan. Its words can be typed, and a command takes away only what it wrote itself.
  • The frame follows the page's theme live. The editor's preview names its script hosts: Firefox never matches 'self' in a
    frame of its own, and the library may live on another host.

Added - the library

  • REDZ.ui.status(line, null) empties a status line.
  • data-density="comfortable" and "spacious", for tables and rows: the editor's sizes of a table.
  • badge-sm, badge-lg, alert-sm, alert-lg.
  • tree-item is in the class vocabulary.

Fixed

  • An inline edit in a thread keeps the message's full width.
  • Escape closes a menu whose item shows a tooltip: the tooltip no longer holds the first press back.
  • A tooltip survives a page that replaces its body.

Probes

  • A behaviour check can be a walk that yields real input: clicks, moves of the pointer, keys, typed text and drags. The
    editor's walk runs on every desktop engine: every kind of block, every level of rights, lists, paste, the lens and the keys.

Budgets

  • The editor's script has a soft ceiling of 70 KB gzipped, it was 30, and its styles 8 KB, they were 5. It is 30 KB today.

Files. redz-ui-0.16.0.zip - the folder a project serves, as it is: css/, js/, LICENSE, NOTICE and redz-ui.json, the passport (the version, the floor, the files to link, the vocabulary and the sha256 of every file). This release needs the icon pack redz-ui-icons 1.13.2, a release of its own. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.16.0/checks/.

Check the archive: gh release verify-asset v0.16.0 redz-ui-0.16.0.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.15.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 08:35
Immutable release. Only release title and notes can be modified.

A release is now the folder a project serves, and the icons are a release of their own: 13 files of 480 KB in place of
2,219 files of 8.9 MB, and a new version of the library no longer moves 2,078 icons nor empties their cache.

Changed - renames, so update your links

  • The archive redz-ui-<version>.zip is the folder a project serves, as it is: css/, js/, LICENSE, NOTICE and
    redz-ui.json. There is no dist/ in it, and every CSS and JS file is minified:

    Before Now
    dist/redz-ui.min.css, dist/redz-ui-NAME.min.css css/redz-ui.min.css, css/redz-ui-NAME.min.css
    dist/redz-ui.min.js, dist/redz-ui-NAME.min.js js/redz-ui.min.js, js/redz-ui-NAME.min.js
    js/floor.js js/floor.min.js
    css/icons.css css/icons.min.css, in the icon pack
  • The sources, the docs, this file, the README and floor.json are no longer in the archive: they stay in the
    repository and in the tag's source archive.

  • The passport: dist is now main, {css, js, floor}, each path relative to the version's folder, as are the paths of
    editor and packages. icons is {name, version, css}, the pack this release needs. css and js, the lists of
    source files, are gone, and files lists what the archive holds beside the passport.

  • In the repository dist/ is that folder, passport included, and a CDN reads dist/css/... and dist/js/... by a tag.

Added

  • The icon pack: redz-ui-icons-1.13.2.zip under the tag icons-1.13.2, a release that changes only with Bootstrap Icons.
    It holds css/icons.min.css, icons/ and its own passport redz-ui-icons.json, with the sha256 of every file. A
    project keeps it in a folder of its own, whose address does not change with the library's version.

Fixed

  • A th in tfoot reads as a row's head, not the table's: it kept the head's band, 12 px, nowrap and sticky place (#99).

Changed in the editor

  • Its frames take the icon masks from the address the page links icons.min.css from at that moment, whatever its host
    and query. A page that links no icons has none in the frame.

Checks

  • php tools/build.php --check refuses icons that changed under a published pack's version; tools/release.php refuses
    an archive that differs from what its passport lists. A behavior check of a th in tfoot.

Files. redz-ui-0.15.0.zip - the folder a project serves, as it is: css/, js/, LICENSE, NOTICE and redz-ui.json, the passport (the version, the floor, the files to link, the vocabulary and the sha256 of every file). This release needs the icon pack redz-ui-icons 1.13.2, a release of its own. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.15.0/checks/.

Check the archive: gh release verify-asset v0.15.0 redz-ui-0.15.0.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.14.1

Choose a tag to compare

@github-actions github-actions released this 05 Nov 07:13
Immutable release. Only release title and notes can be modified.

Four fixes from a walk of the ERP's screens in Chrome and Safari, and from the ERP's list.

Fixed

  • A title's tooltip no longer opens when the focus comes back from a closed menu or dialog. In Chrome it threw
    InvalidStateError: Invalid to show a popover during another show operation on Esc from a menu opened by a titled
    button, such as a drag handle's menu of moves.
  • btn-link wraps a long text. On a phone a long title in a btn-link stayed on one line and pushed the page sideways;
    text-break alone cannot change that.
  • A data-show-when region inside a hidden region counts as hidden: its own field no longer shows it and turns its
    fields back on, so the form does not send them. It follows its field again once the outer region shows.
  • A table-scroll is a tab stop only while its table is wider than it. The library sets and removes tabindex, so a
    page drops its own: a table that fits leaves no stop that does nothing.

Checks

  • Behaviour checks of each fix: a title's tooltip with the focus back from a menu and a dialog, a region inside a
    hidden region, the tab stop of a scroller that fits and of one that does not. The docs' long btn-link is judged by
    the overflow check at the phone widths.

Files. redz-ui-0.14.1.zip - the library as released: redz-ui.json, its passport (the version, the floor, the two files a project serves, the stylesheets a bundle joins in their order, the modules, the vocabulary and the sha256 of every file), and every file it names - dist/redz-ui.min.css and dist/redz-ui.min.js among them. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.14.1/checks/.

Check the archive: gh release verify-asset v0.14.1 redz-ui-0.14.1.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.14.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 05:11
Immutable release. Only release title and notes can be modified.

The ERP's #98: a file the page sends becomes a stored one when the server answers its id.

Added

  • An upload's redz:files promise resolved with a string or a number is the id the server keeps the file under: the
    row gets data-file-stored, and from then on its Remove asks the page in redz:remove, as a row the server wrote
    does. Resolved with a Blob, or with nothing, it works as before. The row gets no field of its own: a form that
    posts the ids it keeps adds one, or reads data-file-stored.

Checks

  • The behaviour check of stored files sends one and removes it: kept under the id the docs' server answers, its
    Remove asks the page for that id.
  • An opened layer is measured once its box rests two frames running, within a second: in CI's iOS 18 simulator, which
    has no anchor positioning, the menu guard placed a menu later than two frames after it opened.

Files. redz-ui-0.14.0.zip - the library as released: redz-ui.json, its passport (the version, the floor, the two files a project serves, the stylesheets a bundle joins in their order, the modules, the vocabulary and the sha256 of every file), and every file it names - dist/redz-ui.min.css and dist/redz-ui.min.js among them. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.14.0/checks/.

Check the archive: gh release verify-asset v0.14.0 redz-ui-0.14.0.zip --repo redz-tech/REDZ.UI.

REDZ.UI 0.13.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 03:56
Immutable release. Only release title and notes can be modified.

The packages built into dist/ like the main two files, the ERP's #95-#97, and probes that wait for what they read:
a full CI run in 15 minutes, 25 to 35 before.

Added

  • Each package's files in dist/, built by tools/min.php from its folder as the main two are from css/ and js/:
    redz-ui-charts.min.css and .min.js, redz-ui-calendar.min.css, redz-ui-media.min.css,
    redz-ui-editor.min.css and .min.js, and redz-ui-editor-surface.min.css, which the editor's frame links. The
    passport's packages and editor keep their shape, their paths now these, each hashed in files; the budgets
    hold these files; the folders stay to read, and the release archives both. The editor's script is 8.4 KB gzipped,
    11.0 as written.
  • The class list knows the packages' classes (#97): the passport's classes and assets/classes.txt of both skills
    hold calendar, chart, spark, lanes, media-grid and the rest, so scan.sh --moved no longer reports them
    as unknown; a page that uses one links its package.

Changed

  • The docs link the packages from dist/, the editor's example as the others: the probes run what a project serves.

Fixed

  • A popover that several buttons open - the handles of a list sharing one menu of moves - marked every one of them
    aria-expanded="true", drawn pressed and said "expanded" (#96). Only its opener is now: the toggle event's source,
    else the button just pressed, else the one with the focus, else the only one; the others say false.
  • The Print docs named Bootstrap's d-print-none; REDZ.UI's class is print:d-none (#95).

Checks

  • The probes wait for what they read, not for fixed pauses: a key, a click or a drag waits two frames, in which every
    state they read is set, and a layer's transitions only where its box is read live; a popover is measured at rest
    whatever its transition. Chrome's driver answers as soon as its message is in. docs/all.html in Chrome: 5:55 to
    1:46, the same findings.
  • A part of CI may run a share of its engines' pages, split by a hash of each page's name, so a page keeps its share
    whatever pages come or go: the current Chrome and NVDA in Chrome and in Firefox run in two shares each, iOS 18 and
    iOS 26 in a job each - five macOS jobs, no queue. Measured on run 41961288948: Chrome 24 to 13 minutes in one job,
    Firefox 15 to 7, Safari 18 to 9, iOS 17 to 7 and 9, the floor 7 to 3-4, NVDA 21 to 11-12, VoiceOver 10.
  • Sharper reach: the behaviour checks reach the full pages of the desktop browsers, a package's file the pages that
    link it; an exception of the config is marked used by its own text, not by its place in the list.
  • The minifier's cell holds each package's stylesheet squeezed against it as written, in every engine.
  • tools/docs.php refuses docs prose that names a Bootstrap class the map renames or removes.
  • On the Mac before CI: Chrome, Firefox and Safari Technology Preview (safari-preview), whose own driver takes a
    session while the Mac owner's Safari is open; CI keeps the shipping Safari.

Files. redz-ui-0.13.0.zip - the library as released: redz-ui.json, its passport (the version, the floor, the two files a project serves, the stylesheets a bundle joins in their order, the modules, the vocabulary and the sha256 of every file), and every file it names - dist/redz-ui.min.css and dist/redz-ui.min.js among them. checks.zip - the sheet of the probes this release passed in every engine, also at https://redz-tech.github.io/REDZ.UI/0.13.0/checks/.

Check the archive: gh release verify-asset v0.13.0 redz-ui-0.13.0.zip --repo redz-tech/REDZ.UI.