Skip to content

History

Revisions

  • Fix remaining stale token names across the wiki --size-sm/md/lg, spacingTokens.space3, --shadow-menu, --radius-rounded and the --text-* raw scale do not exist on main; the token objects are *Vars maps keyed by CSS custom property name.

    @cixzhang cixzhang committed Aug 10, 2026
    f62b006
  • Correct the build pipeline description: Babel and tsc, ESM-only output core/lab/charts/richtext build with Babel plus tsc, not tsup; core is type: module so there is no CJS bundle or .mjs/.d.mts pair. @astryxdesign/build ships StyleX Babel/PostCSS/Vite plugins, not a tsup config.

    @cixzhang cixzhang committed Aug 10, 2026
    aae348b
  • Fold the API Auditor's composition checks into the Component Auditor Slot hoisting, the raw-element prop-interface angle, undemonstrated escape hatches and boolean-or-config were dropped when the roles merged; the successor had no composition section at all. They are live checks, so they move rather than retire.

    @cixzhang cixzhang committed Aug 10, 2026
    3bc451a
  • Teach ref as a prop instead of forwardRef Main is React 19 ref-as-prop: 149 core components declare ref on their props interface, @eslint-react/no-forward-ref is enabled, and exactly one forwardRef call site remains (lab's RichTextEditor).

    @cixzhang cixzhang committed Aug 10, 2026
    d924380
  • Update the authoring guide to the shipped token and theming APIs Tokens are defineVars maps indexed by the CSS custom property name (colorVars['--color-*'], spacingVars, sizeVars, durationVars, easeVars), not colorTokens.surface / spacingTokens.space3 / transitionTokens.fast. Overrides are consumed through the themeProps class, not useContext(ThemeContext) and a ComponentStyles interface that does not exist. The animation examples no longer hardcode 0.6s and ease-out.

    @cixzhang cixzhang committed Aug 10, 2026
    2077f19
  • Stories live in apps/storybook/stories, not beside the component There are no *.stories.tsx files under packages/; all 180 live in apps/storybook/stories/<Name>.stories.tsx. Also drops the stale claim that components are named Astryx{ComponentName}, which the table below contradicts.

    @cixzhang cixzhang committed Aug 10, 2026
    55f2f3a
  • Fix the block template path: packages/cli/assets/templates/blocks

    @cixzhang cixzhang committed Aug 10, 2026
    196a2a6
  • Fix token names in the token layer and type scale tables Size, radius, shadow, ease and typography examples named tokens that are not in tokens.stylex.ts. The raw text scale is --font-size-*, not --text-*, and there is no --shadow-menu.

    @cixzhang cixzhang committed Aug 10, 2026
    ccd67d9
  • Correct the neutral gray token names to the ones that exist --color-secondary, --color-muted and --color-wash are not in packages/core/src/theme/tokens.stylex.ts. The real roles are --color-neutral (self-contained elements), --color-background-muted (containers with content), --color-track (slim rails) and --color-background-body (page level).

    @cixzhang cixzhang committed Aug 10, 2026
    197beec
  • Correct the extensibility mechanism: VariantMap interfaces, not defineTheme variants defineTheme has no variants key. Extensible props declare a *Map interface in the component's public subpath barrel, derive the prop type from it, and let unknown values fall through to base styles.

    @cixzhang cixzhang committed Aug 10, 2026
    40c5aab
  • Replace the ComponentStyles module-augmentation example with the VariantMap pattern There is no ComponentStyles interface in packages/core/src/theme/types.ts. Extensible props are backed by a *VariantMap interface declared in the component's public subpath barrel.

    @cixzhang cixzhang committed Aug 10, 2026
    88988dd
  • Correct the input size union and heights to sm/md/lg at 28/32/36px TextInput, Selector and Button all derive size from the same sizeStyles keyed sm/md/lg, backed by --size-element-sm/md/lg (28/32/36px). There is no inputs-only sm|md union, and --size-sm/md/lg do not exist.

    @cixzhang cixzhang committed Aug 10, 2026
    0a532d3
  • State the busy-vs-disabled rule once and flag Button's deviation The page said both that isBusy disables the button and that busy never uses native disabled. Busy is aria-busy plus a guarded handler, never the attribute; Button's current native disable is called out as a tracked deviation (#4871).

    @cixzhang cixzhang committed Aug 10, 2026
    8a2a877
  • Async actions: the shipped prop is changeAction, not on{Verb}Action Every async-capable core component ships changeAction / clickAction; there are zero on*Action props in packages/core/src. Async actions drop the on prefix.

    @cixzhang cixzhang committed Aug 10, 2026
    2d254ad
  • Hook naming: replace useControllableState with a hook that exists useControllableState is not in packages/core/src/hooks — components hand-roll the controlled/uncontrolled merge. Use useInputContainer as the internal-hook example instead.

    @cixzhang cixzhang committed Aug 10, 2026
    ed40f17
  • Correct export conventions: exports map is generated, not tsup The core exports map is generated by scripts/sync-exports.js and guarded by sync:exports:check and verify-exports.mjs. Hand-editing it is a review reject. vega is the only package still built with tsup.

    @cixzhang cixzhang committed Aug 10, 2026
    f8045f1
  • vibe-test: scores 2026-08-10

    @cixzhang cixzhang committed Aug 10, 2026
    da88beb
  • vibe-test: scores 2026-08-09

    @cixzhang cixzhang committed Aug 9, 2026
    2b24d00
  • vibe-test: scores 2026-08-08

    @cixzhang cixzhang committed Aug 8, 2026
    3257afc
  • vibe-test: scores 2026-08-07

    @cixzhang cixzhang committed Aug 7, 2026
    8d961f2
  • Doc Reviewer: refresh all check paths for the CLI restructure The restructure relocated the CLI tree and several audit checks silently went dead (globbing paths that no longer exist, so passing on zero files): - Templates moved packages/cli/templates/ -> packages/cli/assets/templates/ (614 block + 43 page docs). Checks 3/6/7/8/9/10/11 globbed the empty old path and were passing on nothing. - Reference docs moved packages/cli/docs/ -> packages/cli/assets/docs/. - src/ split: docs loader -> api/docs/docs.mjs; component-loader -> foundation/discovery/; docOverlays.test -> api/docs/; bin -> clients/cli/bin/astryx.mjs. - Check 18 config/README drift: the Zod schemas are now module-PRIVATE (const configSchema / const integrationSchema) split across authoring/config/parse.mjs + authoring/integration/parse.mjs, not the old exported names in src/lib/. Rewrote the audit to read both files and match the private names. Verified against current main: block globs resolve (614+43 files) and the config drift audit reads real schema keys instead of empty sets.

    @josephfarina josephfarina committed Aug 7, 2026
    e9ff70d
  • Update template asset guidance

    @imdreamrunner imdreamrunner committed Aug 7, 2026
    2507f9c
  • vibe-test: scores 2026-08-04 (backfill)

    @cixzhang cixzhang committed Aug 6, 2026
    304f9f6
  • vibe-test: scores 2026-08-06

    @cixzhang cixzhang committed Aug 6, 2026
    d99e350
  • Split reorder visuals into drag and drop rows

    @ernestt ernestt committed Aug 6, 2026
    233a986
  • Clarify transient reorder opacity exception

    @ernestt ernestt committed Aug 6, 2026
    30f42e0
  • Document reorder interaction state

    @ernestt ernestt committed Aug 6, 2026
    0b337ec
  • Night Watch: catch docs that name things which do not exist Generalizes the useToggle finding. That bug was not "an example broke" but "a doc named a subject that does not exist" — a hook, component, topic, or template that was renamed or never existed, inside an otherwise valid command. Records the method, because the obvious approach is wrong: extracting `astryx <cmd> <subject>` by regex and checking the subject against --list was tried and produced 8 false findings out of 11. Aliases still resolve (`component XDSButton` is absent from --list but exits 0 and prints the Button doc), and ordinary prose matches the pattern ("...only contains astryx component strings."). Executing the invocation settles both, and is what caught useToggle. Also notes that a subject resolving only through a legacy alias is a softer finding: it works, but it teaches the old name. Co-authored-by: Cursor <cursoragent@cursor.com>

    @josephfarina josephfarina committed Aug 5, 2026
    078a9c9
  • Night Watch: run the CLI's documented examples, and stop hand-writing .d.mts Check 19 had gone stale against main and was missing the one CLI check that finds real rot. - Examples: every CommandDoc carries `examples` and nothing ever executed them. The drift harness compares flags and args, so an example naming a subject that does not exist looks valid. Running them turned up `astryx hook useToggle --json`, which fails with ERR_UNKNOWN_HOOK — shipped in `astryx manifest --json`, which agents read. Adds a runnable script, plus the gotcha that the sandbox cwd must be inside the repo or core resolution fails and every example reports as broken. - Structure: the doc-type quartet is a trio now. parse.d.mts is generated, so the check no longer asks for it — and an agent must never hand-write one to satisfy a missing-declaration error. Points at sync:api-types and the published-surface verifier instead. - Layering: notes that the import directions and defineCommand registration are ESLint errors now, not things to eyeball. Co-authored-by: Cursor <cursoragent@cursor.com>

    @josephfarina josephfarina committed Aug 5, 2026
    9ef88b0
  • Night Watch: correct the CLI doc checks (check 19) The golden harness is a local-only verification tool, not committed, so the Doc Reviewer instructions pointed at `pnpm -F @astryxdesign/cli golden:check`, a script that does not exist. Replace it with the checks that do ship: the drift harness and `pnpm check:cli-structure`. Also: `--help` is now generated from each CommandDoc via defineCommand, so note that editing a command doc changes user-visible help and should be eyeballed; and stop claiming the docs already feed `astryx docs` and the doc site, which are still to come. Co-authored-by: Cursor <cursoragent@cursor.com>

    @josephfarina josephfarina committed Aug 5, 2026
    96f8fcc