@aeptus/aexeo-emdash 0.8.10 → 0.8.11

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
@@ -6,11 +6,12 @@ and the project follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [0.8.10] - 2026-05-04
9
+ ## [0.8.11] - 2026-05-05
10
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.
11
+ Picks up the post-0.8.10 product additions and the FACTS003
12
+ quality fixes Aeptus reported after running 0.8.10 in
13
+ preview. 0.8.10 was already on npm before these landed; this
14
+ release bundles them into one consumer-visible bump.
14
15
 
15
16
  ### Added (engine via bridge)
16
17
 
@@ -41,6 +42,68 @@ roadmap discussion.
41
42
 
42
43
  ### Fixed
43
44
 
45
+ - **FACTS003 schema half no longer fires on no-schema input.**
46
+ Configured-mode CMS document sets don't carry rendered JSON-LD,
47
+ so `pages_with_schema = 0`. The previous logic emitted
48
+ `organization_schema.name` (Error) and `organization_schema.url`
49
+ (Warning) with empty `observed` — `iter().any()` is trivially
50
+ false on an empty set, so the negation always fired. Aeptus
51
+ reported this as the first half of FACTS003 noise after
52
+ installing 0.8.10. Schema block is now gated on
53
+ `pages_with_schema > 0`; the `structured_truth_source` enum
54
+ (`Manifest` vs `SchemaAndManifest`) still records whether
55
+ schema participated, so downstream consumers can tell the
56
+ difference between "schema agreed" and "schema wasn't part
57
+ of the assessment".
58
+ - **FACTS003 title check no longer fires on legal/utility
59
+ pages or on pages whose JSON-LD declares the brand.** Aeptus
60
+ reported title warnings on `/privacy`, `/terms`, `/principles`,
61
+ `/references`, `/signup` simply because their titles weren't
62
+ "Aeptus". The check now (a) skips pages classified as
63
+ `PageKind::{Search, Admin, Feed, Utility, NotFound, Legal}`,
64
+ and (b) treats per-page identity-bearing schema with a name
65
+ matching the brand as another `identity_present_elsewhere`
66
+ signal. Content pages that genuinely never mention the brand
67
+ in any identity-bearing surface still fire — the user can
68
+ silence those via the `[route_kinds]` block from this same
69
+ release.
70
+
71
+ ### Notes for hosts upgrading from 0.8.10
72
+
73
+ - No code changes required.
74
+ - After bumping, the admin's findings page will show:
75
+ - **New** SOC006 findings on every document missing og:image.
76
+ - **New** SOC009 nudges on documents declaring
77
+ `twitter:card = summary`.
78
+ - **New** CNT006 nudges on documents whose visible text has
79
+ generic-beneficiary copy without concrete anchors.
80
+ - **Fewer** FACTS003 findings: schema-half mismatches gone
81
+ when the CMS doc set lacks JSON-LD; title warnings gone
82
+ on legal/utility pages.
83
+ - If the new SOC/CNT findings are too noisy on a specific
84
+ route family, declare a `[route_kinds.X]` block in
85
+ `aexeo.toml` with `match` patterns and a `skip_rules` list.
86
+ - For the infrastructure-level audit (robots/sitemap/llms/
87
+ well-known/etc.), run `aexeo-cli check` against your static
88
+ dist; that's where those rules belong.
89
+
90
+ ### CLI side (aexeo-cli v0.0.16, same release window)
91
+
92
+ - **`aexeo-cli crawl --cf-access-id … --cf-access-secret …`**
93
+ injects Cloudflare Access service-token headers
94
+ (`CF-Access-Client-Id` + `CF-Access-Client-Secret`) on every
95
+ fetch. Falls back to env vars `CF_ACCESS_CLIENT_ID` /
96
+ `CF_ACCESS_CLIENT_SECRET` when flags are absent. Closes the
97
+ loop for hosts whose preview deploys are behind Cloudflare
98
+ Access (Aeptus's CI was blocked on this).
99
+
100
+ ## [0.8.10] - 2026-05-04
101
+
102
+ Two follow-up quality fixes from Aeptus's 0.8.9 retest. The
103
+ local refresh path is now end-to-end correct.
104
+
105
+ ### Fixed
106
+
44
107
  - **Findings now attribute to document routes, not synthesized
45
108
  HTML filenames.** v0.8.9's bridge set `page.path` to
46
109
  `emdash/<route>.html`, which the plugin's
@@ -79,39 +142,14 @@ roadmap discussion.
79
142
 
80
143
  ### Notes for hosts upgrading from 0.8.9
81
144
 
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
- ```
145
+ - No code changes required.
146
+ - After bumping, the admin's findings page will show fewer
147
+ findings (infrastructure noise gone) and every finding
148
+ correctly attributed to its document route.
101
149
  - For the infrastructure-level audit (robots/sitemap/llms/
102
150
  well-known/etc.), run `aexeo-cli check` against your static
103
151
  dist; that's where those rules belong.
104
152
 
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
-
115
153
  ## [0.8.9] - 2026-05-04
116
154
 
117
155
  ### Fixed
@@ -1014,7 +1052,8 @@ First public release.
1014
1052
  `astro.config.mjs` for the WASM import to resolve to a
1015
1053
  precompiled `WebAssembly.Module`. Not optional.
1016
1054
 
1017
- [Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.10...HEAD
1055
+ [Unreleased]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.11...HEAD
1056
+ [0.8.11]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.10...aexeo-emdash-v0.8.11
1018
1057
  [0.8.10]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.9...aexeo-emdash-v0.8.10
1019
1058
  [0.8.9]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.8...aexeo-emdash-v0.8.9
1020
1059
  [0.8.8]: https://github.com/schiste/Aexeo/compare/aexeo-emdash-v0.8.7...aexeo-emdash-v0.8.8
@@ -1215,7 +1215,7 @@ function globToMatcher(pattern) {
1215
1215
  }
1216
1216
 
1217
1217
  // src/version.ts
1218
- var PACKAGE_VERSION = "0.8.10";
1218
+ var PACKAGE_VERSION = "0.8.11";
1219
1219
 
1220
1220
  // src/configured.ts
1221
1221
  import { definePlugin } from "emdash";
package/dist/index.js CHANGED
@@ -23,7 +23,7 @@ function buildAllowedHosts(evaluatorHost) {
23
23
  }
24
24
 
25
25
  // src/version.ts
26
- var PACKAGE_VERSION = "0.8.10";
26
+ var PACKAGE_VERSION = "0.8.11";
27
27
 
28
28
  // src/sandbox.ts
29
29
  function aexeoPluginSandboxed(options = {}) {
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "0.8.10";
1
+ export declare const PACKAGE_VERSION = "0.8.11";
2
2
  //# sourceMappingURL=version.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aeptus/aexeo-emdash",
3
- "version": "0.8.10",
3
+ "version": "0.8.11",
4
4
  "description": "Aexeo SEO/GEO content evaluator as an emdash plugin",
5
5
  "license": "MIT",
6
6
  "author": "Aeptus",
Binary file