@aeptus/aexeo-emdash 0.8.9 → 0.8.10
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 +108 -1
- package/dist/configured.d.ts.map +1 -1
- package/dist/configured.js +21 -2
- package/dist/index.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/wasm/aexeo_emdash_bridge_bg.wasm +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,112 @@ and the project follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.8.10] - 2026-05-04
|
|
10
|
+
|
|
11
|
+
Two follow-up quality fixes from Aeptus's 0.8.9 retest, plus
|
|
12
|
+
four new product-level capabilities from the post-retest
|
|
13
|
+
roadmap discussion.
|
|
14
|
+
|
|
15
|
+
### Added (engine via bridge)
|
|
16
|
+
|
|
17
|
+
- **`SOC006` enabled by default.** Missing `og:image` now
|
|
18
|
+
surfaces on every audit. The rule existed but was gated
|
|
19
|
+
behind `require_social_images = false`; flipped to true.
|
|
20
|
+
- **`SOC009` (heuristic).** Recommends `summary_large_image`
|
|
21
|
+
when `twitter:card` is plain `summary`. Editors can keep
|
|
22
|
+
`summary` if they want; this is a nudge, not a blocker.
|
|
23
|
+
- **`CNT006` (heuristic, low-confidence).** Generic-beneficiary
|
|
24
|
+
detector — flags abstract audience-needs copy
|
|
25
|
+
("Needs speed and clarity to make decisions") that has no
|
|
26
|
+
concrete anchoring (numbers, named tools, quotes). Skips
|
|
27
|
+
when concrete-anchor tokens (`study`, `research`, etc.)
|
|
28
|
+
appear nearby. Editors can suppress via the new
|
|
29
|
+
`[route_kinds]` config block.
|
|
30
|
+
- **`[route_kinds]` config block.** Named per-pattern rule
|
|
31
|
+
masking that compiles to virtual suppressions:
|
|
32
|
+
```toml
|
|
33
|
+
[route_kinds.manifesto]
|
|
34
|
+
match = ["/foundations/"]
|
|
35
|
+
skip_rules = ["GEO007", "GEO008", "GEO010"]
|
|
36
|
+
noindex = false
|
|
37
|
+
```
|
|
38
|
+
Bundles a path-pattern set with a stance (which rules
|
|
39
|
+
to skip, whether routes are intentionally noindex). Lighter
|
|
40
|
+
than scattering one suppression per rule × pattern.
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
- **Findings now attribute to document routes, not synthesized
|
|
45
|
+
HTML filenames.** v0.8.9's bridge set `page.path` to
|
|
46
|
+
`emdash/<route>.html`, which the plugin's
|
|
47
|
+
`evaluateAndPersistAll` then used as the bucket key when
|
|
48
|
+
distributing findings to document routes. The synthesized
|
|
49
|
+
filename never matched the documentRoutes set, so every
|
|
50
|
+
finding landed in a shadow bucket keyed by the filename and
|
|
51
|
+
the document's row in the admin showed zero findings. Bridge
|
|
52
|
+
now sets `page.path` to the document route directly
|
|
53
|
+
(`/about` rather than `emdash/about.html`); `Finding.path`
|
|
54
|
+
matches the bucket the plugin pre-populates.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **CMS evaluation suppresses site-wide infrastructure rule
|
|
59
|
+
groups.** The plugin's configured-mode evaluator now passes
|
|
60
|
+
a Config to `evaluateDocuments` that disables `robots`,
|
|
61
|
+
`sitemap`, `llm`, `surfaces`, `well_known`, `headers`, and
|
|
62
|
+
`deployment` rule groups. The CMS document set has no
|
|
63
|
+
robots.txt or sitemap.xml or llms.txt — those are the
|
|
64
|
+
host's deployed-site artifacts, audited by the CLI's
|
|
65
|
+
static-site mode against a real filesystem. Running them
|
|
66
|
+
against the bridge's synthetic CMS site produced
|
|
67
|
+
`missing robots.txt` / `missing sitemap.xml` / `missing
|
|
68
|
+
llms.txt` / `missing markdown mirrors` noise on every
|
|
69
|
+
refresh, none of which the editor could act on from inside
|
|
70
|
+
the CMS.
|
|
71
|
+
|
|
72
|
+
Per-page rule groups stay on: `html`, `social`, `schema`,
|
|
73
|
+
`content`, `structure`, `links`. Those audit per-document
|
|
74
|
+
content editors can actually fix.
|
|
75
|
+
|
|
76
|
+
CLI static-site audits are unaffected — they use
|
|
77
|
+
`Config::default()` with all groups on, against a
|
|
78
|
+
filesystem-rooted Site.
|
|
79
|
+
|
|
80
|
+
### Notes for hosts upgrading from 0.8.9
|
|
81
|
+
|
|
82
|
+
- No code changes required for any of the fixes or additions.
|
|
83
|
+
- After bumping, the admin's findings page will show:
|
|
84
|
+
- Fewer findings overall (infrastructure noise is gone) and
|
|
85
|
+
every finding correctly attributed to its document route.
|
|
86
|
+
- **New** SOC006 findings on every document missing og:image.
|
|
87
|
+
- **New** SOC009 nudges on documents declaring
|
|
88
|
+
`twitter:card = summary`.
|
|
89
|
+
- **New** CNT006 nudges on documents whose visible text has
|
|
90
|
+
generic-beneficiary copy without concrete anchors.
|
|
91
|
+
- If the new SOC/CNT findings are too noisy on a specific
|
|
92
|
+
route family, declare a `[route_kinds.X]` block in
|
|
93
|
+
`aexeo.toml` with `match` patterns and a `skip_rules` list.
|
|
94
|
+
Example:
|
|
95
|
+
```toml
|
|
96
|
+
[route_kinds.manifesto]
|
|
97
|
+
match = ["/foundations/"]
|
|
98
|
+
skip_rules = ["CNT006", "GEO007"]
|
|
99
|
+
noindex = false
|
|
100
|
+
```
|
|
101
|
+
- For the infrastructure-level audit (robots/sitemap/llms/
|
|
102
|
+
well-known/etc.), run `aexeo-cli check` against your static
|
|
103
|
+
dist; that's where those rules belong.
|
|
104
|
+
|
|
105
|
+
### CLI side (aexeo-cli, same release)
|
|
106
|
+
|
|
107
|
+
- **`aexeo-cli crawl --cf-access-id … --cf-access-secret …`**
|
|
108
|
+
injects Cloudflare Access service-token headers
|
|
109
|
+
(`CF-Access-Client-Id` + `CF-Access-Client-Secret`) on every
|
|
110
|
+
fetch. Falls back to env vars `CF_ACCESS_CLIENT_ID` /
|
|
111
|
+
`CF_ACCESS_CLIENT_SECRET` when flags are absent. Closes the
|
|
112
|
+
loop for hosts whose preview deploys are behind Cloudflare
|
|
113
|
+
Access (Aeptus's CI was blocked on this).
|
|
114
|
+
|
|
9
115
|
## [0.8.9] - 2026-05-04
|
|
10
116
|
|
|
11
117
|
### Fixed
|
|
@@ -908,7 +1014,8 @@ First public release.
|
|
|
908
1014
|
`astro.config.mjs` for the WASM import to resolve to a
|
|
909
1015
|
precompiled `WebAssembly.Module`. Not optional.
|
|
910
1016
|
|
|
911
|
-
[Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.
|
|
1017
|
+
[Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.10...HEAD
|
|
1018
|
+
[0.8.10]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.9...aexeo-emdash-v0.8.10
|
|
912
1019
|
[0.8.9]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.8...aexeo-emdash-v0.8.9
|
|
913
1020
|
[0.8.8]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.7...aexeo-emdash-v0.8.8
|
|
914
1021
|
[0.8.7]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.6...aexeo-emdash-v0.8.7
|
package/dist/configured.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configured.d.ts","sourceRoot":"","sources":["../src/configured.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"configured.d.ts","sourceRoot":"","sources":["../src/configured.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA0HrD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,uBAA4B,GAAG,OAAO,CA2H3E;AAID,eAAe,YAAY,CAAC"}
|
package/dist/configured.js
CHANGED
|
@@ -1215,7 +1215,7 @@ function globToMatcher(pattern) {
|
|
|
1215
1215
|
}
|
|
1216
1216
|
|
|
1217
1217
|
// src/version.ts
|
|
1218
|
-
var PACKAGE_VERSION = "0.8.
|
|
1218
|
+
var PACKAGE_VERSION = "0.8.10";
|
|
1219
1219
|
|
|
1220
1220
|
// src/configured.ts
|
|
1221
1221
|
import { definePlugin } from "emdash";
|
|
@@ -1238,9 +1238,28 @@ function resolveCollections(explicit, include, exclude) {
|
|
|
1238
1238
|
}
|
|
1239
1239
|
return result;
|
|
1240
1240
|
}
|
|
1241
|
+
var CMS_DISABLED_GROUPS = [
|
|
1242
|
+
"robots",
|
|
1243
|
+
"sitemap",
|
|
1244
|
+
"llm",
|
|
1245
|
+
"surfaces",
|
|
1246
|
+
"well_known",
|
|
1247
|
+
"headers",
|
|
1248
|
+
"deployment"
|
|
1249
|
+
];
|
|
1250
|
+
function buildCmsContextConfig() {
|
|
1251
|
+
const checks = {};
|
|
1252
|
+
for (const group of CMS_DISABLED_GROUPS) {
|
|
1253
|
+
checks[group] = false;
|
|
1254
|
+
}
|
|
1255
|
+
return JSON.stringify({ checks });
|
|
1256
|
+
}
|
|
1241
1257
|
var inProcessEvaluator = async (documents) => {
|
|
1242
1258
|
try {
|
|
1243
|
-
const raw = await evaluateDocuments2(
|
|
1259
|
+
const raw = await evaluateDocuments2(
|
|
1260
|
+
JSON.stringify(documents),
|
|
1261
|
+
buildCmsContextConfig()
|
|
1262
|
+
);
|
|
1244
1263
|
const findings = JSON.parse(raw);
|
|
1245
1264
|
if (!Array.isArray(findings)) {
|
|
1246
1265
|
return {
|
package/dist/index.js
CHANGED
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "0.8.
|
|
1
|
+
export declare const PACKAGE_VERSION = "0.8.10";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,WAAW,CAAC"}
|
package/package.json
CHANGED
|
Binary file
|