@aeptus/aexeo-emdash 0.5.0 → 0.8.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 +186 -1
- package/dist/admin/Absorbability.d.ts +3 -0
- package/dist/admin/Absorbability.d.ts.map +1 -0
- package/dist/admin/Citability.d.ts +3 -0
- package/dist/admin/Citability.d.ts.map +1 -0
- package/dist/admin/EntityLegitimacy.d.ts +3 -0
- package/dist/admin/EntityLegitimacy.d.ts.map +1 -0
- package/dist/admin/EntityPresence.d.ts +3 -0
- package/dist/admin/EntityPresence.d.ts.map +1 -0
- package/dist/admin/PillarView.d.ts +7 -0
- package/dist/admin/PillarView.d.ts.map +1 -0
- package/dist/admin/Retrievability.d.ts +3 -0
- package/dist/admin/Retrievability.d.ts.map +1 -0
- package/dist/admin.d.ts +8 -0
- package/dist/admin.d.ts.map +1 -1
- package/dist/admin.js +644 -123
- package/dist/configured.d.ts.map +1 -1
- package/dist/configured.js +423 -16
- package/dist/data-route.d.ts +8 -0
- package/dist/data-route.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/presence-check.d.ts +22 -0
- package/dist/presence-check.d.ts.map +1 -0
- package/dist/presence-route.d.ts +7 -0
- package/dist/presence-route.d.ts.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +1 -1
- package/wasm/aexeo_emdash_bridge_bg.wasm +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,188 @@ and the project follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.8.0] - 2026-05-03
|
|
10
|
+
|
|
11
|
+
Layer-4 entity-presence diagnostic. The `/entity-legitimacy`
|
|
12
|
+
admin page now queries five free public APIs against the
|
|
13
|
+
configured organization in the truth manifest and surfaces what
|
|
14
|
+
the open web actually shows.
|
|
15
|
+
|
|
16
|
+
**Compatibility:** verified against emdash `0.7.0` and `0.8.0`.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **Public web presence diagnostic** on `/entity-legitimacy`,
|
|
21
|
+
below the truth-manifest authoring section. Five sources, one
|
|
22
|
+
card each, one Refresh button:
|
|
23
|
+
- **Wikipedia** (OpenSearch)
|
|
24
|
+
- **Wikidata** (`wbsearchentities`)
|
|
25
|
+
- **GitHub** (`/users/<handle>`)
|
|
26
|
+
- **Domain registration** (RDAP via the `rdap.org` redirector)
|
|
27
|
+
- **Common Crawl** (CDX index latest available)
|
|
28
|
+
|
|
29
|
+
Each card shows one of four states: *found* (with deep-link),
|
|
30
|
+
*no record*, *couldn't reach* (network/timeout/rate-limit),
|
|
31
|
+
*skipped* (preconditions missing). No scoring — Aexeo surfaces
|
|
32
|
+
this layer, it does not grade it. The "Open ↗" link on each
|
|
33
|
+
*found* row deep-links to the source's record so editors can
|
|
34
|
+
verify directly.
|
|
35
|
+
- **`POST .../plugins/aexeo-emdash/presence`** route with `kind:
|
|
36
|
+
"data"` (cached read) and `kind: "refresh"` (re-query and
|
|
37
|
+
persist) operations. Cached for 24h in `presence:current`; the
|
|
38
|
+
cache is invalidated when the manifest's organization name
|
|
39
|
+
changes (so stale results against a different entity never show).
|
|
40
|
+
- **`TruthEntity` and `TruthManifest` type exports** — minimal
|
|
41
|
+
TS projections of the Rust truth-manifest shape, sufficient for
|
|
42
|
+
the fields the plugin reads on the TS side.
|
|
43
|
+
|
|
44
|
+
### Notes on rate limits
|
|
45
|
+
|
|
46
|
+
The five APIs are all free and unauthenticated. The 24h cache
|
|
47
|
+
is the rate-limit backstop:
|
|
48
|
+
- GitHub's 60/hr unauth cap is the binding constraint and stays
|
|
49
|
+
comfortably under the limit even with liberal manual refreshing.
|
|
50
|
+
- Wikipedia, Wikidata, and Common Crawl have no published cap;
|
|
51
|
+
the plugin sends a polite `User-Agent` identifying itself.
|
|
52
|
+
- RDAP via `rdap.org` is a community redirector with no published
|
|
53
|
+
cap.
|
|
54
|
+
|
|
55
|
+
If a fetch times out (>5s) or returns 429/5xx, the corresponding
|
|
56
|
+
source card shows "couldn't reach" with the underlying error;
|
|
57
|
+
hitting Refresh later retries.
|
|
58
|
+
|
|
59
|
+
### Notes for hosts upgrading from 0.7.x
|
|
60
|
+
|
|
61
|
+
- No code changes required. The configured factory is unchanged
|
|
62
|
+
and the new route is registered automatically.
|
|
63
|
+
- Editors who haven't authored a truth manifest yet will see the
|
|
64
|
+
"Author the truth manifest first" CTA on `/entity-legitimacy`
|
|
65
|
+
— this is the same page where they author the manifest, so the
|
|
66
|
+
CTA composes cleanly.
|
|
67
|
+
- The presence diagnostic doesn't run on its own. Editors must
|
|
68
|
+
click Refresh once after authoring (or updating) the manifest
|
|
69
|
+
to populate the cache.
|
|
70
|
+
|
|
71
|
+
## [0.7.0] - 2026-05-03
|
|
72
|
+
|
|
73
|
+
Restructures the admin sidebar around the four-layer GEO model
|
|
74
|
+
(retrievability, citability, absorbability, entity legitimacy) from
|
|
75
|
+
the May 2026 research synthesis. Each pillar is its own admin page,
|
|
76
|
+
each finding carries its rule's layer assignment, and the
|
|
77
|
+
entity-legitimacy pillar folds in the truth-manifest authoring UI.
|
|
78
|
+
|
|
79
|
+
**Compatibility:** verified against emdash `0.7.0` and `0.8.0`.
|
|
80
|
+
|
|
81
|
+
### Added
|
|
82
|
+
|
|
83
|
+
- **Four pillar admin pages**: `/retrievability`, `/citability`,
|
|
84
|
+
`/absorbability`, `/entity-legitimacy`. Each filters findings to
|
|
85
|
+
rules whose primary layer matches; cross-cutting rules surface
|
|
86
|
+
their secondary layers as chips on the row ("this rule also
|
|
87
|
+
affects citability").
|
|
88
|
+
- **`layerBreakdown` field** on the `FindingsPayload` wire shape.
|
|
89
|
+
One entry per layer with totals, errors, and warnings; primary
|
|
90
|
+
layer only, so the sum equals `totals.findings`. Powers the
|
|
91
|
+
pillar header counts and a future dashboard widget badge.
|
|
92
|
+
- **`layers` field on each `Finding`**, populated by the bridge
|
|
93
|
+
during `evaluateDocuments`. Optional in the type so legacy KV
|
|
94
|
+
entries written before the enrichment landed still parse —
|
|
95
|
+
legacy rows fall back to `citability` (the most common layer)
|
|
96
|
+
until the next refresh repopulates them.
|
|
97
|
+
- **Type exports**: `Layer`, `RuleLayers`, `LAYERS_ORDERED`,
|
|
98
|
+
`layerHumanLabel`, `layerOneLineDescription` from the package
|
|
99
|
+
root for hosts that want to reuse the framework.
|
|
100
|
+
|
|
101
|
+
### Changed
|
|
102
|
+
|
|
103
|
+
- **`/facts` is now an alias** for `/entity-legitimacy`. The
|
|
104
|
+
truth-manifest authoring UI is unchanged but it lives inside the
|
|
105
|
+
entity-legitimacy pillar page (composed alongside FACTS00x
|
|
106
|
+
findings and a placeholder for the layer-4 presence diagnostic
|
|
107
|
+
shipping in 0.8.0). Old bookmarks to `/facts` keep working.
|
|
108
|
+
- **Sidebar order changed**: pillar entries first, then `/document`
|
|
109
|
+
(cross-layer per-document panel), then `/findings` (the existing
|
|
110
|
+
cross-pillar flat-view, kept for "show me everything" triage).
|
|
111
|
+
Editors who had the old "SEO findings / Document SEO / Truth
|
|
112
|
+
manifest" layout in muscle memory will need to re-orient.
|
|
113
|
+
- **WASM bridge enriches each finding** with its layer assignment
|
|
114
|
+
before returning JSON. The Rust engine is the canonical layer
|
|
115
|
+
authority; the plugin doesn't maintain a parallel mapping.
|
|
116
|
+
|
|
117
|
+
### Notes for hosts upgrading from 0.6.x
|
|
118
|
+
|
|
119
|
+
- No code changes required for hosts using only `aexeoPlugin({ ... })`.
|
|
120
|
+
The configured factory is unchanged.
|
|
121
|
+
- The four pillar pages each carry their own URL path — links to
|
|
122
|
+
`/admin/plugins/aexeo-emdash/retrievability` etc. work
|
|
123
|
+
immediately after upgrade.
|
|
124
|
+
- Editors will see four new sidebar entries and one renamed entry
|
|
125
|
+
(`Truth manifest` is gone from the sidebar; its content lives at
|
|
126
|
+
`Entity legitimacy`). Worth a brief internal note to the
|
|
127
|
+
editorial team before deploying the bump.
|
|
128
|
+
|
|
129
|
+
## [0.6.0] - 2026-05-03
|
|
130
|
+
|
|
131
|
+
**Breaking change**: the `seogeo` → `aexeo` rename across the
|
|
132
|
+
codebase reaches the published API. Hosts on 0.5.x using the
|
|
133
|
+
sandboxed factory or the env-var fallback need to update their
|
|
134
|
+
imports and config. The configured factory was already named
|
|
135
|
+
`aexeoPlugin` in 0.5.x, so consumers using only that path are
|
|
136
|
+
unaffected.
|
|
137
|
+
|
|
138
|
+
**Compatibility:** verified against emdash `0.7.0` and `0.8.0`.
|
|
139
|
+
|
|
140
|
+
### Changed (breaking)
|
|
141
|
+
|
|
142
|
+
- **Sandboxed factory rename:** `seogeoPluginSandboxed(...)` is now
|
|
143
|
+
`aexeoPluginSandboxed(...)`. Update your import:
|
|
144
|
+
|
|
145
|
+
```ts
|
|
146
|
+
// before (0.5.x)
|
|
147
|
+
import { seogeoPluginSandboxed } from "@aeptus/aexeo-emdash";
|
|
148
|
+
// after (0.6.0)
|
|
149
|
+
import { aexeoPluginSandboxed } from "@aeptus/aexeo-emdash";
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
- **Sandboxed options type rename:** `SeogeoSandboxedOptions` →
|
|
153
|
+
`AexeoSandboxedOptions`. Same migration as above for any host
|
|
154
|
+
that referenced the type name explicitly.
|
|
155
|
+
|
|
156
|
+
- **Env var rename:** `SEOGEO_EVALUATOR_HOST` →
|
|
157
|
+
`AEXEO_EVALUATOR_HOST`. Update any CI / Cloudflare Pages build
|
|
158
|
+
config that sets the old name. The fallback chain is unchanged
|
|
159
|
+
otherwise (factory option > env var > none).
|
|
160
|
+
|
|
161
|
+
- **Plugin id rename:** the plugin's emdash id is now `aexeo-emdash`
|
|
162
|
+
(was `aexeo-seogeo`). This affects:
|
|
163
|
+
- admin URL paths: `/admin/plugins/aexeo-emdash/...` (was
|
|
164
|
+
`/admin/plugins/aexeo-seogeo/...`)
|
|
165
|
+
- any host code that referenced the plugin id explicitly (e.g.
|
|
166
|
+
in `usePluginPage(pluginId, ...)` or in plugin-bridge URLs)
|
|
167
|
+
- the React `adminEntry` URL convention is unchanged at the
|
|
168
|
+
HTTP route level (the React pages still mount under the new
|
|
169
|
+
plugin id automatically)
|
|
170
|
+
|
|
171
|
+
- **Widget id rename:** `seogeo-score` → `aexeo-score`. Hosts that
|
|
172
|
+
declared this widget id explicitly in their dashboard config need
|
|
173
|
+
to update.
|
|
174
|
+
|
|
175
|
+
### Notes for hosts upgrading from 0.5.x
|
|
176
|
+
|
|
177
|
+
The configured factory has been `aexeoPlugin` since 0.5.0 — sites
|
|
178
|
+
using only `aexeoPlugin({ ... })` need no code changes for this
|
|
179
|
+
release. The breaking changes above only affect:
|
|
180
|
+
|
|
181
|
+
1. Hosts using the sandboxed factory.
|
|
182
|
+
2. Hosts deploying with the `SEOGEO_EVALUATOR_HOST` env var.
|
|
183
|
+
3. Host-side code or workflows that hardcode the plugin id
|
|
184
|
+
(`aexeo-seogeo`) or widget id (`seogeo-score`).
|
|
185
|
+
|
|
186
|
+
Migration is a sed-and-rebuild for most hosts. The rename was the
|
|
187
|
+
last user-facing trace of the original `seogeo` codebase name —
|
|
188
|
+
0.6.0 closes the renaming pass that started across the workspace
|
|
189
|
+
in late April.
|
|
190
|
+
|
|
9
191
|
## [0.5.0] - 2026-05-01
|
|
10
192
|
|
|
11
193
|
Three follow-ups from real-world adoption feedback after 0.4.0:
|
|
@@ -317,7 +499,10 @@ First public release.
|
|
|
317
499
|
`astro.config.mjs` for the WASM import to resolve to a
|
|
318
500
|
precompiled `WebAssembly.Module`. Not optional.
|
|
319
501
|
|
|
320
|
-
[Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.
|
|
502
|
+
[Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.0...HEAD
|
|
503
|
+
[0.8.0]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.7.0...aexeo-emdash-v0.8.0
|
|
504
|
+
[0.7.0]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.6.0...aexeo-emdash-v0.7.0
|
|
505
|
+
[0.6.0]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.5.0...aexeo-emdash-v0.6.0
|
|
321
506
|
[0.5.0]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.4.0...aexeo-emdash-v0.5.0
|
|
322
507
|
[0.4.0]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.3.0...aexeo-emdash-v0.4.0
|
|
323
508
|
[0.3.0]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.2.0...aexeo-emdash-v0.3.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Absorbability.d.ts","sourceRoot":"","sources":["../../src/admin/Absorbability.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,wBAAgB,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAEjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Citability.d.ts","sourceRoot":"","sources":["../../src/admin/Citability.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,wBAAgB,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAE9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityLegitimacy.d.ts","sourceRoot":"","sources":["../../src/admin/EntityLegitimacy.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,wBAAgB,gBAAgB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CA0BpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityPresence.d.ts","sourceRoot":"","sources":["../../src/admin/EntityPresence.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiD/B,wBAAgB,cAAc,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAqHlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PillarView.d.ts","sourceRoot":"","sources":["../../src/admin/PillarView.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAGL,KAAK,KAAK,EACX,MAAM,aAAa,CAAC;AAWrB,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,GACV,EAAE;IACD,KAAK,EAAE,KAAK,CAAC;IAGb,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6MpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Retrievability.d.ts","sourceRoot":"","sources":["../../src/admin/Retrievability.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,wBAAgB,cAAc,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAElD"}
|
package/dist/admin.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { Absorbability } from "./admin/Absorbability.js";
|
|
2
|
+
import { Citability } from "./admin/Citability.js";
|
|
3
|
+
import { EntityLegitimacy } from "./admin/EntityLegitimacy.js";
|
|
1
4
|
import { Facts } from "./admin/Facts.js";
|
|
2
5
|
import { Findings } from "./admin/Findings.js";
|
|
6
|
+
import { Retrievability } from "./admin/Retrievability.js";
|
|
3
7
|
export declare const pages: {
|
|
8
|
+
"/retrievability": typeof Retrievability;
|
|
9
|
+
"/citability": typeof Citability;
|
|
10
|
+
"/absorbability": typeof Absorbability;
|
|
11
|
+
"/entity-legitimacy": typeof EntityLegitimacy;
|
|
4
12
|
"/findings": typeof Findings;
|
|
5
13
|
"/facts": typeof Facts;
|
|
6
14
|
};
|
package/dist/admin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../src/admin.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,eAAO,MAAM,KAAK;;;;;;;CAajB,CAAC"}
|