Skip to content
5 changes: 3 additions & 2 deletions docs/design/user-states.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,13 @@ surface.
- **DR1 — Press the manipulated surface.** During pointer hold or drag, each
enabled surface in the matrix below MUST paint `--color-overlay-pressed` on
the named visual part. The overlay is transient and MUST clear when the press
or drag ends.
or drag ends. Under a finger, the overlay's timing follows `spec:AST-094` FR11's press profiles.
- **DR2 — Disabled means no response.** A disabled control in the matrix MUST
remain inoperable and MUST NOT gain a pressed visual treatment.
- **DR3 — Persistent selection wins.** A selected SegmentedControl item MUST
keep its raised selected surface during pointer hold; only an unselected item
receives the pressed overlay.
receives the pressed overlay. Under a finger the item keeps that surface, and its press timing follows
`spec:AST-094` FR11.

## Anatomy and hierarchy

Expand Down
18 changes: 9 additions & 9 deletions docs/families/buttons.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,15 +93,15 @@ Membership follows public responsibility, not an import of Button or a rendered

## Canonical concepts

| Concept | Values or states | Default semantics | Stability |
| ---------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------- |
| activation model | momentary action, navigation, persistent press | Button and IconButton activate once; ToggleButton represents retained pressed state | shipped distinction |
| content mode | visible label, custom visible content, icon-only | every control has a required accessible `label`; icon-only hides it visually | shipped family rule |
| size | `sm`, `md`, `lg` | `md`; explicit member size wins over an inherited group size | shipped family axis |
| visual state | rest, hover, focus, active, disabled, loading; pressed where applicable | states preserve control geometry and accessible purpose | shipped family rule |
| async action | absent, fire-once, interruptible persistent action | ordinary actions deduplicate while pending; persistent toggles remain reversible | shipped family distinction |
| elevation | `none`, `low`, `med`, `high` | `none`; the element painting the visible surface owns the shadow | shipped family axis; ToggleButton adoption approved |
| grouping | standalone, spaced set, connected surface | semantics and painted containment decide ownership; grouping alone does not | family rule |
| Concept | Values or states | Default semantics | Stability |
| ---------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- |
| activation model | momentary action, navigation, persistent press | Button and IconButton activate once; ToggleButton represents retained pressed state | shipped distinction |
| content mode | visible label, custom visible content, icon-only | every control has a required accessible `label`; icon-only hides it visually | shipped family rule |
| size | `sm`, `md`, `lg` | `md`; explicit member size wins over an inherited group size | shipped family axis |
| visual state | rest, hover, focus, active, disabled, loading; pressed where applicable | states preserve control geometry and accessible purpose; under a finger, press feedback follows `spec:AST-094` FR11's control profile | shipped family rule |
| async action | absent, fire-once, interruptible persistent action | ordinary actions deduplicate while pending; persistent toggles remain reversible | shipped family distinction |
| elevation | `none`, `low`, `med`, `high` | `none`; the element painting the visible surface owns the shadow | shipped family axis; ToggleButton adoption approved |
| grouping | standalone, spaced set, connected surface | semantics and painted containment decide ownership; grouping alone does not | family rule |

## Cross-component invariants

Expand Down
15 changes: 9 additions & 6 deletions docs/specs/AST-013/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,12 @@ requirements. Assistive-technology evidence remains separately owned.
public [Browser Support guide](../../../packages/cli/assets/docs/browser-support.doc.mjs)
and record their source and refresh date. TypeScript targets, build targets, and
feature tables are not support evidence.
- **FR3 — Two explicit browser support rows are always included.** Independently
- **FR3 — Explicit browser support rows are always included.** Independently
of the generated Baseline coverage, Astryx explicitly supports:
- the latest stable Chrome release on desktop; and
- Safari on the latest stable iOS release.
- the latest stable Chrome release on desktop;
- Safari on the latest stable iOS release; and
- for touch presentations, Chrome on the latest stable Android release
(`spec:AST-094`).

“Latest” means the current stable release identified and refreshed from
authoritative browser release data, not a handwritten version. Other browsers
Expand Down Expand Up @@ -191,23 +193,24 @@ hydrating render can differ from the server's markup.

## Decision log

### DEC-1 — Rolling Baseline tiers plus two official browser rows
### DEC-1 — Rolling Baseline tiers plus official browser rows

**Reference:** `spec:AST-013/DEC-1`
**Decider:** `cixzhang`, `2026-09-01`

Astryx uses current Web Platform Baseline for full support, Baseline minus two
years for reduced fallback, and no promise below that tier. Latest stable Chrome
on desktop and Safari on latest stable iOS are always included as official support
and test rows independently of generated Baseline coverage. Generated compatibility
and test rows independently of generated Baseline coverage, and touch
presentations add Chrome on the latest stable Android (`spec:AST-094`). Generated compatibility
rows and the named official test matrix remain distinct public facts.

### DEC-2 — Explicit support does not require proof on every change

**Reference:** `spec:AST-013/DEC-2`
**Decider:** `cixzhang`, `2026-09-02`

DEC-1's two named browser rows are explicit support rows, not a required automated
DEC-1's named browser rows are explicit support rows, not a required automated
or per-change test matrix. Astryx investigates and fixes defects reproduced in
those browsers, but routine changes do not need to prove every supported browser
before landing. Actual-browser evidence is required when the change makes a
Expand Down
3 changes: 2 additions & 1 deletion docs/specs/AST-025/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,8 @@ the behavior.
the requested direction. A containment policy MAY stop chaining, but its
`overscroll-behavior` effect MUST be active only on axes that currently overflow.
This avoids dead scroll zones in engines that honor containment on non-overflowing
`overflow: auto` elements.
`overflow: auto` elements. Inside a touch presentation under a finger, who
gets a drag is decided once, when it begins (`spec:AST-094` FR14).
- **FR15 — Native scrollbars are the default presentation.** The default presenter
MUST preserve native scrolling and use standards-based CSS such as
`scrollbar-width`, `scrollbar-color`, and `scrollbar-gutter` where supported.
Expand Down
Loading
Loading