aboutsummaryrefslogtreecommitdiff
path: root/aero.js
AgeCommit message (Collapse)Author
7 daysrefactor: extract inline css/js from index.htmlTyler Hoang
index.html shrank from 1650 to 349 lines. Inline <style> moved to index.css, ARTICLES data to articles.js, the rest of the inline script to index.js. Also: - drop unused bindMusicToggle from aero.js - collapse duplicate click+dblclick icon handlers - dedup music-toggle gradient via .mt-btn.on class - replace inline styles in films/podcast/now-playing renderers with semantic classes (.film-when, .pod-ep, .np-row, etc.) - precompute article readMin and plainTitle once instead of on every render Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
7 daysaero: align sparkle cursor with pointer at non-1.0 zoomTyler Hoang
The sparkle div is appended inside the zoomed <html>, so writing raw clientX/Y into style.left/top placed each sparkle at clientX*zoom on screen — drifting toward the origin. Divide by window.__uiScale.
7 daysaero: fix 1:1 drag at non-1.0 zoom, scale window text on resizeTyler Hoang
Drag and resize handlers were reading pointer deltas in visual pixels but writing to style.left/width which live in the (zoomed) layout coord space — so dragging at zoom 0.7 lagged 30% behind the cursor. Now divide deltas by window.__uiScale (set by the desktop-fit script). Also: when a window is resized, scale its title bar and body via `zoom` so the text inside grows/shrinks with the window. Baseline is captured on first resize.
9 daysbrowser+resize: implement proper faux browser + resizable windows per design ↵Tyler Hoang
handoff Browser window (w-browser, Internet icon): - Full aqua browser chrome: toolbar with back/fwd/reload/home SVG nav buttons, URL bar (lock + scheme + host + path + blinking caret), bookmark chips with colored 12x12 favicon squares, scrollable page surface, status bar with animated progress bar - History stack (back/forward state, disable at ends) - Delegated click handler via data-go attributes for in-page navigation - Refresh button spins 700ms via CSS animation - Address bar + title bar update on every navigation - ARTICLES array with 4 entries (self-hosting, jazz, cooking, film) with drop-cap, Georgia body, IBM Plex Mono metadata, blockquotes, inline ilinks - Chrome theme: brushed mercury toolbar, dark navy article surface with iridescent radial hotspots, Audiowide titles with chromeShimmer drop-cap, Michroma UI labels, iridescent progress bar, custom scrollbar Resizable windows: - makeResizable() in aero.js: appends .rs-e (right edge), .rs-s (bottom edge), .rs-se (SE grip) handles; tracks mousedown/move/up; enforces minW/minH - .win.resized flex-column flip: body fills remaining height and scrolls - Aero grip (3-stripe diagonal, blue); Chrome grip (iridescent purple/cyan/pink) - Body cursor forced via body.rs-cursor-* classes during drag CSS in aero.css: chrome overrides for resize handle + full browser window theme CSS in index.html: resize handle rules, full browser/article reading styles Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 daysredesign: add Y2K chrome theme + theme switcherTyler Hoang
- Add Y2K Chrome / Frutiger Aero two-theme switcher (floating pill, top-right) - Theme persists via localStorage under 'tyler.theme', no flash on load - Chrome theme: brushed-metal panels, iridescent titlebar seam, holographic cursor, blueprint wallpaper, Audiowide/Michroma/Space Grotesk fonts - Aero theme: upgraded to Plus Jakarta Sans + IBM Plex Mono - Z-index hygiene: .icons → 10, .win → 50, .bubble-field → 0 - Sparkle cursor is theme-aware (cyan→pink for chrome, warm rainbow for aero) - Music toggle is theme-aware: bazaar theme (aero) / coolman (chrome), swaps live if you change theme while music is playing - Add img/wallpaper-chrome.png (blueprint wallpaper for chrome theme) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 dayspodcast: switch to server-side php proxy for rss feedTyler Hoang
itunes api unreachable from browser on vps. podcast.php fetches anchor.fm rss server-to-server, parses xml, returns json. 1h cache header to avoid hammering the feed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 dayspodcast: wire reel mouth rss via itunes lookup apiTyler Hoang
- add fetchReelMouthFeed() to aero.js using itunes api (id 1709836497) - replace hardcoded episodes with dynamic #pod-episodes container - swap in real artwork on load, fallback placeholder until then - fix links: apple podcasts, anchor.fm rss feed - lazy-loads on first window open, cached after that Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
10 daysredesign: frutiger aero faux-OS desktopTyler Hoang
replaces the old enter/index pages with a draggable-windows desktop metaphor. wires last.fm now-playing, films.tylerhoang.xyz diary, and a php visitor counter; keeps background music via /mus/mmt.mp3. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>