Repository navigation
Version Packages - #637
Merged
Merged
Version Packages#637
Conversation
github-actions
Bot
force-pushed
the
changeset-release/main
branch
10 times, most recently
from
October 26, 2026 07:46
2533dca to
2d6fa6f
Compare
Contributor
Author
Code Metrics Report
Details | | main (0d9d449) | #637 (d08c733) | +/- |
|---------------------|----------------|----------------|------|
| Coverage | 89.5% | 89.5% | 0.0% |
| Files | 236 | 236 | 0 |
| Lines | 7517 | 7517 | 0 |
| Covered | 6732 | 6732 | 0 |
- | Test Execution Time | 3m22s | 3m27s | +5s |Code coverage of files in pull request scope (100.0% → 100.0%, patch 100.0%)
Reported by octocov |
github-actions
Bot
force-pushed
the
changeset-release/main
branch
15 times, most recently
from
October 29, 2026 03:44
5650236 to
ac05684
Compare
github-actions
Bot
force-pushed
the
changeset-release/main
branch
from
October 30, 2026 00:10
ac05684 to
b7e7e93
Compare
interacsean
approved these changes
Oct 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@tailor-platform/app-shell@1.19.0
Minor Changes
1411958: Add the
subtle-neutralBadge variant, for low-emphasis tags with no status. It reads the neutral roles (bg-neutral-surface,text-neutral-text,hover:bg-neutral-surface-hover), as the other subtle variants read their intent roles.In the default palette it has the same background as
neutral, because--mutedand--secondaryhave the same value (gray 100 in light mode, gray 800 in dark mode). Inbloom, and increamlight mode,--mutedis closer to the page background than--secondary, sosubtle-neutralis quieter thanneutral.b8ead52: Add
cellProps(row),headerProps(ctx), andfooterProps(ctx)callbacks to DataTable columns to setclassName,style, andtitleon the entire data/header/footer cell, including padding. Each can returnundefinedto keep the defaults;headerPropsreceives the same label and sort context asheader, andfooterPropsreceives the same current-pagerowsasfooter.Inline body-cell backgrounds remain visible on hover and selection, including in pinned columns. Footer styling is skipped during loading and errors and for hidden columns; it does not create a footer row by itself. Content, sorting, and context menus keep their existing behavior; existing tables are unchanged.
3cce13f: Add
Column.footerfor static labels and rendered summaries in a sticky row that follows column layout without adding synthetic data rows.Footer renderers receive the current page's read-only rows through the exported
FooterRenderContext<TRow>, mirroring the namedHeaderRenderContextAPI.During loading and page changes, the footer row stays mounted with skeletons instead of displaying stale totals or evaluating footer renderers.
The existing
DataTable.Footerpagination and bulk-action container is unchanged.4e7f81b: Add selector-based
aggregations.sum(selector),avg(selector),min(selector),max(selector), andcount(selector)helpers. Each requires a row selector and accepts an optional second, result-only transformer, returning a reusable callback over{ rows }without depending on React or DataTable.Use the callback as an ordinary
Column.footerrenderer to summarize the current page. Numeric selectors are type-checked and selected values are also validated at runtime, without changing the existing column helper or footer context API. The selector determines the source independently of the column's ID or accessor.4bc2834: Add
ItemListfor compact icon-and-label navigation and actions with collapsible groups, flat sections, and separators. Items requireonClickorrender; groups accept richReactNodetitles, heading-onlyonClick, and an explicitexpandOnClicksetting (defaulttrue).Use AppShell's
LinkorNavLinkthroughrenderfor page navigation. ItemList also emphasizesaria-current="page", soNavLinkcan supply both current-page semantics and the active appearance without a separateisActiveprop. Sidebar behavior remains unchanged.eb44189: AppShell components now use the typography roles. Titles, descriptions, captions, messages, error text, and key and value display render with
Text; controls such as buttons, inputs, menu items, badges, and table cells use the role classes. Most text looks the same. These values change:xsandsmAvatar initials.body-md-relaxed, 22.75 to 24px), attachment file names and upload text, the ActivityCard activity line, Appearance switcher options, and paragraphs inAlert.Description.Menu.GroupLabel(600 to 500).heading-sm(600).Alert.Titledrops its letter spacing (-0.025em to 0).code-sm, with an 18px line height.Element types do not change. Elements rendered with
Textand nodata-slotof their own getdata-slot="text".2413432: Add an optional
emptyContentprop toActionPanelfor localized strings or custom React nodes.Align the title, action icons, and empty content while preserving horizontal padding around action hover backgrounds and focus rings.
Omitting
emptyContentshows the default message in the AppShell locale (English or Japanese); custom strings use the same muted body styling. Passingnullhides the content and its additional spacing while keeping the card and title.bb54644: Add built-in error popovers to DataTable inline editing. When
onValueChangeoronValueCommittedthrows or returns a rejected Promise, the affected cell shows an error. Throw the exportedCellEditErrorwith a translated, user-facing message to display that text; other failures display the localized message “Could not confirm this change”.Alongside this feedback, the editor now retains pending and failed drafts for correction or retry. Confirmation waits for any pending
onValueChangecheck to succeed, and the draft clears only after confirmation succeeds. Drafts remain editable without trapping cell navigation. For direct inputs, Tab and Shift+Tab retain an already failed commit without retrying it; press Enter to retry. Data adoption, persistence, and rollback remain consumer-owned.Each new failure automatically opens its popover without moving focus. Closing the details retains the draft and error, which can be inspected again with the error icon or Alt+ArrowDown. Tab or Shift+Tab to another cell or out of the table dismisses the details without trapping focus; Tab within interactive error content remains available. Esc closes open details first; a subsequent Esc discards the draft and error together. The standard popover adds no reset action.
For example, reject negative quantities with a user-facing message. Invalid drafts remain editable; successful confirmation updates the consumer-owned rows:
The standard error popover needs no configuration. To customize its body or include consumer-owned actions, add
error.renderto the column'seditconfig. The renderer receives the current row and the original thrown value:If the callback handles its own failures and feedback instead, set
edit.error: falseto disable callback interception and retain eager edit completion.5db7473: Add element components to
Text:Text.h1toText.h6,Text.p,Text.span, andText.div. Each one always renders its named HTML element with a default typography role, and takesvariant,className, the element's own attributes, and a ref.The defaults are
heading-lgforText.h1,heading-mdforText.h2,heading-smforText.h3toText.h6,body-mdforText.pandText.div, andlabel-mdforText.span. Headings written this way do not need ajsx-a11y/heading-has-contentdisable comment.Textand itsrenderprop do not change; userenderfor other elements and to compose with another component.Patch Changes
aria-current="page"in custom, grouped, and generated navigation. Screen readers can identify the current page without application code editing the link element.Field.Controlnow logs a console warning when it is given an AppShell control that draws its own frame throughrender, such as<Field.Control render={<Select />} />. That composition renders a double border. The warning logs in every build, not only in development, because it only fires for UI that is already broken.Select,Combobox,Autocomplete,Checkbox,Textarea,DateField,DatePicker, andDateRangePickergo directly underField.Rootinstead. The Form, Select, and form-modal docs now say which controls go where.dist/semantic-contrast.test.tsanddist/theme-bridge.test.ts. These internal test files were copied intodist/by mistake. No public API or CSS changes.Use consistent IME detection, including the keyCode 229 fallback, in filters, cell editors, the command palette, and AI chat.
SidebarItemandSidebarGroupwithout aniconnow show the first letter of their title in the collapsed icon rail, instead of an empty button.bloomlight shell gradient, and thewarningsolid and indicator against a light card. The contrast test now checks thecreamandbloompalettes as well asdefault. No colour values change.app-shell-patternsskill has two new rules. Text usesTextand typography roles, not a bare<p>,<h*>, or<span>withtext-smortext-lg font-semibold. Status and feedback colors use the semantic color roles, not the deprecated--status-*,--alert-*, or--destructivetokens.The document detail page example, the typography guide, and the quickstart now use
Text. The example'sValuehelper now usesbody-md, the same role as the built-inDescriptionCardvalues.app-shell-patternsskill now records the@tailor-platform/app-shellversion it was generated from, in itsmetadata.app-shell-versionfrontmatter and in a new "Version" section. The skill tells the agent to compare it with the installed package and to suggest re-syncing a vendored copy that has fallen behind.Select's dropdown now has a 4px inner gap, likeMenu,ComboboxandAutocomplete, so the highlighted option no longer touches the dropdown's edges.Textpasseschildrenonly when you give them. Arenderelement that supplies its own content now keeps it, for example<Text variant="label-md" render={<Field.Error />} />shows the validation message.Alert.RootandAlert.Description.Center items within each grid row while preserving the title, description, and action layout.
@tailor-platform/eslint-plugin-app-shell@0.2.0
Minor Changes
no-deprecated-tokensrule and enable it inrecommendedas a warning. It reports the deprecated--status-*,--alert-*,--destructiveand--app-shell-type-*tokens and their Tailwind utilities in string and template literals, and names the replacement, for exampletext-destructive→text-danger-textandbg-status-completed/10→bg-success-surface. These tokens still work but will be removed in the next major version of AppShell. The rule does not read CSS files.