super-ux 0.19.0 → 0.26.1

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 CHANGED
@@ -1,5 +1,405 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.26.1 — 2026-07-29
4
+
5
+ 0.26.0 gave practice selection two new profile dimensions but no place in the
6
+ chain to read them from — the foundation had no field for either, so the
7
+ profile could only be built by asking again every session. This closes that
8
+ loop.
9
+
10
+ ### Added
11
+ - **Foundation contract §7 — Product mechanics** (`scenario-format.md`,
12
+ `templates/foundation.md`): personalization (none / rule-based / inferred),
13
+ engagement mechanics (none / streaks-tiers / points-badges-leaderboards),
14
+ and the accessibility regime (none stated / EAA / ADA / both) with its
15
+ owner. Three facts the profile reads and cannot infer from the rest of the
16
+ chain; each recorded mechanic carries its consequence into `flows.md` — a
17
+ recovery flow (BP-142), a correction path (BP-144), per-scenario checks
18
+ (BP-138).
19
+ - `ux-foundation` records the section as a step of its own; "none" is a valid
20
+ and useful answer.
21
+
22
+ The section is optional and additive — the contract stays **v4** and every
23
+ existing `foundation.md` remains valid without it.
24
+
25
+ ## 0.26.0 — 2026-07-29
26
+
27
+ A pass over what the catalog could not answer about the *surface* of a
28
+ product. Motion existed as one line of stance (BP-054) with no system behind
29
+ it. Page weight, the narrow viewport, and input capability were absent
30
+ entirely. Accessibility had a standard (BP-059) but nothing about how real
31
+ products miss it — which is a short, repetitive list. Nothing measured
32
+ frustration, nothing governed adopting a look, and personalization was
33
+ implied by the paywall practices without ever being designed. Seventeen
34
+ practices close those gaps, all anchored to field data rather than to trend
35
+ copy.
36
+
37
+ ### Added
38
+ - **Motion — BP-130..132**: durations and easings as a named token scale
39
+ (the motion twin of BP-085's spacing grid); reduced motion as a supported
40
+ mode with a real branch in code, pause/stop for anything auto-playing past
41
+ five seconds, large-transform effects first to go; scroll-driven
42
+ storytelling as enhancement only — the content is complete and readable
43
+ with every effect removed, one scroll clock, capped animated layers.
44
+ - **Page weight, responsiveness & device reality — BP-133..135**: a stated,
45
+ enforced byte and script budget (field medians are the competition, not
46
+ the target), image/font/video/WebGL policy, DOM bloat watched; the small
47
+ viewport designed first with breakpoints from content and a verified 320px
48
+ / 200%-zoom reflow; hover, fine pointer and touch treated as independent
49
+ capabilities — no hover-only affordances.
50
+ - **Accessibility as it actually fails — BP-136..138**: native semantics
51
+ first with ARIA only for what HTML cannot say (pages carrying ARIA measure
52
+ roughly twice the detected errors); overlays are not remediation and a
53
+ clean scan is not coverage — the evidence is a keyboard and screen-reader
54
+ walk; accessibility decided in the chain, with the applicable regime
55
+ (European Accessibility Act since June 2025, ADA litigation exposure) as a
56
+ ship requirement with an owner.
57
+ - **Frustration telemetry — BP-139..140**: rage/dead clicks, failed submits,
58
+ error loops and field-level abandonment instrumented next to the funnel
59
+ and segmented; every recurring cluster routed back into the chain as a
60
+ scenario or a finding with an owner — telemetry nobody owns is decoration.
61
+ - **Gamification — BP-141..142**: mechanics amplify the traced core job or
62
+ they don't ship (extrinsic rewards crowd out the intrinsic motive;
63
+ leaderboards demotivate everyone outside the top); every streak, tier or
64
+ expiring-progress mechanic ships a recovery valve, because the loss moment
65
+ is otherwise a churn trigger at peak engagement.
66
+ - **Personalization & progressive profiling — BP-143..144**: split the ask
67
+ across sessions, derive what can be derived, never re-ask what is known;
68
+ personalization shown with its reason, correctable in one tap, with the
69
+ unpersonalized path still reachable.
70
+ - **Trend governance — BP-145..146**: BP-001 applied to looks — a trend is
71
+ adopted through its mechanism, its identity fit, its accessibility and
72
+ weight cost, and a review date, recorded in the style pack rather than in
73
+ one screen; styles with documented debt (neumorphic surfaces, deliberate
74
+ anti-design, unconventional navigation, immersive 3D) ship only with the
75
+ compensation named, and the audit checks the compensation in the built UI.
76
+ - Six source keys — **[WebAIM]**, **[HTTPArchive]**, **[CSq]**,
77
+ **[A11yLaw]**, **[WSG]**, **[SDT]** — plus an explicit note that
78
+ vendor-published "state of" survey figures are directional only and never
79
+ a practice's sole justification.
80
+
81
+ ### Changed
82
+ - `practice-selection.md`: two new profile dimensions (personalization,
83
+ engagement mechanics); motion, look, weight, responsiveness and
84
+ accessibility routed from the profile; five new per-artifact rows
85
+ (animated/scroll-driven surface, responsive layout pass, accessibility
86
+ pass, gamified/streak surface, personalized/adaptive surface).
87
+ - `ux-design-principles.md`: accessibility, motion behavior and
88
+ responsiveness are specified in the chain, in text, before the UI exists;
89
+ two anti-patterns added (a look adopted with no mechanism or review date;
90
+ treating accessibility, motion or weight as post-build polish).
91
+ - `ux-audit`: the practice pass now verifies in code the four things that
92
+ fail silently — the reduced-motion branch and content-without-effects, the
93
+ weight budget, narrow-viewport/zoom reflow and hover-only affordances, and
94
+ ARIA sitting only where no native element says it. An accessibility claim
95
+ backed by a scanner alone is BLOCKED, not PASS.
96
+ - `visual-identity.md`: motion floors and trend adoption added to the
97
+ division of labor — the pack picks the values, super-ux decides whether the
98
+ floors apply and whether the trend is adopted at all; the audit checks the
99
+ BP-146 compensation in the built UI.
100
+ - `component-guidelines.md`: the cross-platform stance now states the
101
+ native-element-first rule ahead of the ARIA APG patterns.
102
+ - Existing entries updated with field prevalence and cross-links: BP-054
103
+ (points to the motion system), BP-055 (checkout-rebuild yield, defers to
104
+ BP-143), BP-058 (points to the weight budget), BP-059 and BP-081 (the
105
+ ~95% failure rate and low contrast as the single most common defect),
106
+ BP-077 (points to progressive profiling).
107
+
108
+ ## 0.25.0 — 2026-07-29
109
+
110
+ The catalog knew how to sell inside an app and almost nothing about selling
111
+ on the web. Two funnels were missing: web-to-web (landing → pricing →
112
+ checkout → recurring billing → cancel) had only generic form advice, and
113
+ web2app was a single entry (BP-078) stating the economics with none of the
114
+ design work. Both are now full sets, and the chain routes to them from the
115
+ foundation's purchase surface.
116
+
117
+ ### Added
118
+ - **Web funnels — BP-116..123** (`best-practices.md`): one promise from ad to
119
+ landing to first product screen; one page, one job, with proof beside each
120
+ CTA rather than in a bottom section most visitors never reach; pricing page
121
+ as three tiers with one visibly recommended and annual framed in absolute
122
+ money; signup asking the smallest identity that unblocks value (card only
123
+ when the trial is deliberately opt-out); total price — currency, tax, fees —
124
+ shown before the last step, wallets above the card form; abandonment as a
125
+ designed branch with surviving state and a resume link, not a leak; dunning
126
+ as a UX surface (pre-expiry notice, one-tap in-product card update, retries
127
+ that end in a real message); cancel self-serve and honest with exactly one
128
+ save offer.
129
+ - **Web-to-app funnels — BP-124..129**: the web funnel replaces onboarding,
130
+ not just the paywall; the paid handoff is a first-class scenario with its
131
+ failure branches (wrong account, mail never arrived, purchase not yet
132
+ propagated, second device, refunded) — a paying user must never meet a
133
+ paywall; context carried across the store gap by deferred deep link with a
134
+ deliberately designed magic-link fallback; storefront rules as a per-region
135
+ variable re-checked each ship (US external links after the April 2025
136
+ ruling, entitlement elsewhere, EU its own regime, IAP as fallback); the tax,
137
+ SCA, refund and invoice duties the store used to absorb; and one funnel
138
+ measured web session → purchase → install → activation, not stopping at the
139
+ sale.
140
+ - Two source keys — **[CRO26]** (Baymard checkout research, ChartMogul/Paddle
141
+ trial and failed-payment data, landing/pricing-page A/B aggregations) and
142
+ **[W2A26]** (RevenueCat/Adapty/Superwall funnel benchmarks, Apple/Google
143
+ storefront policy after the 2025 US anti-steering ruling) — with an explicit
144
+ note that their figures are industry aggregates the product's own numbers
145
+ overrule.
146
+ - Tag taxonomy: `billing`, `cancel` (stage), `landing-page`, `web2app`
147
+ (domain).
148
+
149
+ ### Changed
150
+ - **`practice-selection.md` routes to the new sets.** New profile dimension
151
+ **Purchase surface** (none / IAP / web checkout / web2app); Step-2 mandatory
152
+ sets for web-direct money products (BP-116..123), for any off-store purchase
153
+ (BP-127, BP-128) and for web2app (BP-124..126, BP-129); Step-3 checklists
154
+ for landing/campaign page, web pricing page, abandonment recovery, dunning,
155
+ and the web2app funnel + paid handoff, with the existing forms/checkout and
156
+ cancel rows extended.
157
+ - **The foundation now declares where the money is taken.** `Purchase surface`
158
+ added to the Monetization section (`scenario-format.md`,
159
+ `templates/foundation.md`, `ux-foundation` skill and Cursor rule); money
160
+ moments now name checkout, failed payment and cancel; when the surface is
161
+ web or web2app, the web funnel and the paid handoff are flows of this
162
+ product, held to the same rigor as in-app screens (`ux-flows`,
163
+ `ux-scenarios` completeness checklists and Cursor rule).
164
+ - Plugin/marketplace descriptions de-numbered again — a practice count had
165
+ crept back in and gone stale; they now say "a tag-indexed best-practices
166
+ catalog". README says 129 and names the two new areas.
167
+
168
+ ## 0.24.0 — 2026-07-29
169
+
170
+ Checked what the plugin claims about Figma against the official Figma MCP's
171
+ actual tools and their contracts. Several instructions would have failed.
172
+
173
+ ### Fixed
174
+ - **The MCP gates its own tools behind guidance skills, and super-ux ignored
175
+ two of the three gates.** `use_figma` requires `/figma-use` first,
176
+ `create_new_file` requires `/figma-create-new-file`, `get_design_context`
177
+ requires `/figma-design-to-code` — skipping them is the server's documented
178
+ cause of hard-to-debug failures. Only the first was mentioned, and only in
179
+ one step of the design loop; the preflight told the agent to call
180
+ `create_new_file` and Improve mode to call `get_design_context` with no gate
181
+ at all. All three are now stated where the call is made, with the
182
+ `skill://figma/<name>/SKILL.md` fallback for setups without the slash
183
+ commands.
184
+ - **"Create a Figma file" was an unrunnable instruction.** `create_new_file`
185
+ needs a plan key (from `whoami`, asking the user when there are several
186
+ teams/orgs) and an `editorType`; neither was mentioned.
187
+ - `generate_figma_design` was listed as a plain alternative for mockups. It is
188
+ narrower than that — the server's own guidance reserves it for capturing a
189
+ *web app* page pixel-perfect the first time, run beside `use_figma`; for
190
+ non-web and from-scratch design, `use_figma` only. Stated as such, and as
191
+ "where the setup exposes it", since not every install has it.
192
+
193
+ ### Added
194
+ - **A tool map in `figma-integration.md`** — need → tool, for the whole
195
+ surface the chain actually touches: writes (`use_figma`), structure reads
196
+ (`get_metadata`), implementation reads (`get_design_context`), screenshots,
197
+ variables (`get_variable_defs`), libraries, assets
198
+ (`download_assets` / `upload_assets`), Code Connect, and FigJam. Explicitly
199
+ a map, not a contract: a missing tool degrades to what is there, and the
200
+ agent never invents a call. Plus how `node-id` and `fileKey` come out of the
201
+ links `screens.md` already stores.
202
+ - **Drift checks that use the cheap tool.** Frame existence and naming are
203
+ verified with `get_metadata` (ids, names, types, sizes — no full design
204
+ context needed), in both directions: a listed state without a frame, and a
205
+ frame whose `SCR-ID`/state is in no `screens.md` row.
206
+ - **Token parity is now checkable, not assumed.** `get_variable_defs` reads
207
+ what a frame actually references, so "built on the style pack's tokens"
208
+ becomes a verdict with evidence — a frame full of raw hexes is the
209
+ design-side twin of hard-coded colors in code.
210
+
211
+ ## 0.23.2 — 2026-07-28
212
+
213
+ Open-source hygiene pass — the repo is public, so the files a first-time
214
+ contributor looks for now exist.
215
+
216
+ ### Added
217
+ - `SECURITY.md` — what the skill and its installer actually run (two `claude`
218
+ calls, explicit argv, no network from the linter), what they write, and private
219
+ reporting.
220
+ - `CODE_OF_CONDUCT.md` and a pull-request template that asks for the command
221
+ output rather than a "tests pass" claim.
222
+ - README now points at the security policy and the code of conduct alongside
223
+ contributing.
224
+
225
+ ## 0.23.1 — 2026-07-28
226
+
227
+ ### Changed
228
+ - Consistent American spelling across every agent-facing file (`labour` →
229
+ `labor`, `honour` → `honor`, `neighbouring` → `neighboring`) — the docs
230
+ were mixing both, which reads as sloppy in a repo whose whole pitch is that
231
+ small inconsistencies compound.
232
+ - Reflowed three paragraphs left ragged by the previous pass's mechanical
233
+ edits (`figma-integration.md` intro, the `ux-flows` build gate), and the
234
+ build gate now names the style pack alongside the chain and the Figma
235
+ mockups.
236
+
237
+ ## 0.23.0 — 2026-07-28
238
+
239
+ Production pass over the public repo: every file read again, the remaining
240
+ contradictions fixed, and the front door rewritten for people who have never
241
+ seen this project.
242
+
243
+ ### Fixed
244
+ - **The hard rule described a three-layer chain.** The most-copied text in the
245
+ project — the rule installed into every `CLAUDE.md`, the always-on Cursor
246
+ rule, the README, `/ux-rule`, the `ux-flows` build gate — said
247
+ "foundation → flows → scenarios" while `screens.md` has been a first-class
248
+ layer with its own same-change rule since 0.16.0. All five copies now say
249
+ foundation → flows → **screens** → scenarios.
250
+ - **`ux-foundation` didn't know about a section it owns.** The contract gives
251
+ `foundation.md` a Design tooling block (Figma on/off + file URL), but
252
+ neither the skill nor its Cursor rule ever mentioned it, so the field was
253
+ only ever filled by whoever happened to read the template. Both now cover it
254
+ — and state that everything else visual (design system, style pack, frame
255
+ links) belongs to `screens.md`.
256
+ - The README's mermaid diagram used `\n` for line breaks, which GitHub renders
257
+ literally; it is `<br/>` now — and the diagram shows the current chain
258
+ (foundation → flows → screens → scenarios → build → audit → plan) instead of
259
+ the pre-flows one.
260
+ - `/ux`'s own description advertised "foundation/scenarios/audits"; menu item 3
261
+ said "design user flows" without mentioning that it also registers screens.
262
+ Inspect now also reports unexecuted plans in `docs/ux/plans/`.
263
+ - `ux-flows` Design had visual identity, wireframes, and Figma crammed into one
264
+ numbered step; identity is now its own step, before anything gets drawn.
265
+
266
+ ### Added
267
+ - **[CONTRIBUTING.md](CONTRIBUTING.md)** — repo layout (including *why* the
268
+ contracts are duplicated per skill), the edit → sync → validate loop, the
269
+ conventions, how to test a change from a packed tarball rather than the
270
+ working tree, and the release checklist.
271
+ - Issue templates for bug reports and ideas, both asking for the thing that
272
+ actually resolves a report: the file that says otherwise, and the check that
273
+ would fail.
274
+ - Validator check: the plugin description in `marketplace.json` must equal the
275
+ one in `plugin.json` — the ecosystem requires both copies, so the duplication
276
+ gets a check instead of trust.
277
+ - `package.json` gains a `bugs` URL; `.gitignore` covers `npm pack` tarballs.
278
+
279
+ ### Changed
280
+ - **README restructured for a first-time reader**: what goes wrong and what
281
+ super-ux does about it, the chain diagram, what you get, quick start per
282
+ channel, the hard rule, the typical cycle, companions, then the internals
283
+ (skills, commands, and a second table for the contracts). Value first,
284
+ reference last.
285
+ - Manifest descriptions rewritten to describe the current system — the whole
286
+ chain, the four skills, the linter, and the style pack — instead of the
287
+ 0.17-era feature list.
288
+ - The historical `docs/superpowers/` spec and plan carry a banner marking them
289
+ as v0.1.0 provenance, with pointers to the live contract; they described two
290
+ skills and four commands and are not maintained.
291
+
292
+ ## 0.22.0 — 2026-07-28
293
+
294
+ ### Added
295
+ - **The visual layer has an owner: the `sheleg-design` companion.** super-ux
296
+ decided what every screen must contain and which craft floors it had to
297
+ clear, then left the actual look to be invented frame by frame — the visual
298
+ half of the drift this system exists to prevent. New reference
299
+ [`visual-identity.md`](plugins/super-ux/skills/references/visual-identity.md)
300
+ makes one **style pack** the identity for the whole product: picked with the
301
+ sheleg-design skill (`workbench` for product UI, dashboards and tools;
302
+ `instrument-console`; `editorial-luxury`; or a new pack authored on its
303
+ contract), recorded once, obeyed everywhere. A cinematic scroll-driven
304
+ landing also takes that skill's motion methodology.
305
+ - **`Style pack` field** in `screens.md` → Design system (contract + template).
306
+ One owner per fact: the pack is named there and referenced from everywhere
307
+ else, with its token file location beside it.
308
+ - **Wired into every design entry point** — `ux-flows` Design (before a frame
309
+ is drawn, not after), `/ux` step 0 beside the Figma question, `/ux-flows`,
310
+ the Figma design loop (pack tokens become the Figma variable collections),
311
+ the Cursor `ux-flows` rule, the hard rule in `templates/claude-rule.md` and
312
+ `/ux-rule`, and the seeded `docs/ux/README.md`.
313
+ - **Audited like any other record.** When a `Style pack` is recorded, the deep
314
+ audit's practice pass checks the built UI honors it — tokens referenced
315
+ instead of raw values, the pack's bans respected, dark mode from its twin;
316
+ a screen ignoring the recorded pack is `drifted`. No pack and an improvised
317
+ visual layer → the companion is suggested once, as an opportunity finding.
318
+ - Validator guard: the hard rule embedded in `/ux-rule` must be byte-identical
319
+ to `templates/claude-rule.md`. They had already drifted apart in wording —
320
+ two copies of a rule is the exact failure the plugin preaches against.
321
+
322
+ ### Changed
323
+ - Recommendation, not dependency, in both directions: one offer with its
324
+ one-time install, then the user's answer stands and the chain continues on
325
+ platform defaults. A project that already has a design system records that
326
+ instead — two identities are worse than any one.
327
+ - Conflict rule stated where both sides live (`practice-selection.md`,
328
+ `ux-design-principles.md`): the style pack owns identity and wins on look;
329
+ BP-079..090 are floors (contrast, tap targets, line length, spacing rhythm)
330
+ and win on safety. The conflict and its resolution go in the compliance
331
+ table.
332
+ - README gains a Companions table (sheleg-design at VISUALIZE/BUILD,
333
+ task-pipeline after a plan) and the hard rule gains its style-pack bullet.
334
+
335
+ ## 0.21.0 — 2026-07-28
336
+
337
+ Full-repo consistency pass: every file read, every contradiction between the
338
+ contract, the skills, the Cursor rules, the templates, and the tooling fixed.
339
+
340
+ ### Fixed
341
+ - **`npx super-ux --cursor` crashed for every npm user.** `package.json`
342
+ `files[]` never shipped `plugins/super-ux/scripts/ux_lint.py`, so the CLI
343
+ installed the rules and templates and then died with an ENOENT stack trace
344
+ while copying the linter (reproduced against a packed 0.20.0 tarball). The
345
+ script is now in `files[]`, and a missing linter degrades to a warning with
346
+ a download link instead of a crash.
347
+ - **The linter mis-read story priorities.** `ST-NNN` bodies were scanned with
348
+ a fixed 600-character window, so a neighboring story's `**Priority:**`
349
+ line leaked into the previous story and produced false "must/should story
350
+ has no scenario" warnings. The scan now stops at the next heading.
351
+ - **The UX-plan example rendered broken.** The `` ```markdown `` block in the
352
+ contract contained a nested three-backtick fence, which closed the outer
353
+ block early and inverted the rest of the section; it is a four-backtick
354
+ fence now.
355
+ - Duplicate `refs(flows, "SCR")` computation in the linter collapsed into one.
356
+ - `release.yml` referenced a `pipeline.example.json` path that does not exist
357
+ in this repo and installed `jsonschema` the stdlib-only validator never
358
+ used.
359
+
360
+ ### Changed
361
+ - **One owner per fact:** `**Design system:**` is gone from `foundation.md` →
362
+ Design tooling (it contradicted `screens.md`, `figma-integration.md`, and
363
+ the templates). Foundation records the Figma on/off choice and the file
364
+ URL; `screens.md` → Design system records the library, tokens, components,
365
+ and assets. `figma-structure.md` and `system-map.md` say the same thing.
366
+ - Cursor rules resynced with ux-contract v4: `ux-flows` documented a stale
367
+ `Screens & states` table (it is `Screens traversed` + the `screens.md`
368
+ entry shape); `ux-scenarios` was missing the `Alt paths` field and the
369
+ monetization entries of the per-product checklist; `ux-audit` said "git SHA
370
+ of scenarios.md" (the contract says `docs/ux`) and never mentioned
371
+ flow/screen conformance or the `coverage` scope; `super-ux` told Cursor
372
+ users to run `/ux-lint`, a Claude-Code-only command.
373
+ - `/ux` reports every layer (it said "all three"); `/ux-init` is incremental —
374
+ existing layers are left untouched and only the missing ones initialized,
375
+ instead of talking about "both files" from a two-file era; README no longer
376
+ says the skills CLI installs "both skills".
377
+ - `docs/ux/plans/` is created by the installers, `/ux-rule`, and `/ux`
378
+ alongside `audits/` — the contract has required the directory since v4.
379
+ - `install.sh --help` described seeding one file; it seeds the whole skeleton
380
+ plus the linter. README's Development section documents the four-way
381
+ version sync and the `sync_references.py` step.
382
+
383
+ ### Added
384
+ - Validator check: every asset `bin/super-ux.js` copies must be covered by
385
+ `package.json` `files[]`, parsed from the CLI source rather than a
386
+ hand-kept list — the packaging regression above cannot come back silently.
387
+ - `templates/flows.md` carries the contract's `Wireframe` field.
388
+
389
+ ## 0.20.0 — 2026-07-28
390
+
391
+ ### Changed
392
+ - Skill descriptions restructured English-first: every Russian trigger now sits
393
+ beside its English equivalent (`"user flow" / "юзер флоу"`) instead of forming
394
+ a Russian-only tail, and the `/ux` routing table follows the same pairing.
395
+ - README is English-only: the Russian section is gone, replaced by a plain
396
+ statement of what the skill gives you and an author/links block.
397
+
398
+ ### Added
399
+ - Validator enforces the three description canon rules on every skill —
400
+ `Use when` opening, Russian trigger aliases present, front-matter under 1024
401
+ characters. Twelve new checks; all four skills pass.
402
+
3
403
  ## 0.19.0 — 2026-07-25
4
404
 
5
405
  Review pass — the contracts were not reaching non-Claude agents.