Tag: pkgs

50 posts
E
ewan's devlog
devlog.croft.click

Maintenance: Separation of Concerns

Removed sequoia.json from pkgs to maintain clear separation of project-specific configurations.

Jun 13, 2026
E
ewan's devlog
devlog.croft.click

ListenBrainz support and OG image caching in pkgs

Added ListenBrainz as a malachite import source (community contribution), integrated Vercel Blob for OG image caching, and added a documentation OG template.

Jun 13, 2026
E
ewan's devlog
devlog.croft.click

Malachite: ATProto OAuth CLI and did:web Support

Malachite gains OAuth-based CLI authentication for ATProto and did:web DID resolution, alongside a restructured web frontend.

Jun 5, 2026
E
ewan's devlog
devlog.croft.click

pkgs Workspace and Lexicon Updates

Build configuration updates for pnpm-workspace.yaml and centralization of lexicon and domain constants.

May 29, 2026
E
ewan's devlog
devlog.croft.click

Malachite v0.4.4 — Apple Music & YouTube Music Support

Adding import support for Apple Music and YouTube Music, and updating branding.

May 25, 2026
E
ewan's devlog
devlog.croft.click

Toolkit Unification — Sign-out, TIDs, and Usage Analytics

Unifying TID generation, adding sign-out functionality, and implementing toolkit usage analytics.

May 23, 2026
E
ewan's devlog
devlog.croft.click

AI Discoverability — AGENTS.md and llms.txt

Adding AGENTS.md and llms.txt files across repositories to improve AI discoverability and documentation.

May 18, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline Polish — PDS Rate Limiting & Component Reactivity

Implementing PDS rate limiting, fixing routing issues, and refining component reactivity for Tourmaline.

May 17, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline v0.5.0 — Advanced Analytics & Layout Refinements

Porting analytics, upgrading CTA copy, and refining mobile responsive layouts for Tourmaline.

May 16, 2026
E
ewan's devlog
devlog.croft.click

Removed analytics references and duplicate links across landing-ui projects

Replaced analytics taglines, removed duplicate footers from LandingPage and all about pages, deduplicated Tourmaline header navLinks

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline folded into pkgs monorepo, landing-ui improvements

Moved Tourmaline from standalone repo into packages/tourmaline, enhanced landing-ui with backdrop blur, nav links, snippet props, and fixed source URLs across all projects

May 11, 2026
E
ewan's devlog
devlog.croft.click

Landing-ui polish: shared layout, cross-references, icon cleanup, support consolidation

LandingLayout improvements (subtitle, expanded footer, @theme bridge), cross-references between all five tools, inline symbols replaced with Lucide icons, support links consolidated to ewancroft.uk/support

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline: analysis moves to web worker

Moved the entire analysis pipeline from server-side POST to a browser web worker, fixing Vercel body size limits for large scrobble histories

May 11, 2026
E
ewan's devlog
devlog.croft.click

Opal: web OAuth import, thread splitting, TID rkeys

Added web OAuth import flow, post threading for long content, and TID-based record keys to the Twitter/Mastodon/Threads to Bluesky converter

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline v0.4.0 — tabs, sessions, story recap, date ranges, phases

Profile redesign with tabbed layout, listening sessions, on this day, story-mode recap, date range filtering, and listening evolution phases

May 11, 2026
E
ewan's devlog
devlog.croft.click

pkgs: hero SVGs, bismuth flags, croft-click devlog

Added OG hero SVGs to all five project landing pages, bismuth fetch flags, and devlog project to croft-click

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline wrapped insights

Minutes listened, music evolution, remarkable days, discovery, and yearly wrapped card with scroll-reveal animations

May 11, 2026
E
ewan's devlog
devlog.croft.click

colorTheme: Wheel of the Year seasonal themes

Replaced astronomical season detection with traditional Wheel of the Year sabbat dates, added midnight auto-update and reset-to-seasonal

May 11, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline new profile cards

Listening clock, listening stats, and service origins

May 10, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline personality card redesign

Added genre bars, mood indicators, stat badges, and dynamic SVG layout to the personality card

May 10, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline analysis algorithm improvements

Era analysis, time-of-day mood weighting, genre blending, Gini-based loyalty, full-artist genre profile

May 10, 2026
E
ewan's devlog
devlog.croft.click

Tourmaline share page fixes

Fixed personality card SVG clipping and switched to aturi.to for post links

May 10, 2026
E
ewan's devlog
devlog.croft.click

Cross-references and unified support links

Added More tools sections linking each project to the other four, and pointed all support links to ewancroft.uk/support

May 10, 2026
E
ewan's devlog
devlog.croft.click

Replaced inline symbolic characters with Lucide icons

Swapped unicode symbols for Lucide icon components across malachite, opal, jasper, bismuth, tourmaline, landing-ui, and croft-click

May 10, 2026
E
ewan's devlog
devlog.croft.click

OG hero images across all five projects

Added hero SVG OG images to malachite, opal, jasper, bismuth, and tourmaline landing pages

May 10, 2026
E
ewan's devlog
devlog.croft.click

tourmaline v0.1.0 — AT Protocol scrobble analyser with share-to-Bluesky

