leodeng
.dev
Home
About
Projects
Gallery
Stack
Blog
Contact
中
中
Changelog
Every commit to this site, straight from
the repo
.
Everything
189
Feature
84
Fix
56
Post
28
Chore
10
Change
11
November 2026
Fix
retain satellite counts across partial gpsd reports
a42125a
Feature
show privacy-preserving satellite counts on time page
c308d40
Fix
credit the actual lyrics server in both players
26b644c
Feature
add reusable X timeline widget and translations
f11932d
Feature
verify content backups over explicit FTPS
2617065
Fix
hide device hostnames and restrict music monitoring
71da8f4
Feature
coordinate multi-device now playing
d29c7fd
Post
add NAS hardware and software to stack
b9994e0
Fix
simplify space copy and move footer link last
8afb8c8
Feature
add interactive Space Passport collection
61dba82
October 2026
Fix
enforce shared per-IP and global lyrics limits
08dc354
Feature
prefer protected self-hosted lyrics with LRCLIB fallback
d10045f
Feature
return plain-text visitor IP on check subdomain
7815303
Feature
add Android now-playing and listening history agent
d737027
Fix
simplify media uploads and blog image insertion
8e271bf
Post
add iPad 2 and cyberdeck to now page
5480c15
Fix
initialize classic diagram layout in Workers runtime
d0eeabb
Fix
report classic diagram rendering failures
83ff279
Fix
preserve Markdown line endings in backup revisions
9040445
Fix
support Pages build bundler for classic image mapping
dca2f2d
Feature
migrate blog and shelf to D1 with Markdown NAS backups
7f4bcde
Fix
identify album artwork using played-song membership
e065244
Fix
distinguish self-titled Weezer album artwork by catalog ID
46ca65d
Feature
generate llms.txt and published blog Markdown at build time
dc4e1fd
Chore
keep admin operating guides private
5b3a2e8
Feature
expose now API and add public API docs
0d33ff0
Chore
collapse hardware specs on stack page
685ebc4
Post
add devices and verified router specs to stack
b73a6ee
Post
add blue iPod nano and Apple EarPods to stack
3713726
Chore
organize stack into aligned specs and gear cards
f74614e
Feature
add technology stack editor to admin
db30504
Post
add Finstalgia, CDScribe, and ZenithTick projects
988bd57
Feature
add artist photos and album covers to music stats
eadc5aa
Feature
show live music stats without frequent D1 writes
1a9071d
Feature
add offline listening history and daily music stats
69169ce
Feature
render sanitized Markdown in AI chat replies
c999b53
Fix
use Workers-compatible provider redirect handling
456bd3a
Fix
distinguish provider balance failures and log safe diagnostics
f417594
Fix
update chat status copy for DeepSeek
1169a88
Feature
replace local AI relay with streaming DeepSeek chat
2d59530
Fix
recover thinking-only responses and show live generation stats
e6d7ff2
Feature
allow five daily AI generations with a shared budget of fifty
15ae7f1
Fix
keep classic AI fallback links on the modern host
3657ca9
Feature
stream live homelab answers with thinking and admin reset
1258e22
Fix
throttle Daily AI traffic before database access
d486b15
Fix
verify Ollama loopback binding during setup
35c9739
Feature
add daily homelab AI answers and abuse controls
5763c88
Feature
add AI usage page and article authorship disclosures
28813f2
Feature
add featured gallery hero and video uploads
a91273a
Fix
support the Cloudflare Pages Functions compiler
9158afa
Feature
add gallery management and interactive panorama viewers
5913f03
Feature
highlight the best 10-word typing test
c0df49e
Fix
identify Monkeytype collector requests
b6dcf06
Fix
collect Monkeytype stats from the home server
ff2d8ac
Chore
cover Monkeytype shared-IP rate limit diagnostics
8bd6d7a
Fix
distinguish Monkeytype upstream rate limits
7b2c9f6
Fix
authenticate Monkeytype profile requests
4d021e2
Fix
diagnose Monkeytype failures and avoid reserving unused history slots
23e306b
Fix
include shared Monkeytype stats helper
6c3616c
Feature
add personal stats with GitHub charts and Monkeytype history
884c0b7
Feature
add privacy notice and opt-in Apple Music player
3ad9bc7
Post
publish three old iPads and a retro website
3b5a909
Fix
warn when generated blog slugs are truncated
5dbb5f2
Fix
restore classic connection report and encryption details
abdc9c6
Fix
recover classic lyrics from edge rate limits
d2d8266
Fix
diagnose edge lyrics lookup failures
340e9b7
Fix
use Workers-compatible redirect mode for lyrics
e2f5409
Feature
add live classic player and clock with period page styles
683c53e
Fix
render classic site diagrams as static SVG
d92c711
Fix
move classic site badge below footer connection
a8c99fa
Fix
keep legacy preview tooling out of production config builds
e9dfdd4
Feature
add classic site for older browsers
f9fe1ba
Fix
speed up now-playing updates with adaptive polling
8931975
Feature
show browser and user-agent on IP page
a901a5b
Feature
add synced lyrics and refine now-playing card
e19d32d
Feature
add interactive media shelf and local admin editing
d68f4fc
Post
revised blog md syntax issues
4eee10b
Fix
tidy request path card spacing
5e4433f
Post
update stack info
caf606b
Chore
update site presentation
b41dee6
Post
update new blog to include less <br/>'s
97a3fb2
Chore
simplify IP dashboard and remove repeated connection details
600918f
Feature
add full terminal articles and publish website updates
e8ede87
Feature
add clock offset meter, command palette and connection route
3962c45
Chore
move TLS key exchange above network details
1beac91
Feature
add visitor IP dashboard and TLS security indicators
ce01ac7
Fix
keep fullscreen terminal clear of audio controls
d1b69d9
Feature
add browser Linux terminal with cached welcome recordings
70b53d7
Feature
add dedicated GPS clock page and fallback labels
e1f58b8
Feature
show visitor local time beside GPS synced Beijing clock
da2a99b
Fix
reject clock redirects without hiding upstream status
baf999b
Fix
log sanitized clock origin failure diagnostics
902d8df
Feature
sync homepage clock with GPS PPS time source
1993f35
Feature
add bilingual site and project management
e2c5478
Post
make about copy more personal
79c8ab5
Feature
redesign now page as activity status
8bf52e3
Feature
add interactive interests vortex
4e9dc92
September 2026
Feature
add homepage now-playing widget
0e2835a
Feature
add now-playing ingestion API
290b9b7
Feature
aggregate Codex usage from remote devices
23a09d6
Post
reorder project listings
05eb386
Post
correct ShutterWingPhotos final stats
7214851
Post
mark ShutterWingPhotos as discontinued
c998b69
Feature
Added more devices to stack page
d1d40a3
Feature
Added more devices to tech stack
e3e7518
Post
add now event "PiWatch"
b7e668b
Post
update OpenPGP key
bc2461f
August 2026
Feature
add OpenPGP page
44061cd
Post
update post "Made a miniplayer for Apple Music on MacOS"
1e9abb1
Post
update post "Made a miniplayer for Apple Music on MacOS"
edecb8b
Post
add post "Made a miniplayer for Apple Music on MacOS"
dd0e067
Feature
add now event editor
cfdb6d5
Fix
changelog:
preserve history on shallow builds
d7dd61d
Change
Add VS Code Copilot token estimates
4e7b915
Change
Simplify homelab memory display
ef9c9b6
Change
Add Codex token collection
1d0b8bc
Feature
tokens:
archive usage in SQLite, add 7/30/all ranges
8c00ee2
Fix
tokens:
count subagent transcripts
40818c8
Change
copy(tokens): drop the tool name from the page
456a9d3
Fix
homelab:
stop the token rollup from being able to fail the heartbeat
b30d663
Feature
tokens:
add a /tokens page fed by the homelab timer
b41be6c
Fix
photos:
merge the manifest instead of rebuilding it from disk
7c3162a
Post
correct the R2 token path in the credentials error
ad344a7
Chore
photos:
drop the local originals, guard the manifest against shrinking
f6cdbc1
Chore
photos:
move the gallery to R2, drop originals from the repo
41aad21
Chore
media:
serve blog images from R2 instead of the repo
531fb1a
Post
tidy up a few things across the older posts
4ac90dd
Post
trim the 2022 "what I'm working on" post
41b5d77
Feature
port the rest of the old blog, fix the age calculation
2808393
Feature
admin:
upload video to R2 instead of committing it to the repo
0e5ab6b
Feature
port four posts over from the old leodengsblog.cn
9cf4511
Fix
allow AF_UNIX in the homelab agent unit so DNS resolves
5fc6c6e
Feature
live homelab status at /homelab
44e6427
Feature
turn /now into a split-flap departure board
e292d18
Feature
add /spotting and /changelog, both generated at build time
24bce80
Feature
auto-rotate the homepage status line
14f1e04
Feature
new visual identity: blue and gold, IBM Plex Sans
a1486f8
Fix
make small text legible across the site
e70c56a
Feature
stop the admin editor losing unsaved work
3b9dc0d
Post
add post "Explaining my weird home network & services setup"
3f98f13
Feature
drafts folder in the admin editor
731e129
Fix
stop the admin editor eating characters during IME input
3a0bf19
Feature
GitHub-style callouts for important sections
448b600
Feature
render mermaid diagrams with pan/zoom controls
95768a2
Fix
style headings, links and the rest of .prose
a531acc
Post
update post "I Forked Tailscale's Android App So My Phone Could Find My Homelab"
4271cc4
Post
rename post to "i-forked-tailscales-android-app-so-my-phone-could-find-my-homelab"
de246bd
Post
update post "I Forked Tailscale's Android App So My Phone Could Find My Homelab"
56b91c3
Fix
stop /admin being cached at the edge
8808874
Feature
replace Decap CMS with a self-built editor at /admin
1cbbb89
Fix
parse multi-line YAML frontmatter so descriptions aren't truncated
719e36d
Post
Create Blog Posts “i-forked-a-vpn-app-so-my-phone-could-find-my-house”
39ac466
Post
Update Blog Posts “tailscale-headscale-setup-blog”
ac41046
Fix
Update to correct microphone model
1ade511
July 2026
Feature
redesign contact page, fix casing across pages
5d23d45
Post
Update Blog Posts “tailscale-headscale-setup-blog”
b0b7fdc
Feature
split gallery into paginated collections, add Stack page
fe3d282
Fix
match Apple Music embed theme to site's dark/light toggle
0222f4f
Feature
add live GitHub stats and contribution graph to About page
eea1e75
Fix
self-host decap-cms bundle instead of loading from unpkg
07ce489
Feature
add Decap CMS admin panel, fix blog post timestamps
46ba481
Feature
use profile pic as favicon, optimize avatar, update YouTube link
35ce0d2
Feature
add RSS explainer page, restyle footer with social icons
23ed77f
Feature
add /now page and RSS feed for the blog
24d72bc
Feature
add planespotting photo gallery page
63a41f5
Feature
add robots.txt and generated sitemap.xml
798d93d
Fix
output flat .html files instead of dir/index.html for prerendered routes
a8de765
Feature
serve bare routes as 200 rewrites instead of 308 redirects
1ad67f5
Feature
prerender all routes for crawler/AI-agent visibility
5938fc7
Feature
Update homepage and about description
48d0a09
Feature
Update english language flag from UK to US
38500c3
Fix
give BlogPost a single template root so page transitions work
05a47d9
Fix
label languages as 1st/2nd language, drop fluency wording
269f724
Feature
add languages section to about page
1eaf8e5
Feature
embed favorite rock playlist on about page
f0cd0d3
Feature
Added profile picture on main page, changed about descriptions
0b849c2
Feature
Added new blog post and gitignored obsidian files.
a4f639d
June 2026
Feature
add dark/light mode toggle
cb215b8
Feature
add DragonSea MC project
67e12fb
May 2026
Fix
Fix config
027f1a0
Feature
add multi-page routing, blog, navigation, and polish
b807316
March 2026
Feature
initialize Vue 3 project with Vite and Tailwind CSS
4a7b321
February 2026
Change
Fixed mobile menu broken on terminal page
5df6a0e
Change
Added/Fixed missing translations for chinese, replaced placeholder projects with actual ones
7a8547c
Change
Added interactive terminal and added details about me to the about page :)
302692a
Change
Deleted unecessary styles
6fa02e8
Change
Changed some translations and styles
26272a5
Change
Updated website to deprecate "#" anchors and instead use the good ol' html redirects, updated page to include chinese and english locales
a6f887f
Change
Initial commit for my own website
41bc46b
189 commits · index rebuilt 2026-11-12.