Existing Tags fields were messy (mixed case, duplicates, lots of
one-off tags) and 28 posts had none at all. Normalized casing,
deduped, mapped common synonyms (textmate/xcode/git -> tools, os x
variants -> mac-os-x, etc) onto a canonical set, and added 1-2
canonical tags to every previously untagged post so most posts now
carry at least one useful tag. Specific extra tags were kept
alongside the canonical ones rather than stripped.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pull the pure, testable logic out of the bake tasks into Pressa modules:
- Pressa::Drafts — slugs, ordinal dates, draft paths, and the new-draft template
- Pressa::Coverage — the coverage measurement script, output parsing, and baseline-ref resolution
- Pressa::Publish — the rsync command builder
Each gets its own tests, so this logic now sits under the lib/ coverage gate
instead of being untested glue inside the task files.
With the logic extracted, the namespaced bake/ split no longer earns its keep —
those files were mostly thin task declarations. Collapse build/draft/publish/quality
back into a single bake.rb with the original flat task names (new_draft, coverage,
publish_beta, and so on) and update CI and AGENTS.md to match.
Replace the Swift site generator with a Ruby and Phlex implementation.
Loads site and projects from TOML, derive site metadata from posts.
Migrate from make to bake and add standardrb and code coverage tasks.
Update CI and docs to match the new workflow, and remove unused
assets/dependencies plus obsolete tooling.
- Bump Swift version from 5.5.2 to 6.1
- Update to Ubuntu 24.04 binaries (compatible with 25.04)
- Update package dependencies for newer Ubuntu:
- libgcc-9-dev → libgcc-s1
- libpython2.7 → libpython3.12
- libstdc++-9-dev → libstdc++-14-dev
- Fix Swift download URL to use download.swift.org
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>