Changelog

This is the site's own commit history, generated straight from Git — every change to the code, published as it happens. Some entries are user-facing (a new page, a redesign); others are internal plumbing (a dependency bump, a CSS fix) that won't mean much unless you're curious how the site is built. See the colophon for how it all fits together.

  1. Merge pull request #24 from fingerguns/docs/drift-sweep-2026-09-07
  2. docs: re-point citations past the image-validation build step
  3. Merge remote-tracking branch 'origin/main' into docs/drift-sweep-2026-09-07
  4. feat(build): fail the build on an image that will not resolve
  5. chore: rebuild for the recovered Veri post image
  6. docs: the third archive view left four sentences behind
  7. Merge remote-tracking branch 'origin/main' into docs/drift-sweep-2026-09-07
  8. fix(maps): make the dark basemap readable
  9. feat(thinking): a third archive view, on a map
  10. chore: rebuild for backfilled video posters
  11. fix(scripts): download the video before decoding, and name the real env vars (#26)
  12. fix(thinking): repair blank video and YouTube tiles in the grid (#25)
  13. docs: re-point the two citations 51ed745 moved
  14. Merge remote-tracking branch 'origin/main' into docs/drift-sweep-2026-09-07
  15. feat(location): high-contrast heatmap dots, and name a dot on click
  16. docs: drift sweep — recompute the matrix totals, re-point both plans
  17. fix(admin): name R2 and blob: in the CSP so video uploads work again (#23)
  18. feat(admin): give every tab its own URL
  19. fix(health): read the job dot by recency, not by history
  20. feat(location): all-time heatmap, and drop the coordinate list
  21. feat(writing): unpublish and delete published posts
  22. feat(writing): reach the post editor from the admin and from the post
  23. feat(now): show walking distance beside the step count
  24. fix(admin): stop the tab bar wrapping to two rows on a phone
  25. docs: resolve T2 by test — cloud routines are GitHub-only
  26. docs: score GitHub vs Origin vs Codeberg with switch tripwires
  27. docs: record what the Forgejo plan's first step actually turned up
  28. chore: block secrets at commit time with a gitleaks pre-commit hook
  29. docs: analyse migrating off GitHub to Forgejo
  30. Merge pull request #21 from fingerguns/docs/drift-sweep-2026-08-28
  31. docs: correct claims that stopped being true across all three docs
  32. chore: keep the docs in the commit that changes behaviour
  33. feat(admin): move background job status into a Health tab
  34. docs: bring both colophons and the README up to date
  35. feat: move the footer Search link next to the theme toggle
  36. feat: default new visitors to dark mode
  37. test: cover the render helpers that run over every page
  38. chore: verify CI build cache write after Production env var fix
  39. chore: probe CI build cache write after Pages env var update
  40. chore: confirm the CI build cache can write after the token fix
  41. chore: re-run the CI build-cache write probe
  42. chore: trigger a build to verify CI can write the D1 build cache
  43. feat: add site-wide search at /search/
  44. refactor(build): move build-time caches from committed JSON to D1
  45. feat(worker): record background job outcomes and surface them in admin
  46. docs: add productization assessment and Phase 6 to the Origin migration
  47. Switch site font from Inter to Hanken Grotesk.
  48. Fix admin Location map drawing one line through unrelated visits.
  49. Update README and colophon for markdown linting, tagging, and CSP.
  50. Add markdown linting (markdownlint-cli2).
  51. Split each Sharing tag's label into one hashtag per term.
  52. Turn Sharing topic tags into hashtags on cross-posted links.
  53. Update README for Sharing archive, security headers, and auto-tagging.
  54. Harden .gitignore against future accidental commits.
  55. Auto-tag Sharing links on add, matching how Reading already works.
  56. Warm up dark mode, reskin MapLibre controls, add Changelog intro.
  57. Add CLAUDE.md and the Cursor Origin migration plan.
  58. Fix CSP still blocking the /now map: add cdn.jsdelivr.net to connect-src.
  59. Fix CSP breaking the MapLibre map on /now.
  60. Harden webmention links, add security headers, parallelize build fetches.
  61. Document Sharing tag filter and unfurl cards in colophon.
  62. Refresh Spotify thumbnail and video poster caches.
  63. Unfurl Sharing archive links into preview cards.
  64. Add tag filter dropdown to Sharing archive.
  65. Fix Sharing title fetch for YouTube links via oEmbed.
  66. Update colophon for GPS fallback window and admin coords toggle.
  67. Widen GPS lookup window for Thinking neighborhood labels.
  68. Add show/hide toggle for admin location coordinates.
  69. Update colophon and READMEs for recent site changes.
  70. Switch admin Location tab to MapLibre and load 1000 points.
  71. Update About page photo.
  72. Compress Bluesky link-card thumbnails before upload.
  73. Fix neighborhood highlight disappearing on Now map theme toggle.
  74. Collapse MapLibre attribution on Now page by default.
  75. Use MapLibre only for Now page Current Location map.
  76. Add zoom controls to MapLibre map on Now page.
  77. Fix MapLibre map failing to appear on Now page.
  78. Add MapLibre OpenFreeMap below CARTO map on Now page.
  79. Use CARTO Voyager and Dark Matter tiles on Now location map.
  80. Serve Now neighborhood map via /api/locations/now.
  81. Replace Now Living section with neighborhood OpenStreetMap.
  82. Update Now page Working section with CircleCI focus areas.
  83. Fix broken Spotify episode thumbnails in Thinking grid.
  84. Rename Elsewhere Socials to Feeds and refresh docs.
  85. Update Now page Working section with CircleCI role.
  86. Link Thinking location footers to Google Maps and rename Now steps section to Walking.
  87. Add Oura step sync for /now/ and fix NYC neighborhood geocoding.
  88. Show thinking post footer on homepage (#20)
  89. Fix Overland ingest reliability and simplify admin Location tab.
  90. Fix Thinking post footer layout and location separators.
  91. Add admin Location tab and improve NYC neighborhood geocoding.
  92. Add private Overland GPS tracking and neighborhood labels on Thinking posts.
  93. Improve Thinking grid thumbnail resolution for retina displays.
  94. Add lightbox tap/click zoom and fix truncated section tooltips.
  95. Use Claude Fable for section tooltips and all Anthropic calls.
  96. Revert "Add Watching section with Letterboxd film log and admin."
  97. Add Watching section with Letterboxd film log and admin.
  98. Add custom cover for James Baldwin: A Biography.
  99. Log Anthropic API token usage to D1.
  100. Replace Must Reads genre chips with a dropdown.
  101. Add Latest and Must Reads sub-tabs to Reading admin.
  102. Merge pull request #19 from fingerguns/cursor/must-reads-genre-tagging-2a1b
  103. Add Must Reads genre tagging with AI assignment and filter UI
  104. Merge pull request #18 from fingerguns/cursor/power-and-glory-cover-cf55
  105. Set The Power and the Glory cover to Penguin Classics edition.
  106. Update colophon and README for recent archive features.
  107. Add Thinking filter deep links and Jitterbug Perfume cover.
  108. Merge pull request #17 from fingerguns/cursor/update-now-page-working-25c0
  109. Update Now page Working section to Back in Brooklyn
  110. Add custom Must Reads covers and simplify tag cloud script.
  111. Refine Must Reads intro prompts and add tag cloud tooling.
  112. Use Claude Opus for Reading tab intro redrafts.
  113. Fix Reading tab intro AI refresh after model deprecation.
  114. Update Spotify thumbnail and video poster caches from latest build.
  115. Auto-redraft Reading tab intros when books change.
  116. Add intro copy to Reading Latest and Must Reads tabs
  117. Route Reading archive to /reading/latest and sync Spirits cover
  118. Merge pull request #16 from fingerguns/cursor/reading-path-urls-4621
  119. Use path URLs for Reading tabs instead of hashes
  120. Fix Thinking filter icons staying lit after toggle off
  121. Fix mobile archive toolbars and add Reading tab deep links
  122. Keep Thinking toolbar on one mobile row with filters left
  123. Match Thinking archive toolbar layout to Reading archive (#15)
  124. Merge pull request #14 from fingerguns/cursor/pedro-paramo-cover-fix-b7c6
  125. Fix Pedro Páramo cover by merging favorites JSON overrides at build time
  126. Reuse Latest covers for matching reading favorites (#13)
  127. Reading admin: manage Books Everyone Should Read in D1 (#12)
  128. Add Bookshop affiliate links and Reading archive tabs (#11)
  129. Add Bookshop.org affiliate links to Reading posts (#10)
  130. Hide embeddable YouTube and Spotify URLs in Thinking post text.
  131. Update colophon and README for recent site features.
  132. Add collapsible Socials links under Elsewhere on the homepage.
  133. Update About page photo to new portrait at 305px width.
  134. Sort Reading entries by read month, not date added
  135. Refresh section header tooltips and improve hint regeneration
  136. Reset Thinking type filters on each archive visit
  137. Apply Thinking type filters in list view too
  138. Right-align Thinking type filters on mobile toolbar row
  139. Put Thinking toolbar icons on one tight row on mobile
  140. Keep Thinking grid filters on one line on mobile
  141. Restore native video grid thumbnails via stored JPEG posters
  142. Speed up Thinking grid thumbnails with resized images
  143. Show all Thinking grid thumbnails until a filter is selected
  144. Defer Thinking grid media until grid view and viewport
  145. Invert Thinking grid filters to solo-select from all-off default
  146. Fix Thinking grid filters not hiding tiles
  147. Add Thinking grid type filters and Tt badge on text thumbnails
  148. Use YouTube video thumbnails on Thinking grid tiles with logo badge
  149. Show Spotify album art on Thinking grid tiles with logo badge
  150. Use clearer camera lens icon on Thinking grid photo thumbnails
  151. Use video first frame as Thinking grid thumbnail for native video posts
  152. Add camera icon badge to Thinking grid photo thumbnails
  153. Fix Thinking grid text/icon collision on desktop
  154. Reading grid: 3 columns on desktop, keep 2 on mobile
  155. Add optional author field for reading entries to improve cover search
  156. Reading covers: fall back to title search when exact ISBN misses on Apple/Google
  157. Reading: multi-source cover picker (Open Library, Apple Books, Google Books)
  158. Guard Reading cover title-search fallback against false matches
  159. Switch Reading grid cover lookup to Open Library
  160. Add grid view to Reading archive: storefront-style 2-column book covers
  161. Make Thinking grid thumbnails responsive on mobile: locked 3-column grid
  162. Update Walt Whitman colophon for grid view, media badges, and embeds
  163. Update colophon and README for Thinking grid view and Spotify embeds
  164. Swap video badge icon from play button to video camera glyph
  165. Replace Thinking view toggle text with list/grid icon buttons
  166. Add media-type icon badges to Thinking grid text cards
  167. Merge remote-tracking branch 'origin/main'
  168. Add grid view to Thinking archive.
  169. Spotify embeds: use compact 152px height for all link types
  170. Add Spotify link embeds to Thinking notes
  171. Update colophon and README for Bluesky video-service syndication
  172. Bluesky: post video via video.bsky.app processing service
  173. Revert Giphy GIF integration in Thinking
  174. Giphy picker: make close button a plain X, no box
  175. Fix Giphy picker UI: stop cropping thumbnails, align close button
  176. Fix Thinking admin: hidden previews/GIF panel showing on load
  177. Add Giphy GIF option to Thinking
  178. Merge pull request #9 from fingerguns/cursor/unfurl-youtube-thinking-c44e
  179. Unfurl YouTube links in Thinking posts as native embeds
  180. Revert portrait photo/video sizing: single Thinking media always fills the blog width
  181. Shrink portrait Thinking videos to match the 2-photo grid tile width
  182. Widen single portrait Thinking photo to match the 2-photo grid tile width
  183. Refine Thinking photo grid: portrait single photos shrink to 224px, three-photo grid centers the lone bottom tile
  184. Scale Thinking video player to the full blog width
  185. Merge pull request #8 from fingerguns/cursor/update-readme-colophon-6a08
  186. Update README and colophon to reflect Webmentions and mobile lightbox
  187. Merge pull request #7 from fingerguns/cursor/add-about-page-disclaimer-0301
  188. Add employer disclaimer to About page
  189. Add Walt Whitman style toggle to the colophon, for fun
  190. Fix horizontal scroll on Thinking archive: wrap long URLs/hashtags on mobile
  191. Apply full-bleed Thinking lightbox in phone landscape orientation too
  192. Remove lightbox image corner rounding; full-bleed photos in mobile lightbox
  193. Update colophon and README for multi-photo Thinking, permalink syndication, and Mastodon/Bluesky video fixes
  194. Add infinite swipe between Thinking lightbox photos on mobile.
  195. Fix Thinking lightbox to use the full viewport width.
  196. Size Thinking lightbox images to the viewport, not the blog column.
  197. Crop Thinking multi-photo thumbnails to equal squares.
  198. Enable up to four photos per Thinking post.
  199. Merge pull request #6 from fingerguns/cursor/mastodon-video-async-processing-9e72
  200. fix: poll Mastodon media API until video is processed before posting status
  201. Merge pull request #5 from fingerguns/cursor/update-now-page-working-90e1
  202. Update Now page Working section to summer holiday in Sifnos
  203. Merge pull request #4 from fingerguns/cursor/video-thumbnail-mobile-fix-6205
  204. Fix video thumbnail rendering on mobile by appending #t=0.001 to src
  205. Fix Bluesky video syndication for iPhone MOV files.
  206. Include Thinking permalink in syndicated media post text.
  207. Merge pull request #3: native audio/video playback in syndicated feeds
  208. feat: native audio/video syndication to micro.blog, Mastodon, and Bluesky
  209. Fix Thinking breadcrumb separator typography.
  210. Revert Thinking breadcrumb to pre-mobile-typography-churn state.
  211. Restore h2 Thinking label in breadcrumb for homepage typography.
  212. Fix Thinking breadcrumb three-line break on iOS Safari.
  213. Fix Thinking breadcrumb splitting across three lines on mobile.
  214. Fix Thinking breadcrumb wrapping on mobile.
  215. Fix Thinking breadcrumb typography mismatch.
  216. Align Thinking breadcrumb label and date visually.
  217. Match Thinking breadcrumb date weight and size to section label.
  218. Fix Thinking breadcrumb date typography.
  219. Unify Thinking breadcrumb kicker typography on one line.
  220. Fix Thinking breadcrumb to two lines and match homepage site title.
  221. Restyle Thinking permalink breadcrumb to match site typography.
  222. Add breadcrumb header to Thinking permalink pages.
  223. Edge-cache media and prefetch video on Thinking permalinks.
  224. Speed up Thinking video uploads with presigned direct-to-R2 upload.
  225. Show upload progress for Thinking video and large media posts.
  226. Accept iPhone MOV videos for Thinking uploads.
  227. Prefix audio and video Thinking syndication with Audio: or Video:.
  228. Add MP4 video posts to Thinking via R2.
  229. Update colophon for audio Thinking, media proxy, and AI tooltips.
  230. Append rommy.blog link to audio Thinking syndication on Mastodon.
  231. Include post titles in Writing and Reading syndication text.
  232. Serve Thinking media same-origin for iOS audio playback.
  233. Add audio posts to Thinking (Voice Memos M4A).
  234. Compress photos over 5 MB before upload instead of rejecting them.
  235. Revert 5 megapixel Thinking photo compression; keep 5 MB limit.
  236. Fix Thinking photo uploads blocked by admin 5 MB client check.
  237. Compress Thinking photos over 5MP before upload to R2.
  238. Add section hover tooltips with AI-powered refresh on content changes.
  239. Merge pull request #2 from fingerguns/cursor/auto-deploy-worker-0345
  240. Add GitHub Actions workflow to auto-deploy Cloudflare Worker
  241. Merge pull request #1 from fingerguns/cursor/delete-reading-entry-68cc
  242. Add list/delete reading entries to worker and admin UI
  243. Only add Bluesky link card to Thinking posts over 300 characters
  244. Add Bluesky link card to Thinking posts
  245. Fix curly quotes in colophon href attributes
  246. Rewrite colophon with tighter prose
  247. Remove Mastodon from Elsewhere links
  248. Update colophon: Mastodon syndication, link cards, Webmentions
  249. Use link title instead of "Sharing:" prefix in syndication
  250. Add link card unfurling for Writing, Reading, and Sharing syndication
  251. Remove Farcaster syndication from worker and schema.
  252. Add Farcaster syndication via Neynar
  253. Add Mastodon syndication (@rommy@mas.to)
  254. Add Mastodon (@rommy@mas.to) to Elsewhere links
  255. Add webmentions support
  256. Remove Remark42 comments from blog
  257. Fix Remark42 dark mode: beat base CSS specificity and target .K_P form class
  258. Remark42 dark mode: seamless container, lighter textarea, correct button
  259. Re-enable Remark42 comments on Writing posts
  260. Fix Remark42 dark mode: color-scheme and stale config cleanup
  261. Syndicate Writing, Reading, and Sharing to Bluesky and Micro.blog.
  262. Hide Remark42 comments until dark-mode styling is fixed.
  263. Inject Remark42 dark theme via __colors__ before CSS paints.
  264. Fix Remark42 dark mode without changing light styling.
  265. Revert Remark42 styling to the light-mode version that looked amazing.
  266. Fix Remark42 dark mode using body.dark instead of OS prefers-color-scheme.
  267. Rewrite Remark42 dark mode via prefers-color-scheme for seamless styling.
  268. Fix inverted Remark42 dark mode: dark frame, white input.
  269. Bust Remark42 iframe CSS cache and strengthen dark mode selectors.
  270. Seamless Remark42 dark mode matching rommy.blog palette.
  271. Note email sign-in option in colophon Remark42 section.
  272. Fix Remark42 theme for v1.16 CSS variable system.
  273. Improve Remark42 comment styling and document Cloudflare cache gotcha.
  274. Add Remark42 comments on Writing posts.
  275. Update colophon for Thinking hashtags and full admin archive.
  276. Link Thinking hashtags to Bluesky on site and in syndication.
  277. Show full Thinking archive labels and refresh colophon.
  278. Remove GitHub Pages CNAME; document Cloudflare-only hosting.
  279. Delete CNAME
  280. Use soft 300-character guide for Thinking admin textarea.
  281. Align Thinking photo picker and character counter on one row.
  282. Add live character counter to Thinking admin textarea.
  283. Fix Thinking archive load in admin.
  284. Refactor build pipeline and Thinking infrastructure.
  285. Store Thinking posts in D1 instead of fetching Micro.blog at build time
  286. Put Thinking delete actions on their own line below the blurb.
  287. Fix delete panel styling on mobile browsers.
  288. Fix Thinking delete confirmation italics under font-synthesis: none.
  289. Restyle Thinking delete confirmation as italic inline links.
  290. Use post-page delete confirmation instead of pop-ups.
  291. Fix mobile Thinking delete with buttons and admin archive list.
  292. Fix Thinking delete on Brave mobile via same-origin API.
  293. Fix microblog body styles dropped in delete link change.
  294. Style Thinking delete as muted links beside timestamps.
  295. Add Thinking delete on archive with Bluesky syndication tracking.
  296. Increase homepage archive arrow size.
  297. Revert homepage section dividers.
  298. Add horizontal dividers between homepage sections.
  299. Fix Reading sort: newest added first, preserve migration order.
  300. Restore optional 30-day remember-me for admin blog password.
  301. Harden admin security (step 1): rate limits, no stored password.
  302. Update colophon and README for current link and OG behavior.
  303. Remove build-time link preview cards; keep plain links in Thinking.
  304. Fix link preview titles and use compact Bluesky-style cards.
  305. Add OG images for Thinking/Writing and link preview cards in Thinking.
  306. Add MIT license for project code.
  307. Add README documenting rommy.blog stack and setup.
  308. Update colophon for current photo workflow and admin UX.
  309. Fix Thinking photo picker alignment; restore filename font size.
  310. Shrink Thinking photo filename and improve icon alignment.
  311. Remove PHOTO label from Thinking tab; keep icon picker row.
  312. Remove admin deploy timing note paragraph from HTML.
  313. Remove admin deploy timing note from footer area.
  314. Remove Thinking photo format and size hint from admin.
  315. Remove Writing photo workflow hint from admin.
  316. Center Thinking photo filename with icon using flexbox.
  317. Align Thinking photo filename with larger centered icon.
  318. Restore Thinking filename text size and space before format hint.
  319. Match Thinking photo picker to compact framed image icon.
  320. Replace Thinking file picker with photo icon and small filename label.
  321. Photo bar: link-style controls, hide when caret leaves image, more submit spacing.
  322. Polish photo toolbar: compact one-line layout, hide on deselect.
  323. Move photo wrap controls out of Quill toolbar into a dedicated bar.
  324. Make Writing toolbar Wrap and Delete labels always visible.
  325. Add delete/remove for photos in Writing and Thinking admin.
  326. Fix Writing image text wrap in Quill and published HTML.
  327. Add R2 image uploads to Writing with Quill wrap controls.
  328. Update colophon for D1, R2 photos, Bluesky compression, and portrait display.
  329. Show portrait thinking photos at half size with click to enlarge.
  330. Compress Thinking photos for Bluesky only; keep originals elsewhere.
  331. Clarify Thinking photo limits and per-service error messages.
  332. Add photo upload to Thinking admin (R2, Micropub, Bluesky).
  333. Center Compose and Drafts sub-tabs on WRITING tab
  334. Update colophon to reflect D1 backend migration
  335. Add spacing between WRITING lead and sub-tabs
  336. Redesign WRITING tab with Compose and Drafts sub-tabs
  337. Add delete post option on writing pages with confirmation
  338. Trigger Pages redeploy with D1 env vars
  339. Phase 2: migrate all blog content to Cloudflare D1
  340. Update colophon: hosting moved to Cloudflare Pages
  341. Restore changelog: fetch full git history on Cloudflare Pages builds
  342. Rebuild site
  343. Update thinking via admin
  344. Allow admin CORS from rommy-blog.pages.dev
  345. KV drafts + build-pages.mjs for Cloudflare Pages migration
  346. Revert KV drafts and Pages migration — back to localStorage + GitHub Pages
  347. Add build-pages.mjs for Cloudflare Pages (outputs to dist/)
  348. Add node_modules to .gitignore for Cloudflare Pages deploy
  349. KV-backed draft auto-save (cross-device, replaces localStorage)
  350. Rebuild site
  351. Update thinking via admin
  352. Link 'crunch a lot of numbers' to LinkedIn on About page
  353. Update contact link text on About page
  354. Rebuild site
  355. Update thinking via admin
  356. Rebuild site
  357. Update thinking via admin
  358. All site dates display in ET (linklog, thinking, changelog, /now)
  359. Display all dates in ET; fix Haiku #1 and #2 dates (were UTC)
  360. Rebuild site
  361. Update posts.json for: Haiku #3
  362. Add post: Haiku #3
  363. Rebuild site
  364. Update thinking via admin
  365. Update post metadata: haiku-2
  366. Edit post: haiku-2
  367. Update post metadata: haiku-2
  368. Edit post: haiku-2
  369. Update post metadata: haiku-2
  370. Edit post: haiku-2
  371. Update post metadata: haiku-2
  372. Edit post: haiku-2
  373. Update post metadata: haiku-2
  374. Edit post: haiku-2
  375. Update post metadata: haiku-2
  376. Edit post: haiku-2
  377. Update post metadata: haiku-2
  378. Edit post: haiku-2
  379. Update post metadata: haiku-1
  380. Edit post: haiku-1
  381. Update post metadata: haiku-2
  382. Edit post: haiku-2
  383. Update post metadata: haiku-2
  384. Edit post: haiku-2
  385. Revert Quill Enter override to default behavior
  386. Enter = soft line break in editor; double Enter = paragraph on save
  387. Update post metadata: haiku-2
  388. Edit post: haiku-2
  389. Rebuild site
  390. Update posts.json for: Haiku #2
  391. Add post: Haiku #2
  392. Hide draft notice after publish until new content is typed
  393. Rebuild site
  394. Update posts.json for: Haiku #1
  395. Add post: Haiku #1
  396. Move draft notice inline to the right of the Publish button
  397. Update post metadata: the-importance-and-power-of-routine
  398. Edit post: the-importance-and-power-of-routine
  399. One-click edit: post pages link to admin, admin handles ?post=slug
  400. Edit: remove comma in routine post
  401. Edit: add 'and wrote' to routine post
  402. Edit: add 'on Zoom calls' to routine post
  403. Strip Quill empty paragraph spacers from writing posts
  404. Add auto-save draft to Writing tab
  405. Rebuild site
  406. Update posts.json for: The importance and power of routine
  407. Add post: The importance and power of routine
  408. Rebuild site
  409. Update thinking via admin
  410. Clear thinking for resubmit
  411. Auto-link URLs as Bluesky facets in THINKING posts
  412. Rebuild site
  413. Update thinking via admin
  414. Revert thinking to previous post
  415. Update thinking
  416. Auto-link bare URLs in THINKING text
  417. Add /colophon/ page, Changelog // Colophon in all footers
  418. Rebuild site
  419. Update thinking via admin
  420. Fix contact form submit button visibility (wrong CSS variable)
  421. Add spacing before Get in touch link on about page
  422. Add /contact/ page with Formspree form, link from about page
  423. Add GA4 tracking (G-L1CC5F3DP8) across all pages
  424. Fix THINKING section layout on homepage after div/span change
  425. Match THINKING text formatting on homepage and /now/ to the thinking page
  426. Rebuild site
  427. Render newlines in THINKING text as line breaks on homepage and /now/
  428. Rebuild site
  429. Add sharing: 10 Best Solid Colognes for Men | Man of Many
  430. Rebuild site
  431. Rebuild site
  432. Update thinking via admin
  433. Rebuild site
  434. Update thinking via admin
  435. Trigger follow-up rebuild after THINKING post for micro.blog sync
  436. Rebuild site
  437. Update thinking via admin
  438. Mirror THINKING posts to Bluesky via app password
  439. Thinking: individual static post pages, dates link internally
  440. Replace '← Home' with '←' on all pages
  441. Home: show only arrows on see-more links
  442. Now: section headings match homepage style (caps, grey, small)
  443. Now: update Working blurb
  444. Thinking: more space between heading and first post
  445. Thinking: add space between post and timestamp
  446. Rebuild changelog
  447. Thinking: move datetime below post content
  448. Rebuild site
  449. Update thinking via admin
  450. Writing: YYYY-MM-DD date format on post pages
  451. Thinking: only show posts from 2026 onward
  452. Rename /microblog/ to /thinking/
  453. Microblog: add // separator between date and time
  454. Microblog: YYYY-MM-DD HH:MM date format
  455. Microblog: YY:MM:DD HH:MM 24h date format
  456. Rebuild changelog
  457. Microblog: link dates to original posts on rommy.micro.blog
  458. Rebuild site
  459. Update thinking via admin
  460. Schedule hourly rebuild for microblog feed
  461. Thinking: add See more link to /microblog/
  462. Rename microblog page heading to micro.blog
  463. Microblog: use YYYY-MM-DD date format
  464. Add /microblog page from micro.blog feed
  465. Mirror THINKING posts to micro.blog via Micropub
  466. Rebuild site
  467. Update thinking via admin
  468. Rebuild site
  469. Update thinking via admin
  470. Footer: admin link lowercase in parens, left-grouped with copyright
  471. Add Admin footer link; hide tabs until signed in
  472. Admin: fix mobile zoom on tab switch, responsive layout
  473. Fix italic not rendering in Quill editor
  474. Rebuild changelog
  475. Writing tab: Quill rich text editor with theme-aware styling
  476. Rebuild site
  477. Update thinking via admin
  478. Admin: Login tab with remember-me, session-gated forms
  479. Admin: persist login session for 30 days via localStorage
  480. On Intention: replace 'whereas' with 'and'
  481. Rebuild: No Longer Human first in reading
  482. Rebuild changelog after rebase
  483. Reading: preserve insertion order (newest first)
  484. Rebuild site
  485. Update thinking via admin
  486. Rebuild site
  487. Add reading: No Longer Human
  488. Rebuild site
  489. Update thinking via admin
  490. Rebuild site
  491. Update thinking via admin
  492. Fix infinite scroll: anchor sentinel to body bottom, not after list
  493. Fix changelog: fetch full git history in CI
  494. Rebuild site
  495. Update posts.json for: On intention
  496. Add post: On intention
  497. Admin: fix spacing between Body label and hint text
  498. Admin: capitalize WRITING in new post lead text
  499. Remove House of the Spirits test entry from reading
  500. Reading tab: remove bookshop search, manual URL entry only
  501. Rebuild site
  502. Add reading: House of the Spirits
  503. Reading tab: search bookshop.org on submit instead of on-type
  504. Reading tab: auto-fetch bookshop.org URL from title search
  505. Sharing tab: auto-fetch page title from URL
  506. Admin: add Reading and Sharing tabs
  507. Admin: rename New Post tab to Writing
  508. Admin: tabbed UI for Thinking vs New Post
  509. Extend admin with new post form and update worker
  510. Point reading links to bookshop.org product pages
  511. Rebuild site
  512. Update thinking via admin
  513. Rebuild site
  514. Update thinking via admin
  515. Rebuild site
  516. Update thinking via admin
  517. Rebuild site
  518. Update thinking via admin
  519. Rebuild site
  520. Update thinking via admin
  521. Configure admin API URL for Cloudflare Worker
  522. Add admin UI and worker for updating Thinking
  523. Reword Veri post opening as two sentences
  524. Update Veri post opening paragraph
  525. Reword opening line in Veri post
  526. Fix spelling: enamored in Veri post
  527. Add NYTimes bubble house article to sharing
  528. Fix wording in Veri post
  529. Update thinking
  530. Add Veri post with floating Reddit ad image
  531. Add Inside the Box by David Epstein to reading
  532. Add new post: It's the beginning of spring...
  533. Update thinking
  534. Update thinking
  535. Update thinking
  536. Update thinking
  537. Update thinking
  538. Revert See more to right-aligned (option 1)
  539. Style See more as centered rule divider
  540. Style See more as flush-left underlined CTA
  541. Right-align See more link
  542. Align See more link with list link column
  543. Rename section heading to Thinking
  544. Rename NOW section heading to Microthought
  545. Add Buttondown subscribe link to footer on all pages
  546. Fix reading time flex layout on mobile (wrap date in span)
  547. Move reading time to same line as date, right-justified
  548. Add nownownow.com to sharing
  549. Use grid layout for post lists on all screen sizes
  550. Add /now page linked from Elsewhere section
  551. Move Changelog to same line as Atom feed in footer
  552. Add OG tags, reading time, back-to-top, infinite scroll, and changelog
  553. Use fixed 6.5rem date column on mobile to prevent wrapping
  554. Fix wrapping dates on mobile with nowrap and max-content column
  555. Restore date column min-width so reading links align with other sections
  556. Fix mobile grid to not affect desktop layout
  557. Mobile rendering improvements for iPhone
  558. Update Cursor to Sonnet 4.6 in AI post title and meta
  559. Preface Cursor post title with [AI]
  560. Fix datetime on Artsy link so it sorts to top
  561. Add [Purchased] Scott Sueme Overlap to sharing
  562. Add dark/light mode toggle to footer
  563. Switch to light mode: warm off-white background, dark text
  564. Rename Thinking section to Now
  565. Sharing: add Kengo Kuma Angers Cathedral (Dezeen)
  566. Update Thinking
  567. Add sharing archive page and update sitemap
  568. Sharing: add Empty Chairs by Liu Xia (Poetry Foundation)
  569. Sharing: add Upcoming readings by J.T. Price
  570. Add post: I asked Cursor to describe this blog as a web designer
  571. Cap sections at 5 with auto-generated archive pages and See more link
  572. Strip hashtags from Sharing titles; link photos on About page
  573. Add About page linked from Elsewhere
  574. Sharing: remove OPEN SPACE channel link
  575. Sharing: add No Small Parts Life Aquatic clip
  576. Sharing: add Team Coco Jim Downey shorts
  577. Update Thinking
  578. Add post: On walking...a lot
  579. Remove site subtitle from homepage and feed
  580. Sharing: add OPEN SPACE YouTube channel
  581. Footer: make Atom feed link more visible
  582. Site subtitle: Unsolicited thoughts & opinions
  583. Update Thinking
  584. Site tagline: Unsolicited opinions
  585. Sharing: add Jim Jarmusch Criterion YouTube interview
  586. Remove colophon line; smaller footer typography
  587. Footer: copyright above subscribe, smaller muted styling
  588. Add © 2026 copyright line at bottom of site and posts
  589. Remove date from Thinking section and data
  590. Add Thinking section above Writing (single updatable thought)
  591. Revise "dressing well" post copy
  592. Add "What happened to dressing well and feeling good?" post
  593. Update site tagline
  594. Fix Bookshop link for Ten Planets
  595. Add Reading section
  596. Add dated Links section to homepage
  597. Add robots.txt and sitemap.xml
  598. Add LinkedIn to Elsewhere
  599. Remove Farcaster from Elsewhere
  600. Switch posts to folder-style URLs
  601. Use GitHub avatar as favicon
  602. Open only Elsewhere links in new tabs
  603. Add Farcaster and open links in new tab
  604. Order same-day posts by time
  605. Add "Vibes...coded." post
  606. Rename site title to rommy.blog
  607. Update CNAME
  608. Update CNAME
  609. Create CNAME
  610. Create README.md
  611. Move blog files to repository root
  612. Remove second post and update GitHub link
  613. Rename hello-world post to hello-from-cursor
  614. Update site name across pages and feed
  615. Update posts.json
  616. Update posts.json with site info
  617. Initial blog template upload