First release of tourmaline — personality archetypes, genre profiles, mood mapping, and share-to-Bluesky for Teal.fm scrobbles.

May 9, 2026
E
ewan's devlog
devlog.croft.click

Bismuth: fetch subcommand flag fixes

Added --frontmatter and --output flags to the fetch subcommand, and bumped to 0.2.4.

May 9, 2026
E
ewan's devlog
devlog.croft.click

Performance audit and fixes across all three sites

Docsite client bundle dropped from 1.3MB to 12KB, devlog layout data optimised, website duplicate fetches eliminated

May 9, 2026
E
ewan's devlog
devlog.croft.click

devlog: Dynamic OG image generation with @ewanc26/og

Each devlog post now generates its own OG image on demand using @ewanc26/og — warm amber on dark, with noise texture.

May 8, 2026
E
ewan's devlog
devlog.croft.click

Website: Wheel of the Year seasonal themes with auto-midnight updates

Colour themes now follow the Wheel of the Year — eight distinct themes for each sabbat, shifting automatically as midnight crosses into a new period.

May 8, 2026
E
ewan's devlog
devlog.croft.click

Website: Seasonal Theme Reset

The colour theme picker now shows when a seasonal theme is active and lets you lock it in explicitly.

May 8, 2026
E
ewan's devlog
devlog.croft.click

Opal — Cross-Platform Bluesky Migration

Convert Twitter, Mastodon, Threads, and Nostr posts to Bluesky with thread splitting and TID-based rkeys.

May 1, 2026
E
ewan's devlog
devlog.croft.click

croft.click Landing Page and Shared Landing UI

Landing page at croft.click and a shared @ewanc26/landing-ui package for all web packages.

Apr 26, 2026

Bismuth: On Refraction and Conversion

I've been publishing to the AT Protocol for a while now. Blog posts, project documentation, the odd creative thing — all of it lives as site.standard.document records on my PDS, which means all of it lives as block trees. Richtext blocks, facets with byte-slice annotations, nested lists, images as blob references. Great for a federated document store. Opaque to everything else.

Apr 23, 2026
E
ewan's devlog
devlog.croft.click

Bismuth — Document to Markdown Converter

Converts site.standard.document records to Markdown with math and code highlighting.

Apr 22, 2026
E
ewan's devlog
devlog.croft.click

Jasper — Instagram to Grain/Spark Converter

Full OAuth flow for importing Instagram posts to AT Protocol as Grain/Spark records.

Apr 14, 2026
E
ewan's devlog
devlog.croft.click

GitHub Metadata Package

Package for fetching and displaying GitHub repository metadata.

Mar 28, 2026
E
ewan's devlog
devlog.croft.click

Supporters, Popfeed, and Donation Addresses

Ko-fi and GitHub Sponsors webhooks, Popfeed review cards, and crypto donation addresses.

Mar 23, 2026

@ewanc26/wafrn-theme

A WAFRN theme using the pds-landing Catppuccin terminal aesthetic — dark forest-green palette, JetBrains Mono, soft rounded cards.

Mar 23, 2026

@ewanc26/bismuth

Convert richtext-block documents from the Standard.site ecosystem (Leaflet, Pckt, Offprint) to Markdown — available as both a CLI tool and a TypeScript library.

Mar 23, 2026

@ewanc26/noise

Generic deterministic value-noise generation. Arbitrary dimensions, multi-octave FBM, multiple colour modes. Zero dependencies, works in browsers and Node.js.

Mar 12, 2026

@ewanc26/supporters

SvelteKit component library for displaying Ko-fi supporters and GitHub Sponsors, backed by an ATProto PDS.

Mar 8, 2026

@ewanc26/noise-avatar

Deterministic value-noise avatar generation from a string seed — thin wrapper around @ewanc26/noise, works in browsers and Node.js.

Mar 8, 2026

@ewanc26/pds-landing

Composable Svelte 5 components for an ATProto PDS landing page — terminal aesthetic, live status fetching, zero config to drop in.

Mar 7, 2026

nix-config-tools

Rust CLI tools for managing nixos/nix-darwin configurations — now part of the @ewanc26/pkgs monorepo.

Mar 6, 2026

@ewanc26/pkgs

Ewan's personal package monorepo — the canonical home for @ewanc26/tid, @ewanc26/atproto, @ewanc26/ui, and @ewanc26/utils.

Mar 6, 2026

@ewanc26/ui

Svelte UI component library extracted from ewancroft.uk — pluggable layout, card, SEO, and UI primitive components alongside Svelte stores and a multi-theme config system.

Mar 5, 2026

@ewanc26/utils

Shared utility functions extracted from ewancroft.uk — date formatting, number formatting, URL helpers, validators, RSS generation, and locale detection.

Mar 5, 2026

@ewanc26/atproto

AT Protocol service layer extracted from ewancroft.uk — profile fetching, Standard.site documents, Bluesky posts, music/mood status, Tangled repos, and a built-in in-memory cache.

Mar 5, 2026
E
ewan's devlog
devlog.croft.click

Pkgs Monorepo — Workspace Migration

Migrated to pnpm workspaces, published @ewanc26/tid to npm, and consolidated packages.

Mar 4, 2026