Streamline Epoch 1000 UX#1672
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Greptile SummaryThis PR streamlines the Epoch 1000 feature's UX: copy across the hero, live-status bar, wallet checker, and OG card image is tightened, and the card page is substantially upgraded to use i18n for all visible strings (with rich-text support) and a new branded layout. A
Confidence Score: 5/5Safe to merge — all changes are copy simplification and UI polish with no logic mutations to data fetching, wallet lookup, or auth. The diff is narrowly scoped to string literals, layout styling, and a new i18n layer for the card page. The new getCardMessage cache in the OG route uses a well-understood module-level promise pattern; the only edge case (caching a rejected promise) is a minor resilience concern, not a correctness bug. All translation keys introduced in common.json are consumed by the updated components, and the TierId union keeps the key-path construction type-safe. No files require special attention beyond the locale message cache in route.tsx. Important Files Changed
Sequence Diagram%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant User
participant CardPage as /epoch1000/card
participant OGRoute as /api/epoch1000/og
participant i18n as i18n messages
participant Logo as solanaLogo.png
User->>CardPage: "GET /epoch1000/card?s=500&fe=200&l=en"
CardPage->>i18n: getTranslations(locale, epoch1000.card)
i18n-->>CardPage: t()
CardPage->>CardPage: build ogQuery(sp, locale)
CardPage-->>User: HTML with img src pointing to OGRoute
User->>OGRoute: "GET /api/epoch1000/og?s=500&fe=200&l=en"
OGRoute->>i18n: loadMergedMessages (cached per locale)
i18n-->>OGRoute: MessageTree
OGRoute->>Logo: readFile solanaLogo.png (cached)
Logo-->>OGRoute: base64 data URI
OGRoute->>OGRoute: render JSX via ImageResponse
OGRoute-->>User: PNG 1200x630
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
participant User
participant CardPage as /epoch1000/card
participant OGRoute as /api/epoch1000/og
participant i18n as i18n messages
participant Logo as solanaLogo.png
User->>CardPage: "GET /epoch1000/card?s=500&fe=200&l=en"
CardPage->>i18n: getTranslations(locale, epoch1000.card)
i18n-->>CardPage: t()
CardPage->>CardPage: build ogQuery(sp, locale)
CardPage-->>User: HTML with img src pointing to OGRoute
User->>OGRoute: "GET /api/epoch1000/og?s=500&fe=200&l=en"
OGRoute->>i18n: loadMergedMessages (cached per locale)
i18n-->>OGRoute: MessageTree
OGRoute->>Logo: readFile solanaLogo.png (cached)
Logo-->>OGRoute: base64 data URI
OGRoute->>OGRoute: render JSX via ImageResponse
OGRoute-->>User: PNG 1200x630
Reviews (4): Last reviewed commit: "refactor(epoch1000): enhance metadata ge..." | Re-trigger Greptile |
Summary
Testing