Milestone branch for Feed browser: Mobile immersive feed. Later tasks of the milestone add commits here.
xrdwb17xu: Full-screen snap feed with post slide variants
At 760px and below (AppShell measures .app, same breakpoint as the container query), the feed renders MobileFeed: a reel with scroll-snap-type: y mandatory, slides with scroll-snap-stop: always, each exactly the viewport height. Side panels are hidden at that width.
Image/video slides: media edge to edge, top and bottom fades, author and three-line text in white. Text-only slides: 31px serif quote with a crimson opening mark, author at the bottom.
The slide on screen gets is-cur (content rises, media 104% to 100%). Tracked with an IntersectionObserver and exposed via FeedViewonCurrentChange for the dock task.
Last slide is a loading skeleton while another page can load (hasMore), holding the existing paging sentinel. Same posts, delete and paging as desktop; no new fetch paths.
The own-post menu and delete confirm are extracted to PostMenu and reused on slides with a frosted button.
One wheel step or swipe moves exactly one slide (Chromium sends short gestures back to the start slide otherwise).
New tokens for white and fades over media in globals.css; styles in src/styles/mobile.css.
Verified: typecheck, lint, vitest (235 tests), next build. Playwright on /dev/feed at 390x844, dark and light, with and without is_mobile/has_touch: all slide heights 844, wheel and touch steps go 0 to 1 to 2, own-post menu and confirm open, paging appends pages. 1440 and 820 still show the desktop and tablet grids.
CRM task: xrdwb17xu
Milestone branch for **Feed browser: Mobile immersive feed**. Later tasks of the milestone add commits here.
## xrdwb17xu: Full-screen snap feed with post slide variants
- At 760px and below (AppShell measures `.app`, same breakpoint as the container query), the feed renders `MobileFeed`: a reel with `scroll-snap-type: y mandatory`, slides with `scroll-snap-stop: always`, each exactly the viewport height. Side panels are hidden at that width.
- Image/video slides: media edge to edge, top and bottom fades, author and three-line text in white. Text-only slides: 31px serif quote with a crimson opening mark, author at the bottom.
- The slide on screen gets `is-cur` (content rises, media 104% to 100%). Tracked with an IntersectionObserver and exposed via `FeedView` `onCurrentChange` for the dock task.
- Last slide is a loading skeleton while another page can load (`hasMore`), holding the existing paging sentinel. Same posts, delete and paging as desktop; no new fetch paths.
- The own-post menu and delete confirm are extracted to `PostMenu` and reused on slides with a frosted button.
- One wheel step or swipe moves exactly one slide (Chromium sends short gestures back to the start slide otherwise).
- New tokens for white and fades over media in `globals.css`; styles in `src/styles/mobile.css`.
**Verified:** typecheck, lint, vitest (235 tests), `next build`. Playwright on `/dev/feed` at 390x844, dark and light, with and without is_mobile/has_touch: all slide heights 844, wheel and touch steps go 0 to 1 to 2, own-post menu and confirm open, paging appends pages. 1440 and 820 still show the desktop and tablet grids.
CRM task: xrdwb17xu
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Milestone branch for Feed browser: Mobile immersive feed. Later tasks of the milestone add commits here.
xrdwb17xu: Full-screen snap feed with post slide variants
.app, same breakpoint as the container query), the feed rendersMobileFeed: a reel withscroll-snap-type: y mandatory, slides withscroll-snap-stop: always, each exactly the viewport height. Side panels are hidden at that width.is-cur(content rises, media 104% to 100%). Tracked with an IntersectionObserver and exposed viaFeedViewonCurrentChangefor the dock task.hasMore), holding the existing paging sentinel. Same posts, delete and paging as desktop; no new fetch paths.PostMenuand reused on slides with a frosted button.globals.css; styles insrc/styles/mobile.css.Verified: typecheck, lint, vitest (235 tests),
next build. Playwright on/dev/feedat 390x844, dark and light, with and without is_mobile/has_touch: all slide heights 844, wheel and touch steps go 0 to 1 to 2, own-post menu and confirm open, paging appends pages. 1440 and 820 still show the desktop and tablet grids.CRM task: xrdwb17xu