pkgs

Tag: pkgs

50 posts
pkgs ships 20+ tourmaline charts, fixes malachite's Apple Music and ListenBrainz pipelines, and migrates to @bsky/sdk
E
ewan's devlog
devlog.croft.click

pkgs ships 20+ tourmaline charts, fixes malachite's Apple Music and ListenBrainz pipelines, and migrates to @bsky/sdk

Tourmaline gained word clouds, bar-chart races, region breakdowns, cumulative charts, dataset explorer, Eddington stats, rank history, anniversaries, and dozens of stat tiles. Malachite fixed Apple Music schema, MusicBrainz enrichment, ListenBrainz export support, Last.fm API fetch, and Spotify/YouTube name fabrication. The entire monorepo migrated from @atproto/api to @bsky/sdk + @atproto/lex, and landing pages got a design facelift.

·
Aug 21
·
croft.click
E
Ewan's Project Documentation
docs.ewancroft.uk

croft.click

The AT Protocol tools directory — a free, browser-based hub linking Jasper, Malachite, Bismuth, Opal, and Tourmaline.

·
Aug 19
·
@ewanc26/landing-ui
E
Ewan's Project Documentation
docs.ewancroft.uk

@ewanc26/landing-ui

Shared Svelte landing page layout, CSS, and components for the *-web tool sites (Jasper, Malachite, Opal, Bismuth, Tourmaline).

·
Aug 19
·
@ewanc26/og
E
Ewan's Project Documentation
docs.ewancroft.uk

@ewanc26/og

Dynamic OpenGraph image generator with noise backgrounds, bold typography, and Satori-based rendering.

·
Aug 19
·
malachite gains a polish migration subtool
E
ewan's devlog
devlog.croft.click

malachite gains a polish migration subtool

A new -m polish mode (and matching web wizard card) backfills legacy fm.teal.alpha.feed.play scrobbles into production fm.teal.feed.play, preserving rkeys, then removes the legacy copies after each backfill succeeds. The migration logic is shared through croft-click-core.

·
Aug 12
·
pkgs adds ListenBrainz support and consolidates its tools onto croft-click-core
E
ewan's devlog
devlog.croft.click

pkgs adds ListenBrainz support and consolidates its tools onto croft-click-core

Malachite and its web frontend gained a ListenBrainz import mode, tourmaline switched to CAR-export scrobble fetching and hardened its server routes, pds-landing got a live activity feed, and every write-capable tool now shares one ~/.ewanc26 state directory.

·
Aug 11
·
pkgs moves toolkit-usage tracking server-side and stops hardcoding pds-landing
E
ewan's devlog
devlog.croft.click

pkgs moves toolkit-usage tracking server-side and stops hardcoding pds-landing

croft-click now aggregates toolkit usage across the whole network instead of trusting client-side writes from each tool, and pds-landing's components resolve their hostname at runtime instead of assuming one domain.

·
Jul 27
·
Maintenance: Separation of Concerns
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
·
ListenBrainz support and OG image caching in pkgs
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
·
Malachite: ATProto OAuth CLI and did:web Support
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
·
pkgs Workspace and Lexicon Updates
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
·
Malachite v0.4.4 — Apple Music & YouTube Music Support
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
·
Toolkit Unification — Sign-out, TIDs, and Usage Analytics
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
·
AI Discoverability — AGENTS.md and llms.txt
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
·
Tourmaline Polish — PDS Rate Limiting & Component Reactivity
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
·
Tourmaline v0.5.0 — Advanced Analytics & Layout Refinements
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
·
Removed analytics references and duplicate links across landing-ui projects
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
·
Tourmaline folded into pkgs monorepo, landing-ui improvements
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
·
Landing-ui polish: shared layout, cross-references, icon cleanup, support consolidation
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
·
Tourmaline: analysis moves to web worker
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
·
Opal: web OAuth import, thread splitting, TID rkeys
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
·
Tourmaline v0.4.0 — tabs, sessions, story recap, date ranges, phases
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
·
pkgs: hero SVGs, bismuth flags, croft-click devlog
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
·
Tourmaline wrapped insights
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
·
colorTheme: Wheel of the Year seasonal themes
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
·
Tourmaline new profile cards
E
ewan's devlog
devlog.croft.click

Tourmaline new profile cards

Listening clock, listening stats, and service origins

·
May 10
·
Tourmaline personality card redesign
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
·
Tourmaline analysis algorithm improvements
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
·
Tourmaline share page fixes
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
·
Cross-references and unified support links
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
·
Replaced inline symbolic characters with Lucide icons
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
·
OG hero images across all five projects
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
·
tourmaline v0.1.0 — AT Protocol scrobble analyser with share-to-Bluesky
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
·
Bismuth: fetch subcommand flag fixes
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
·
Performance audit and fixes across all three sites
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
·
devlog: Dynamic OG image generation with @ewanc26/og
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
·
Website: Seasonal Theme Reset
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
·
Website: Wheel of the Year seasonal themes with auto-midnight updates
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
·
Opal — Cross-Platform Bluesky Migration
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
·
croft.click Landing Page and Shared Landing UI
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
·
Bismuth: On Refraction and Conversion
Ewan’s Blog icon
Ewan’s Blog

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
·
Bismuth — Document to Markdown Converter
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
·
Jasper — Instagram to Grain/Spark Converter
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
·
GitHub Metadata Package
E
ewan's devlog
devlog.croft.click

GitHub Metadata Package

Package for fetching and displaying GitHub repository metadata.

·
Mar 28
·
@ewanc26/bismuth
E
Ewan's Project Documentation
docs.ewancroft.uk

@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.

·
Aug 19
·
Supporters, Popfeed, and Donation Addresses
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
·
@ewanc26/wafrn-theme
E
Ewan's Project Documentation
docs.ewancroft.uk

@ewanc26/wafrn-theme

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

·
Mar 23
·
@ewanc26/noise
E
Ewan's Project Documentation
docs.ewancroft.uk

@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
·
@ewanc26/noise-avatar
E
Ewan's Project Documentation
docs.ewancroft.uk

@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
·
@ewanc26/supporters
E
Ewan's Project Documentation
docs.ewancroft.uk

@ewanc26/supporters

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

·
Mar 8
·