Adding AGENTS.md and llms.txt files across repositories to improve AI discoverability and documentation.
Added OG hero SVGs to all five project landing pages, bismuth fetch flags, and devlog project to croft-click
Replaced astronomical season detection with traditional Wheel of the Year sabbat dates, added midnight auto-update and reset-to-seasonal
Created the digital-person agent repository
Fixed personality card SVG clipping and switched to aturi.to for post links
Added More tools sections linking each project to the other four, and pointed all support links to ewancroft.uk/support
Swapped unicode symbols for Lucide icon components across malachite, opal, jasper, bismuth, tourmaline, landing-ui, and croft-click
Added hero SVG OG images to malachite, opal, jasper, bismuth, and tourmaline landing pages
Added publication fetching, expanded conversion options, and rebuilt parts of the converter UI.
OG image URLs were relative — crawlers need absolute URLs. Index page was also missing an OG image entirely.
Added --frontmatter and --output flags to the fetch subcommand, and bumped to 0.2.4.
Docsite client bundle dropped from 1.3MB to 12KB, devlog layout data optimised, website duplicate fetches eliminated
Each devlog post now generates its own OG image on demand using @ewanc26/og — warm amber on dark, with noise texture.
Every devlog entry was invisible on load — $state on an IntersectionObserver variable caused the effect to disconnect it before it could fire.
Umami analytics retired — all Umami script tags removed from bismuth-web, malachite-web, jasper-web, opal-web, and croft-click.
Split the monolithic layout.css and inline page logic into focused modules and components.
Porting the entire site from SvelteKit to Astro for ultimate static performance and a terminal-inspired layout.
Convert Twitter, Mastodon, Threads, and Nostr posts to Bluesky with thread splitting and TID-based rkeys.
Landing page at croft.click and a shared @ewanc26/landing-ui package for all web packages.
Converts site.standard.document records to Markdown with math and code highlighting.
Convert Instagram data exports into posts, stories, and videos on Grain or Spark while preserving original timestamps.
Full OAuth flow for importing Instagram posts to AT Protocol as Grain/Spark records.
Started using Letta Code — a persistent coding agent with memory. 80 commits across 15 repositories in four days.
Scripts for populating and maintaining the Sifa professional profile on AT Protocol.
Added pre-commit hooks and Nix flakes to all 30+ projects for consistent dev environments.
A WAFRN theme using the pds-landing Catppuccin terminal aesthetic — dark forest-green palette, JetBrains Mono, soft rounded cards.
Convert richtext-block documents from the Standard.site ecosystem (Leaflet, Pckt, Offprint) to Markdown — available as both a CLI tool and a TypeScript library.
Source code for docs.ewancroft.uk — a documentation site for ewan's projects, built with SvelteKit and published via Sequoia.
This blog has been updated to use vinext, a Vite-based framework that provides a Next.js App Router-compatible API.
SvelteKit component library for displaying Ko-fi supporters and GitHub Sponsors, backed by an ATProto PDS.
Rust CLI tools for managing nixos/nix-darwin configurations — now part of the @ewanc26/pkgs monorepo.
Ewan's personal package monorepo — the canonical home for @ewanc26/tid, @ewanc26/atproto, @ewanc26/ui, and @ewanc26/utils.
SvelteKit template with Resend-backed contact form and dark mode.
Zero-dependency, spec-compliant AT Protocol TID generation for Node.js and browsers.
A server-side AT Protocol link shortener powered by your Linkat board. No database required.
Automatically update your Bluesky avatar (and banner) every hour based on the time of day.
Generate 24 sky-gradient images (one per hour) for use as Bluesky avatars or banners.
A Dockerised Tangled knot server with optional Cloudflare Tunnel routing.
An alternate SvelteKit frontend for Linkat showing a curated directory of AT Protocol user profiles. Unmaintained.
A Bash script for automated, resumable PDS backups via rsync over SSH with change detection and cron scheduling.
CLI tool for syncing GitHub repositories to Tangled with ATProto record publishing — now part of the @ewanc26/pkgs monorepo.
SvelteKit library for reading and writing AT Protocol longform content via site.standard.* and pub.leaflet.* records — with a complete design system, federated comments, publishing tools, and content verification.
Python tool for analysing .docx files and generating essays using a local Ollama model — now part of the @ewanc26/pkgs monorepo.
Centralised project documentation at docs.ewancroft.uk, published to AT Protocol via Sequoia.
Renamed lastfm-importer to malachite, added Spotify support, interactive mode, and improved rate limiting.
Building a sophisticated Claude Code configuration system with smart wrappers, mixin architecture, and orchestrator-only discipline.