responsive desktop: shrink icons on cramped viewports so they never collide; clamp windows to the viewport

This commit is contained in:
Martin Dvořák 2026-09-24 12:48:01 +00:00
commit 194501e467
4 changed files with 136 additions and 9 deletions

View file

@ -24,11 +24,13 @@ heatmap**, a gym SBD panel and links to friends' sites.
- **Phone vs. desktop detection** — a user-agent sniff on `<html data-device>` decides whether
the desktop or the mobile home screen is shown.
- **Draggable desktop icons** — free placement that snaps to a measured grid, one icon per
cell, with a follow-the-cursor drag ghost.
cell, with a follow-the-cursor drag ghost. Icons shrink on cramped viewports so they never
collide.
- **Multi-window manager** — draggable, resizable, minimizable, maximizable, focus/z-order
and animated open/close (with reduced-motion support). The taskbar shrinks its window
buttons as more apps open and scrolls when they still don't fit, so every open app stays
reachable.
reachable. Windows are clamped to the viewport so they never open off-screen on a small
monitor.
- **Working terminal app** — command input with history (`↑`/`↓`, `Ctrl+L` to clear) and a
hidden `ssh` easter egg.
- **Live service status** — each self-hosted service is health-checked through the site's