From 842d617f7b136ee9816181134a7ec3ff5b82e080 Mon Sep 17 00:00:00 2001 From: Daniele Martinoli Date: Tue, 30 Jun 2026 09:11:16 +0200 Subject: [PATCH] docs: add legacy catalog deprecation banner to GitHub Pages site Add a sticky, high-visibility banner on the catalog index and generated collection pages pointing users to agentic-collections-skills and agentic-collections-catalog now that this repository is archived. Co-authored-by: Cursor --- .../legacy-catalog-banner-screenshot.png | Bin 0 -> 44853 bytes docs/index.html | 20 +++- docs/styles.css | 88 ++++++++++++++++++ scripts/build_website.py | 14 ++- scripts/catalog_legacy_banner.py | 68 ++++++++++++++ scripts/generate_collection_pages.py | 10 +- 6 files changed, 192 insertions(+), 8 deletions(-) create mode 100644 docs/assets/legacy-catalog-banner-screenshot.png create mode 100644 scripts/catalog_legacy_banner.py diff --git a/docs/assets/legacy-catalog-banner-screenshot.png b/docs/assets/legacy-catalog-banner-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..804c923811988a06e8835cde3349c78060fee199 GIT binary patch literal 44853 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 Uy~2=q7Pv|_a`imaP5#dPFVk1^JOBUy literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index 7ebec992..8987682e 100644 --- a/docs/index.html +++ b/docs/index.html @@ -7,9 +7,23 @@ - + + + +
@@ -112,7 +126,7 @@

@@ -125,6 +139,6 @@

- + diff --git a/docs/styles.css b/docs/styles.css index ed7be592..75c14e0e 100644 --- a/docs/styles.css +++ b/docs/styles.css @@ -61,6 +61,94 @@ body { flex-direction: column; } +/* Deprecated legacy catalog banner (archived agentic-collections Pages site) */ +.legacy-catalog-banner { + position: sticky; + top: 0; + z-index: 2000; + background: linear-gradient(90deg, #3d0000 0%, #c9190b 45%, #a30000 100%); + color: #fff; + border-bottom: 4px solid #ffcc00; + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.28); +} + +.legacy-catalog-banner-inner { + max-width: 72rem; + margin: 0 auto; + padding: 1.25rem 1.5rem; + text-align: center; +} + +.legacy-catalog-banner-kicker { + font-size: 0.8rem; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: #ffeb99; + margin-bottom: 0.4rem; +} + +.legacy-catalog-banner-title { + font-family: var(--font-heading); + font-size: clamp(1.15rem, 2.8vw, 1.65rem); + font-weight: 700; + line-height: 1.35; + margin-bottom: 0.5rem; +} + +.legacy-catalog-banner-title a { + color: #fff; + text-decoration: underline; + text-underline-offset: 0.15em; +} + +.legacy-catalog-banner-body { + font-size: 1rem; + margin-bottom: 0.85rem; + color: rgba(255, 255, 255, 0.95); +} + +.legacy-catalog-banner-links { + list-style: none; + margin: 0 0 1rem; + padding: 0; + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 0.75rem 1.25rem; +} + +.legacy-catalog-banner-links a { + color: #fff; + text-decoration: underline; + text-underline-offset: 0.15em; +} + +.legacy-catalog-banner-links a:hover { + color: #ffeb99; +} + +.legacy-catalog-banner-cta { + margin: 0; +} + +.legacy-catalog-banner-cta a { + display: inline-block; + background: #fff; + color: #a30000; + font-weight: 700; + padding: 0.65rem 1.35rem; + border-radius: var(--radius); + text-decoration: none; + font-size: 1.05rem; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); +} + +.legacy-catalog-banner-cta a:hover { + background: #ffeb99; + color: #3d0000; +} + /* Standalone collection pages (no catalog header): Red Hat top bar */ .site-brand-accent { height: 3px; diff --git a/scripts/build_website.py b/scripts/build_website.py index b8c8e955..bc5d1a6d 100644 --- a/scripts/build_website.py +++ b/scripts/build_website.py @@ -12,6 +12,7 @@ # Import our data generators from catalog_site_bundle import bundle_catalog_for_site from eval_site_enrichment import apply_eval_enrichment +from catalog_legacy_banner import sync_index_banner from generate_collection_pages import generate_collection_pages from generate_pack_data import generate_pack_data from generate_mcp_data import generate_mcp_data @@ -55,6 +56,8 @@ def build_website(): pack_data = generate_pack_data() root = Path(__file__).resolve().parent.parent + docs_dir = Path('docs') + docs_dir.mkdir(exist_ok=True) # Merge pack icons and optional resolved collection catalog (for Pages UI) for pack in pack_data: @@ -91,6 +94,13 @@ def build_website(): print(f"✅ Generated {page_count} pages in docs/collections/") print() + print("⚠️ Syncing legacy catalog deprecation banner...") + if sync_index_banner(docs_dir / "index.html"): + print("✅ Updated docs/index.html with legacy catalog banner") + else: + print("ℹ️ docs/index.html banner already current or marker missing") + print() + # Combine into final output output = { 'repository': { @@ -104,9 +114,7 @@ def build_website(): 'generated_at': datetime.now(timezone.utc).isoformat() } - # Ensure docs directory exists - docs_dir = Path('docs') - docs_dir.mkdir(exist_ok=True) + # Ensure docs directory exists (mkdir at start of build_website) # Write data.json output_file = docs_dir / 'data.json' diff --git a/scripts/catalog_legacy_banner.py b/scripts/catalog_legacy_banner.py new file mode 100644 index 00000000..138f21a3 --- /dev/null +++ b/scripts/catalog_legacy_banner.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +"""Shared HTML for the deprecated legacy catalog site banner.""" + +from __future__ import annotations + +import html +import re +from pathlib import Path + +ARCHIVED_REPO_URL = "https://github.com/RHEcosystemAppEng/agentic-collections" +CURRENT_CATALOG_SITE_URL = "https://rhecosystemappeng.github.io/agentic-collections-catalog/" +CURRENT_CATALOG_REPO_URL = "https://github.com/RHEcosystemAppEng/agentic-collections-catalog" +CURRENT_SKILLS_REPO_URL = "https://github.com/RHEcosystemAppEng/agentic-collections-skills" + +BANNER_MARKER_START = "" +BANNER_MARKER_END = "" + + +def render_legacy_catalog_banner() -> str: + """Return a prominent deprecation banner for archived catalog Pages.""" + archived = html.escape(ARCHIVED_REPO_URL, quote=True) + catalog_site = html.escape(CURRENT_CATALOG_SITE_URL, quote=True) + catalog_repo = html.escape(CURRENT_CATALOG_REPO_URL, quote=True) + skills = html.escape(CURRENT_SKILLS_REPO_URL, quote=True) + + return f"""""" + + +def wrap_banner_markers(fragment: str) -> str: + return f"{BANNER_MARKER_START}\n{fragment}\n{BANNER_MARKER_END}" + + +def sync_index_banner(index_path: Path) -> bool: + """Insert or refresh the legacy banner block in docs/index.html.""" + if not index_path.is_file(): + return False + + content = index_path.read_text(encoding="utf-8") + wrapped = wrap_banner_markers(render_legacy_catalog_banner()) + pattern = re.compile( + re.escape(BANNER_MARKER_START) + r".*?" + re.escape(BANNER_MARKER_END), + re.DOTALL, + ) + + if pattern.search(content): + updated = pattern.sub(wrapped, content, count=1) + elif "legacy-catalog-banner" in content: + return False + elif "" in content: + updated = content.replace("", f"\n {wrapped}", 1) + else: + return False + + if updated != content: + index_path.write_text(updated, encoding="utf-8") + return True + return False diff --git a/scripts/generate_collection_pages.py b/scripts/generate_collection_pages.py index 10cf0a01..053ce6a8 100644 --- a/scripts/generate_collection_pages.py +++ b/scripts/generate_collection_pages.py @@ -16,7 +16,10 @@ import markdown +from catalog_legacy_banner import render_legacy_catalog_banner + REPO_ROOT = Path(__file__).resolve().parent.parent +STYLES_VERSION = "74" def md_to_html(text: Any) -> str: @@ -638,6 +641,8 @@ def render_collection_page(pack: Dict[str, Any], mcp_data: List[Dict[str, Any]]) license_nav_href = "https://github.com/RHEcosystemAppEng/agentic-collections/blob/main/LICENSE" license_nav_href_esc = html.escape(license_nav_href, quote=True) + legacy_banner = render_legacy_catalog_banner() + return f""" @@ -647,9 +652,10 @@ def render_collection_page(pack: Dict[str, Any], mcp_data: List[Dict[str, Any]]) - + + {legacy_banner}
@@ -694,7 +700,7 @@ def render_collection_page(pack: Dict[str, Any], mcp_data: List[Dict[str, Any]])
- + """