@certrev/cert-block 1.0.2 → 1.0.3
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 +29 -0
- package/README.md +1 -1
- package/dist/builder/cert-review-card.d.ts +6 -2
- package/dist/builder/cert-review-card.d.ts.map +1 -1
- package/dist/builder/cert-review-card.js +22 -6
- package/dist/builder/cert-review-card.js.map +1 -1
- package/dist/builder/index.js +1 -1
- package/dist/builder/index.js.map +1 -1
- package/package.json +1 -1
- package/src/builder/cert-review-card.tsx +28 -8
- package/src/builder/index.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,35 @@ change the rendered cert output and never break a compiling integration** (regis
|
|
|
5
5
|
exports, types). Anything that would alter what a visitor sees, or require integration changes,
|
|
6
6
|
is announced loudly here first.
|
|
7
7
|
|
|
8
|
+
## 1.0.3 · 2026-08-18
|
|
9
|
+
|
|
10
|
+
Patch: restores the placement a pre-existing Builder entry renders. **If you integrated via
|
|
11
|
+
Builder before 1.0.0, upgrade to this from any 1.0.x.**
|
|
12
|
+
|
|
13
|
+
- **1.0.0 silently repainted already-exported Builder entries from banner to sidebar.** `mode` is
|
|
14
|
+
a PLACEMENT input, not one of the 19 wire keys, and the exporter emits only the wire projection,
|
|
15
|
+
so every entry exported to date carries no `mode` key. Through 0.5.5 `CertReviewCard` read
|
|
16
|
+
`props.mode ?? 'banner'` and those entries rendered the banner face. 1.0.0 removed that fallback
|
|
17
|
+
so the renderer would own a single default, which changed what those entries paint. Consumers
|
|
18
|
+
install unpinned, so it reached live pages with no entry edit and no upgrade on their side.
|
|
19
|
+
- **The fallback is restored, as a bridge and not as a reversal.** The sidebar default stands
|
|
20
|
+
everywhere it was actually the point: a direct `renderCertBlock` caller omitting `mode` still
|
|
21
|
+
gets sidebar, and `sidebar` is still the registered `defaultValue`, so every block created in
|
|
22
|
+
the editor from now on carries an explicit `mode` and never reaches the fallback. The bridge
|
|
23
|
+
covers only entries that predate the exporter emitting `mode`, and is deleted once the exporter
|
|
24
|
+
writes it and existing entries are backfilled. The registered enum, `defaultValue`, helper text
|
|
25
|
+
and `render-cert-block.ts` are untouched by this release.
|
|
26
|
+
- **A third gate, of a kind neither existing one could be.** The rendered-surface sweep checks
|
|
27
|
+
text that IS on a surface; the string-literal rule checks strings that ARE in the source. This
|
|
28
|
+
regression was the absence of a value: what an entry paints when an input is missing. That is
|
|
29
|
+
invisible to both, and it is why 1.0.0 shipped green. `builder.test.tsx` now pins the
|
|
30
|
+
exported-entry shape (no `mode`, and `mode: null`) to the banner face, pins an explicit `mode`
|
|
31
|
+
as still winning, and pins the direct renderer as still defaulting to sidebar so the bridge can
|
|
32
|
+
never quietly widen into a package-wide change. Confirmed to fail with the fallback removed.
|
|
33
|
+
- **One editor-facing em dash**, in the design-time anchor placeholder (`builder/index.tsx`), now
|
|
34
|
+
a colon. It is JSX text rather than a quoted string, so the 1.0.2 literal rule could not see it
|
|
35
|
+
either; recorded here because it is the same blind spot, not a separate lesson.
|
|
36
|
+
|
|
8
37
|
## 1.0.2 · 2026-08-18
|
|
9
38
|
|
|
10
39
|
Patch: copy only, in strings nobody renders. No API change, no type change, no behaviour change.
|
package/README.md
CHANGED
|
@@ -606,7 +606,7 @@ published at `@certrev/cert-block/fixtures`).
|
|
|
606
606
|
|
|
607
607
|
## Version
|
|
608
608
|
|
|
609
|
-
`1.0.
|
|
609
|
+
`1.0.3`: see [CHANGELOG.md](./CHANGELOG.md) for the release history and the semver contract
|
|
610
610
|
(patch/minor never change the rendered cert output or break a compiling integration). Publishes
|
|
611
611
|
**publicly** to npm as `@certrev/cert-block` (`publishConfig.access: public`) via GitHub Actions
|
|
612
612
|
trusted publishing (OIDC); the internal `@certrev` GitHub-Packages channel mirrors it.
|
|
@@ -28,8 +28,12 @@ export declare const CERT_COMPONENT_NAME = "CertREV Cert";
|
|
|
28
28
|
export interface CertReviewCardProps extends Partial<BuilderCertChromeData> {
|
|
29
29
|
/**
|
|
30
30
|
* Placement face — the ENTRY/editor chooses this, NOT the exporter (not a wire-type field).
|
|
31
|
-
*
|
|
32
|
-
*
|
|
31
|
+
*
|
|
32
|
+
* Absent ⇒ `banner`, via the compatibility bridge in the render body below. That is NOT the
|
|
33
|
+
* package default: a direct `renderCertBlock` caller omitting `mode` gets `sidebar`, and
|
|
34
|
+
* `sidebar` is the registered input's `defaultValue`, so blocks created in the editor carry
|
|
35
|
+
* an explicit `mode`. The bridge covers only entries exported before the exporter emitted
|
|
36
|
+
* `mode` at all, and is deleted once those are backfilled. See the render body for why.
|
|
33
37
|
*/
|
|
34
38
|
mode?: CertBlockMode | null;
|
|
35
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert-review-card.d.ts","sourceRoot":"","sources":["../../src/builder/cert-review-card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,oCAAoC,CAAA;AAExF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAGlE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAA;AAEjD,MAAM,WAAW,mBAAoB,SAAQ,OAAO,CAAC,qBAAqB,CAAC;IAC1E
|
|
1
|
+
{"version":3,"file":"cert-review-card.d.ts","sourceRoot":"","sources":["../../src/builder/cert-review-card.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,aAAa,EAAmB,MAAM,oCAAoC,CAAA;AAExF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAGlE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAA;AAEjD,MAAM,WAAW,mBAAoB,SAAQ,OAAO,CAAC,qBAAqB,CAAC;IAC1E;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IAC3B;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAA;CACxC;AAsCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,sCAoFxD;AAMD;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;IACtE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACpE,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAC3B;AA0CD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,SAAS,YAAY,EAO5C,CAAA;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,YAAY,EA2BnD,CAAA;AAED,gGAAgG;AAChG,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,OAAO,cAAc,CAAA;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAA;CACxC;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,4BAIlC,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,iCAAiC;IACjD,SAAS,EAAE,OAAO,cAAc,CAAA;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,YAAY,EAAE,CAAA;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,EAAE,iCAMlC,CAAA"}
|
|
@@ -81,12 +81,28 @@ export function CertReviewCard(props) {
|
|
|
81
81
|
}
|
|
82
82
|
: undefined;
|
|
83
83
|
const html = renderCertBlock({
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
//
|
|
89
|
-
|
|
84
|
+
// COMPATIBILITY BRIDGE, NOT THE DESIGN. Delete this fallback once the exporter emits an
|
|
85
|
+
// explicit `mode` and existing entries have been backfilled; until then it must stay.
|
|
86
|
+
//
|
|
87
|
+
// `renderCertBlock` owns the ONE placement default (absent or unrecognised ⇒ sidebar) and
|
|
88
|
+
// that decision STANDS: it is what a direct caller gets, and `sidebar` is the registered
|
|
89
|
+
// input's `defaultValue`, so every block created in the editor from now on carries an
|
|
90
|
+
// explicit `mode` and never reaches this line.
|
|
91
|
+
//
|
|
92
|
+
// The problem is the entries that already exist. `mode` is a PLACEMENT input, not one of
|
|
93
|
+
// the 19 wire keys (`BUILDER_CERT_CHROME_KEYS`), and the exporter emits only the wire
|
|
94
|
+
// projection (`options: { ...certData }`), so every entry exported to date has NO `mode`
|
|
95
|
+
// key at all. Through 0.5.5 this line read `?? 'banner'` and those entries rendered the
|
|
96
|
+
// banner face. Removing it in 1.0.0 did not give them the renderer's default in the
|
|
97
|
+
// abstract; it silently repainted live pages from banner to sidebar, with no entry edit
|
|
98
|
+
// and no version pin to protect them, because their install line is unpinned.
|
|
99
|
+
//
|
|
100
|
+
// So this is a bridge for pre-existing entries, NOT a reversal of the sidebar default.
|
|
101
|
+
// The three-copies-of-a-default problem that motivated removing it is still real and is
|
|
102
|
+
// still fixed: the helper text and the wire type's doc comment no longer name a default,
|
|
103
|
+
// and this line names one only for input the renderer can no longer distinguish from a
|
|
104
|
+
// deliberate choice. The exporter writing `mode` is what retires it.
|
|
105
|
+
mode: props.mode ?? 'banner',
|
|
90
106
|
theme,
|
|
91
107
|
// First-class banner memo split — renderCertBlock composes the requested
|
|
92
108
|
// part directly; no string-splitting. Ignored outside banner mode, and an unrecognised
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cert-review-card.js","sourceRoot":"","sources":["../../src/builder/cert-review-card.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAsB,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAGxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"cert-review-card.js","sourceRoot":"","sources":["../../src/builder/cert-review-card.tsx"],"names":[],"mappings":"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"}
|
package/dist/builder/index.js
CHANGED
|
@@ -67,7 +67,7 @@ export function CertRevEditorPlaceholder() {
|
|
|
67
67
|
font: '13px system-ui',
|
|
68
68
|
color: '#6b7280',
|
|
69
69
|
background: '#fff5fa',
|
|
70
|
-
}, children: ["CertREV Review
|
|
70
|
+
}, children: ["CertREV Review: ", _jsx("b", { children: "resolves at publish" }), " from issuer verification. The expert badge appears here once this page\u2019s article is certified, and only while the credential is valid."] }));
|
|
71
71
|
}
|
|
72
72
|
/**
|
|
73
73
|
* The Builder block. ZERO inputs — a layout anchor only. Renders the current page's VERIFIED
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAexD,MAAM,cAAc,GAAG,aAAa,CAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;AAE9F;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC/B,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,QAAQ,GAKR;IACA,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,YAAG,QAAQ,GAA2B,CAAA;AACpG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACvC,OAAO,CACN,kDACiC,EAAE,EAClC,KAAK,EAAE;YACN,MAAM,EAAE,oBAAoB;YAC5B,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,SAAS;SACrB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,EAAE,aAAa,EAAkB,UAAU,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAexD,MAAM,cAAc,GAAG,aAAa,CAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;AAE9F;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC/B,OAAO,EACP,SAAS,GAAG,KAAK,EACjB,QAAQ,GAKR;IACA,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,YAAG,QAAQ,GAA2B,CAAA;AACpG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACvC,OAAO,CACN,kDACiC,EAAE,EAClC,KAAK,EAAE;YACN,MAAM,EAAE,oBAAoB;YAC5B,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,SAAS;SACrB,iCAEe,8CAA0B,oJAErC,CACN,CAAA;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC5B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAA;IACzD,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,KAAC,UAAU,IAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,SAAG,CAAA;IACrF,CAAC;IACD,IAAI,SAAS;QAAE,OAAO,KAAC,wBAAwB,KAAG,CAAA;IAClD,OAAO,IAAI,CAAA;AACZ,CAAC;AAaD;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAA+B;IACjE,SAAS,EAAE,aAAa;IACxB,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,EAAE;CACV,CAAA;AAED,gFAAgF;AAChF,OAAO,EACN,wBAAwB,GAIxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACN,oBAAoB,EAEpB,mBAAmB,EAEnB,cAAc,EAGd,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,GACX,MAAM,uBAAuB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@certrev/cert-block",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Headless render edge for the CertREV CertDeliveryEnvelope: SSR-safe React cert components, a framework-agnostic <certrev-badge> Web Component, a schema.org JSON-LD projector, and a fail-closed verify layer over the shared VerdictKernel.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -33,8 +33,12 @@ export const CERT_COMPONENT_NAME = 'CertREV Cert'
|
|
|
33
33
|
export interface CertReviewCardProps extends Partial<BuilderCertChromeData> {
|
|
34
34
|
/**
|
|
35
35
|
* Placement face — the ENTRY/editor chooses this, NOT the exporter (not a wire-type field).
|
|
36
|
-
*
|
|
37
|
-
*
|
|
36
|
+
*
|
|
37
|
+
* Absent ⇒ `banner`, via the compatibility bridge in the render body below. That is NOT the
|
|
38
|
+
* package default: a direct `renderCertBlock` caller omitting `mode` gets `sidebar`, and
|
|
39
|
+
* `sidebar` is the registered input's `defaultValue`, so blocks created in the editor carry
|
|
40
|
+
* an explicit `mode`. The bridge covers only entries exported before the exporter emitted
|
|
41
|
+
* `mode` at all, and is deleted once those are backfilled. See the render body for why.
|
|
38
42
|
*/
|
|
39
43
|
mode?: CertBlockMode | null
|
|
40
44
|
/**
|
|
@@ -106,12 +110,28 @@ export function CertReviewCard(props: CertReviewCardProps) {
|
|
|
106
110
|
: undefined
|
|
107
111
|
|
|
108
112
|
const html = renderCertBlock({
|
|
109
|
-
//
|
|
110
|
-
//
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
|
|
113
|
+
// COMPATIBILITY BRIDGE, NOT THE DESIGN. Delete this fallback once the exporter emits an
|
|
114
|
+
// explicit `mode` and existing entries have been backfilled; until then it must stay.
|
|
115
|
+
//
|
|
116
|
+
// `renderCertBlock` owns the ONE placement default (absent or unrecognised ⇒ sidebar) and
|
|
117
|
+
// that decision STANDS: it is what a direct caller gets, and `sidebar` is the registered
|
|
118
|
+
// input's `defaultValue`, so every block created in the editor from now on carries an
|
|
119
|
+
// explicit `mode` and never reaches this line.
|
|
120
|
+
//
|
|
121
|
+
// The problem is the entries that already exist. `mode` is a PLACEMENT input, not one of
|
|
122
|
+
// the 19 wire keys (`BUILDER_CERT_CHROME_KEYS`), and the exporter emits only the wire
|
|
123
|
+
// projection (`options: { ...certData }`), so every entry exported to date has NO `mode`
|
|
124
|
+
// key at all. Through 0.5.5 this line read `?? 'banner'` and those entries rendered the
|
|
125
|
+
// banner face. Removing it in 1.0.0 did not give them the renderer's default in the
|
|
126
|
+
// abstract; it silently repainted live pages from banner to sidebar, with no entry edit
|
|
127
|
+
// and no version pin to protect them, because their install line is unpinned.
|
|
128
|
+
//
|
|
129
|
+
// So this is a bridge for pre-existing entries, NOT a reversal of the sidebar default.
|
|
130
|
+
// The three-copies-of-a-default problem that motivated removing it is still real and is
|
|
131
|
+
// still fixed: the helper text and the wire type's doc comment no longer name a default,
|
|
132
|
+
// and this line names one only for input the renderer can no longer distinguish from a
|
|
133
|
+
// deliberate choice. The exporter writing `mode` is what retires it.
|
|
134
|
+
mode: props.mode ?? 'banner',
|
|
115
135
|
theme,
|
|
116
136
|
// First-class banner memo split — renderCertBlock composes the requested
|
|
117
137
|
// part directly; no string-splitting. Ignored outside banner mode, and an unrecognised
|
package/src/builder/index.tsx
CHANGED
|
@@ -95,7 +95,7 @@ export function CertRevEditorPlaceholder() {
|
|
|
95
95
|
background: '#fff5fa',
|
|
96
96
|
}}
|
|
97
97
|
>
|
|
98
|
-
CertREV Review
|
|
98
|
+
CertREV Review: <b>resolves at publish</b> from issuer verification. The expert badge appears here once this
|
|
99
99
|
page’s article is certified, and only while the credential is valid.
|
|
100
100
|
</div>
|
|
101
101
|
)
|