CE: Add OG/Twitter meta tags + expand sitemap#307
Merged
Conversation
ericflo
pushed a commit
that referenced
this pull request
Apr 16, 2026
PR #307 added og:url and related meta tags through page_shell but hardcoded og:url to https://modelrelay.io/ (root) for every non-root page, and omitted <link rel="canonical"> entirely. That meant /login, /signup, /pricing, /setup, and /integrate all claimed root as their og:url and had no canonical link. - Thread request path through page_shell() and page_shell_custom(), render per-page og:url and canonical as https://modelrelay.io{path}. - Update every call site across modelrelay-web and modelrelay-cloud to pass the route's path. Dynamic paths (e.g. /dashboard/keys/{id}/revoke) are built via format!. - Add og:url + canonical for /pricing directly to its static template. - Update the static landing index.html to use https://modelrelay.io/ with a trailing slash so it matches the page_shell convention. - Add integration tests asserting /, /login, /signup, /pricing, and /checkout/cancel each render og:url and canonical containing their path.
ericflo
added a commit
that referenced
this pull request
Apr 16, 2026
PR #307 added og:url and related meta tags through page_shell but hardcoded og:url to https://modelrelay.io/ (root) for every non-root page, and omitted <link rel="canonical"> entirely. That meant /login, /signup, /pricing, /setup, and /integrate all claimed root as their og:url and had no canonical link. - Thread request path through page_shell() and page_shell_custom(), render per-page og:url and canonical as https://modelrelay.io{path}. - Update every call site across modelrelay-web and modelrelay-cloud to pass the route's path. Dynamic paths (e.g. /dashboard/keys/{id}/revoke) are built via format!. - Add og:url + canonical for /pricing directly to its static template. - Update the static landing index.html to use https://modelrelay.io/ with a trailing slash so it matches the page_shell convention. - Add integration tests asserting /, /login, /signup, /pricing, and /checkout/cancel each render og:url and canonical containing their path. Co-authored-by: Cloud Eric <clouderic@eflorenzano.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
page_shell_custom— fixes signup, login, setup, integrate, dashboard, and 404 sharing previews/setupand/integratetositemap.xmlWhy
Live
curlconfirmed signup/login/pricing had 0 OG tags — sharing them on Twitter/Slack/LinkedIn rendered as bare URLs. Sitemap also missed two public-friendly pages.Verification (post-deploy)
curl -s https://modelrelay.io/signup | grep -c og:should return >= 5curl -s https://modelrelay.io/sitemap.xml | grep -c '<url>'should return 6Notes
page_shell_customgets baseline social previews; per-page customization can come later if Eric wants fine-tuned og:url per route.cargo test -p modelrelay-web -p modelrelay-cloudpasses locally.