Commit Graph

6280 Commits

Author SHA1 Message Date
Nubenetes Bot
bfdec79f41 feat(v2/seo): per-page CollectionPage JSON-LD with datePublished/dateModified
Adds a second JSON-LD block per page (a schema.org CollectionPage tied to the
existing WebSite/Organization @graph) carrying the page name, description, URL,
and datePublished / dateModified fed by the git-revision-date plugin's raw ISO
dates. Enables richer search results (article/collection rich snippets) with
real freshness dates. Template-only change (docs/overrides/main.html), applied
at build time; the homepage is skipped (it is already the WebSite entity).

Verified: every content page emits a valid CollectionPage with both dates
(e.g. Kubernetes datePublished=2026-05-18 dateModified=2026-06-20); the home
carries only the WebSite+Organization graph.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:51:37 +02:00
Nubenetes Bot
1e6c7bbd9a docs: automated README metric synchronization [skip ci] 2026-06-20 11:45:45 +00:00
Nubenetes Bot
06f93282e2 merge: back-merge v2.9.23 into develop 2026-06-20 13:45:22 +02:00
Nubenetes Bot
8ee10a16ea Merge release/v2.9.23 into master v2.9.23 2026-06-20 13:45:15 +02:00
Nubenetes Bot
0b3fe9c9c6 release: v2.9.23 — richer per-page SEO descriptions + creation dates
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:45:13 +02:00
Nubenetes Bot
9971945e9f feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 11:44:11 +00:00
Nubenetes Bot
f721c5714b docs: automated README metric synchronization [skip ci] 2026-06-20 11:40:54 +00:00
Inaki
4e9d839f2e Merge pull request from nubenetes/feat/v2-seo-rich-desc-dates
feat(v2/seo): richer per-page descriptions + creation dates
2026-06-20 13:40:32 +02:00
Nubenetes Bot
c377b4e4d9 feat(v2/seo): richer per-page descriptions from top resources + creation dates
- Enrich each page's meta description with its top-ranked resource names
  (long-tail keywords) instead of a pure template — e.g. 'Top Kubernetes
  resources for 2026, AI-ranked: Helm, kube-prometheus and more — curated Cloud
  Native tools, guides and references.' URL/path-like and emoji-laden titles are
  filtered out; pages whose top links are all URL-like fall back to the clean
  template. Capped at ~160 chars on a word boundary.
- Enable git-revision creation dates (enable_creation_date: true) so every page
  footer shows both 'Created' and 'Last update' — an age/freshness signal.

Verified locally: descriptions are clean, tool-named, 126-151 chars; the footer
renders both dates. Pages pick up the new front-matter on the next Publisher run.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:39:44 +02:00
Nubenetes Bot
bcbb3a2466 docs: automated README metric synchronization [skip ci] 2026-06-20 11:29:04 +00:00
Nubenetes Bot
21a63a1992 merge: back-merge v2.9.22 into develop 2026-06-20 13:28:36 +02:00
Nubenetes Bot
6ef1580b43 Merge release/v2.9.22 into master v2.9.22 2026-06-20 13:28:29 +02:00
Nubenetes Bot
1711eb594e release: v2.9.22 — unique per-page SEO meta descriptions + robots.txt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:28:27 +02:00
Nubenetes Bot
680d5f83f5 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 11:27:10 +00:00
Nubenetes Bot
b5f1a3d4a4 docs: automated README metric synchronization [skip ci] 2026-06-20 11:22:36 +00:00
Inaki
cedd14e128 Merge pull request from nubenetes/feat/v2-seo-meta-robots
feat(v2/seo): unique per-page meta descriptions + robots.txt
2026-06-20 13:22:15 +02:00
Nubenetes Bot
6fb3808850 feat(v2/seo): unique per-page meta descriptions + robots.txt
Every V2 page previously fell back to the identical global site_description
(duplicate meta descriptions = SEO penalty across ~140 pages). The generator now
emits a unique description: front-matter per page — derived from the page title
and its strategic dimension — which Material renders as <meta name=description>
and og:description. Topic Map and Methodology get tailored descriptions too.

Also add v2-docs/robots.txt (deployed at the site root) allowing full crawl and
referencing both the V2 (root) and V1 (/v1/) sitemaps.

Verified locally: each built page now carries a distinct meta description, and
robots.txt lands in the build output. The ~140 generated pages pick up their
front-matter on the next V2 Publisher run.

