Skip to content

web: fix mobile changelog Other Releases section layout#3974

Merged
yujonglee merged 1 commit intomainfrom
devin/1771081461-fix-mobile-changelog
Feb 14, 2026
Merged

web: fix mobile changelog Other Releases section layout#3974
yujonglee merged 1 commit intomainfrom
devin/1771081461-fix-mobile-changelog

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Feb 14, 2026

web: fix mobile changelog Other Releases section layout

Summary

The "Other Releases" grid on changelog pages used a fixed grid-cols-5 layout, which crammed 5 version items into a narrow mobile viewport with no wrapping or scrolling. This replaces it with a horizontal scroll (flex overflow-x-auto) on mobile, reverting to the 5-column grid at the sm breakpoint. shrink-0 is added to each release card so they don't compress in flex mode.

Review & Testing Checklist for Human

  • Open a changelog page (e.g. /changelog/1.0.7/) on a mobile device or narrow viewport (<640px) and confirm the "Other Releases" row scrolls horizontally without crowding
  • Verify the scrollbar appearance is acceptable on mobile (note: scrollbar-hide is not applied here, unlike the download links section above — consider whether it should be)
  • Confirm the desktop layout (≥640px) is unchanged — still a 5-column grid

Notes

  • The fix was not visually tested in a live mobile viewport; it was based on the user's screenshot showing the crowding issue. A deploy preview check is recommended.
  • Requested by @yujonglee
  • Link to Devin run

Open with Devin

Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Feb 14, 2026

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 4ec5c87
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/69908f853811f900085e7b6f
😎 Deploy Preview https://deploy-preview-3974--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Feb 14, 2026

Deploy Preview for hyprnote-storybook canceled.

Name Link
🔨 Latest commit 4ec5c87
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/69908f85128eb3000857b79a

Copy link
Contributor Author

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 3 potential issues.

Open in Devin Review

Copy link
Contributor Author

Choose a reason for hiding this comment

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

🚩 Overflow clipping risk: no negative margin trick means scrollable content may be clipped by parent padding

The parent container at apps/web/src/routes/_view/changelog/$slug.tsx:186 applies px-6 padding. For DownloadLinksHeroMobile (line 261), this is compensated with -mx-6 px-6 so the scroll area extends edge-to-edge. However, the RelatedReleases component's flex container at line 327 sits inside that same px-6 parent without any negative margin compensation. This means the horizontal scroll area is constrained within the padded area — the first and last items won't be able to scroll flush to the screen edge, and depending on the number of items, the scroll area might be unnecessarily narrow. This isn't a bug per se (the scroll still works), but it's a different UX from the download links section and may look awkward on very narrow screens.

(Refers to lines 186-191)

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

<article
className={cn([
"flex flex-col items-center gap-2 p-4 rounded-lg transition-all duration-300",
"flex flex-col items-center gap-2 p-4 rounded-lg transition-all duration-300 shrink-0",
Copy link
Contributor Author

Choose a reason for hiding this comment

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

🔴 shrink-0 applied to wrong element — flex items can still shrink on mobile

The shrink-0 class is added to the <article> element at line 349, but the direct children of the flex container (div.flex.overflow-x-auto at line 327) are the <Link> elements at line 338. In CSS flexbox, flex-shrink: 0 only prevents shrinking when applied to the direct children of the flex container. Since <Link> doesn't have shrink-0, the links will still shrink to fit the viewport on mobile, defeating the purpose of the horizontal scroll fix.

Root Cause

The flex container is:

<div class="flex overflow-x-auto gap-4 sm:grid sm:grid-cols-5 sm:overflow-visible">

Its direct children are <Link> elements:

<Link
  key={release.slug}
  className={cn(["group block", isCurrent && "pointer-events-none"])}
>

But shrink-0 is placed on the nested <article> inside the <Link>:

<article className={cn(["... shrink-0", ...])}>

Since <Link> renders as an <a> tag (a block element per the group block class), it is the flex item that will shrink. The shrink-0 on the inner <article> has no effect on the flex layout. The <Link> elements need shrink-0 to prevent compression in the mobile flex layout.

Impact: On mobile viewports, the release cards will still be compressed/crowded instead of scrolling horizontally, which is the exact issue this PR is trying to fix.

Suggested change
"flex flex-col items-center gap-2 p-4 rounded-lg transition-all duration-300 shrink-0",
"flex flex-col items-center gap-2 p-4 rounded-lg transition-all duration-300",
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

</div>

<div className="grid gap-4 grid-cols-5">
<div className="flex overflow-x-auto gap-4 sm:grid sm:grid-cols-5 sm:overflow-visible">
Copy link
Contributor Author

Choose a reason for hiding this comment

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

🚩 Inconsistency with DownloadLinksHeroMobile scroll pattern — missing scrollbar-hide

The DownloadLinksHeroMobile component at apps/web/src/routes/_view/changelog/$slug.tsx:261 uses overflow-x-auto scrollbar-hide along with negative margin trick (-mx-6 px-6) to create an edge-to-edge scrollable area with hidden scrollbars. The new RelatedReleases mobile layout at line 327 uses overflow-x-auto but does NOT use scrollbar-hide or the negative margin pattern. The PR description even notes this as an open question. This is a stylistic inconsistency — the download links section hides its scrollbar while the Other Releases section would show one. Whether this is intentional or not depends on design preference, but it's worth the reviewer confirming the desired behavior.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@yujonglee yujonglee merged commit 8f5a197 into main Feb 14, 2026
18 of 19 checks passed
@yujonglee yujonglee deleted the devin/1771081461-fix-mobile-changelog branch February 14, 2026 15:33
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