Skip to content

feat(frontend): static social preview cards from the platform default design - #171

Merged
hanaCasey merged 4 commits into
developfrom
feat/static-social-cards
Aug 14, 2026
Merged

feat(frontend): static social preview cards from the platform default design#171
hanaCasey merged 4 commits into
developfrom
feat/static-social-cards

Conversation

@hanaCasey

Copy link
Copy Markdown
Contributor

Summary

  • Replaces static/og-default.jpg (was a stock photo) with the branded typographic card from Social Previews.dc.html section A — dark canvas, grid, lime accent, real SDSC wordmark, theme mono type. This is the image every page falls back to for link previews via Seo.svelte.
  • Adds static/social/{square,story,banner}.png at the mocks other three sizes (1080x1080, 1080x1920, 1500x500) for manual social posting — not wired to any code path, per the design docs own export notes.
  • URL/domain line omitted from all four cards, per instruction.
  • Rendered once with satori + resvg-js in a throwaway script (not a project dependency) — these are static assets, not generated per-request.

Test plan

  • Verified visually: fetched each generated image and confirmed it matches the mock (colors independently verified via oklch->sRGB conversion)
  • Confirmed og-default.jpg still serves at /og-default.jpg and is picked up by Seo.sveltes default image prop
  • Reviewer: eyeball the four images in the diff

… design

og-default.jpg was a stock photo, not the branded card Seo.svelte's og:image
comment implies — replaced with the typographic design from Social
Previews.dc.html section A: dark canvas, grid, lime accent, real SDSC
wordmark, theme's mono type.

square.png / story.png / banner.png are the same design at the mock's other
three sizes, for manual posting (Instagram feed/story, profile banner) — not
referenced by any code path, same as the mock's own export notes describe.

URL line omitted from all four, same call as the per-event cards. Rendered
once with satori + resvg-js in a throwaway script, not a project dependency —
these are static assets, not generated at request time.
Every PR into develop fails at the `format` stage before it reaches build or
test, and the cause is not in any PR's diff: develop has never had a green CI
run. The workflow only fires on pull_request and on pushes to main, so drift
that lands on develop is not seen until someone opens a PR from it — at which
point every branch cut from develop reports the same failure.

Three things were wrong, and they are separable:

1. treefmt reformats `.claude/**`, 103 files of self-contained agent tooling
   that carries its own conventions (2-space shell, hand-wrapped markdown, a
   pnpm-owned lockfile). Excluded here for the same reason the codegen dirs and
   components/frontend/pnpm-lock.yaml already are: a vendored tree belongs to
   its own generator, and formatting it only makes the two styles fight. This
   also removes all 19 shellcheck findings, every one of which was in there.

2. shellcheck runs with no severity floor (the repo passes only `-e SC1091`),
   so it fails the whole run on an *info*-level finding. The one left outside
   .claude is a false positive: backticks quoting a config key inside a
   deliberately single-quoted string. Suppressed at the line, with the reason.

3. The remaining 44 files are genuine drift — buf's canonical import/option
   order, golines wrapping, and prettier at 80 columns — and are simply the
   formatter's own output, applied with no hand edits.

`treefmt --ci` now exits 0 on this tree.

Claude-Session: https://claude.ai/code/session_01RLLSy37SvMnHE5MUcNy6G5
@hanaCasey
hanaCasey merged commit 21a6f29 into develop Aug 14, 2026
1 check passed
@hanaCasey
hanaCasey deleted the feat/static-social-cards branch August 14, 2026 10:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant