Skip to content

feat(ui): add changelog page and dedicated OG images#301

Open
RedStar071 wants to merge 10 commits into
mainfrom
claude/changelog-og-image-it868j
Open

feat(ui): add changelog page and dedicated OG images#301
RedStar071 wants to merge 10 commits into
mainfrom
claude/changelog-og-image-it868j

Conversation

@RedStar071

@RedStar071 RedStar071 commented Jul 16, 2026

Copy link
Copy Markdown
Member

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


View with Codesmith
Need help on this PR? Tag /codesmith with 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.image is absent. The new heading-ID utility has focused unit coverage.

No files require special attention.

T-Rex T-Rex Logs

What T-Rex did

  • Prisma client generation completed successfully during the changelog UI validation.
  • The real Nuxt dev server startup path was observed and noted as the environment used for the capture.
  • A Playwright script was executed to perform the real browser capture of the changelog UI.
  • Chromium screenshots of the /changelog route were collected, including the before and after navigation states, and a short video of the session was captured.

View all artifacts

T-Rex Ran code and verified through T-Rex

Reviews (6): Last reviewed commit: "fix(blog): preserve custom frontmatter O..." | Re-trigger Greptile

@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 63.63636% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.50%. Comparing base (8babfde) to head (76a3ec0).
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
app/utils/changelog-heading-ids.ts 70.00% 0 Missing and 6 partials ⚠️
app/pages/(marketing)/blog/[slug].vue 0.00% 2 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            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     
Flag Coverage Δ
component 66.07% <0.00%> (-0.03%) ⬇️
unit 67.70% <70.00%> (+0.03%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
app/composables/useFooter.ts 100.00% <ø> (ø)
app/composables/useHeader.ts 88.88% <ø> (ø)
app/utils/format-date-by-locale.ts 100.00% <ø> (ø)
app/utils/marketing-routes.ts 50.00% <ø> (ø)
package.json 100.00% <ø> (ø)
app/pages/(marketing)/blog/[slug].vue 84.78% <0.00%> (-1.89%) ⬇️
app/utils/changelog-heading-ids.ts 70.00% <70.00%> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@RedStar071
RedStar071 force-pushed the claude/changelog-og-image-it868j branch from 4f1e08a to 1b06543 Compare July 16, 2026 21:07
@RedStar071 RedStar071 changed the title feat(changelog): add changelog page and dedicated OG images feat(ui): add changelog page and dedicated OG images Jul 16, 2026
@codspeed-hq

codspeed-hq Bot commented Jul 16, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 44 untouched benchmarks


Comparing claude/changelog-og-image-it868j (76a3ec0) with main (8babfde)

Open in CodSpeed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +63 to +64
const { data: versions } = await useFetch(
"https://ungh.cc/repos/wolfstar-project/wolfstar.rocks/releases",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +58 to +61
{
label: "Changelog",
to: "/changelog",
},

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@RedStar071 RedStar071 self-assigned this Jul 16, 2026
claude and others added 4 commits July 18, 2026 11:36
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.
@RedStar071
RedStar071 force-pushed the claude/changelog-og-image-it868j branch from 295aaba to 41591e0 Compare July 18, 2026 11:39

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread nuxt.config.ts Outdated
modules: [
"@nuxt/ui",
"@nuxt/content",
"nuxt-studio",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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)"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

RedStar071 and others added 2 commits July 18, 2026 12:00
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…ismatch

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

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>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@RedStar071 RedStar071 added this to the v3 milestone Jul 18, 2026
RedStar071 and others added 2 commits July 18, 2026 15:43
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
Comment thread app/pages/(marketing)/blog/[slug].vue Outdated
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants