aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
6 daysupdates to neighborsTyler Hoang
7 dayschrome: add moving shard background + CLAUDE.mdTyler Hoang
Implements the chrome theme's metallic shard ambient field from the redesign handoff. Adds spawnShards() to aero.js, shard CSS (clip-path polygon, chrome gradient, specular streak, shard-rise keyframes) to aero.css, and wires up calls in index.js and enter.html. Shard field is hidden by default; shown only when body[data-theme="chrome"]. Also adds prefers-reduced-motion guard for both fields. Adds CLAUDE.md with architecture overview for future sessions. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daystheme: make chrome the default and move it left in the selectorTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daysupdatedTyler Hoang
7 daysremove movie.pdf and resume.pdfTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daysremove unused gpg-trainytrain key fileTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daysupdate GPG public keyTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daysneighbors: open contact window on "drop a line" instead of mailtoTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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 dayssmall editsTyler Hoang
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.
7 daysaero: autoplay music on startup with first-click fallbackTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7 daysdocs: add music autoplay design specTyler Hoang
7 daysaero: scale desktop to fit smaller monitorsTyler Hoang
Use a JS-driven `zoom` on <html> computed from viewport vs a 1440x900 baseline (clamped at 0.55) so absolutely-positioned windows, icons, and the taskbar stop overlapping on lower-res displays.
7 daysaero: quiet-web nostalgia pass (sticky note, webring, neighbors, uptime)Tyler Hoang
Implements the Frutiger Aero "Quiet Web" design handoff, merged into the existing site without touching content: - aero.css: append AERO β€” DEEPER POLISH (glass sheen, icon halo, horizon ripple, plus aero+chrome styles for all new widgets) - index.html: Neighbors icon + #w-neighbors window, #webring pill, #sticky note, #uptime ribbon, Caveat font, sticky-drag + webring JS - enter.html: welcome droplets, indie-pledge strip, footer webring, Caveat font (gate sheen + logo halo via CSS) aero.js left unchanged (current version newer than handoff's). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
9 daysremoved photo classTyler Hoang
9 daysmodified portraitTyler Hoang
9 daysdesktop: hide all windows on startupTyler Hoang
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
9 daysupdatesTyler Hoang
9 daysarticles: replace placeholder stubs with real content from articles/ folderTyler Hoang
- personal-library: cooking books (Julia Child, Kenji, Chinese, Japanese) and piano books (Mark Davis, Kent Hewitt, Real Book, Disney Fake Book) - music-list: full ~500 album tree from music directory - software-and-hardware: PC specs, audio chain, Artix Linux software stack - update browser bookmarks to match new slugs (books/music/linux) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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 daysbrowser: add article reader window with themed fetch+injectTyler Hoang
- new Articles icon (🌐) on desktop opens w-browser window - browser window has URL bar + bookmark bar (library, music list, software) - fetch()es article HTML, strips Bootstrap stylesheet + navbar, preserves content - blink tags unwrapped (colored spans preserved for retro feel) - full aero + chrome theme CSS for url-bar, bookmarks, article typography - uses DOMParser to cleanly extract body content without iframes 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: add spotify linkTyler Hoang
9 daysminor editsTyler Hoang
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>
9 daysupdated infoTyler Hoang
10 dayscontact: wire send button to tylerhoang.xyz/api/contactTyler Hoang
adds name + email inputs (api requires them) and POSTs json to the portfolio's existing contact endpoint. surfaces server errors. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
10 daysadd volume slider next to music toggleTyler Hoang
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
10 daysbump bg music volume to 0.2Tyler Hoang
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
10 daysswap bg music to bazaar theme; prune ~90 orphaned media filesTyler Hoang
points the music toggle at /mus/bazaar-theme.mp3 and updates the label. removes img/bg/* and img/static/* assets that nothing on disk references, plus the unused mus/lbm.mp3. mmt.mp3 stays since articles/library.html still embeds it. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
10 daysfilms: map real api fields and use 3-star scaleTyler Hoang
films.tylerhoang.xyz/tyler/api/recent returns stars (0-3), date_watched, poster_url, director. Wire those through and render 3 stars instead of 5. Escape user-supplied strings. Co-Authored-By: Claude Opus 4.7 <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>
10 daystestTyler Hoang
10 daysupdateTyler Hoang
2024-01-13minor updatesTyler Hoang
2021-06-03changed licensetrainytrain
2021-06-03modified readmetrainytrain
2021-06-03minor editstrainytrain
2021-05-09removed sctrainytrain
2021-05-09updatedtrainytrain
2021-04-08screenshottrainytrain
2021-04-08Delete screenshot.pngTyler Hoang
2021-04-08replaced screenshottrainytrain
2021-04-08initial committrainytrain