Open
musehub#129: rich OG repo preview cards
Summary
Implements dynamic Open Graph preview cards for public repo links (musehub#129).
GET /{owner}/{repo}/opengraph-image— 1200×630 PNG via Playwright HTML→PNG- Content-hash cache in BlobBackend (
objects/sha256:{hash}) - Repo pages emit
og:image/twitter:card=summary_large_imagewith?cb=cache bust base.htmlrendersog_metatags (property for OG, name for Twitter)
Test plan
- Local Docker:
http://localhost:1337/aaronrene/musehub/opengraph-image→ 200 PNG 1200×630 - Local repo page meta tags include
og:image+?cb= - OG_01–OG_06 pytest (local harness DB auth issue — app path verified manually)
- Facebook Sharing Debugger on
https://staging.musehub.ai/gabriel/museafter merge (Phase 3b acceptance)
Notes
- Dockerfile adds Chromium + libcairo (cairosvg for avatar rasterization)
- Stars omitted from card stats (no
star_counton repos yet) - Please self-assign reviewer if collaborator self-assign 403s
Closes musehub#129 (pending debugger screenshot post-deploy).
Symbol Delta
177 symbols
143 added
34 modified
docs/issues/opengraph-repo-cards-design.md
33
musehub/api/routes/musehub/__init__.py
1
musehub/api/routes/musehub/_ui_helpers.py
1
~
_og_tags
musehub/api/routes/musehub/ui_repo.py
1
musehub/config.py
1
musehub/main.py
27
~
lifespan
musehub/rate_limits.py
1
musehub/services/opengraph_cards.py
34
+
logger
musehub/templates/musehub/base.html
1
musehub/templates/musehub/opengraph/repo_card.html
1
pyproject.toml
2
requirements.txt
1
tests/test_opengraph_repo_cards.py
26
Files Changed
16 of 1,036
A
docs/issues/opengraph-repo-cards-design.md
A
musehub/api/routes/musehub/ui_opengraph.py
A
musehub/services/opengraph_cards.py
A
musehub/services/opengraph_renderer.py
A
musehub/templates/musehub/opengraph/repo_card.html
A
tests/test_opengraph_repo_cards.py
M
Dockerfile
M
musehub/api/routes/musehub/__init__.py
M
musehub/api/routes/musehub/_ui_helpers.py
M
musehub/api/routes/musehub/ui_repo.py
M
musehub/config.py
M
musehub/main.py
M
musehub/rate_limits.py
M
musehub/templates/musehub/base.html
M
pyproject.toml
M
requirements.txt
Commits
2Divergence Analysis
feat/opengraph-repo-cards → dev0% divergence
Very compatible — minimal differences
Review comments
0No review comments yet
Be the first to leave a review comment on this merge proposal.
Muse CLI
Comment
muse hub proposal comment create sha256:9c735192f00fe8ad15fe5c4fbf32b7af43966f93f8a44baea6eebfbdfa365822 --body "…"
Approve
muse hub proposal review submit sha256:9c735192f00fe8ad15fe5c4fbf32b7af43966f93f8a44baea6eebfbdfa365822 --verdict approve
Request changes
muse hub proposal review submit sha256:9c735192f00fe8ad15fe5c4fbf32b7af43966f93f8a44baea6eebfbdfa365822 --verdict request_changes --body "…"
Close
muse hub proposal close sha256:9c735192f00fe8ad15fe5c4fbf32b7af43966f93f8a44baea6eebfbdfa365822
Merge — merge engine docs ↗
Merge
muse hub proposal merge sha256:9c735192f00fe8ad15fe5c4fbf32b7af43966f93f8a44baea6eebfbdfa365822 --hub http://staging.musehub.ai