Note: the 12 redirect-stub pages (chef->ansible, react->javascript, ...) were
left as-is — they already 0s meta-refresh redirect with canonical pointing at
the target, which is better SEO than noindex (and the redirects plugin would
overwrite any front-matter anyway).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:21:57 +02:00
Nubenetes Bot
1698351fb9 docs: automated README metric synchronization [skip ci] 2026-06-20 11:07:20 +00:00
Nubenetes Bot
48b1c80a80 merge: back-merge v2.9.21 into develop 2026-06-20 13:06:58 +02:00
Nubenetes Bot
b73d8315e5 Merge release/v2.9.21 into master v2.9.21 2026-06-20 13:06:51 +02:00
Nubenetes Bot
d1e1ba5fb3 release: v2.9.21 — README DB/lifecycle diagrams & grouped Tags Index TOC
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:06:49 +02:00
Nubenetes Bot
07ac1df305 docs: automated README metric synchronization [skip ci] 2026-06-20 11:06:39 +00:00
Inaki
e01f720655 Merge pull request #407 from nubenetes/feat/readme-db-lifecycle-diagrams
docs: DB architecture + lifecycle diagrams, mermaid cutoff fixes, grouped Tags Index TOC
2026-06-20 13:06:17 +02:00
Nubenetes Bot
8e065c5406 feat(v2/tags): grouped, compact Technical Tags Index TOC + unique anchors
The Technical Tags Index TOC was a flat 80-entry numbered list that buried the
8 meaningful maturity tags under a long tail of one-resource 'X Content'
language tags, with colliding anchors (C / C# / C++ all -> #c-content) and a
'1 resources' grammar bug.

- Group the TOC: 'Maturity and Quality' as a clean numbered list; 'Technical
  Domains' and 'Language and Format' as compact, count-sorted inline pill rows.
- Precompute unique, explicit heading anchors ({#slug}) shared by the TOC and
  the section headers (c-sharp-content, c-plus-plus-content, dedup counter),
  fixing the collisions.
- Correct singular/plural ('1 resource').
- Filter non-language language values (En, Not Applicable, Multi-Language,
  Polyglot, ...) so they no longer create meaningless tag buckets.

Validated: 0 markdownlint errors on the regenerated tags.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:05:48 +02:00
Nubenetes Bot
6b311deed5 docs(readme): DB architecture + full lifecycle mermaid diagrams, fix label cutoffs, refresh V2 features
- Add a Database Architecture diagram (YAML + SQLite coexistence: inventory.sql
  source-of-truth, in-memory SQLite, inventory.yaml mirror, schema) in 6.1.3,
  inside a collapsible <details>.
- Add a full Data Lifecycle diagram (discovery -> ingestion -> maintenance/
  enrichment -> render -> deploy + GC) in 6.3, inside a collapsible <details>.
- Fix mermaid text overflow in the Division-of-Labor, Agentic Data Flow, Debate
  Protocol and Deployment Lifecycle diagrams by wrapping long node labels with
  <br/>; remove a duplicate Z-->B edge.
- Add a 'V2 Home Restructure and SEO (v2.9.16-v2.9.20)' section documenting the
  Topic Map & Methodology pages, per-page last-updated dates, JSON-LD, branded
  404, privacy-friendly embeds and deterministic generated artifacts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:05:40 +02:00
Nubenetes Bot
2a90ce60ea docs: automated README metric synchronization [skip ci] 2026-06-20 10:48:35 +00:00
Nubenetes Bot
f588a7254b merge: back-merge v2.9.20 into develop 2026-06-20 12:48:10 +02:00
Nubenetes Bot
a86f8f5c0a Merge release/v2.9.20 into master v2.9.20 2026-06-20 12:48:03 +02:00
Nubenetes Bot
15aae43489 release: v2.9.20 — fully eliminate RSS feed develop/master drift
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:48:00 +02:00
Nubenetes Bot
123d53848c docs: automated README metric synchronization [skip ci] 2026-06-20 10:47:45 +00:00
Inaki
7bf22fbe43 Merge pull request from nubenetes/fix/rss-builddate-from-items
fix(rss): derive feed lastBuildDate from item content dates (fully kills feed drift)
2026-06-20 12:47:19 +02:00
Nubenetes Bot
01c514b07b fix(rss): derive feed lastBuildDate from item content dates, not _meta
Follow-up to v2.9.19: deriving lastBuildDate from _meta.last_updated only moved
the drift one level — that analysis timestamp is itself bumped on every publish
even when the ranked content is unchanged, so feed.xml kept differing between
develop and master. Use the freshest item's content date instead (the items only
change when the ranking actually changes). Verified: deterministic across reruns,
and the develop and master digests both yield 2026-06-18, so feed.xml is now
byte-identical across branches — the drift is fully eliminated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:46:52 +02:00
Nubenetes Bot
4d25baee03 docs: automated README metric synchronization [skip ci] 2026-06-20 10:43:38 +00:00
Nubenetes Bot
3fa1370e30 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 10:43:13 +00:00
Nubenetes Bot
a083fb2af4 merge: back-merge v2.9.19 into develop 2026-06-20 12:40:13 +02:00
Nubenetes Bot
f16a1ae9c0 Merge release/v2.9.19 into master v2.9.19 2026-06-20 12:39:57 +02:00
Nubenetes Bot
a6e166661f release: v2.9.19 — deterministic RSS feed date & Topic Map filter skip
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:39:55 +02:00
Nubenetes Bot
f51d4094a1 docs: automated README metric synchronization [skip ci] 2026-06-20 10:39:52 +00:00
Inaki
fcdc4d0ec1 Merge pull request #405 from nubenetes/fix/topic-map-filter-skip
fix(v2): don't inject resource/tag filter on Topic Map & Methodology
2026-06-20 12:39:24 +02:00
Nubenetes Bot
fcf47473da fix(v2): don't inject the resource/tag filter on Topic Map & Methodology
The in-page filter widget (v2_filter.js) auto-injects wherever the page has
<ul><li> items. Topic Map lists category links (with counts) and Methodology
lists legend rows — neither carries .md-tag maturity tags, so the tag pills
filtered to zero and the 'X of Y resources' counter mis-counted categories as
resources. Added both pages to the widget's h1-based skip-list. Bumped
v2_filter.js?v=2.9.19.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:39:02 +02:00
Nubenetes Bot
dcc323ead3 docs: automated README metric synchronization [skip ci] 2026-06-20 10:38:56 +00:00
Inaki
16784ce925 Merge pull request #404 from nubenetes/fix/rss-deterministic-builddate
fix(rss): deterministic feed lastBuildDate (kills residual develop↔master drift)
2026-06-20 12:38:33 +02:00
Nubenetes Bot
09d7a68ef8 fix(rss): derive feed lastBuildDate from content, not wall-clock now()
rss_generator set <lastBuildDate> to datetime.utcnow(), so every republish
rewrote it even when the digest was unchanged — leaving a 1-line develop<->master
drift in v2-docs/feed.xml (the residual after the PR Guardian drift fix). Derive
it from the digest's _meta.last_updated (the actual analysis date), falling back
to the most recent item date, so the feed is a pure function of its input:
regenerating unchanged content now yields byte-identical output. Verified
deterministic across repeated runs.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:37:11 +02:00
Nubenetes Bot
a96919d3ad docs: automated README metric synchronization [skip ci] 2026-06-20 10:29:38 +00:00
Nubenetes Bot
fdb93ccc16 feat: sync V2 elite curated edition and README metrics [skip ci] 2026-06-20 10:29:10 +00:00
Nubenetes Bot
e14e78c6e9 merge: back-merge v2.9.18 into develop 2026-06-20 12:25:26 +02:00
Nubenetes Bot
a07267dd2b Merge release/v2.9.18 into master v2.9.18 2026-06-20 12:25:06 +02:00
Nubenetes Bot
58d1be6522 release: v2.9.18 — SEO (revision dates + JSON-LD) & PR Guardian drift fix
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:25:03 +02:00
Inaki
bff5d72a89 Merge pull request #402 from nubenetes/feat/v2-seo-revision-jsonld
feat(v2/seo): per-page last-updated dates + JSON-LD structured data
2026-06-20 12:24:34 +02:00
Nubenetes Bot
266499ac2f feat(v2/seo): per-page last-updated dates + JSON-LD structured data
C — git-revision-date-localized plugin: adds a 'Last update' date to every V2
page (freshness signal for SEO and reader trust). Added the dependency to
requirements.txt, enabled it in v2-mkdocs.yml (type: date,
fallback_to_build_date so the build never fails), and set fetch-depth: 0 on the
06 deploy checkout so the plugin sees full git history (otherwise every page
would show the build date).

D — JSON-LD schema.org structured data: WebSite (with a sitelinks SearchAction)
+ publishing Organization, injected via an extrahead block in docs/overrides/
main.html (shared V1/V2). Enables richer search results / knowledge-panel
eligibility. Validated: build exits 0, JSON-LD parses, 'Last update' renders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:23:49 +02:00