super-ux 0.26.5 → 0.28.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 CHANGED
@@ -1,5 +1,126 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.28.0 — 2026-08-05
4
+
5
+ Closes the carry-over ledger the 0.27 audit opened. Twenty-three practices,
6
+ five principles, three optional contract fields, a prototype step, and an
7
+ index over a catalog that had grown past the point of being read whole.
8
+
9
+ ### Added
10
+ - **Motion craft — BP-157..164.** BP-130 said durations and easings should be
11
+ tokens and stopped there. These make the decisions it does not: whether the
12
+ element animates at all (frequency decides — a hundred times a day means
13
+ never), what the durations actually are, why `ease-in` is wrong on
14
+ interface motion, entering from a visible state rather than `scale(0)`,
15
+ anchored surfaces growing from their trigger, asymmetric enter/exit,
16
+ interruptibility for anything retriggerable, and hover gated behind a
17
+ hover-capable pointer.
18
+ - **Perceived quality — BP-165..168.** Why a technically correct interface
19
+ still reads as unfinished: mixed icon families and stroke weights, emoji
20
+ used as structural icons, pressed states that reflow their neighbours, and
21
+ a scrim too weak to separate the layers it exists to separate. None of
22
+ these fail an automated check, which is why they survive audits that only
23
+ measure.
24
+ - **Generated-default tells — BP-169..172.** super-ux is a tool agents build
25
+ interfaces with, so it should know the signature of its own defaults: fake
26
+ product screenshots built from markup, implausible placeholder data, the
27
+ three-equal-cards row that means nobody decided the hierarchy, and the
28
+ cluster (`#000000`, two accents, `100vh`, no max-width) that marks a
29
+ question never asked.
30
+ - **Interface state, platform surfaces and locale — BP-173..179**, from the
31
+ Web Interface Guidelines: state in the URL, undo for reversible actions
32
+ instead of a confirmation nobody reads, unsaved work that survives,
33
+ dark mode covering the surfaces the browser draws, localization as a
34
+ design constraint rather than a translation step, scroll containment and
35
+ touch defaults in overlays, and lists virtualized before they ship long.
36
+ - **Motivation principles — PRN-17..21.** Goal-gradient, Zeigarnik, IKEA,
37
+ endowment, zero-price. Each carries a fourth column naming where it turns
38
+ coercive, and a rule that any of them recorded as `applied` says which side
39
+ of that line it is on. They are motivation mechanisms; the same levers
40
+ aimed at the product's interest are dark patterns.
41
+ - **`Telemetry` on a scenario (optional).** The bridge the chain was missing:
42
+ BP-139, BP-140 and BP-129 all assume events exist, and nothing tied a named
43
+ event to the behavior it measures — so renaming a step silently re-pointed
44
+ a dashboard. `object_action`, snake_case, verb last.
45
+ - **`Kill criteria` on a story (optional).** `dropped` has been a valid
46
+ status since v1 with nothing defining when it applies, so it was only ever
47
+ reached by someone losing interest.
48
+ - **A verdict on audit reports — REFINE / REDESIGN / NEW.** Findings alone
49
+ read as a to-do list, and a surface that should be rebuilt gets patched
50
+ indefinitely, one true finding at a time.
51
+ - **A prototype step in `ux-flows`** for the question documents cannot
52
+ settle, plus *diverge before converging*: two genuinely different shapes
53
+ before picking one, and a line on why the loser lost.
54
+ - **`best-practices-index.md`**, generated by
55
+ `plugins/super-ux/scripts/bp_index.py` — 274 lines of tag → ids over a
56
+ catalog that is now 1400+. The validator fails when it drifts.
57
+
58
+ ### Changed
59
+ - Taxonomy gains `i18n`; source keys gain `[EmilK]` and `[WIG]`.
60
+ - `PRN-01..16` becomes `PRN-01..21` everywhere it is referenced.
61
+
62
+ The contract stays **v4**. All three new fields are optional and additive, on
63
+ the same precedent as 0.26.1 — no existing `docs/ux` file changes shape and
64
+ there is nothing to migrate.
65
+
66
+ ## 0.27.1 — 2026-08-05
67
+
68
+ Re-cut of 0.27.0 on the correct base. The 0.27.0 tag was pushed from a tree
69
+ that predated 0.26.2–0.26.5, so the GitHub release it produced was missing
70
+ the MIT declarations, the `/ux-audit` front-matter fix, `displayName`, and
71
+ the npm-publish workflow. Nothing was published to npm from it. The content
72
+ of 0.27.0 is unchanged and listed below it; this release only puts it on top
73
+ of the history it belongs to.
74
+
75
+ ## 0.27.0 — 2026-08-04
76
+
77
+ An audit of 51 external UX, product and growth skills, kept only where they
78
+ found something this catalog did not already say better. Most of the overlap
79
+ went the other way — on monetization, forms and activation the catalog was
80
+ the stronger of the two, and with sources where the others had none. Four
81
+ gaps survived that test.
82
+
83
+ ### Added
84
+ - **Growth loops and referral — BP-147..151.** BP-067 has been telling
85
+ readers since 0.19 that freemium only works when free users feed a growth
86
+ loop, while the catalog described no loop anywhere. BP-147 names the three
87
+ kinds and the reference now resolves. The rest: virality riding the
88
+ product's own output rather than a "refer a friend" page, planning for a
89
+ viral coefficient around 0.2 with the loop's cycle time treated as the
90
+ other multiplier, rewards paid in the product's own unit on the invitee's
91
+ milestone, and abuse designed against before launch.
92
+ - **Empty states — BP-152.** Three layers after NN/g: what happened, what
93
+ this place is for, and a way in — including inspecting the feature on demo
94
+ data. A blank panel is a defect, not a neutral state.
95
+ - **Authentication and form recovery — BP-153..156.** The word "password"
96
+ appeared zero times across 146 practices. NIST SP 800-63B rev 4 (August
97
+ 2025) made paste normative and composition rules prohibited; the field must
98
+ not fight the password manager; a passwordless door where the account
99
+ allows one; and a rejected form keeps the work instead of clearing it
100
+ (WCAG 2.2 redundant entry).
101
+ - **Audit reports: a required "Scope and limits" section**
102
+ (`scenario-format.md`, `templates/audit-report.md`, `ux-audit`). A batched
103
+ audit reads a slice of the code, so silence about the rest was being read
104
+ as coverage. Absence from a report never means PASS.
105
+ - **`validate_catalog()` in `test/validate.py`.** The catalog's shape — five
106
+ fields per entry, unbroken ids, tags from the taxonomy, and every practice
107
+ reachable from `practice-selection.md` — was an invariant held by hand
108
+ since the first entry. A practice no skill routes to is a practice that
109
+ does not exist; nothing checked for that until now.
110
+
111
+ ### Changed
112
+ - Tag taxonomy gains `virality`, `referral` (mechanism) and `auth` (domain);
113
+ source keys gain `[NIST]` and `[Viral26]`.
114
+
115
+ Two figures from the source material were dropped rather than repeated — a
116
+ 15–30% referral conversion norm and a 60% fraud threshold, neither of which
117
+ survived a check. A third was corrected in the opposite direction: a viral
118
+ coefficient of 0.3–0.7 is a strong result, not the practical target the
119
+ source called it.
120
+
121
+ The contract stays **v4**: the report section is additive and no existing
122
+ `docs/ux` file changes shape.
123
+
3
124
  ## 0.26.5 — 2026-07-30
