Albums, films, and series — all logged in one place, each with the feelings that came with it. No mood is right or wrong here, only honestly recorded.
SIDE A — OVERVIEW SIDE B — LOG LINER NOTES — DEV LOG
How this site got built, day by day — read straight from the repository's own history at build time.
41f12e8 Scroll to top when switching tabs Keeps the new tab starting at its own beginning instead of inheriting the previous tab's scroll position. Honours prefers-reduced-motion.
9bad919 Add a Dev Log tab and regroup the page into three tabs The nav is now a tab switcher rather than anchor links, with the active tab mirrored to the URL hash so tabs can be linked directly. - Overview holds Summary + Mood Map; Log holds Add Entry + Timeline (the backup/utility row moves here, next to the entries it acts on); Dev Log is new - Dev Log reads `git log` at build time via src/lib/devlog.ts and groups commits by day. Chosen over the GitHub API so it needs no rate limit budget and keeps working while the repo is private; it refreshes on rebuild - "Locate on map" now switches to the Overview tab before scrolling
34d017e Point deploys at the moodlogremi.pages.dev project 50f41d2 Add deploy script and document the Astro/Cloudflare setup 9d141f0 Rebuild as an Astro + Tailwind project Replaces the single hand-written index.html with a real build: Astro for the static shell, Tailwind v4 for styling, TypeScript for the client logic. Output is still a static site — no adapter, no server. - src/components/* hold the page shell; all dynamic rendering stays client-side in src/lib/app.ts, which fills the sections from Supabase - src/lib splits the old monolith into config (media types, emotions, palette), supabase (typed CRUD), art (cover art + radar), parse (link/title lookup) - Design tokens moved into Tailwind's @theme, so colors and fonts are utilities; only the paper grain, record spin, and timeline rail stay as custom CSS - Behaviour and the Supabase schema are unchanged Node was upgraded to 26 (Homebrew) since Astro's Vite needs >=20.12; the old system Node 20.10 at /usr/local/bin is untouched and still resolvable.
0ac4f3a Fix stale note about the parse box being type-gated bef6b33 Update spec for movie/anime parsing and title search 4d789f3 Parse movie and anime sources, and accept a plain title anywhere The parse box is now shown for every media type and takes either a link or a title to search for. - IMDb links resolve through Wikidata (keyless, CORS-open): localized title, director, and genres normalized against this app's presets - MyAnimeList and AniList links resolve through the AniList GraphQL API - Typing a name searches Apple Music (vinyl), Wikidata (movie), or AniList with a Wikidata fallback (anime) — Wikidata is what makes Chinese titles work, since AniList only indexes romaji/English/Japanese - Streaming hosts (Bahamut, Netflix, Bilibili, …) forbid cross-origin reads, so their pages cannot be inspected client-side at all; those links now say so and point at the title search instead - Enter in the parse box triggers a parse
6271811 Update spec for single-page lifelog architecture and Supabase backend 1bde107 Restructure as a single lifelog page with a type selector Vinyl/Movies/Anime are no longer separate tabbed pages. The lifelog rollup is now the only header: one hero, then Summary, Add Entry, Timeline, Mood Map as sections of one page, with nav links as anchors. - One add form; a Type chip row swaps field labels, placeholders, context options, genre presets, submit label, and shows the link parser for Vinyl only - Timeline and Mood Map cover every type at once, filterable by type and by genre (the genre list narrows to whatever the type filter leaves in scope) - Entries normalize to {mediaType,title,creator,...}, dropping the per-type titleKey/creatorKey indirection; DB schema unchanged - Migration is one button covering all three legacy stores - Link parser tolerates messy pasted URLs and supports Spotify - Added cover-art shapes for film/anime genres
93f4623 Add migration for movie/anime tabs, support Spotify links in parser - migrateLocalLegacyData is now config-driven (per-media legacy storage keys) and checks both Claude storage and localStorage, skipping entries already in the cloud - Parser recognizes Spotify links via oEmbed (title only; Spotify does not expose artist or genre)
33c5088 Add Mood Log app (Vinyl/Movies/Anime/Lifelog, Supabase-backed public site)