A chronological log of changes, features, and improvements made to this site. These are usually added by Google Gemini whenever it makes code updates (or I tell it to).
Site Update History
July 13, 2026
Steven W. Buehler2:09 pm EDT:Updated the geocache list label on the Overland map sidebar, changing (Premium Lock) to (geocaching.com members only).
Steven W. Buehler2:05 pm EDT:Included premium locked geocaches in the Overland map sidebar list, displaying them with a (Premium Lock) badge and linking directly to their post views while keeping their coordinates securely hidden from the map.
Steven W. Buehler2:03 pm EDT:Added geocaches found to the Overland Location History Map. Geocache finds are rendered on the map with a compass icon and a custom turquoise theme. Premium caches are securely filtered out from map and coordinate rendering.
Steven W. Buehler1:58 pm EDT:Added direct coord.info links on geocache posts if a Cache ID is provided, supporting both premium locked views and standard map views.
Steven W. Buehler1:39 pm EDT:Added a new 'Geocaching' channel and a dedicated 'Geocache' post type. Geocaches use a location-based format (with map, coordinates, and address) similar to check-ins, but display with a compass icon and indicate 'Geocache Found'. Added fields for Cache ID, Cache Name, and a 'Premium Cache' flag. For premium caches, location names and interactive maps are hidden from public online view, showing a secure lock notice instead. Also integrated local weather condition lookups for geocache posts based on coordinates and find date/time (displaying weather details on all geocache posts, including premium caches, while keeping coordinates secure).
July 12, 2026
Steven W. Buehler8:11 pm EDT:Added matching box styling (background-color, border, padding, and border-radius) around the Current Location and Recent Check-ins sidebar sections to match the Next Event sidebar.
Steven W. Buehler8:10 pm EDT:Updated the Next Event sidebar to omit the time portion, timezone, and timezone adjustment if no time is specified in the event datetime values (date-only events).
July 7, 2026
Steven W. Buehler8:34 pm EDT:Implemented POSSE syndication to Mastodon (mstdn.plus). Added helper functions to support uploading media and status updates via Mastodon's API, and integrated Mastodon as a syndication target in the publishing UI (new.php, edit.php) and Micropub API endpoint (micropub.php).
Steven W. Buehler8:12 pm EDT:Added visible Fediverse profile link and Mastodon icon pointing to @swb72@mstdn.plus in the site header navigation, index page sidebar, and hidden IndieWeb profile links list.
Steven W. Buehler7:58 pm EDT:Configured and verified ActivityPub / Fediverse endpoints:
- Created AAAA IPv6 DNS records on Cloudflare.
- Secured sensitive directories (data/ and db/) against public downloads.
- Added Mastodon profile verification link to the HTML head of all pages.
- Implemented automatic Follow-Accept ActivityPub responses and outbound real-time federation pushing to followers inboxes.
Steven W. Buehler5:22 pm EDT:Removed the New Post link from the unified site footer.
Steven W. Buehler5:21 pm EDT:Converted the body of the About page (about.php) to Markdown (saved in mdsources/about.md) and updated it to parse and render using ParsedownExtra. Created a shared render_footer() helper function in utils.php to unify the footer layout and links across all pages.
July 1, 2026
Steven W. Buehler11:47 am EDT:Removed event posts from the main index page (they are now accessible exclusively via the Events header navigation link).
Steven W. Buehler11:46 am EDT:Moved Events and Checkins channels from the dropdown menu directly to the header navigation, updated the Events page to display upcoming/ongoing events in ascending chronological order (filtering out already ended events), and removed published date and weather metadata from all event posts.
June 29, 2026
Steven W. Buehler6:53 pm EDT:Deleted all existing trip/activity posts from the database, removed the Activities channel, and deleted the activities processing script.
Steven W. Buehler6:52 pm EDT:Removed automated trip logging, including deleting the trip history tracking database table and disabling automatic Activity post generation from incoming Overland webhook summaries.
Steven W. Buehler6:49 pm EDT:Removed LinkedIn syndication support, deleted associated token/URN configuration files, and removed profile links from the site features list.
Steven W. Buehler6:41 pm EDT:Removed Threads syndication support and deleted all links to the Threads profile across the site, including updating the Micropub API configuration.
June 23, 2026
Steven W. Buehler7:21 pm EDT:Updated Threads syndication (syndicate_to_threads in utils.php) to support Carousel posts with multiple images/videos, matching the existing Instagram behavior. Also updated the post creator (new.php), editor (edit.php), and micropub endpoint (micropub.php) to pass all photo/video URLs to Threads. Verified LinkedIn syndication logic, which does not post media directly but links back to the original post (scraped by LinkedIn).
Steven W. Buehler7:20 pm EDT:Fixed a bug in the post editor (edit.php) that corrupted microformats JSON objects (like location data) by wrapping them in arrays upon saving, causing raw JSON strings to render on the site (e.g. post 327). Added automatic decoding of submitted JSON values to prevent future corruption. Also fixed a bug in the editor that only syndicated the first photo of a post to Instagram and Flickr, updating it to syndicate all photos (as a Carousel on Instagram and individual uploads on Flickr).
Steven W. Buehler9:04 am EDT:Added CORS preflight/access control headers to micropub.php and media.php, and added robust error handling, detailed syndication endpoint error reporting, and state preservation to new.php. Also updated the Instagram integration token and cleared cached credentials.
June 21, 2026
Steven W. Buehler3:05 pm EDT:Added timezone abbreviations (e.g. EDT, EST) to timestamps on the check-ins page (checkins.php).
Steven W. Buehler3:05 pm EDT:Centralized the header's channel select dropdown into a new helper function in utils.php and configured it to redirect users to the dedicated check-ins page (checkins.php) when selected.
Steven W. Buehler3:03 pm EDT:Redesigned the check-ins page to a simplified table layout and integrated daily check-ins onto the location map page with interactive markers, sidebar hovering, and formatted local timezone timestamps.
Steven W. Buehler2:56 pm EDT:Fixed a timezone parsing bug where Overland log timestamps (which are in UTC) were being parsed as local time when using the 'Autofill from Overland logs' feature, causing a 4-hour location offset discrepancy.
June 18, 2026
Steven W. Buehler5:26 pm EDT:Ensured HTML tags and links are stripped from syndications to Threads, Instagram, and LinkedIn.
June 16, 2026
Steven W. Buehler6:40 pm EDT:Added Micropub compatibility for Quill, including proper q=config formats for syndicate-to and channels, and support for p3k-channel parameter in post creations.
June 15, 2026
Steven W. Buehler1:43 pm EDT:Decreased the radius of route points on the location map to 1 for a cleaner, higher-density path rendering.
Steven W. Buehler1:42 pm EDT:Removed distinct start and end map marker overlays, rendering them as standard blue circle markers identical to the rest of the route points.
Steven W. Buehler1:41 pm EDT:Removed travel modes and the legend panel from the location map page to prevent confusing/incorrect start and end point indications.
Steven W. Buehler1:37 pm EDT:Improved the visual contrast of travel mode colors on the location map by assigning more distinct colors across the different transit types.
Steven W. Buehler1:35 pm EDT:Renamed the "Stationary" travel mode to "Other/Unknown" on the location map, updating both the legend and point tooltip descriptions for clearer context.
June 13, 2026
Steven W. Buehler9:57 pm EDT:Created a dedicated checkin editor page (edit_checkin.php) with a responsive list view and search filter, an interactive Leaflet map with a draggable marker, forward geocoding, and auto-fetching of coordinates and addresses from Overland logs. Linked checkin posts to this editor from individual post views and added a helpful recommendation tip inside the general editor.
Steven W. Buehler6:51 pm EDT:Indicated bookmark posts (with 'bookmark-of') as Bookmarks rather than Notes in ActivityPub outputs, and added support for Instagram syndication to include all uploaded post images (up to the first 10) as a carousel.
June 12, 2026
Steven W. Buehler5:51 pm EDT:Updated the location map to show 'I did not leave home that day' instead of 'No location data available' when all points are within the 100m home exclusion radius.
Steven W. Buehler5:46 pm EDT:Added a scale control (both imperial and metric) to the location map and fixed a timezone mutation bug in the database library where queries shifted display inputs and coordinate times to UTC.
Steven W. Buehler5:45 pm EDT:Color-coded location points on the map dynamically by travel mode (walk, run, bicycle, car, etc.) and added a dynamic legend panel that automatically filters itself to show only modes present on the map.
Steven W. Buehler5:44 pm EDT:Replaced start and end datetime fields on the location history map with a single calendar date picker and step navigation buttons, defaulting to the current calendar day in the America/New_York timezone.
Steven W. Buehler5:22 pm EDT:Removed drawing of route lines (polylines) on the location history map, displaying only individual coordinate point markers.
Steven W. Buehler5:20 pm EDT:Updated the location history map to enforce a 24-hour request limit, render all matching points without downsampling, exclude points within 100 meters of home coordinates, and show a message when no data is available.
Steven W. Buehler5:16 pm EDT:Improved location map performance under large date ranges by adding smart linear downsampling of Overland tracks to a maximum of 1,000 points, preventing browser render stalls.
Steven W. Buehler5:13 pm EDT:Added an interactive location history map (/overland_map.php) powered by Leaflet to visualize Overland tracks, featuring timezone-specific (America/New_York) range filters, presets, route statistics, and a route playback animation.
June 11, 2026
Steven W. Buehler6:34 pm EDT:Added support for Instagram syndication using the newer Instagram Graph API (with Instagram Login) for posts containing photos or videos, including automatic permalink retrieval.
June 10, 2026
Steven W. Buehler9:31 am EDT:Fixed a metadata bug in edit.php where saving post edits would truncate properties with multiple values (such as photos or syndication targets) to only their first element. Such properties are now displayed and processed as comma-separated values in the edit form.
Steven W. Buehler9:29 am EDT:Added support for converting articles (posts with a title/slug) containing multiple photos into responsive photo galleries with a built-in lightbox viewer.
June 9, 2026
Steven W. Buehler6:48 pm EDT:Added support for rendering multiple photos in h-entry posts as a responsive photo gallery grid with a built-in lightbox viewer.
Steven W. Buehler6:24 pm EDT:Updated Flickr photo syndication logic to automatically fall back to the photo's EXIF date and time (or file modification time) if no title is provided.
June 8, 2026
Steven W. Buehler6:57 pm EDT:Updated the syndication logic to use the public 'swb72.us' domain instead of 'pi.swb72.us' for all syndicated post links, media URLs, and content descriptions across LinkedIn, Threads, and Flickr.
Steven W. Buehler7:42 am EDT:Fixed Flickr syndication for multi-photo posts on both new.php and micropub.php endpoints, ensuring all uploaded photos are syndicated to Flickr instead of only the first one.
Steven W. Buehler7:35 am EDT:Allowed multiple photo and media uploads on the new post form (new.php), with backend support for processing multiple files, extracting location metadata, and rendering multiple inline photos.
June 6, 2026
Steven W. Buehler8:39 pm EDT:Updated the Privacy Policy page to include disclosures regarding OneSignal Web Push notifications, including data collection, storage, and instructions on how users can opt-out or unsubscribe.
Steven W. Buehler8:30 pm EDT:Added Web Push notification support using OneSignal, allowing visitors to subscribe to notifications on index, photos, updates, about, and lifestack pages, and automatically triggering push notifications when new public posts are published.
Steven W. Buehler3:02 pm EDT:Fixed a bug causing Overland activity posts (trips) to default to 'car' mode by updating the trip_history query in process_activities.php to match overlapping time windows instead of strict 60-second start-time windows. Also added control to prevent Threads syndication during CLI maintenance rebuilds.
June 5, 2026
Steven W. Buehler6:01 pm EDT:Advertised the Google WebSub Hub (PubSubHubbub) on both RSS (feed.xml) and JSON (feed.json) feeds to support real-time feed updates and push subscriptions.
Steven W. Buehler6:00 pm EDT:Added an ActivityPub follow button and Mastodon icon to the homepage author card, rel='me' profile verification link to the About page, and feed links to footer sections.
Steven W. Buehler5:59 pm EDT:Implemented ActivityPub content-negotiation on post pages (returning Note objects when requested with ActivityPub Accept headers) and added auto-discovery link tags to index.php and post.php.
Steven W. Buehler5:58 pm EDT:Added a full ActivityPub feed under @steven@swb72.us featuring a Person actor profile, an outbox collection with the latest 50 posts, followers/following collection stubs, and an inbox receiver. Integrated secure, on-demand RSA keypair generation for federated signature verification.
Steven W. Buehler1:32 pm EDT:Fixed a bug causing Overland activity posts (trips) to be classified as Notes and truncated on the homepage. Updated trip post detection and non-truncation logic to correctly identify "activity" type/property posts as Trips.
Steven W. Buehler1:31 pm EDT:Added distinct post-type classification for replies (posts containing an in-reply-to property or type reply), rendering them with a reply arrow icon and amber color.
Steven W. Buehler1:30 pm EDT:Added distinct post-type classification for trips, rendering them with a rolling suitcase icon and teal color instead of grouping them as location check-ins.
Steven W. Buehler1:27 pm EDT:Added unified post-type indicators (icons and labels from FontAwesome) to all post views (articles, photo posts, check-ins, events, reads, and notes) across all site sections, including single post view pages and archive lists.
Steven W. Buehler1:26 pm EDT:Added support for displaying a thumbnail of the first photo next to the excerpt text for articles that include images, styled as a premium responsive flexbox layout with a subtle hover zoom transition.
Steven W. Buehler1:24 pm EDT:Fixed typeface sizing consistency between post excerpts (.p-summary) and full posts (.e-content) on the homepage. Treated posts 84 and 86 correctly as articles (rather than photo posts) to ensure they truncate properly on the homepage. Added a camera icon and "Includes photos" indicator next to the "Continue reading..." link on homepage and article excerpts for articles with included images.
Steven W. Buehler1:03 pm EDT:Fixed markdown footnotes not rendering correctly on post pages by installing erusev/parsedown-extra and extending SafeParsedown from ParsedownExtra.
June 4, 2026
Steven W. Buehler11:51 am EDT:Configured Aperture as the primary Microsub endpoint.
June 3, 2026
Steven W. Buehler4:25 pm EDT:Fixed a bug causing duplicate Threads syndication posts when using the Web UI (new.php/edit.php) and Micropub requests. Resolved an issue where empty form fields for checkins and trips would falsely trigger auto-syndication to Threads, and added deduplication for all syndication target arrays.
Steven W. Buehler9:15 am EDT:Removed all traces of Mastodon from the site, including WebFinger mapping and auto-linking references. Added automatic capturing and database logging of syndicated post URLs for Threads and LinkedIn. Added display support for brand icons and links (using the u-syndication Microformats2 class) for syndicated posts (Threads, LinkedIn, Flickr) with hover scaling micro-animations.
June 2, 2026
Steven W. Buehler1:55 pm EDT:Restored automatic channel assignment mapping specifically for trip records, automatically routing them to the Activities channel when published or updated via the Micropub API.
Steven W. Buehler1:53 pm EDT:Removed all automatic channel assignment logic across the application (micropub.php, new.php, edit.php), giving the user full manual control over channel assignments via UI forms and the Micropub payload.
Steven W. Buehler10:19 am EDT:Implemented a fully integrated POSSE syndication workflow for Flickr. Added Flickr to the syndication targets list on post creation (new.php), post edits (edit.php), and Micropub GET configuration endpoints (micropub.php). Implemented syndicate_to_flickr() in utils.php to construct OAuth 1.0a signatures and perform multipart binary photo uploads using cURL, saving the resulting photo URLs directly back into post properties.
Steven W. Buehler8:54 am EDT:Created a beautiful, dedicated Privacy Policy page (privacy.php) detailing our Google Analytics tracking (G-XELZBN2LWT) and Disqus comment thread privacy practices, cookie policies, and respective user opt-out procedures, and added a dynamic Privacy Policy navigation link across the footers of all public pages.
Steven W. Buehler8:53 am EDT:Injected the Google Analytics tracking tag (gtag.js with measurement ID G-XELZBN2LWT) immediately after the head tag on all 12 user-facing PHP pages across the site to enable comprehensive traffic analytics.
Steven W. Buehler8:48 am EDT:Integrated Disqus comment thread support on all individual post detail pages (post.php) using the gloriously-awkward-life shortname and dynamic host-derived canonical URL mapping.
Steven W. Buehler8:44 am EDT:Resolved a UI bug on the post edit page (edit.php) that displayed the channel field twice (as both a generic text input and the styled select dropdown) by explicitly excluding channel and mp-channel from the dynamic custom field generator and properties processing loop.
Steven W. Buehler8:43 am EDT:Executed a comprehensive database migration to normalize the channel schema, renaming legacy "mp-channel" keys to "channel" inside the JSON properties column for all 29 active database posts, ensuring full alignment with the unified channel property design.
Steven W. Buehler8:36 am EDT:Consolidated channel properties across the application, renaming mp-channel to channel inside UI form controls, labels, and database properties JSON blocks while maintaining seamless backward compatibility for incoming mp-channel parameters on the Micropub API.
Steven W. Buehler8:34 am EDT:Refined checkins channel constraints to strictly require a non-empty checkin property (h-card object) on the post before permitting it in the checkins channel, resolving a bug where empty checkin fields in UI forms led to notes and articles being misassigned to checkins.
Steven W. Buehler8:33 am EDT:Removed the Mastodon social profile icon link from the sticky navigation header across all 11 pages of the site, maintaining clean spacing and complete layout safety.
Steven W. Buehler8:26 am EDT:Removed Mastodon syndication support entirely across the site, including eliminating the syndication checkbox option from the New/Edit forms, removing the API endpoints configurations (micropub.php), and deleting automatic checkin syndication to Mastodon.
Steven W. Buehler8:25 am EDT:Configured the post creation (new.php) and editing (edit.php) logic to automatically place the uploaded cover photo/media file at the top of article posts instead of appending it to the end.
Steven W. Buehler7:38 am EDT:Added the media upload field to the Note and Article post types on the New Post creation form (new.php), aligning them with the Edit Post form and allowing users to upload cover photos and media files directly when posting.
June 1, 2026
Steven W. Buehler11:25 pm EDT:Implemented custom tag-aware parsing in utils.php to correctly render ++text++ as HTML <ins>text</ins> elements, allowing post authors to format inserted text while safely skipping links and tag attributes.
Steven W. Buehler11:23 pm EDT:Upgraded the auto-link @mention parser in utils.php to utilize safe, tag-aware regular expressions that skip existing <a> blocks and HTML tags, resolving broken nested link rendering on posts containing custom markdown links to social profiles.
Steven W. Buehler11:16 pm EDT:Merged the handling of channel and mp-channel interchangeably across post creation, edits, and Micropub API endpoints, ensuring identical parameter mapping, unified database query filters, and clean elimination of redundant properties keys.
Steven W. Buehler11:13 pm EDT:Exposed and styled the mp-channel input field wrappers across the New Post (new.php) and Edit Post (edit.php) forms, standardizing label naming as Channel (mp-channel) and centralizing stylesheet styling for select elements.
Steven W. Buehler11:12 pm EDT:Scanned the database and cleaned up any existing historical posts where non-checkin posts had the checkins channel assigned.
Steven W. Buehler9:54 pm EDT:Restricted the checkins channel to only allow checkin posts across the web UI (creating and editing posts) and the Micropub API endpoint.
Steven W. Buehler1:06 pm EDT:Added a styled camera icon indicator badge ("Photo Post") in the post metadata headers across the main feed, single post view, and the dedicated articles, checkins, and events feeds to visually call out photo posts.
Steven W. Buehler12:58 pm EDT:Upgraded the Photos gallery page (photos.php) to comprehensively extract all photos from both properties["photo"] metadata and inline markdown/HTML content of all active (non-deleted) posts, automatically normalizing relative URLs and preventing duplicate images within the same post.
Steven W. Buehler12:57 pm EDT:Filtered out deleted posts from the Photos gallery query (photos.php) to ensure that photos from deleted posts are no longer rendered in the photo grid.
Steven W. Buehler12:56 pm EDT:Integrated the header channels filter dropdown across all remaining site pages (including Articles, Check-ins, Events, About, Life Stack, Single Posts, New Post, and Edit Post pages) to establish absolute layout and navigation consistency.
Steven W. Buehler12:52 pm EDT:Added the channels filter dropdown to the sticky navigation header on the Photos page (photos.php), aligning its layout and header features with the home feed page.
Steven W. Buehler12:52 pm EDT:Created a premium, responsive grid-based Photos gallery page (photos.php) with pagination, fluid hover micro-animations, glassmorphic image metadata overlays, and direct post permalink mapping. Integrated the new page into the navigation header of all site pages.
Steven W. Buehler12:49 pm EDT:Implemented automatic GPS metadata (EXIF) location extraction and reverse-geocoding from uploaded photo files across the Micropub Endpoint (micropub.php) and web interfaces (new.php and edit.php), automatically adding coordinates and city/state display names to posts.
Steven W. Buehler12:47 pm EDT:Added full support for the location property on Photo posts across the entire application, including the Micropub Endpoint (micropub.php) configuration and web interface forms (new.php and edit.php).
Steven W. Buehler12:44 pm EDT:Resolved a bug in micropub.php where JSON strings containing photo URLs sent by certain clients were not correctly decoded, preventing the images from showing in photo posts. Cleaned up historical photo posts in the database, and improved mp-channel detection robustness for both top-level and property-level requests.
Steven W. Buehler12:42 pm EDT:Added support for raw binary media uploads (direct POST body uploads with media content types, e.g. image/jpeg) to the Media Endpoint (media.php), fixing compatibility with iOS Shortcuts and background upload tools that do not use multipart/form-data.
Steven W. Buehler12:41 pm EDT:Increased the media upload and POST size limits on the server from 10MB to 100MB in both .user.ini and .htaccess to support uploading high-resolution photos and videos.
Steven W. Buehler12:40 pm EDT:Improved the Media Endpoint (media.php) to accept file uploads sent under alternative parameter names (like photo or file[]), and added helpful diagnostics to automatically detect and report when an upload is discarded due to PHP upload_max_filesize or post_max_size limits.
Steven W. Buehler12:07 pm EDT:Fixed a critical timezone mismatch in the historical weather system where querying Open-Meteo without a timezone parameter returned UTC temperatures, which were then incorrectly mapped directly to the local hour index of posts. Resolved this by passing the local timezone (resolved via coordinates) to the Open-Meteo API. Additionally, updated the sidebar's Current Location and the activity post generator to fetch historical weather correct to their specific timestamps instead of real-time weather, and successfully rebuilt all activity posts with the corrected conditions.
Steven W. Buehler12:00 pm EDT:Refined the Nominatim geocoding logic to fallback to hamlet before falling back to county when standard city-level designations are unavailable, regenerated all existing activity posts in the database using the new rules, and verified that check-ins, events, and the sidebars Current Location also leverage this sequence.
Steven W. Buehler10:19 am EDT:Fixed a timezone grouping bug on the updates history page where timestamps stored in UTC (such as the 9:54 pm EDT check-in update) were incorrectly grouped under the UTC calendar date (June 1st) instead of their converted local calendar date (May 31st).
Steven W. Buehler9:46 am EDT:Improved page navigation (previous/next page links) at the bottom of the home page by adding modern flexbox spacing, preventing the text and chevrons from bunching up, and implemented dynamic stylesheet cache-busting to ensure style updates are immediately loaded by all browsers.
Steven W. Buehler9:16 am EDT:Fixed a bug in activity post generation where non-car activity types (like walking and monorail trips) were incorrectly published as "Car Trips" due to empty mode fields in the trip summary telemetry. Resolved this by linking the trip summaries directly to the highly accurate modes in the trip history telemetry.
Steven W. Buehler9:08 am EDT:Moved the channels filter drop-down from the sidebar to the sticky navigation header to improve visual access and streamline layout space on the feed home page.
Steven W. Buehler9:04 am EDT:Updated the Nominatim geocoding logic to fall back to the county name when standard city-level designations are not returned by the API, and ran database migrations to update all existing activity posts and trip history segments from "Unknown" or state-only labels to their resolved county names (e.g., "Orange County, Florida").
May 31, 2026
Steven W. Buehler9:54 pm EDT:Automatically route and group all location check-ins into the dedicated 'Checkins' channel on creation and edit (via both the admin UI and Micropub APIs), and migrated all existing check-in posts in the database to the new channel.
Steven W. Buehler12:14 pm EDT:Enabled automatic syndication of all location check-ins and trip summaries to Mastodon and Threads on post creation, ensuring automatic social distribution across both networks for posts created via the admin UI, Micropub APIs, and the Overland webhook tracker.
Steven W. Buehler12:13 pm EDT:Added syndication options to the post edit form, enabling users to syndicate existing posts to Mastodon, LinkedIn, and Threads at any time after publication, and ensuring the database record maintains a comprehensive and cumulative list of all syndicated targets in the post properties.
Steven W. Buehler12:00 pm EDT:Implemented a full Meta Threads syndication flow, enabling automatic cross-posting of text, image, and video content to Threads on post creation (via both new.php and Micropub APIs), using the Meta Graph Threads API 2-step media container publishing workflow.
Steven W. Buehler11:08 am EDT:Fixed a rendering issue where SafeParsedown in safe mode escaped system-generated raw HTML media tags (like uploaded photo <img> tags) on post pages by temporarily extracting these safe tags before Markdown processing and restoring them afterward.
Steven W. Buehler11:06 am EDT:Added support for uploading media when editing posts and corrected post sorting to ensure accurate reverse chronological order across all pages by using SQLite's datetime() function to properly evaluate mixed timezone offsets.
Steven W. Buehler10:51 am EDT:Fixed an issue where Parsedown in safe mode double-escaped HTML entities (such as — to &mdash;) by introducing a custom SafeParsedown class that preserves standard HTML entities while keeping other raw HTML elements safely escaped.
May 30, 2026
Steven W. Buehler7:09 pm EDT:Optimized check-in posts' h-card rendering to only perform Nominatim reverse geocoding as a fallback when no address is provided in the request, preventing redundant geographical data from being appended.
Steven W. Buehler7:08 pm EDT:Refined check-in posts' location h-card by removing the redundant venue name and country lines from the address.
Steven W. Buehler6:59 pm EDT:Wrapped top-level execution and console logging in process_activities.php with a CLI check to prevent side-effects (like activity deletion) when included by the Overland webhook.
Steven W. Buehler6:59 pm EDT:Modified Overland webhook success response to return precisely {"result": "ok"} to match the expected format for the Overland app.
Steven W. Buehler6:58 pm EDT:Optimized SQLite connection management in overland.php to avoid database locks by utilizing a single connection, applying PRAGMA busy_timeout, and gracefully handling connection errors.
Steven W. Buehler5:59 pm EDT:Refined Updates page layout to better handle items with and without timestamps by grouping them separately.
Steven W. Buehler5:57 pm EDT:Updated Updates page to display localized timestamps for each entry.
Steven W. Buehler3:15 pm EDT:Added a Location History page and integrated logging into the Overland tracking script to detect city/state or mode changes.
Steven W. Buehler3:00 pm EDT:Removed stray 'p>' and redundant footer HTML from the bottom of several pages.
Steven W. Buehler2:30 pm EDT:Widened the sidebar to 400px and increased the overall page width to better accommodate the Instagram profile widget.
Steven W. Buehler2:15 pm EDT:Improved the Flickr sidebar section to display a dynamic 3x3 grid of the latest photos.
Steven W. Buehler2:00 pm EDT:Embedded official Flickr photostream for @stevenwatsonbuehler in the sidebar using official methods.
Steven W. Buehler1:45 pm EDT:Modified sidebar to be static rather than sticky for a more standard scrolling experience.
Steven W. Buehler1:30 pm EDT:Embedded the official Instagram profile widget for @thestudyofstarlight in the sidebar.
Steven W. Buehler1:10 pm EDT:Redesigned the Updates page to match the Life Stack aesthetic.
Steven W. Buehler12:55 pm EDT:Grouped site updates by date for better readability.
Steven W. Buehler12:45 pm EDT:Improved styling for RSVP and response links to ensure they are visually distinct.
Steven W. Buehler12:30 pm EDT:Retroactively updated all existing replies, likes, reposts, and bookmarks with page titles.
Steven W. Buehler12:15 pm EDT:Enhanced replies, likes, reposts, and bookmarks to automatically fetch and display the title of the target page.
Steven W. Buehler10:00 am EDT:Enhanced RSVP handling with automatic event name fetching and Webmention support.
Steven W. BuehlerFixed ordering of subitems on Updates page to ensure true reverse chronological sequence.
Steven W. BuehlerRefactored Updates page to strictly display all updates and subitems in reverse chronological order.
Steven W. BuehlerSimplified site navigation by removing channel-specific links from the header, now accessible via channel selection.
Steven W. BuehlerImproved Activity post syndication to Mastodon by including a clean text-based summary of the post content.
Steven W. BuehlerConfigured Activity posts for automatic syndication to Mastodon and disabled LinkedIn syndication.
Steven W. BuehlerUpdated Activity posts to display dual temperature units (F and C) for better accessibility and readability.
Steven W. BuehlerConverted trip posts to formatted Activity posts with weather data, automatic generation via Overland webhook, and improved UI styling.
Steven W. BuehlerRemoved all trip-related functionality, fixed map container layout overlap, and reordered the sidebar to appear above main content on mobile views.
May 28, 2026
Steven W. Buehler6:00 am EDT:Integrated weather data from Open-Meteo for posts and location display.