feat(ui): add changelog page and dedicated OG images#301
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #301 +/- ##
==========================================
- Coverage 71.53% 71.50% -0.04%
==========================================
Files 167 168 +1
Lines 3302 3323 +21
Branches 702 712 +10
==========================================
+ Hits 2362 2376 +14
- Misses 447 448 +1
- Partials 493 499 +6
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
4f1e08a to
1b06543
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4f1e08ae4b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const { data: versions } = await useFetch( | ||
| "https://ungh.cc/repos/wolfstar-project/wolfstar.rocks/releases", |
There was a problem hiding this comment.
Allow ungh.cc in the connect CSP
On client-side navigation to /changelog, this absolute useFetch runs in the browser, but the global connect-src list in nuxt.config.ts does not permit https://ungh.cc. The browser therefore blocks the release request, and the default: () => [] fallback makes the page incorrectly render “No releases have been published yet”; proxy this request through the app or add the origin to CSP.
Useful? React with 👍 / 👎.
| { | ||
| label: "Changelog", | ||
| to: "/changelog", | ||
| }, |
There was a problem hiding this comment.
Register the changelog as a marketing route
This new navigation target is absent from MARKETING_PATHS in app/utils/marketing-routes.ts. As a result, classifyNavigation() returns no route type for navigation to /changelog, so the view-transition plugin skips the configured marketing transition (unlike the adjacent /blog route); direct loads also take the eager session-fetch path intended to be deferred for public marketing pages. Add /changelog to that route registry.
Useful? React with 👍 / 👎.
Add a /changelog page that lists the project's GitHub releases (fetched from ungh.cc) using Nuxt UI's ChangelogVersions/ChangelogVersion with MDC for release notes, revalidated hourly via ISR. Header nav gains a Changelog link and the footer link now points to the internal page. Introduce dedicated Takumi OG image components for blog posts and the changelog, keeping the WolfStar house style (themed radial gradient + branding) while adding the publish date and stacked author avatars. Blog posts without a frontmatter image now use the BlogPost OG template. Both new components are exempted from the hardcoded-color guardrail, matching the existing Page OG component. Claude-Session: https://claude.ai/code/session_01LJcAGG6gk6ZQFtsYTWL17C Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…ables - Added Nuxt Studio module to nuxt.config.ts. - Updated .env.example to include GitHub OAuth credentials for Nuxt Studio. - Added nuxt-studio dependency to package.json and pnpm-lock.yaml, specifying version 1.7.0.
295aaba to
41591e0
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 41591e0aaa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| modules: [ | ||
| "@nuxt/ui", | ||
| "@nuxt/content", | ||
| "nuxt-studio", |
There was a problem hiding this comment.
Whitelist Nuxt Studio users before enabling it
When production sets the new NUXT_STUDIO_AUTH_GITHUB_CLIENT_ID/SECRET vars, this registers the self-hosted Studio app at /_studio; Nuxt Studio's auth docs say GitHub/GitLab moderator lists are optional and, if empty, all OAuth-authenticated users get Studio access (https://nuxt.studio/auth-providers#access-control-with-moderators). For this public dashboard that exposes a content editor, add/require NUXT_STUDIO_AUTH_GITHUB_MODERATORS or gate the module to trusted environments so random GitHub users can't enter the editor.
Useful? React with 👍 / 👎.
| v-for="version in versions" | ||
| :key="version.tag" | ||
| :title="version.title" | ||
| :date="formatDateByLocale('en', version.date)" |
There was a problem hiding this comment.
Normalize release dates to UTC before rendering
When a GitHub release is published near UTC midnight, this local-time formatter can render a different day on the UTC SSR host than it does during hydration in US time zones (for example 2026-07-18T00:30:00Z becomes July 18 on the server but July 17 in America/Los_Angeles). Because UChangelogVersion receives that already-localized string and formats it again, /changelog can hydrate with mismatched/wrong dates; format with a fixed timeZone: 'UTC' or provide a preformatted date slot instead.
Useful? React with 👍 / 👎.
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…ismatch Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Use the generated BlogPost OG image as og:image for every blog post, including posts that define a frontmatter image, so social shares get the branded card with title, date, and authors. The frontmatter image is still used for the blog listing thumbnails. Future posts inherit this automatically via the shared [slug] route. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LJcAGG6gk6ZQFtsYTWL17C
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Add a /changelog page that lists the project's GitHub releases (fetched
from ungh.cc) using Nuxt UI's ChangelogVersions/ChangelogVersion with MDC
for release notes, revalidated hourly via ISR. Header nav gains a
Changelog link and the footer link now points to the internal page.
Introduce dedicated Takumi OG image components for blog posts and the
changelog, keeping the WolfStar house style (themed radial gradient +
branding) while adding the publish date and stacked author avatars. Blog
posts without a frontmatter image now use the BlogPost OG template. Both
new components are exempted from the hardcoded-color guardrail, matching
the existing Page OG component.
Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01LJcAGG6gk6ZQFtsYTWL17C
Need help on this PR? Tag
/codesmithwith what you need. Autofix is enabled.Confidence Score: 5/5
This PR appears safe to merge with low risk.
The changes are mostly additive UI and content-fetching work. Existing custom blog OG images are preserved because the new blog template only runs when
post.imageis absent. The new heading-ID utility has focused unit coverage.No files require special attention.
What T-Rex did
Reviews (6): Last reviewed commit: "fix(blog): preserve custom frontmatter O..." | Re-trigger Greptile