Home
Release Notes
Weekly release notes for my side projects, written by a bot every Sunday from the week's commits and pull requests.
2026-W42
2026-W42 (Oct 11 to Oct 17, 2026)
4 active days | 3 repos | 28 PRs merged | 7 commits
Week in a sentence: Login moved from Static Web Apps onto the API with a production cutover, and the rest of the week went to deploy safety, cost, timeline polish, and a new weekly release-notes page.
brandonchastain/brandonchastain.com
- Added a weekly Release Notes page at
/release-notes/. A Sunday-evening bot collects the week's commits, merged PRs, and releases across repos, summarizes them with Claude Haiku (with a plain-list fallback), and publishes the result to the site. The first week (2026-W42) is seeded from a real run, and the home page links to it.
- The bot now skips a repo its token can't read and logs it, failing only if every repo is unreadable.
- Still to do: add the workflow secrets on this repo before the schedule runs unattended.
brandonchastain/rss-reader
- Login now goes through the API. The site cut over to API login with Microsoft on 2026-10-17, with Google and GitHub providers built behind it. Admin access and Microsoft account linking were fixed along the way, and the provider account picker always appears.
- Deploys no longer risk losing recent writes. The database is handed over between revisions, which ends the risk of losing up to 15 minutes of user writes on each deploy.
- Cost and cold starts: the API keeps one replica warm, and idle backup, scheduler, and probe work was cut to bring the bill back down from about $45/month.
- Timeline: read posts stay visible until the next fetch, the misleading "new posts" toast no longer appears on search or per-feed pages, and manual refresh fetches every stale feed. The list no longer shifts while you read, and the cached timeline reconciles with the server on open.
- The API has its own hostname,
api.rss.brandonchastain.com, and self-hosting docs were added. Production was deployed 20 times.
brandonchastain/shipped-log
- New repo for the weekly shipped summary: a .NET console app that gathers commits, merged PRs, releases, and deployments from personal repos, filters out noise, and writes a weekly markdown summary with an index.
- Sends a notification via ntfy, using the same topic and optional token setup as the cost watchdog.
- A
setup.ps1 script stores the workflow secrets with gh so they never end up in the repo.
Raw activity
brandonchastain/brandonchastain.com
- PR #2 Release notes bot: skip unreadable repos
- PR #1 Add weekly Release Notes page (/release-notes/)
ce14e37 Add the weekly shipped log: bot in tools/shipped-log, page at /shipped/
6976373 Shipped log: keep the fallback summary short, raw list only in the collapsible block
eff915d Rename the page to Release Notes at /release-notes/
ebe5c62 Rename the workflow files to release-notes*.yml
d6ef435 Release notes bot: skip a repo the token cannot read instead of crashing
brandonchastain/rss-reader
- PR #145 fix(feed): never show the "new posts" toast on the per-feed page
- PR #144 fix(unread): keep read posts visible until the next server fetch
- PR #143 fix(search): never show the "new posts" toast on the search page
- PR #142 feat: manual refresh fetches every stale feed; deflake the handover tests
- PR #140 test: rename the test project to RssReaderTests
- PR #139 fix(durability): hand the DB over between revisions on deploy (#136)
- PR #137 fix(auth): always show the provider's account picker
- PR #127 docs: self-hosting, architecture and deploy pages for API login
- PR #135 cutover: the site logs in through the API
- PR #132 docs: explain ghcr.io 'denied' from a stale scopeless credential
- PR #133 feat(auth): link pre-migration rows by a hash of the Microsoft-reported email
- PR #131 diag(auth): log the claim types of an SWA principal that carries no object id
- PR #129 fix: dev auth flag and admin check across the login migration
- PR #130 skills: launch Docker Desktop through the shell in run-locally
- PR #126 infra: login provider secrets, session keys and the cutover switch
- PR #125 feat(frontend): log in through the API instead of Static Web Apps Easy Auth
- PR #128 perf: cut the warm replica's idle-time work (backup, scheduler, probes)
- PR #121 docs: label the hardcoded knob tables as such
- PR #124 fix: bind the API hostname with an explicit managed certificate
- PR #122 infra: give the API its own hostname, api.rss.brandonchastain.com
- PR #123 feat(api): cookie login with Google, Microsoft and GitHub behind /auth/*
- PR #120 docs: knobs catalogue, self-hosting guide, and one consistent durability story
- PR #119 fix: reconcile the cached timeline with the server on every open
- PR #118 perf: keep one replica warm and take image restore, FTS count and quick_check off the cold-start path
- PR #117 fix: replace Virtualize with a measured window so the timeline never shifts under the reader
- PR #116 fix: hold the reader's row still while the virtualized timeline re-windows
- Deployed to production (20x)
brandonchastain/shipped-log
7892a05 Weekly shipped summary: .NET console app, Actions workflow, tests
4e4f925 Match the cost watchdog ntfy setup: topic + optional token, add setup.ps1