astra
alpha-0.1-background
alpha-0.1-dir-prefs
alpha-0.1-sec-dom
menubar-v4-safe
active-uix
morfo-runtime
morfo-driven-soma
semantuix
glm-5
main
sium-v1.0
${ noResults }
11 Commits (2117d7422fc2d0469e7b17599f1d937b51ab8746)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
15621632be |
fix(color): un solo vocabulario de rol, y la documentación del color reconciliada
Había DOS tipos exportados con el mismo nombre. config-types.ts:39 declara
`ColorRole = HierarchyColorRole | Intent` derivado del const (9 roles, con
tertiary) y existía desde el 2026-05-13; eidos/lib/types.ts:125 lo re-escribió
a mano siete días después con 8 miembros —sin tertiary— y nada lo justifica:
ni el commit (
|
2 months ago |
|
|
73411f1440 |
docs(color): amplía el cierre de Stage 2 — RFC §15 + README + stub
Documenta el resultado (el solver de contraste era innecesario: el morph HEREDA el contraste de donantes §40-compliant) en los docs de diseño/código: - docs/rfcs/rfc-color-engine.md: §15 nueva (resolución Stage 2 con las 3 bancas de evidencia + decisiones D1–D6), anotación de fases §11 (Phase 0 = tipos diferidos D5; Phase 3 = base→seeds NO se hace, D2), footer + §14. - src/arts/color/README.md: CONTRAST_PAIRS en la API + nota "contraste heredado, no resuelto" con puntero a RFC §15 y reference §40. - src/uix/eidos/COLOR_ENGINE_RFC.md (stub): deja de sobreafirmar que el tipo ColorScaleSeed existe (está diferido, D5) + puntero a §15. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
3 months ago |
|
|
a52f80ceab |
refactor(eidos): prune the depth `scrim` cue (F4-D scrim decision)
`--depth-{plane}-scrim` was declared (DepthPlane field, DEPTH_CUES, validation,
applyDepth) but never seeded, emitted or read — a write-surface with no reader
(applyDepth({p:{scrim}}) silently no-op'd; never present in generated base.css).
Analyzed via workflow (state map + 4 dispositions + adversarial stress). The
four collapse to prune vs promote-to-z-parity: wire-and-unify SINKS (contradicts
the test-locked z open-cage precedent + the MD3/Radix/Vaul consensus that the
veil is component-owned, not an elevation cue), relocate flips its verb to
retain, and complete-to-z-parity would mint a third alias of the --color-overlay
backdrop role. Unlike z (kept as an exposed open cage — it varies per plane and
is unpaintable-forever), scrim has no per-plane variance and no value to seed.
Prune: remove scrim from DepthPlane / DEPTH_CUES / validation / emitter +
applyDepth doc. Amend rfc-depth.md (token contract + Phase-4 note + atmosphere
rows), reference.md cue list, changelog, pendiente. The modal veil stays where
MD3/Radix/Vaul + the standing decision put it: --{component}-overlay-* tinted by
--color-overlay.
Zero observable change (never emitted). Tests 71/71; npm run check src/ = 9
baseline, 0 new; base.css unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
3 months ago |
|
|
7d4f95005d |
feat(eidos): default fonts -> variable woff2 + full variable-font API
Ship the base theme's default families (Instrument Sans / Lora / Azeret Mono --
identity unchanged) as self-hosted VARIABLE woff2 (SIL OFL, latin subset, wght
range, preload on primary), so the engine's variable path is exercised by the
default theme, not merely capable. The hand-written themes/fonts.css is retired
(@font-face is config-driven from typography.families[].faces); the static TTF
set under static/fonts/air is removed.
Also close the theming-API gaps so it supports ANY variable font, not just
wght+opsz:
- FontAxes is now a 4-letter-tag map. renderFontFace emits a descriptor per
registered axis: wdth -> font-stretch: min% max%, slnt -> font-style: oblique
(OpenType slnt negated to the CSS oblique sign), alongside wght/opsz.
- TypographyStyle.variationSettings -> --style-{name}-font-variation-settings,
applied by the Text recipe (fallback normal), engaging non-standard axes
(GRAD/MONO/custom) and fixed axis defaults.
Verified: variable faces load with weight ranges + mid-axis rendering; new axis
+ variation-settings emission covered by active-eidos-config.test.ts (99 pass);
npm run check src/ = 9-error baseline (0 new); no default-font regression.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
3 months ago |
|
|
53b6f629f2 |
feat(audit): component re-audit + fixes P0–P5 (P4 complete, P5 in progress)
Re-audit of the whole component catalog at pilot depth (91 fichas + the checkpoint verdicts in docs/audit/components/) and the executed fix packages. - P0–P3: doctrine (sema participation, CANON §3 intent, component-guide §5 + API naming, §32 outline), guards (morfo-vocabulary-check S10/S11d, component-audit A-3.1/A-1.4/S9, eidos-lint classHooks), morfo contracts (role=application removed ×4, aria-selected off the Day, drp translationRef, field data-state prune, pin-input commit-set, media-player renames), 13 new sema packs + 12 morfos family-default → pack. - P4 (N1–N10) COMPLETE: selectionMode (select/combobox/toggle-group/calendar); onValueCommit terminal-callback norm (pin-input/search/password/textarea + date/time/color-field add); typed validation reason + onInvalid (tags-input, css-field); index/onIndexChange (carousel); deselectable; openDelay/ groupSkipDelay; allowCustomValue; defaultValue prune. - P5 (in progress): S1 class-hooks codemod (22 hooks → data-attrs across cropper/button/image-picker/toggle/image-adjustments); S5 outline remnant in field.css; depth pass (data-depth=overlay on tooltip/toast/float-panel); touch-rows (--touch-target token, decoupled ::before hit-slop, area-not-visual, 44 AAA). S6 (Field composition) + S8 (calendar-surface) pending. Verification: errors-outside-(alpha|words|palabras|chronos) == 59 (baseline); morfo-vocabulary-check exit 0; eidos-lint class-hooks/invalid 0 on touched components; per-component vitest suites green. Handoff + remaining plan: docs/process/continue-audit-fixes-2026-07.md Excluded (broken by the N1 rename, left broken per user decision, not staged): words/**, palabras/**, chronos, web/routes/alpha/**. Reconciliation pending: the touch-rows ::before for checkbox/switch reverses changelog §37's earlier pseudo-element rejection (WCAG-overlap) that had routed markers to a labeled-row/Field task — flagged for the user in the handoff. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
2050becba6 |
fix(docs): counts sweep round 2 — 12 slots (not 13), 9 roles (not 8) + guards
Extending the I1 count guard to color roles and role slots surfaced four more stale counts the palette fix predicted: the RFCs still said '13 slots' and enumerated borderHover8 (the slot was retired 2026-07-02, zero consumers — COLOR_ROLE_SLOTS is 12), and two component READMEs (css-field, float-panel) still said '8 roles' from before tertiary made it 9. The guard itself had the same disease it polices: extractConstArray counted the quoted 'borderHover' inside the comment documenting its own retirement, so expected=13 and the stale mentions passed — comments are now stripped before extraction. css-field's README is fixed on disk but left unstaged (it carries unrelated local modifications). docs-check now verifies families=8, intents=6, archetypes=26, palette=33, roles=9, slots=12 against their consts on every run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
fc9fc80e09 |
fix(eidos-docs): the palette is 33 scales, not 31 — UI bug + docs + count guard
User-caught drift, and it was live in the UI, not just prose: the demo harness's hand-copied PALETTE_GROUPS enumerated 31 scales — fuchsia and steel (the two non-Radix scales) never appeared in any demo's PalettePicker even though PALETTE_SCALES (the const, 33) and the recipe cascade (paletteScaleDecls maps the const) resolve them fine. Fixed the two missing entries, typed the groups as PaletteScale[], and added a dev-time completeness assertion so growing the const without grouping throws at module load. Prose swept (the numbers were inherited verbatim from the pre-book sources, which contradicted their own '33-scale library' headers): decisions.md color-model row, demo-authoring x4 (incl. the '31-scale palette' lede), rfc-color-engine x4 (ground-truth + templates open-question). Where the count was incidental the text now points at PALETTE_SCALES instead of restating a number. Guard: docs-check I1 gains the palette count (EN + ES patterns, ~-approximation and type/space-scale exclusions; s-mark added to the section-number skip). The check line now prints palette=33. This was the exact class I1 already covered for families/intents/archetypes and had not been extended to the palette. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
732e128bf1 |
docs(book): F7.4 (4/4) — color-engine RFC translated; rfcs/ batch COMPLETE
COLOR_ENGINE_RFC (619 L, the largest RFC) -> rfcs/rfc-color-engine.md,
Spanish to English, same section numbering (s0 TL;DR, s6 generator +
s6.1 isomorphism + s6.2 deriveScheme/buildScheme, s7 wide-gamut
strategies, s8 APCA, s10 frozen invariants, s11 phases with 4-bis
implemented, s13 bloat-doc absorption, s14 comparison). Its
THEMING_AUDIT citation notes the audit is retired; the s25/s26 canon
citations point into theming/reference.md. decisions.md row repointed +
Status aligned (implemented through phase 4-bis); the index's naming
note rewritten — the deferred eidos-RFC rename is now DONE via stubs,
while the arts DESIGN_* docs keep their legacy names in place (their
citations were not swept).
F7.4 complete: 7 RFCs live at docs/rfcs/rfc-{scaling, structure, depth,
shape, typography, color-model, color-engine}.md; MOTION_SERVICE_RFC
stays in src (foreign/concurrent). docs:check 0 errors.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
3 months ago |
|
|
36e79c8f8d |
docs(book): F7.4 (3/4) — typography + color-model RFCs translated to docs/rfcs/
TYPOGRAPHY_ENGINE_RFC (191 L) -> rfcs/rfc-typography.md and COLOR_MODEL_RFC (155 L) -> rfcs/rfc-color-model.md, Spanish to English. color-model is a RESOLVED RFC kept as the historical record of the rejected single-anchor proposal — the resolution header travels with it, canonical model stays theming reference s25. typography's stub notes the measurement arm (lib/canvas-text, SText) stays in src. decisions.md rows repointed; typography's Status aligned with the RFC's own closed-phases state. Theming reference s21/s25 links swept. docs:check 0 errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
9034a6e3a4 |
docs(book): F7.4 (2/4) — depth + shape RFCs translated to docs/rfcs/
DEPTH_ENGINE_RFC (149 L) -> rfcs/rfc-depth.md and SHAPE_ENGINE_RFC (162 L) -> rfcs/rfc-shape.md, Spanish to English. Both stubs summarize the shipped state (phases 1-5) and keep the by-path citations resolving — including the '// (DEPTH_ENGINE_RFC s5)' comments across src/uix/eidos/lib/*.ts that decisions.md documents as load-bearing. decisions.md index rows repointed and their Status column aligned with the status the RFCs themselves declare (both said implemented; the rows still said Propuesta). Theming reference s29/s30 canonical-guide links swept. docs:check 0 errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |
|
|
9afcabe73e |
docs(book): F7.4 (1/4) — structural RFCs translated to docs/rfcs/
SCALING_RFC (92 L) -> rfcs/rfc-scaling.md and STRUCTURE_ENGINE_RFC (113 L) -> rfcs/rfc-structure.md, Spanish to English, same section numbering. The legacy-name -> rfc-* rename that decisions.md declared deferred 'until those citations are swept in the same pass' happens here: stubs at the old paths keep every by-path citation resolving. Corpus links swept (theming reference s23/s31, decisions.md index rows, channels.md capstone list — the channels.md sibling links to rfc-color-engine/typography/depth/shape land later in this batch). Chronicle docs (theming/changelog, inherit_audit) keep old paths by doctrine — the stubs resolve them. docs:check 0 errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
3 months ago |