@aeptus/aexeo-emdash 0.8.12 → 0.8.13

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,6 +6,67 @@ and the project follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.8.13] - 2026-05-06
10
+
11
+ Closes four false-positive paths Aeptus surfaced while running
12
+ the 0.8.12 plugin against their Cloudflare Pages preview
13
+ deployment. 0.8.12 was already on npm before these landed; this
14
+ release bundles the fixes into one consumer-visible bump.
15
+
16
+ ### Fixed
17
+
18
+ - **Surface discovery for facts.json / llms-full.txt /
19
+ manifest-listed mirrors.** Aeptus reported false-negative
20
+ `facts_present: false` and `llms_full_present: false` on a
21
+ live Cloudflare Pages crawl where curl returned 200 for
22
+ both URLs. Root cause: the page-crawler skips non-HTML
23
+ responses, so JSON / plain-text artifacts not reachable
24
+ via the HTML link graph were never recorded as visited
25
+ and `local_artifact_exists` returned false even though the
26
+ files existed.
27
+ Fix: a new `artifact_probe` module HEAD-probes well-known
28
+ artifact paths after the main page-crawl, manifest-first.
29
+ If `manifest.json` is reachable, every `path` it lists
30
+ under `artifacts` is added to the candidate set. Each
31
+ candidate is independently HEAD-probed with the existing
32
+ crawl auth (basic auth + custom headers, including the
33
+ `--cf-access-*` Cloudflare Access headers). 2xx paths are
34
+ recorded on `CrawlMeta.probed_artifact_paths` and folded
35
+ into `Site::indexed_paths` so surface discovery and rules
36
+ see them as present.
37
+ Probes are time-boxed (3s per request) and bounded (max 64
38
+ paths per crawl) so a manifest with thousands of entries
39
+ can't blow up the audit budget. The probed list round-trips
40
+ through the audit artifact, so `intelligence surfaces
41
+ discover --from-crawl-artifact` sees the same presence
42
+ signal a fresh live crawl would.
43
+ - **SEO009 no longer flags `<link rel="alternate"
44
+ type="text/markdown">` discovery links** as "hreflang
45
+ alternates pointing to missing internal paths." The rule
46
+ now consults the `type` attribute on the alternate and
47
+ skips the missing-target check for non-HTML media types
48
+ (text/markdown, text/plain, application/json,
49
+ application/ld+json, atom/rss/feed+json). Genuine hreflang
50
+ alternates that happen to declare `type="text/html"` still
51
+ fire SEO009.
52
+ - **SRF030 now recognizes the `.md.txt` mirror discovery
53
+ pattern.** When the homepage advertises one or more
54
+ `<link rel="alternate" type="text/markdown">` discovery
55
+ links (the per-route mirror pattern Aeptus and similar
56
+ sites use), the probe stays silent. This is a valid
57
+ Markdown-for-Agents alternative to HTTP content
58
+ negotiation; the rule's role is to flag *absence* of any
59
+ markdown discovery contract, not the choice of which one.
60
+ - **ROB008 skips deliberate sitewide-noindex deployments.**
61
+ Cloudflare Pages preview sets `X-Robots-Tag: noindex`
62
+ sitewide while the build still emits sitemap.xml for
63
+ parity with production; the prior rule fired on every
64
+ sitemap-listed route. The rule now detects when every
65
+ crawled page carries `X-Robots-Tag: noindex` and skips —
66
+ the inconsistency narrative no longer applies. A single
67
+ page lacking the header breaks uniformity (it would
68
+ actually be indexed), and ROB008 fires normally.
69
+
9
70
  ## [0.8.12] - 2026-05-06
10
71
 
11
72
  Adds **Accessibility (A11Y)** as a fifth audit pillar alongside
@@ -1215,7 +1215,7 @@ function globToMatcher(pattern) {
1215
1215
  }
1216
1216
 
1217
1217
  // src/version.ts
1218
- var PACKAGE_VERSION = "0.8.12";
1218
+ var PACKAGE_VERSION = "0.8.13";
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.12";
26
+ var PACKAGE_VERSION = "0.8.13";
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.12";
1
+ export declare const PACKAGE_VERSION = "0.8.13";
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.12",
3
+ "version": "0.8.13",
4
4
  "description": "Aexeo SEO/GEO content evaluator as an emdash plugin",
5
5
  "license": "MIT",
6
6
  "author": "Aeptus",
Binary file