4
125
 
5
126
  ### Added
package/README.md CHANGED
@@ -185,8 +185,9 @@ The contracts every skill reads:
185
185
  |---|---|
186
186
  | [scenario-format.md](plugins/super-ux/skills/references/scenario-format.md) | **The contract (ux-contract v4).** File layout, every field name, stable IDs (`P` `JTBD` `JRN` `ST` `FLW` `SCR` `SCN`), completeness checklists, the `draft → validated → implemented` lifecycle, audit verdicts and severities, the UX-plan format |
187
187
  | [system-map.md](plugins/super-ux/skills/references/system-map.md) | The whole system on one page — pipeline, files, skills, companions, and the four sync rules; every skill points here |
188
- | [ux-design-principles.md](plugins/super-ux/skills/references/ux-design-principles.md) | How the agent thinks: the design pipeline (forward and backwards), task analysis, flow rules, heuristics PRN-01..16, the improvement procedure, anti-patterns |
189
- | [best-practices.md](plugins/super-ux/skills/references/best-practices.md) | Living, tag-indexed catalog of 146 proven practices — subscription-app laws, mobile/web/voice guidance (Apple HIG 2025, M3 Expressive, NN/g, Baymard, WCAG 2.2), monetization economics (RevenueCat/PLG 2025 benchmarks, ASO, freemium boundaries), web funnels end to end (landing, pricing, checkout, dunning, cancel) and web2app (paid handoff, deferred deep links, storefront rules), motion and page weight (HTTP Archive field data, W3C sustainability), accessibility as it actually fails (WebAIM Million, EAA/ADA exposure), frustration telemetry, gamification and trend governance, visual craft, Figma structure |
188
+ | [best-practices-index.md](plugins/super-ux/skills/references/best-practices-index.md) | Generated tag index over the catalog tag ids, id title. Read it to decide which entries to open; regenerated by `plugins/super-ux/scripts/bp_index.py` and checked for drift by the validator |
189
+ | [ux-design-principles.md](plugins/super-ux/skills/references/ux-design-principles.md) | How the agent thinks: the design pipeline (forward and backwards), task analysis, flow rules, heuristics PRN-01..21, the improvement procedure, anti-patterns |
190
+ | [best-practices.md](plugins/super-ux/skills/references/best-practices.md) | Living, tag-indexed catalog of 179 proven practices — subscription-app laws, mobile/web/voice guidance (Apple HIG 2025, M3 Expressive, NN/g, Baymard, WCAG 2.2), monetization economics (RevenueCat/PLG 2025 benchmarks, ASO, freemium boundaries), web funnels end to end (landing, pricing, checkout, dunning, cancel) and web2app (paid handoff, deferred deep links, storefront rules), motion and page weight (HTTP Archive field data, W3C sustainability), accessibility as it actually fails (WebAIM Million, EAA/ADA exposure), frustration telemetry, gamification and trend governance, growth loops and referral mechanics, empty states, authentication (NIST SP 800-63B rev 4) and form recovery, motion craft and perceived quality, the defaults that make an interface read as generated, interface state, locale and platform surfaces (Web Interface Guidelines), visual craft, Figma structure |
190
191
  | [practice-selection.md](plugins/super-ux/skills/references/practice-selection.md) | The deterministic bridge: product profile → mandatory consideration sets → per-artifact checklists → a compliance table where every pulled practice gets a verdict. No silent skips, no cargo cult |
