Move 6 new YouTube channels from overflow rows (343/344/346 had 13 items)
to a new dedicated tail row at the end of the mosaic. All existing rows
restored to exactly 11 icons; new channels added as rows 355-356 (6 each).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add the @Firebase and @supabase YouTube channels to the homepage
channel mosaic under the Observability, Databases & Cloud Storage
category, with icon logos and regenerated V1/V2 index mosaics.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The CRITICAL/HIGH impact badge (and optional NEW pill) was absolutely
positioned top-right, so a long celeste category/title could slide
underneath it and become unreadable. Make the badge an in-flow,
right-aligned fit-content pill on its own line, with the NEW pill as a
flex sibling — impact, title and NEW can no longer overlap at any width.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds a MkDocs on_config hook (scripts/mkdocs_hooks.py) that appends the
release version as the ?v= cache-buster on v2_elite.css and v2_filter.js,
resolved from $SITE_VERSION or the latest git tag. Removes the hand-
maintained query strings from v2-mkdocs.yml.
This prevents the class of bug fixed in v2.9.46: a CSS/JS change going
invisible to returning visitors because ?v= was never bumped (it had
drifted to 2.9.42 for the CSS and 2.9.19 for the JS). Now every release
stamps a fresh URL automatically.
Falls back to leaving URLs untouched when no version is resolvable (e.g.
local mkdocs serve in a shallow checkout), so the build never fails.
Verified: build from git tag -> ?v=2.9.46; SITE_VERSION=9.9.9 -> ?v=9.9.9.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The "Show more / Show less" disclosure on the Trending lanes did nothing on
the live site: the extra_css reference was pinned to ?v=2.9.42 and never
bumped, so returning visitors kept the cached pre-disclosure CSS (no
.trending-card--extra / .trending-showmore / :checked rules). Both the
"Show N more" and "Show less" labels showed at once and clicking was inert.
Bumping the query string forces browsers/CDN to re-fetch the current file.
Verified the disclosure works in a freshly built site via Playwright
(9 -> 16 cards on click, label toggles correctly).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The Trending section felt sparse (6 + 4 cards). Make it much denser while
keeping the page manageable:
- Lane 1 "Trending Now": select up to 16 category-diverse fresh items.
- Lane 2 "Rising this Quarter": select up to 12 sustained-momentum items.
- Each lane shows the first N cards (9 / 6) and tucks the rest behind a
pure-CSS, no-JS "Show N more" / "Show less" disclosure (checkbox-hack +
general-sibling combinator), scoped per lane via a .trending-lane wrapper.
- New .trending-card--extra (hidden by default, fade-in on reveal) and
.trending-showmore pill styles, with slate-theme variants.
The two lanes remain de-duplicated by URL (verified: 16 + 12 cards, zero
overlap) and lane 2 keeps its sustained signal (bpftrace, OpenTelemetry,
Gateway API, Vault, Argo CD, Ray, ...). Verified the toggle in a real
browser via Playwright: 9->16 cards on click, label flips correctly.
Generator + CSS change; the docs/ CSS edit auto-triggers the 04.1 publisher
to regenerate v2-docs on develop.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The second Trending lane previously reused lane 1's scoring formula (just a
softer half-life over a wider window), so it surfaced the same fresh/high-impact
items as lane 1 — effectively lane 1's leftovers under a "Sustained Momentum"
label. Verified: both lanes showed items aged 2-6 days.
Changes:
- _select_lane now takes a score_fn so each lane drives off a different signal.
- _fresh_score (lane 1): unchanged 21d-half-life freshness bias.
- _sustained_score (lane 2): rewards proven staying power (presence in the
12-month digest window) and de-prioritises <7d items (lane 1's job). Lane 2
now surfaces matured pillars — Prometheus, Flux, bpftrace, Backstage — with
zero overlap with lane 1.
- Suppress the 🆕 NEW pill in lane 2 (a "sustained" card flagged NEW is
contradictory; freshness is lane 1's signal).
- Anchor "now" to digest _meta.last_updated instead of wall-clock, so identical
digest input renders identical cards (no age/ordering churn on re-renders).
- Harden _select_lane against None/non-dict window entries (latent crash).
Generator-only change; CI publisher (04.1) regenerates v2-docs.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>