## facebook/astryx — v0.6.3…v0.6.4

_216+ commits._

### Features
- **feat(docsite): host stable apps in production (#6763)** (9f3908b)
- **feat(cli): let doc sections include canonical docs (#6768)** (eedc844)
- **feat(DialogHeader): accept ReactNode title and subtitle (#6746)** (95336a1)
- **feat(table): add selection-aware bulk actions (#5486) (#5489)** (d774400)
- **feat(cli): `astryx build` always names a page template to start from (#6707)** (aa04154)
- **feat: add experimental changeset category (#6705)** (395846b)
- **feat(core): add presentation to DateInput, DateTimeInput, TimeInput (AST-043) (#6628)** (c1c2335)
- **Add reusable Item document tabs block (#6652)** (4d19926)
- **feat(lab): MobileTokenizer — touch Tokenizer prototype (#6640)** (e983e37)
- **Add first-party Markdown soft breaks (#6459)** (a00065f)

### Fixes
- **Fix v0.6.4 project codemod type boundary (#6866)** (a51b1fb)
- **fix(docsite): show mobile navigation before hydration (#6786)** (7ec7be0)
- **fix(DropdownMenu): restore closed default story (#6806)** (caa129c)
- **fix(build): fail closed on missing StyleX output (#6693)** (ca8f529)
- **fix(ChatComposerInput): avoid scrolling for a single-line draft (#6734)** (0a5483e)
- **fix(docsite): declare every preview-scope module for the playground editor (#6740)** (24af75f)
- **fix(core): emit border and background resets as longhands so StyleX keeps them (#6732)** (12a6e8a)
- **fix(Selector): measure compact preset to its size token (#6774)** (e41ab7a)
- **fix(Markdown): use 8px table cell spacing (#6801)** (60a8f6d)
- **fix(core): keep Tailwind bridge reference-only (#6797)** (6b72a50)
- **fix(useHotkeys): ignore IME composition keydowns (#6772) (#6773)** (9c26f0a)
- **fix(AvatarGroup): keep the overlap when avatars are wrapped (#6736)** (f839b67)
- **fix(cli): preserve 0.6 template conflict output (#6767)** (e9fbd0f)
- **fix(Markdown): keep lazy continuations in containers (#6752)** (8a64e95)
- **fix(lab): harden Drawer layer lifecycle (#6073)** (189056a)
- **fix(docsite): tolerate cookie probes in isolated preview (#6726)** (b6f9ee7)
- **fix(Markdown): keep table columns at a content-derived width floor (#6708)** (287212a)
- **fix(layer): reset text and whole surface membership (#6457)** (4ec26d7)
- **fix(DropdownMenu): align bottom-sheet section headings (#6694)** (db7b338)
- **fix(a11y): map ChatAdditions stories to Lab Chat scope (#6649)** (35a722f)
- **fix(ChatComposerInput): account for padding in the single-line minHeight floor (#6654)** (33ddd44)
- **fix(crowdin): target GitHub-managed source context (#6713)** (ca632c6)
- **fix(theme): preserve component overrides in type-scale adaptations (#6710)** (039a67e)
- **fix(cli): preserve 0.6 docs compatibility (#6695)** (2bb99ed)
- **fix(Avatar): draw initials from letters, digits and emoji, not punctuation (#6698)** (7ada42e)
- **fix(cli): make every command's text output match its --json data (#6616)** (b1da7d2)
- **fix(docsite): surface preview startup failures (#6634)** (82fb22c)
- **fix(markdown): decode escaped pipes in table code spans (#6642)** (540a520)
- **fix(SegmentedControl): keep hug layout content-sized in flex stacks (#6643)** (c82ebb8)
- **fix(cli): list legacy package components with their own import (#6578)** (3263b99)
- **fix(cli): scope migration literals to resolved sinks (#6445)** (8dd6f73)
- **fix(cli): discover component blocks from the cwd component() is given (#6580)** (90a2012)
- **fix(cli): make search --limit accept what search({limit}) accepts (#6528)** (dea6813)
- **fix(cli): confine theme add staging writes (#6535)** (5f0588c)
- **fix(cli): return the build playbook as data, and render the text from it (#6566)** (a860a50)
- **fix(cli): make doctor text output use its JSON field names (#6516)** (a2d80a2)
- **fix(cli): show each command's exit codes in help and the manifest (#6586)** (d20eaa6)
- **fix(cli): anchor and fail closed in template fixture rewriting (#6596)** (bbadc4d)
- **fix(cli): honor --source and --blocks for legacy --package lookups (#6577)** (7191bc1)
- **fix(cli): give component() the CLI's detail and lang validation (#6576)** (7ae45e8)
- **fix(cli): honor inheritDebug in a project with no astryx.config (#6520)** (b51fb1f)
- **fix(cli): rename Resizable pixel bounds in namespace and as-const configs (#6541)** (15b5a92)
- **fix(cli): write canonical palette candidate JSON (#6531)** (55bbaaf)
- **fix(cli): reject unknown palette neutral profiles up front (#6534)** (9c17243)
- **fix(cli): report ERR_CORE_NOT_FOUND from search when core is missing (#6525)** (20b1042)
- **fix(cli): report theme build output-path failures with registered codes (#6543)** (c844756)
- **fix(cli): report unusable palette output paths with ERR_WRITE_FAILED (#6533)** (1a3be87)
- **fix(cli): report theme template write failures with ERR_WRITE_FAILED (#6532)** (1ee19da)
- **fix(cli): reject custom Heading types with no usable declaration (#6547)** (ec4f9a3)
- **fix(cli): stop reading ASTRYX_LATEST_VERSION (#6554)** (59bb7fa)
- **fix(cli): cap the layout expression read from stdin (#6572)** (8a34e06)
- **fix(cli): cap every repeat the layout expander walks (#6565)** (c802014)
- **fix(cli): confine the file layout expand writes, not just its folder (#6564)** (cb69776)
- **fix(cli): confine the file template copy writes, not just its folder (#6563)** (a8c3461)
- **fix(cli): confine every swizzle write, not just the output base (#6573)** (63d3eda)
- **fix(cli): confine the init template scaffold to the project directory (#6538)** (24efa05)
- **fix(cli): keep agent-doc writes inside the project (#6524)** (e26c83b)
- **fix(cli): copy binary theme files byte for byte in theme add (#6530)** (dc6a8fd)
- **fix(cli): keep template discovery going when one integration's root is unreadable (#6523)** (6bfb7cf)
- **fix(cli): keep the other integrations when one cannot load (#6519)** (ed10d97)
- **fix(cli): refuse a component name another doc under the root already uses (#6557)** (f0cff83)
- **fix(cli): keep --json output to one envelope when a config or manifest prints (#6581)** (dd7d9e4)
- **fix(cli): keep upgrade --json output to one envelope when a hook prints (#6536)** (b6e3f95)
- **fix(cli): answer --json when a command fails to load (#6551)** (2a54bbe)
- **fix(cli): answer help-on-error with an error envelope under --json (#6550)** (c5f45c4)
- **fix(cli): keep --json error codes inside the registered set (#6548)** (2590095)
- **fix(cli): print upgrade progress as plain ASCII (#6539)** (9ccf1d1)
- **fix(cli): keep theme command output plain ASCII (#6544)** (93b8722)
- **fix(cli): describe swizzle --overwrite as a refusal, not a prompt (#6579)** (ef5c0ae)
- **fix(cli): project parentDoc through the component.detail contract (#6575)** (9071e42)
- **fix(cli): keep component detail text a projection of its JSON (#6574)** (8fcc7d1)
- **fix(cli): document how template and layout read their path arguments (#6571)** (9b7e2d0)
- **fix(cli): drop the build kit's text-only setup field (#6570)** (b21f0e2)
- **fix(cli): name layout expand's text fields after its JSON keys (#6569)** (e8a63f8)
- **fix(cli): show a malformed package.json in doctor integration text output (#6559)** (496c949)
- **fix(cli): define every integration add control in help and the manifest (#6558)** (291cfeb)
- **fix(cli): declare apiVersion on the published envelope types (#6555)** (23be80d)
- **fix(cli): keep component and hook text output ASCII (#6553)** (91153fa)
- **fix(cli): use JSON key names in the manifest's text output (#6552)** (6e85d64)
- **fix(cli): describe both full envelopes in the --json help text (#6549)** (1fdc130)
- **fix(cli): document theme build flag defaults and refusals (#6546)** (53fbd99)
- **fix(cli): document every theme build receipt field (#6545)** (27e601b)
- **fix(cli): declare optional on the upgrade.list entry type (#6542)** (82bba84)
- **fix(cli): print init progress as plain ASCII (#6540)** (d12f448)
- **fix(cli): make hook detail text a projection of its JSON (#6537)** (97dcfe6)

### Backend
- **[Component Audit] Citation: name inert references for screen readers (#6849)** (34e0ad3)
- **Update locales after Crowdin QA review (#6783)** (21932ce)
- **[Component Audit] CheckboxListItem: document when standalone checked state applies (#6778)** (0550afd)
- **[Component Audit] CheckboxList: keep each saving option busy until its change settles (#6777)** (85bdae5)
- **spec(cli): AST-048 build always recommends a template to start from (#6769)** (1ffe66d)
- **Docs graph for the CLI and integrations, template replacement, and themeTemplate export (AST-046, AST-047, AST-035) (#6626)** (533ecc7)
- **DropdownMenuItem, CheckboxItem, RadioItem: forward a ref to the row root (agentcloud gap kt-d4wr) (#6687)** (0641893)
- **spec: define experimental APIs on stable components (#6704)** (1b199ad)
- **Protect upgrade codemods from consumer-managed files (#6692)** (e59d786)
- **[Component Audit] ChatToolCalls: restore labels and accessible disclosures (#6680)** (ae45a3d)
- **[Component Audit] ChatTokenizedText: prevent empty tokens from hanging (#6679)** (31b58bc)
- **[Component Audit] ChatSystemMessage: wrap long notices in narrow chats (#6655)** (f04b501)
- **spec(layer): remove required visual-context separation (#6629)** (0788c49)
- **[Component Audit] ChatSendButton: preserve send and stop actions with custom clicks (#6653)** (db93298)
- **[Component Audit] ChatMessageMetadata: remove empty metadata separators (#6637)** (9dbb6c1)
- **[Component Audit] ChatMessageList: preserve numeric empty-state content** (ddb63c3)
- **Compile every doc kind from one resolver, and give themes typed descriptors (#6498)** (34b4692)

### Tests
- **test(cli): decouple support floor from queued bump (#6784)** (02d93e4)
- **test(a11y): correct spinbutton contract fixtures (#6758)** (5775154)
- **test(a11y): retire fixed listbox failures (#6757)** (ee13359)
- **test(a11y): add disclosure accessibility contract (#6350)** (22be8db)
- **test(a11y): add shared Spinbutton contract (#6638)** (e78c3ce)

### Docs
- **docs(CheckIndicator): clarify chrome-free contract (#6847)** (084045f)
- **docs(theme-neutral): document Figtree and its loading snippet (#6079)** (4485852)
- **docs: complete v0.6.4 changeset audit (#6788)** (dc3e46d)
- **docs(cli): classify documentation route moves as nonbreaking (#6753)** (91bc3ee)
- **docs(lab): close the Drawer docsite gap ahead of promotion (#6770)** (7218530)
- **docs(spec): define release compatibility and versioning (#6755)** (e7723cd)
- **docs(CheckboxInput): audit public contract (#6747)** (e86aa19)
- **docs(Indicator): audit CheckboxIndicator guidance (#6745)** (a078d7a)
- **docs(Selector): correct section option key (#6645)** (5937ac3)
- **docs(spec): AST-043 — text-input is TimeInput-only (#6644)** (1013a81)
- **docs(spec): AST-043 unify date/time input presentation, deprecate nativePicker (#6614)** (0899f21)
- **docs(changesets): add missing PR citations (#6639)** (ca469c7)
- **docs(ScrollableArea): add block examples for the docsite (#6490)** (db4e378)
- **docs(cli): name every field of eight responses in the response-type docs (#6588)** (4fb81b0)
- **docs(cli): show apiVersion and the real search flag in the CLI README (#6587)** (444da2a)
- **docs(cli): state upgrade's exit codes and flag interactions (#6590)** (1ce127b)
- **docs(cli): stop describing --overwrite and --install-deps as skipping a prompt (#6593)** (0948edc)
- **docs(cli): list the missing-core failure in build's exit codes (#6592)** (a9486d3)
- **docs(cli): state which template flags win when combined (#6591)** (109554a)
- **docs(cli): state init's exit codes and flag interactions (#6589)** (16458c4)

### Chore
- **chore: version packages for v0.6.4 (#6789)** (e321530)
- **ci: trust release branch validation policy** (5730713)
- **ci: bind releases to marked branches** (d086690)
- **chore: mark release v0.6.4 cut** (46d8327)
- **build(deps): bump next from 16.3.0-preview.5 to 16.3.6 in /apps/docsite (#6780)** (217f41d)
- **refactor(ci): reduce Pages to one landing (#6766)** (00af005)
- **chore: classify Layer boundary as patch (#6751)** (1687d46)
- **ci: allow existing changeset reclassification with specs (#6775)** (58ae271)
- **build(deps-dev): bump vitest from 4.1.10 to 4.1.11 (#6180)** (1f30d4e)
- **chore(cli): lint the CLI structure rules (#6617)** (665afc1)
- **chore: classify integration theme migration as patch (#6703)** (df1837b)
- **ci: stage Vite Sandbox alongside Storybook in docsite previews (#6601)** (29be688)
- **build(sandbox): migrate static export from Next to Vite (#6627)** (7210f0d)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/facebook/astryx?utm_source=github-action)._