<feed xmlns='http://www.w3.org/2005/Atom'>
<title>fun.git/index.js, branch master</title>
<subtitle>Source code of personal website</subtitle>
<id>https://git.tylerhoang.xyz/fun.git/atom?h=master</id>
<link rel='self' href='https://git.tylerhoang.xyz/fun.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/fun.git/'/>
<updated>2026-06-03T22:51:36Z</updated>
<entry>
<title>add Keep Android Open system notice + tray countdown</title>
<updated>2026-06-03T22:51:36Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-06-03T22:51:36Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/fun.git/commit/?id=d70ce65502caf70daaa9eb6b85c698554786734e'/>
<id>urn:sha1:d70ce65502caf70daaa9eb6b85c698554786734e</id>
<content type='text'>
Auto-opens on first visit (dismissable via localStorage); pulsing
taskbar badge with live days-remaining stays as the persistent
re-entry point. Counts down to Sept 1 2026 UTC.

Co-Authored-By: Claude Opus 4.7 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>chrome: add moving shard background + CLAUDE.md</title>
<updated>2026-05-29T08:50:33Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-29T08:50:33Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/fun.git/commit/?id=2ead51ef77c4872a188217cca8b82f5b02053ecd'/>
<id>urn:sha1:2ead51ef77c4872a188217cca8b82f5b02053ecd</id>
<content type='text'>
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>neighbors: open contact window on "drop a line" instead of mailto</title>
<updated>2026-05-29T04:07:30Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-29T04:07:30Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/fun.git/commit/?id=8691989d150eeb092b7ea58290658a024a90fcd4'/>
<id>urn:sha1:8691989d150eeb092b7ea58290658a024a90fcd4</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor: extract inline css/js from index.html</title>
<updated>2026-05-29T01:25:41Z</updated>
<author>
<name>Tyler Hoang</name>
<email>tyler@tylerhoang.xyz</email>
</author>
<published>2026-05-29T01:25:41Z</published>
<link rel='alternate' type='text/html' href='https://git.tylerhoang.xyz/fun.git/commit/?id=34f0486f091ded7112442a00f8c5c5ecae342265'/>
<id>urn:sha1:34f0486f091ded7112442a00f8c5c5ecae342265</id>
<content type='text'>
index.html shrank from 1650 to 349 lines. Inline &lt;style&gt;
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 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
