From 3e573673c7e149695f8c95045e37367e4ac86600 Mon Sep 17 00:00:00 2001 From: Zackary Lowery Date: Fri, 2 Oct 2026 23:52:42 -0400 Subject: [PATCH 1/2] feat(os): mobile responsive shell below 768px (NEXT.md 3.1) WindowFrame degrades to stacked full-width cards (stored geometry overridden below md, drag disabled via useMediaQuery, focused card scrolls into view). Taskbar becomes a touch-sized bottom sheet with a horizontally scrollable control strip, pinned as an overlay with safe-area padding. Root scrolls instead of clipping so cards stack above the sheet. Phone-viewport e2e covers stacking, drag no-op, scroll-into-view, sheet geometry, minimize/restore, reload. --- app/app.vue | 10 +- app/features/os/components/Taskbar.vue | 100 ++++++++++---------- app/features/os/components/WindowFrame.vue | 26 +++++- tests/e2e/mobile-shell.spec.ts | 103 +++++++++++++++++++++ 4 files changed, 182 insertions(+), 57 deletions(-) create mode 100644 tests/e2e/mobile-shell.spec.ts diff --git a/app/app.vue b/app/app.vue index 32129f5..c08ea3f 100644 --- a/app/app.vue +++ b/app/app.vue @@ -154,11 +154,11 @@ onMounted(() => { diff --git a/app/features/os/components/Taskbar.vue b/app/features/os/components/Taskbar.vue index db4d1b9..ba4a143 100644 --- a/app/features/os/components/Taskbar.vue +++ b/app/features/os/components/Taskbar.vue @@ -26,59 +26,61 @@ function onTaskbarClick(id: string): void { diff --git a/app/features/os/components/WindowFrame.vue b/app/features/os/components/WindowFrame.vue index 30b9647..47acab6 100644 --- a/app/features/os/components/WindowFrame.vue +++ b/app/features/os/components/WindowFrame.vue @@ -1,13 +1,31 @@