Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
ce0aa8c
test(Resizable): createResizable keeps a resizable region without Rea…
vjeux Nov 2, 2026
f10d880
refactor(Resizable): createResizable keeps the region without React, …
vjeux Nov 2, 2026
edac1bb
docs(Resizable): the reveal comment says the factory resumes
vjeux Nov 3, 2026
5162c7c
test(Resizable): a configuration useResizable was created with reache…
vjeux Nov 3, 2026
4408fef
fix(Resizable): useResizable compares a configuration with the one th…
vjeux Nov 3, 2026
f3e8799
chore(Resizable): drop a createResizable divider that restates the co…
vjeux Nov 3, 2026
dd345f4
docs(Resizable): the options Effect names the factory it passes new o…
vjeux Nov 3, 2026
d288321
test(Resizable): createResizable drives a plain handle element, with …
vjeux Nov 3, 2026
6f3d459
feat(Resizable): createResizable drives a plain handle element, and R…
vjeux Nov 3, 2026
8cc6e84
docs(i18n): architecture:internationalization's INV3a evidence gap na…
vjeux Nov 3, 2026
fe7d6a1
test(Resizable): a disabled handle keeps its tab stop, on ResizeHandl…
vjeux Nov 3, 2026
8a20dec
fix(Resizable): a disabled handle keeps its tab stop, as component:Re…
vjeux Nov 3, 2026
3509bd0
docs(Resizable): the records drop the closed tab-stop gap, and INV3a'…
vjeux Nov 3, 2026
c4b3ee6
docs(Resizable): the tab-stop changeset names the old behavior, the n…
vjeux Nov 3, 2026
ab9c9b0
docs(Resizable): FR3 drops the disabled tab-stop gap, and the disable…
vjeux Nov 3, 2026
0a48784
chore(Resizable): drop a createResizable divider that restates the co…
vjeux Nov 3, 2026
c12c3cb
chore(Resizable): drop a createResizable comment that restates the na…
vjeux Nov 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/create-resizable-internal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] The configuration-object `useResizable` builds on one internal resize region, through the same size model as before, so the region's state has one implementation.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/create-resizable-plain-handle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[chore] The internal resize factory can drive a plain handle element: it gives the element the separator's role, name, value and tab stop, and answers its pointer drag, keys, Enter and double-click. ResizeHandle and the factory derive the separator's attributes from one helper, with no behavior change.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Non-blocking: the shared helper is also what moves a disabled ResizeHandle's tabindex from −1 to 0, which the [fix] changeset records. Maybe: "…derive the separator's attributes from one helper, with no other behavior change."

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. #9372 folds this changeset into the public createResizable one, so the wording lands there, in its next round.


@vjeux
7 changes: 7 additions & 0 deletions .changeset/resizable-percentage-default-after-hydration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] A server-rendered `useResizable` region whose `defaultSize` is a percentage and that has no `containerRef` hydrates with the server's markup, then resolves the percentage against the window, instead of keeping the size the server resolved.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/resizable-saved-size-after-hydration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] A server-rendered `useResizable` region with an `autoSaveId` hydrates with the server's markup and takes its saved size in the next commit, so hydration no longer reports a mismatch and the handle announces the saved size.

@vjeux
7 changes: 7 additions & 0 deletions .changeset/resize-handle-disabled-tab-stop.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@astryxdesign/core': patch
---

[fix] A disabled `ResizeHandle` keeps its tab stop. Before, it left the tab order, so keyboard users could not reach it to hear that it is disabled. Now it stays in the tab order, as a disabled control keeps its tab stop, and it still ignores pointer and keyboard input and says so with `aria-disabled`.

@vjeux
2 changes: 1 addition & 1 deletion docs/architecture/internationalization.md
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ callers remain conformance work and do not relax INV1a, INV8, INV9, or INV10.
| INV1, INV1a, INV7 | hardcoded-string lint, catalog tests, component translation tests with a non-English provider | Astryx-owned text bypasses the catalog, an announcement or count is assembled from fragments or a hand-rolled plural, or non-string output reaches visible/AT attributes |
| INV2, INV13, INV14 | export drift checks, public i18n tests, compatibility review | A parallel/replacement runtime lands without migration, or client hooks claim server behavior |
| INV3–INV5 | resolver and provider rerender tests | no-provider output depends on the host, locale swaps stay stale, fallback order changes, or malformed-locale behavior is described as graceful |
| INV3a | factory unit tests: a flat option or `labels` key replaces its message, including under a provider, and outside a provider its absence announces or shows shipped English; wrapper tests: under a non-English provider its absence gives the translation. Evidence gap: no factory test covers a flat option or `labels` key yet | a factory announces or shows Astryx text that no option or `labels` key can replace, groups more than one string outside one `labels` object, takes a translator, ignores a given string, or gives something other than the catalog message when it is absent |
| INV3a | factory unit tests: a flat option or `labels` key replaces its message, including under a provider, and outside a provider its absence announces or shows shipped English; wrapper tests: under a non-English provider its absence gives the translation. Evidence gap: no factory test covers a `labels` key, or a flat option under a provider, yet | a factory announces or shows Astryx text that no option or `labels` key can replace, groups more than one string outside one `labels` object, takes a translator, ignores a given string, or gives something other than the catalog message when it is absent |
| INV6 | `check:i18n-catalog`, key-format lint, and focused mutation tests | stale/malformed keys, malformed ICU, or source/translation runtime-contract drift passes CI |
| INV15 | generator tests, `check:i18n-runtime`, package-export drift check, provider/resolver runtime-catalog tests; per-module English resolution-parity test (every key each Core module names, in every shipped locale’s fallback path, its own map versus the whole catalog); import-cost check (component bundles carry only the English they name; public paths keep the whole catalog) | a generated module carries descriptions or is committed, a malformed entry projects instead of failing, a rich export path changes, or a `RuntimeCatalog` input is rejected or leaks a non-rich context shape, a key a module names resolves differently from the whole catalog, a component bundle carries the whole catalog, or a public path stops resolving a shipped key |
| INV16 | build-plugin unit and real-build tests | a rich or generated locale import fails to resolve through the standard plugin |
Expand Down
Loading