From 900486e027dec13006df61a5fa3958515b4a7c11 Mon Sep 17 00:00:00 2001 From: Xianpeng Shen Date: Sun, 18 Oct 2026 21:48:33 +0300 Subject: [PATCH 1/2] feat: tag maintainer visits, track code copies and add social cards - ?internal=1 stores a flag in localStorage and every Google Analytics event then carries traffic_type=internal, so the Internal Traffic data filter can drop maintainer visits. ?internal=0 removes it. The project docs on the same origin read the same flag. - Copying a code block sends a copy_code event with the section it is in (snippet) and the file name above it (code_title). - Open Graph and Twitter tags on every page, with a 1200x630 card. - The 404 page is titled "Page not found" instead of "cpp-linter". - robots.txt lists the sitemaps of this site and the project docs. - Redirect pages for old URLs that Google Analytics recorded as 404s. - The home page title names what the site is: a C/C++ linter with clang-format and clang-tidy. --- docs/index.md | 2 +- docs/overrides/404.html | 15 +++++++ docs/overrides/main.html | 94 +++++++++++++++++++++++++++++++++++++++ docs/robots.txt | 10 +++++ docs/static/og-image.png | Bin 0 -> 64525 bytes hooks/redirects.py | 61 +++++++++++++++++++++++++ mkdocs.yml | 3 ++ 7 files changed, 184 insertions(+), 1 deletion(-) create mode 100644 docs/overrides/404.html create mode 100644 docs/robots.txt create mode 100644 docs/static/og-image.png create mode 100644 hooks/redirects.py diff --git a/docs/index.md b/docs/index.md index a090386..6aafda1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,7 +4,7 @@ hide: - toc - feedback template: home.html -title: C/C++ Linting +title: C/C++ Linter with clang-format and clang-tidy description: clang-format and clang-tidy for C and C++ pull requests, pre-commit hooks and CI, with the LLVM version you pin. --- diff --git a/docs/overrides/404.html b/docs/overrides/404.html new file mode 100644 index 0000000..72a880c --- /dev/null +++ b/docs/overrides/404.html @@ -0,0 +1,15 @@ +{% extends "main.html" %} + +{#- + Gives the 404 page a title of its own. With Material's default it was titled + "cpp-linter" like a real page, so missing pages were hard to tell apart in + Google Analytics. +-#} + +{% block htmltitle %} + Page not found - {{ config.site_name }} +{% endblock %} + +{% block content %} +

404 - Not found

+{% endblock %} diff --git a/docs/overrides/main.html b/docs/overrides/main.html index 8701052..d36b11e 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -1,5 +1,32 @@ {% extends "base.html" %} +{#- + Visits from the maintainers are tagged so that the Internal Traffic data + filter in Google Analytics can drop them. Opening any page with ?internal=1 + stores a flag in localStorage, ?internal=0 removes it, and while the flag is + there every event carries traffic_type=internal. The docs under + /cpp-linter-action/, /clang-tools-pip/, /cpp-linter-rs/ and /cpp-linter/ are + on the same origin and read the same flag. It runs before Material's own + snippet, so the setting is queued ahead of the first page_view. +-#} + +{% block analytics %} + {% if config.extra.analytics %} + + {% endif %} + {{ super() }} +{% endblock %} + {#- The site's fonts are self-hosted in docs/fonts and declared in shared.css: Instrument Sans for text, JetBrains Mono for code and Bricolage Grotesque for @@ -7,10 +34,77 @@ Preloading the latin files for text and headings lets the browser fetch them while it is still reading the stylesheets. The URLs must match the ones in shared.css, and crossorigin is required for fonts even on the same origin. + + The Open Graph and Twitter tags give links shared in chats and on social + sites a title, a description and the card in static/og-image.png. Pages with + no URL of their own, like the 404 page, leave og:url out. -#} {% block extrahead %} {{ super() }} + {%- if page and page.meta and page.meta.title %} + {%- set og_title = page.meta.title %} + {%- elif page and page.title and not page.is_homepage %} + {%- set og_title = page.title | striptags %} + {%- else %} + {%- set og_title = config.site_name %} + {%- endif %} + {%- set og_description = (page.meta.description if page and page.meta and page.meta.description) or config.site_description %} + {%- set og_image = config.site_url ~ "static/og-image.png" %} + + + + + {%- if page and page.canonical_url %} + + {%- endif %} + + + + + + + + +{% endblock %} + +{#- + Copying a code block is how a reader takes cpp-linter into a project, so each + copy is sent to Google Analytics as a copy_code event. snippet names the + section the block is in (the id of the nearest heading above it, or the + block's own id on the home page), and code_title is the file name shown above + the block, when it has one. +-#} + +{% block scripts %} + {{ super() }} + {% if config.extra.analytics %} + + {% endif %} {% endblock %} diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000..873508b --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,10 @@ +# The cpp-linter docs share this host: the organization site at the root and +# each project's docs under its own path. This file covers all of them. +User-agent: * +Allow: / + +Sitemap: https://cpp-linter.github.io/sitemap.xml +Sitemap: https://cpp-linter.github.io/cpp-linter-action/sitemap.xml +Sitemap: https://cpp-linter.github.io/clang-tools-pip/sitemap.xml +Sitemap: https://cpp-linter.github.io/cpp-linter-rs/sitemap.xml +Sitemap: https://cpp-linter.github.io/cpp-linter/sitemap.xml diff --git a/docs/static/og-image.png b/docs/static/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd707f7f530301dca8fe79d54588a19485b2c7c GIT binary patch literal 64525 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 + + + +Redirecting to {url} + + + + + + +

This page has moved to {url}.

+ + +""" + + +def on_post_build(config, **kwargs) -> None: + site_dir = Path(config["site_dir"]) + site_url = config["site_url"] + for source, target in REDIRECTS.items(): + path = site_dir / source + if not source.endswith(".html"): + path = path / "index.html" + if path.exists(): + raise ValueError(f"redirect from {source} would replace a built page") + url = site_url + target + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text( + PAGE.format(url=html.escape(url), url_js=repr(url)), encoding="utf-8" + ) diff --git a/mkdocs.yml b/mkdocs.yml index 94caf03..f44e7e5 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -88,6 +88,9 @@ markdown_extensions: - toc: permalink: true +hooks: + - hooks/redirects.py + plugins: - search - tags From 2dc98cbf45014d78abe65857f9042007133f45d1 Mon Sep 17 00:00:00 2001 From: Xianpeng Shen Date: Sun, 18 Oct 2026 22:07:22 +0300 Subject: [PATCH 2/2] docs: say why the internal-traffic snippet ignores storage errors --- docs/overrides/main.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/overrides/main.html b/docs/overrides/main.html index d36b11e..7875424 100644 --- a/docs/overrides/main.html +++ b/docs/overrides/main.html @@ -21,7 +21,9 @@ window.dataLayer = window.dataLayer || []; (function () { dataLayer.push(arguments); })("set", { traffic_type: "internal" }); } - } catch (e) {} + } catch (e) { + // localStorage is unavailable when storage is blocked; the visit is then not tagged. + } {% endif %} {{ super() }}