Changelog
Log of all notable changes and updates made to this website.
2026
- Nov 5· v1.8.2· latest
Say Hi on Instagram
The footer now links to my Instagram, @withluv.lily. Behind the scenes, I also slimmed down the site's server code so that new changes can…
The footer now links to my Instagram, @withluv.lily. Behind the scenes, I also slimmed down the site's server code so that new changes can deploy again.
- Nov 5· v1.8.0
Search Your Way Through the Bookmarks
The bookmarks page has a new search icon. Click it and type to find bookmarks by title, website or tag, on its own or alongside the…
The bookmarks page has a new search icon. Click it and type to find bookmarks by title, website or tag, on its own or alongside the category and tag filters.
- Nov 5· v1.7.2
Moving House to Netlify
The garden now lives on Netlify instead of Vercel. Nothing should look different, and the visitor counter still counts first visits only.
The garden now lives on Netlify instead of Vercel. Nothing should look different, and the visitor counter still counts first visits only.
- Nov 4· v1.7.1
Keeping Your Email Private
The guestbook and AMA now go only through the site's own server, and the database is closed to the public. Email addresses you leave there…
The guestbook and AMA now go only through the site's own server, and the database is closed to the public. Email addresses you leave there stay private and are only used to send you a reply.
- Nov 4· v1.7.0
Counting New Visitors
I wanted to know how many new people find the garden, so the site now counts first visits.
I wanted to know how many new people find the garden, so the site now counts first visits.
- Your browser remembers it has been counted, so coming back doesn't count again.
- All I see are totals: how many people, which site sent them, which page they landed on, and their country.
- No accounts, no IP addresses, and nothing that can tell one visitor from another.
Behind the scenes, I also got a small dashboard for answering questions and tending the garden.
- Nov 4· v1.6.3
Easier to Find, Easier to Share
The sitemap was empty, so search engines had no map of the garden. It now builds itself from everything published.
- The sitemap was empty, so search engines had no map of the garden. It now builds itself from everything published.
- Sharing a link now shows a proper card instead of an old screenshot.
- The "Leave a link" form on the webroll now saves your link properly.
- The guestbook no longer sends signers' email addresses along with its entries.
- Book cards on the bookshelf got their paper texture back.
- Nov 4· v1.6.2
Micro-blog and Changelog Refresh
Micro-blog
- A calmer feed, grouped by month, without the timeline and cards.
- Every thought now has its own link, and search takes you straight to it.
- Pull a random thought jumps to one at random.
- Hearts stay private on your device. The old like count was never actually saved, so it's gone.
Changelog
- Grouped by year, with short summaries you can open for the full details.
- The filter now matches the types of update on this page.
Phones
- Quotes and Word of the Day no longer scroll sideways.
- Nov 4· v1.6.1
Easier to Find Your Way Around
A breadcrumb trail in the top bar now shows where you are and takes you back up.
- A breadcrumb trail in the top bar now shows where you are and takes you back up.
- The footer shows up on every regular page, including the whole playground.
- Essays and notes show the title of the next and previous piece, not just "Prev" and "Next".
- Playground toys link to each other in a loop, so there's always another one to try.
- Back arrows now work even if you landed directly on a page.
- Nov 4· v1.6.0
More Things to Play With
The garden got a lot sillier.
The garden got a lot sillier.
- Grow a flower: water one on the homepage until it blooms, then plant it in your own patch.
- Petal Catch: catch the petals, dodge the bees, beat your best score.
- Doodle Pad: draw something and stick it on your own fridge.
- Color Theory and Animation Lab: two toys that replace the old "Coming Soon" cards.
- Wander: the dice button in the top bar sends you somewhere random.
- A new 404 page: getting lost should have its upsides.
There are also a few secrets hidden around the site. I'm not telling you where.
- Nov 4· v1.5.1
Fixing What Was Quietly Broken
Homepage note links went to a page that didn't exist, and so did a few others around the site.
- Homepage note links went to a page that didn't exist, and so did a few others around the site.
- Photos in old WordPress posts in the archives show up again.
- The suggestion form was posting to nothing. It now saves suggestions.
- Every page was telling search engines it was the homepage. Each one now speaks for itself.
- Removed a duplicate admin tab, and Terminal Notes no longer saves every 3 seconds.
- Nov 4· v1.5.0
A Much Lighter Garden
The site now loads far less before you can read anything.
The site now loads far less before you can read anything.
- Most pages load about 115KB of JavaScript, down from about 530KB. The homepage went from 535KB to 132KB.
- The homepage is pre-rendered, so it no longer fetches about 300KB of data every time it loads.
- Music only downloads when you press play.
- Essay images went from 22MB to 3.6MB, and the favicon from 446KB to 9KB.
- Fonts moved to WOFF2, and essays and static data are now built ahead of time.
- Removed about 35 unused packages and dozens of unused files.
- Nov 4· v1.4.3
AMA Replies by Email
When I answer a question on the AMA page, the person who asked can now get the reply by email instead of having to keep checking back.
When I answer a question on the AMA page, the person who asked can now get the reply by email instead of having to keep checking back.
- May 15· v1.4.2
Bookmarks Sort Toggle
Added a sort toggle button to the bookmarks page (/garden/bookmarks)
New Features
🔄 Bookmarks Sort Functionality
- Added a sort toggle button to the bookmarks page (
/garden/bookmarks) - Small filter button (↕️) in the results count section allows switching between sort orders
- Default order: Newest to oldest (most recent bookmarks first)
- Toggle switches to: Oldest to newest (chronological order)
- Visual feedback with hover effects and clear button text
- Maintains sort order across page interactions and filtering
📚 TBR Section for Bookshelf
- Added a dedicated TBR section to the bookshelf experience
- TBR books now appear in a clean table layout with title, author, pages, and themes/tags
- The new section is visually distinct from the Reading and Read lists
- Supports the new bookshelf content structure for future TBR entries
💡 User Experience Improvements
- Intuitive sort toggle with descriptive button text ("Newest First" / "Oldest First")
- Tooltip shows current sort direction and toggle action
- Smooth transitions and hover states
- Works seamlessly with existing tag and category filtering
- Preserves user sort preference during filtering operations
🎯 Smart Integration
- Sort toggle appears next to the results count for easy access
- Button uses consistent design with existing filter elements
- Maintains performance with efficient sorting logic
- No impact on existing bookmark filtering functionality
Technical Notes
- Implemented using React state management with
useStatehook - Added sort order state with 'newest' | 'oldest' types
- Sorting logic applied before filtering for optimal performance
- Uses
ArrowUpDownicon from Lucide React for consistent iconography - No additional dependencies required
- Passes all ESLint checks and maintains code quality standards
- Added a sort toggle button to the bookmarks page (
- May 11· v1.4.1
Homepage Search Bar
Added a comprehensive search bar under the "Recently Published" header on the homepage
New Features
🔍 Homepage Search Functionality
- Added a comprehensive search bar under the "Recently Published" header on the homepage
- Enables users to search across all content types including essays, notes, poems, bookmarks, archives, and microblog posts
- Real-time search results appear instantly as users type
- Search matches titles, content, excerpts, tags, and page descriptions
- Displays up to 20 results with content type indicators and brief snippets
- Includes direct links to content with external link indicators for bookmarks
🎯 Smart Content Discovery
- Searches across multiple content sources:
- Essays (title, excerpt, content, tags)
- Notes (title, content, tags)
- Bookmarks (title, tags, external URLs)
- MicroBlog posts (content)
- Archives (title, category)
- Static pages (essays, notes, poems, bookmarks, archives, quotes)
- Results are deduplicated and prioritized by relevance
- Clear search results UI with type badges and descriptive snippets
💡 User Experience Improvements
- Clean, accessible search interface using existing SearchBar component
- "Clear" button to reset search and return to normal view
- Helpful "no results" message with suggestions
- Responsive design that works on all screen sizes
- Maintains existing homepage layout and visual consistency
Technical Notes
- Implemented as client-side search with
useMemofor performance optimization - Fetches all content data on page load for instant searching
- Reuses existing
SearchBarcomponent for design consistency - No additional dependencies required
- Passes all ESLint checks and maintains code quality standards
- Apr 11· v1.4.0
Wants — 100 Things I Want To Do
Added a new personal page listing things to do (and that have been done) in the /me section.
New Features
✅ New
Wants To Dopage- Added a new personal page listing things to do (and that have been done) in the
/mesection. - Route:
(with-sidebar)/me/wants-to-do— file:app/(with-sidebar)/(me)/wants-to-do/page.tsx - Displays a simple checklist UI with completion state and a compact progress indicator.
- Initial items added include learning goals, travel plans, and gear wishes (20 items).
Technical Notes
- Implemented as a client component to allow interactive completion state.
- Reuses site
ScrollProgressandFootercomponents for consistent layout and behavior. - Added the list as an inline array in the page component; can be migrated to a data file or CMS later.
- Added a new personal page listing things to do (and that have been done) in the
2025
- Aug 1· v1.3.1
New Poetry Page
Built and designed a new Poetry page in the Garden section
New Features
📝 Poetry Corner
- Built and designed a new Poetry page in the Garden section
- Created a unique two-column layout for browsing and reading poems
- Left column displays a scrollable list of all poems
- Right column shows the selected poem content
- Default view displays the most recent poem
- Implemented the "font-heart" styling for poem titles using the rainyhearts font
- Added proper Markdown rendering for poem content
📚 Content Expansion
- Added multiple new poems to the collection
- Organized poems with proper tags and metadata
- Updated site navigation to include the new Poetry section
🔄 Technical Improvements
- Created new data handling utilities in
lib/garden/poems.ts - Implemented custom CSS styling specifically for poetry display
- Added poems to the sitemap for improved discoverability
- Jul 29· v1.3.0
New Homepage Design
Created a new home page design with a cleaner, more modern layout
Interface Improvements
🏠 New Homepage Layout (v2)
- Created a new home page design with a cleaner, more modern layout
- Added dedicated route at
/home-v2for testing before replacing the main homepage - Implemented responsive grid layout that adapts to different screen sizes
- Included sections for recently published content from multiple sources
📱 Component Updates
- Enhanced content sections with a consistent design language:
- Essays
- Notes
- Bookmarks (new addition)
- MicroBlog (new addition)
- Created new API endpoint
/api/bookmarksto efficiently parse bookmark data - Improved data fetching to retrieve and display content from multiple sources
- Added console logging for debugging content loading
🎵 Media Integration
- Integrated MusicPlayerWidget component for audio welcome message
- Added AnimatedLogo component for visual interest
- Jul 6· v1.2.1
Renamed Writings to Essays
Renamed "writings" to "essays" across the entire site
Content Structure Changes
📝 Content Organization
- Renamed "writings" to "essays" across the entire site
- Updated folder structure:
Content/writings/→Content/essays/Content/archives/writings/→Content/archives/essays/public/images/writings/→public/images/essays/
- Updated all route paths:
/garden/writings→/garden/essays/api/writings→/api/essays
Code Updates
🔧 Technical Changes
- Renamed
lib/garden/writings.ts→lib/garden/essays.ts - Updated type definitions:
Writing→Essay - Updated function names:
getAllWritings()→getAllEssays() - Updated component names:
WritingMarkdownWrapper→EssayMarkdownWrapper - Updated all internal links and references
- Updated navigation labels and sidebar links
- Updated README documentation
Content Updates
📚 Documentation
- Updated all content files that referenced "writings"
- Updated archive README files
- Updated script configurations
- Updated topic lists and cross-references
- Maintained backward compatibility where possible
This change provides better semantic clarity between different types of content - distinguishing longer-form essays from shorter notes and other content types.
- Jun 24· v1.2.0
Terminal Notes & Firebase Migration
Added a new Terminal Notes project to the playground
New Features
🖥️ Terminal Notes
- Added a new Terminal Notes project to the playground
- Simple, minimal note-taking interface with terminal aesthetics
- Hybrid storage: loads initial content from server, saves changes to localStorage
- Auto-saves every 15 seconds to localStorage
- Manual save with Ctrl/Cmd + S keyboard shortcut
- Character and line count statistics
- Monospace font for clean, readable text
- Added to playground page and sidebar navigation
Infrastructure Updates
🔧 Firebase Migration
- Migrated all user-generated content to Firebase Firestore
- Fixes production deployment issues where file system writes were failing
- APIs now use Firestore instead of local file storage:
- Guestbook entries →
guestbookcollection - Ask Me Anything questions →
ama-questionscollection - Micro-blog posts →
micro-blogcollection - Tool submissions →
tool-submissionscollection
- Guestbook entries →
- Improved data persistence and scalability
- No more "Error failed to save entry" messages in production
Bug Fixes
🐛 Content Security Policy
- Updated CSP headers to properly allow Google Fonts
- Fixed font loading issues with external stylesheets
- Improved CSP formatting and wildcard domain support
Technical Details
- Built with React and TypeScript
- Hybrid storage: reads initial content from Content/notes/index.md, saves changes to localStorage
- Responsive design that works on all screen sizes
- Accessible keyboard shortcuts
- Clean, terminal-inspired UI design
- Jun 24· v1.10.0
Added Terminal Note-Taking Application to Playground
Created a new "Terminal" application in the Playground section for streamlined note-taking and drafting.
- Created a new "Terminal" application in the Playground section for streamlined note-taking and drafting.
- Features a full-screen, terminal-inspired interface with monospaced font (Geist Mono) for optimal typing experience.
- Implements persistent storage system saving all notes to each visitors localStorage.
- Added comprehensive auto-save functionality:
- Automatic saves every 15 seconds when content is present
- Jun 21· v1.9.0
Added "Word of the Day" Collection Page
Created a comprehensive "Word of the Day" page under the Garden section.
- Created a comprehensive "Word of the Day" page under the Garden section.
- Features a table-based layout displaying vocabulary entries with serial numbers, dates, pronunciations, and detailed meanings.
- Implemented structured data organization with 13 curated word entries from June 2025.
- Added to sidebar navigation under Garden for easy access with ScrollText icon.
- Each entry includes:
- Date in yyyy-mm-dd format for consistent chronological display
- Word with IPA pronunciation guide
- Part of speech categorization (noun, adjective, adverb, etc.)
- Comprehensive meanings and contextual explanations
- Real-world usage examples and similar words
- Responsive table design matching the archives page aesthetic.
- Built with dedicated API endpoint
/api/word-of-the-dayfor efficient data fetching. - Enhanced user experience with loading skeletons, error handling, and hover effects.
- Jun 21· v1.8.0
Added "Quotes" Collection Page
Introduced a new "Quotes" page under the Collections section.
- Introduced a new "Quotes" page under the Collections section.
- Features a curated collection of inspiring quotes from various thinkers, innovators, and leaders throughout history.
- Clean, minimalist design with author names prominently displayed alongside their quotes.
- Added to sidebar navigation under Collections for easy access.
- Includes quotes from Albert Einstein, Steve Jobs, Maya Angelou, Nelson Mandela, Marie Curie, and Winston Churchill.
- Jun 16· v1.7.0
Added "Hello" Page
Introduced a new "Hello" page, accessible from the sidebar right after Home.
- Introduced a new "Hello" page, accessible from the sidebar right after Home.
- The Hello page shares Lily's preferred ways to connect and a bit of personal background.
- Sidebar navigation updated with a new icon for quick access.
- Jun 15· v1.17.0
Added Webmentions Support
Added Webmentions support across the entire website
What's Added
- Added Webmentions support across the entire website
- Integrated with webmention.io for receiving and displaying mentions
- Added webmention display in the site footer
Updates
- Added webmentions support using webmention.io
- Created WebmentionFooter component for displaying mentions
- Added webmention and pingback endpoint tags
- Added environment variables for site URL and API token
- Integrated webmentions display into site footer
Technical Details
- Webmentions appear at the bottom of every page in a responsive grid
- Shows author information, timestamps, and mention content
- Handles likes, replies, bookmarks, and general mentions
- Supports dark/light mode and matches site design
- Added proper webmention endpoint tags in layout
- Configured webmention.io integration with API token
Next Steps
- Add mention type filtering (likes, replies, etc.)
- Consider adding real-time updates
- Add webmention sending capability
- Add mention analytics dashboard
- Consider showing mention counts by type
- Jun 13· v1.7.0
Content Archiving System and Micro-blog Improvements
Created a comprehensive archiving system for previous writings and notes
- Created a comprehensive archiving system for previous writings and notes
- Moved existing content to dedicated archives structure under
Content/archives/ - Implemented archives listing page at
/archiveswith filtering by content type - Built individual archive entry view at
/archives/[category]/[slug] - Added API routes to fetch both archive listings and individual entries
- Created clean, well-structured table display for archive items with dates
- Implemented proper category indicators with color coding
- Added filtering capability to view all, writings-only, or notes-only content
- Cleared old content from
Content/essays/andContent/notes/directories for fresh start - Updated site sitemap to include new archives section
- Added Archives link to main sidebar navigation under Garden section
- Removed tags from micro-blog as they were no longer needed
- Improved archives table with creation dates for better organization
- Ensured consistent styling with the rest of the digital garden section
- Jun 13· v1.6.8
Then Page Implementation (Now Archive)
Created new "Then" page to archive previous Now page entries
- Created new "Then" page to archive previous Now page entries
- Implemented main listing page at
/thenthat displays all past entries by date - Built individual entry view at
/then/[slug]to display archived Now page content - Added API routes to fetch both the list of entries and individual entry content
- Designed responsive UI with loading states and proper error handling
- Implemented animated transitions using Framer Motion
- Ensured consistent styling with the rest of the site
- Added "Back" navigation for improved user experience
- Set up proper metadata display including creation dates
- Organized content structure in the Content/then directory
- Updated sitemap to include new Then pages
- Jun 11· v1.6.7
Microblog Page Implementation
Created new Microblog page in the digital garden section for short-form thoughts and musings
- Created new Microblog page in the digital garden section for short-form thoughts and musings
- Implemented a timeline-style layout with alternating thread cards
- Built a likes functionality that persists per unique visitor (using localStorage)
- Connected the threads to real markdown content stored in Content/micro-blog directory
- Created an API route to fetch and update thread data
- Added proper font stylings for the thread cards with monospace font
- Ensured compatibility with both light and dark modes
- Implemented infinite scrolling instead of pagination for a seamless experience
- Added loading indicators consistent with site-wide design patterns
- Included visual timeline with connecting lines between entries
- Set up proper date formatting for thread entries
- Jun 10· v1.6.6
Todo Page Redesign and Last-Updated System
Redesigned Todo page with a cleaner, more consistent layout
- Redesigned Todo page with a cleaner, more consistent layout
- Implemented a simple, read-only display of website todo items
- Added visual indicators for completed tasks with proper light/dark mode compatibility
- Created an automated system to update last-updated.json file
- Added Git pre-push hook to automatically update timestamps
- Improved API route to use last-updated.json instead of Git commands
- Enhanced footer to display last-updated information in a more consistent format
- Added proper error handling and fallback mechanisms for timestamp tracking
- Updated styling to ensure consistency with the rest of the site
- Jun 10· v1.6.5
Improved Sitemap Page
Simplified the sitemap page design for better user experience
- Simplified the sitemap page design for better user experience
- Organized all website pages by their sidebar navigation categories
- Added descriptive text for each page to improve navigation context
- Removed technical implementation details for a more visitor-friendly presentation
- Fixed various issues with the sitemap implementation
- Updated site metadata to reflect the latest changes
- Jun 10· v1.6.4
Website Improvements - Webrings and Sitemap
Updated the webrings page header style to match the site-wide header design used in notes, writings, and guestbook pages
- Updated the webrings page header style to match the site-wide header design used in notes, writings, and guestbook pages
- Updated the IndieWeb webring HTML with proper links and styling
- Redesigned webring cards to be more visually appealing and better compatible with light mode
- Added Webmaster Webring with proper navigation links
- Added GeekRing with proper navigation links
- Refactored webring implementation to use a data-driven approach for easier maintenance
- Improved accessibility features for all webring links
- Created simple, user-friendly sitemap page with all website pages organized by section
- Listed all pages with descriptions for better navigation
- Added the sitemap page to the sidebar navigation under the imprint section
- Jun 9· v1.6.3
Removed Pages with Large Dependencies
Removed the /music-player and /notes-widget from the website. Music player had large dependencies that were impacting on file size and app…
- Removed the /music-player and /notes-widget from the website. Music player had large dependencies that were impacting on file size and app speed. I added a floating music player which is okay.
- Jun 8· v1.6.2
Updated the Bookmarks Page
Successfully reorganised my bookmarks entry to be organised by categories. I had 32 different files for 32 different entries, now I have…
- Successfully reorganised my bookmarks entry to be organised by categories. I had 32 different files for 32 different entries, now I have just 4. They are now organised by categories, making it easy to find something and update new entries.
- Jun 7· v1.6.1
Removed authentication from AMA Page Added Web Manifesto Page
Users can now ask me anything without having to login. I changed the signin modal message to say signing in isn't necessary. But I guess…
-
Users can now ask me anything without having to login. I changed the signin modal message to say signing in isn't necessary. But I guess since i already implemented it, I'll have to keep something special behind it much later.
-
Restructured the app folder to have pages with sidebar and pages without sidebar.
-
Created a page to share my web manifesto. Currently have a placeholder there, buit I'll update it soon. I have written my manifesto draft, just need to clean it up.
-
- Jun 6· v1.6.0
Added Floating Music Player and Guestbook Page
Added floating music player component and integrated it into the layout in place of buy me a coffee button.
- Added floating music player component and integrated it into the layout in place of buy me a coffee button.
- Created a guestbook page for surfers of the web to sign when they come across my page. It's a nice way to meet new people on the web.
- May 8· v1.5.0
Added a music-player-widget to the homepage.
How It Works Now:
How It Works Now:
- The music player widget is a small player that plays a voice recording of me welcoming my site visitors. I believe this adds a very unique touch to the site.
- May 7· v1.4.0
Added a Music Player and an Admin Ctrl Room
Added a page to handle
Added a page to handle - my audio files and recordings - connected with cloudinary to save audio files
Added another page to handle - managing the audio files and recordings and other content on the app
- May 5· v1.3.0
Added Footer and Page Credit Comps
Feed Content: The RSS feed includes:
Feed Content: The RSS feed includes:
- I added a footer component to hold the link to my rss feed. It also had current time of the visitor too. My footer is not yer there but that's okay.
- Redid the PageCredit comp which initially held a lot of texts but I decided simplicity wins, so it just holds the name and link to the person who inspired the page if there's any.
- May 5· v1.2.0
Setup and Implemented RSS Feed
Feed Content: The RSS feed includes:
Feed Content: The RSS feed includes:
- My writings from the /Content/essays directory
- My logs from the /content/logs directory
- My notes from the /content/notes directory
The implementation uses the feed package to generate the feeds in different formats. Each content item includes:
- Title
- Link to the content on my website
- Publication date
- Description/excerpt
- Content (where available)
- Author information
- Tags as categories
My visitors can now subscribe to my RSS feed using any RSS reader by simply adding the feed URL. This will help them stay updated with my latest content without having to visit my website regularly.
- May 3· v1.1.0
Someday Page
Added a someday page.
- Added a someday page.
- Added a Page-Credit component for footer to give credits to people who I get page inspirations from.
- Updated the design for notes with inspirations from
- May 1· v1.0.0
Launch of website
After three weeks of late nights, countless iterations, and nonstop tinkering, I’m thrilled to announce the launch of my digital garden and…
After three weeks of late nights, countless iterations, and nonstop tinkering, I’m thrilled to announce the launch of my digital garden and workshop. This is my little corner of the internet where I share what I’m building, what I’m learning, and where my curiosity leads me. Here, ideas are seeds—planted and nurtured over time—rather than waiting for perfection before sharing. It’s an evergreen space to document progress, revisit insights, and grow continuously.