Skip to content

TV mobile playlist drawer: vertical resize (grow/shrink past old cap)#1089

Draft
ryokun6 wants to merge 6 commits intomainfrom
cursor/tv-drawer-mobile-resize-d1d9
Draft

TV mobile playlist drawer: vertical resize (grow/shrink past old cap)#1089
ryokun6 wants to merge 6 commits intomainfrom
cursor/tv-drawer-mobile-resize-d1d9

Conversation

@ryokun6
Copy link
Copy Markdown
Owner

@ryokun6 ryokun6 commented May 1, 2026

Summary

Mobile compact playlist drawer was hard-capped with max-height: min(28dvh, 200px), so users could not make it taller (“resize downward”). This adds explicit pixel height with min/max clamps driven by visualViewport when available, and an invisible top-edge resize hit target (12px strip on the drawer rim, overlapping the window overlap) with pointer capture + touch-action: none so scrolling does not steal the gesture. No separate visible drag row.

Default height is slightly larger: min(34% viewport, 236px). Persisted height uses key ryos_tv_compact_drawer_height_px_v2 so old stored caps do not block the new default.

Desktop side-drawer behavior is unchanged. Drawer remains hidden while fullscreen.

Root cause

The bottom-sheet layout enforced a fixed maximum height via CSS only; nothing allowed increasing that cap on touch devices.

Testing

  • bun run build
  • bun test tests/test-tv-compact-drawer-height.test.ts

Files touched

  • src/apps/tv/components/TvVideoDrawer.tsx
  • src/apps/tv/utils/compactDrawerHeight.ts
  • tests/test-tv-compact-drawer-height.test.ts
  • Locale JSON files (apps.tv.drawer.resizeHandle)
Open in Web Open in Cursor 

Replace fixed maxHeight cap with user-height state, bottom drag grip
(pointer capture + touch-action none), persisted height, and viewport
clamp helpers. Add unit tests for height math; sync i18n for handle label.

Co-authored-by: Ryo Lu <me@ryo.lu>
@ryos-deploy
Copy link
Copy Markdown

ryos-deploy Bot commented May 1, 2026

The preview deployment for ryos-dev is ready. 🟢

Open Preview | Open Build Logs | Open Application Logs

Last updated at: 2026-05-01 11:41:53 CET

cursoragent and others added 5 commits May 1, 2026 11:23
Replace bottom grip UI with a transparent 12px rim on the drawer top;
bump default compact height to min(34dvh,236px); new localStorage key v2
so prior v1 caps don't block the new default.

Co-authored-by: Ryo Lu <me@ryo.lu>
Match window mobile bottom resize affordance (larger strip, overlaps
outside drawer). motion wrapper uses overflow-visible on compact+touch.

Co-authored-by: Ryo Lu <me@ryo.lu>
…r capture

The invisible drawer resizer was absolutely positioned at z-20 and could
overlap WindowFrame resize handles (z-[60]/50). Moved it into the panel flex
layout at z-0 with negative lateral margins matching horizontal inset.

Removed setPointerCapture to avoid orphaned captures blocking touch on iOS.

Also fixed missing closing </div> around panelOuter (parse error).

Co-authored-by: Ryo Lu <me@ryo.lu>
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.

2 participants