191
192
  | [component-guidelines.md](plugins/super-ux/skills/references/component-guidelines.md) | Which control for which job (radios/select/switch, sheet/alert, modal/disclosure, combobox, nav bar/rail, FAB, dates, toasts) and the platform rules — Apple HIG, Material 3, W3C ARIA APG, GOV.UK |
192
193
  | [visual-identity.md](plugins/super-ux/skills/references/visual-identity.md) | The visual layer and its owner: one style pack for the whole product, where it's recorded, how it meets Figma and code, and the division of labor with the craft floors |
@@ -228,7 +229,7 @@ edits to `plugins/super-ux/skills/references/` need
228
229
 
229
230
  Built by ssheleg — [sshlg.me](https://sshlg.me)
230
231
 
231
- - X / Twitter — [@fuck_this_year](https://x.com/fuck_this_year)
232
+ - X / Twitter — [@sshlg93](https://x.com/sshlg93)
232
233
  - Telegram — [@sshlg](https://t.me/sshlg)
233
234
 
234
235
  Part of the [ssheleg skill family](https://github.com/ssheleg/sshlg-skills):
@@ -13,6 +13,16 @@ rule) — there is nothing to audit against.
13
13
  **Evidence discipline:** every verdict cites `file:line`. Cannot verify →
14
14
  verdict BLOCKED with the exact reason. Never guess, never a courtesy PASS.
15
15
 
16
+ **Scope and limits (required section):** the report ends with what was
17
+ covered, what was left out and why, what could not be verified, and what the
18
+ code cannot answer. An audit reads a slice; absence from the report never
19
+ means PASS.
20
+
21
+ **Verdict (required):** REFINE — fix the findings; REDESIGN — they cluster on
22
+ a structure patching will not converge on, name it; NEW — the chain does not
23
+ describe what was built, start upstream. Findings without a verdict read as a
24
+ to-do list, and the surface that needs rebuilding gets patched forever.
25
+
16
26
  ## Loop
17
27
 
18
28
  1. Read the base (and foundation/flows/screens when they exist); scope =
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "super-ux",
3
- "version": "0.26.5",
3
+ "version": "0.28.0",
4
4
  "description": "Scenario-driven UI development for AI agents (Claude Code, Cursor, 70+ agents): a versioned design chain in docs/ux/, a scenario-first hard rule, a deterministic drift linter, and evidence-backed UX audits. This package is the installer CLI.",
5
5
  "bin": {
6
6
  "super-ux": "bin/super-ux.js"
@@ -20,7 +20,10 @@
20
20
  "url": "https://github.com/ssheleg/super-ux/issues"
21
21
  },
22
22
  "license": "MIT",
23
- "author": "ssheleg",
23
+ "author": {
24
+ "name": "ssheleg",
25
+ "url": "https://x.com/sshlg93"
26
+ },
24
27
  "engines": {
25
28
  "node": ">=16"
26
29
  },
@@ -29,6 +29,20 @@ Heuristic findings (deep): [PRN-NN] (severity) node — issue -> fix
29
29
  | # | Scenario | Severity | Finding | Suggested fix |
30
30
  |---|----------|----------|---------|---------------|
31
31
 
32
+ ## Scope and limits
33
+
34
+ <!-- Required. An audit reads a finite slice of the code; absence from this
35
+ report never means PASS. -->
36
+
37
+ - **Covered:**
38
+ - **Not covered:**
39
+ - **Could not verify:**
40
+ - **Open questions:**
41
+
42
+ ## Verdict
43
+
44
+ <REFINE | REDESIGN | NEW> — <one line of reasoning, and the scope it covers>
45
+
32
46
  ## Practice compliance (deep audits)
33
47
 
34
48
  | Practice | Verdict | How / why not |
@@ -65,5 +65,6 @@ this section just records the on/off choice and the file location.
65
65
  - **Acceptance criteria:**
66
66
  - Given <precondition>, when <action>, then <observable result>.
67
67
  - **Priority:** must | should | could
68
+ - **Kill criteria:** <metric below threshold by date -> drop | iterate, or omit>
68
69
  - **Status:** proposed
69
70
  -->
@@ -32,6 +32,7 @@ action per step paired with the observable system response:
32
32
  - **UI elements:** <every button, field, link, dialog, toast involved>
33
33
  - **States covered:** <loading | empty | error | success>
34
34
  - **Errors & recovery:** <each failure: what the user sees, how they recover>
35
+ - **Telemetry:** <`object_action` event + params, or omit if none>
35
36
  - **Status:** draft
36
37
  - **Coverage:** none yet
37
38
  -->