@wildmason/aegis 1.15.0 → 1.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +120 -5
- package/dist/fesm2022/wildmason-aegis.mjs +489 -22
- package/dist/fesm2022/wildmason-aegis.mjs.map +1 -1
- package/dist/types/wildmason-aegis.d.ts +109 -1
- package/fonts/CascadiaCode-OFL.txt +94 -94
- package/inputs.css +66 -0
- package/package.json +65 -64
- package/themes.css +12 -12
package/CHANGELOG.md
CHANGED
|
@@ -10,13 +10,124 @@ page; both were written at the time, so the entries are sourced rather than
|
|
|
10
10
|
reconstructed from memory. Anything before 1.8.0 lives in `git log` only, and is
|
|
11
11
|
deliberately not summarised here rather than guessed at.
|
|
12
12
|
|
|
13
|
-
**Releases
|
|
14
|
-
GitHub OIDC workflow, which does not tag, so `git tag`
|
|
15
|
-
tag names before that are inconsistent (`1.4.4`, `v1.5.1`).
|
|
16
|
-
are omitted where no tag exists rather than pointed at a URL
|
|
13
|
+
**Releases 1.12.0 through 1.14.1 carry no git tag.** They were published through
|
|
14
|
+
the GitHub OIDC workflow, which does not tag, so `git tag` skips from `v1.11.0` to
|
|
15
|
+
`v1.15.0`, and the tag names before that are inconsistent (`1.4.4`, `v1.5.1`).
|
|
16
|
+
Version links below are omitted where no tag exists rather than pointed at a URL
|
|
17
|
+
that 404s.
|
|
17
18
|
|
|
18
19
|
## [Unreleased]
|
|
19
20
|
|
|
21
|
+
_No unreleased changes._
|
|
22
|
+
|
|
23
|
+
## [1.18.0] - 2026-09-02
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
- `WmRichTooltip` — a peer to the text-only `WmTooltip` for generic Angular
|
|
28
|
+
markup. Consumers project a trigger marked `wmRichTooltipTrigger` and an
|
|
29
|
+
`ng-template` marked `wmRichTooltipContent`; the template renders in the
|
|
30
|
+
same anchored overlay shape with focus, hover, Escape, ARIA, scroll, and
|
|
31
|
+
clipping behavior. It accepts no raw HTML string, leaving any explicit
|
|
32
|
+
`[innerHTML]` sanitization decision with the consumer. Helm's Stacks
|
|
33
|
+
portfolio uses it to pair full branch refs and state swatches with the
|
|
34
|
+
topology legend, including omitted overflow branches.
|
|
35
|
+
|
|
36
|
+
## [1.17.0] - 2026-09-01
|
|
37
|
+
|
|
38
|
+
### Added
|
|
39
|
+
|
|
40
|
+
- `.wm-kbd--on-fill` — the same key cap `.wm-kbd--on-accent` shipped as one
|
|
41
|
+
release ago, driven by `currentColor` instead of `--wm-color-accent-text` so
|
|
42
|
+
it is correct on any control that carries its own fill rather than on the
|
|
43
|
+
accent alone. On `.wm-btn--primary` `currentColor` **is**
|
|
44
|
+
`--wm-color-accent-text`, so the accent case computes to exactly what 1.16.0
|
|
45
|
+
produced and `check:accent-contrast` measures the same numbers.
|
|
46
|
+
|
|
47
|
+
The generality was not speculative. Helm's conflict-resolution row puts a cap
|
|
48
|
+
inside a Reject button filled with `--wm-color-danger` at 22% over a tinted
|
|
49
|
+
header. Measured on all twelve themes, a plain `.wm-kbd` there draws an edge
|
|
50
|
+
that separates from the button at **1.65:1 to 2.89:1 — below WCAG 1.4.11's
|
|
51
|
+
3:1 on every one of them**. The same cap under this modifier measures 3.55:1
|
|
52
|
+
to 4.43:1. Nothing about that button is unusual; the accent-only modifier
|
|
53
|
+
simply had no answer for it.
|
|
54
|
+
|
|
55
|
+
### Deprecated
|
|
56
|
+
|
|
57
|
+
- `.wm-kbd--on-accent`, in favour of `.wm-kbd--on-fill`. It still ships, as the
|
|
58
|
+
same declarations, because removing a published class is a breaking change —
|
|
59
|
+
and it had no consumers to break, which is precisely why the name was worth
|
|
60
|
+
correcting one release later rather than living with. Slated for removal at
|
|
61
|
+
2.0.0.
|
|
62
|
+
|
|
63
|
+
## [1.16.0] - 2026-09-01
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- `.wm-kbd--on-accent` — the key cap for an accent fill. The base `.wm-kbd` is
|
|
68
|
+
`--wm-bg-sunken` inside `--wm-border-input`: a recess in a *surface*, and both
|
|
69
|
+
tokens are wrong the moment the cap sits on `.wm-btn--primary`. The modifier
|
|
70
|
+
carries no fill of its own, so the cap's label **is** the button's label and
|
|
71
|
+
inherits the contrast that pair already guarantees; only its edge is new, drawn
|
|
72
|
+
as `--wm-color-accent-text` at 75% over whatever is behind. Mixing toward
|
|
73
|
+
`transparent` rather than toward `--wm-color-accent` is what lets one
|
|
74
|
+
declaration serve the rest fill and the hover fill both.
|
|
75
|
+
- `check:accent-contrast` — measures `.wm-btn--primary`'s label on both of its
|
|
76
|
+
fills, the new cap's edge on both, and how far the hover fill sits from the rest
|
|
77
|
+
fill, across every theme. Its destructive twin has had a guard since
|
|
78
|
+
white-on-danger was caught failing 8 of 12 themes; the accent button is the same
|
|
79
|
+
shape and had none.
|
|
80
|
+
|
|
81
|
+
The separation bar is there because the first pass shipped without one and eight
|
|
82
|
+
hovers came out invisible: the derivation took the smallest lightness step that
|
|
83
|
+
cleared contrast, which is a hover nobody can see. It is expressed as a Weber
|
|
84
|
+
fraction, `|L_hover - L_rest| / L_rest >= 0.14`, because an ABSOLUTE distance
|
|
85
|
+
cannot separate the accepted values from the rejected ones at any threshold —
|
|
86
|
+
sorted by OKLab distance an accepted theme sits below a rejected one. Normalised
|
|
87
|
+
by the rest fill's own lightness they separate cleanly, and 0.14 is the low end
|
|
88
|
+
of the band occupied by the three hovers this repo already shipped and nobody
|
|
89
|
+
ever complained about.
|
|
90
|
+
|
|
91
|
+
### Fixed
|
|
92
|
+
|
|
93
|
+
- **`.wm-btn--primary:hover` failed WCAG AA on warm-light: white on
|
|
94
|
+
`--wm-color-accent-hover` `#2aa198` measured 3.16:1.** The cause was
|
|
95
|
+
structural rather than one bad value. On five themes the hover was the
|
|
96
|
+
palette's *second accent* rather than a lighter or darker step of the first
|
|
97
|
+
— Solarized cyan behind Solarized blue, Dracula pink behind Dracula purple,
|
|
98
|
+
Monokai orange behind Monokai magenta. A hue jump promises nothing about the
|
|
99
|
+
label riding on it, so the label's contrast was whatever the two palette
|
|
100
|
+
entries happened to be, and on hover it also missed APCA Lc 60 on nine themes,
|
|
101
|
+
as low as Lc 28.7. Nine hover values are now the accent's own hue and chroma at
|
|
102
|
+
a different OKLCh lightness, moved *away* from the label, far enough to clear the
|
|
103
|
+
separation bar as well as the contrast bars. Where sRGB cannot hold the accent's
|
|
104
|
+
chroma at the higher lightness — vampires-kiss and twilight-peach — the colour
|
|
105
|
+
is gamut mapped with hue and lightness held and chroma reduced, rather than
|
|
106
|
+
clamped per channel, which shifts hue.
|
|
107
|
+
- `--wm-color-accent-text` on arctic-night, vampires-kiss and twilight-peach was
|
|
108
|
+
short of APCA Lc 60 on the rest fill by 0.1, 0.3 and 1.4. Each moved a little
|
|
109
|
+
further from its fill in OKLCh lightness — hue and chroma held, two of the
|
|
110
|
+
three by under five values out of 255.
|
|
111
|
+
- `DESIGN_LANGUAGE.md` §13 claimed `.wm-kbd` was "used identically in Helm
|
|
112
|
+
(command palette) and Slate (sidebar search button)". Neither consumer used it
|
|
113
|
+
at all. Helm draws seven key badges from five component-local rules; Slate draws
|
|
114
|
+
none. `check:docs` gates class *existence* in both directions and cannot see a
|
|
115
|
+
false claim about who uses one, so this was found by looking.
|
|
116
|
+
|
|
117
|
+
### Known limitation
|
|
118
|
+
|
|
119
|
+
- **Four accents cannot reach APCA Lc 60 with any label, and are pinned rather
|
|
120
|
+
than repaired. All four clear WCAG on both fills** — WCAG is the bar this
|
|
121
|
+
package ships to and no theme is exempt from it; APCA Lc 60 is the bar it
|
|
122
|
+
reaches for, enforced the same way because a bar nothing enforces decays. A
|
|
123
|
+
pinned theme is behind an aspiration, not broken. Pure white and pure black bracket every achievable Lc, and on
|
|
124
|
+
posh-sandalwood (`#f92672`, best 40.7 dark / 68.8 white — but white measures
|
|
125
|
+
3.79:1 and fails WCAG outright), source-control-dark (`#3fb950`, 54.6),
|
|
126
|
+
crepuscular-sky (`#c09d06`, 55.7) and wildmason (`#82a682`, 57.8), neither end
|
|
127
|
+
reaches it. Clearing the bar means changing the accent itself, which is each
|
|
128
|
+
theme's brand colour. The shortfalls are recorded to one decimal in
|
|
129
|
+
`check-accent-contrast.mjs`, which fails if one drifts in either direction.
|
|
130
|
+
|
|
20
131
|
## [1.15.0] - 2026-09-01
|
|
21
132
|
|
|
22
133
|
### Added
|
|
@@ -231,6 +342,10 @@ are omitted where no tag exists rather than pointed at a URL that 404s.
|
|
|
231
342
|
Releases before 1.8.0 are in `git log`. See also `wiki/products/Aegis - Health.md`
|
|
232
343
|
for the decisions behind these changes, including the ones decided against.
|
|
233
344
|
|
|
234
|
-
[Unreleased]: https://github.com/wildmason/aegis/compare/
|
|
345
|
+
[Unreleased]: https://github.com/wildmason/aegis/compare/v1.18.0...HEAD
|
|
346
|
+
[1.18.0]: https://github.com/wildmason/aegis/releases/tag/v1.18.0
|
|
347
|
+
[1.17.0]: https://github.com/wildmason/aegis/releases/tag/v1.17.0
|
|
348
|
+
[1.16.0]: https://github.com/wildmason/aegis/releases/tag/v1.16.0
|
|
349
|
+
[1.15.0]: https://github.com/wildmason/aegis/releases/tag/v1.15.0
|
|
235
350
|
[1.11.0]: https://github.com/wildmason/aegis/releases/tag/v1.11.0
|
|
236
351
|
[1.9.0]: https://github.com/wildmason/aegis/releases/tag/v1.9.0
|