Long day. Two things shipped: Eyrie v0.2.0, and this website on its own build.

On Eyrie:

  • A Gemini CLI adapter, so all three CLIs are in.
  • First-run setup, and a UI driven by capabilities, so it only shows what the installed CLIs can actually do.
  • Packaging: a PyInstaller build of the server, Tauri app bundles, and .dmg, .deb, .rpm and AppImage. Release CI install-tests each distro.
  • A one-line install.sh, a Homebrew tap, and an MIT license.
  • Then I tagged and released v0.2.0.

After the release:

  • Session names, and a jump that takes me to the right terminal tab.
  • A recorded Playwright journey suite. It found 8 UI bugs, which I then fixed.
  • ruff and coverage in CI.
  • Two real bugs from a code review. CLI output was cut at 4 KB, which broke JSON parsing on bigger responses. And an empty token file quietly disabled auth.

On the website:

  • Moved off Hugo and PaperMod to my own Python build, about 650 lines.
  • Launched the Eyrie landing page at alenabraham.me/eyrie, plus a link-preview image for the site.
  • Fixed dead Hashnode links. My Hashnode blog was pointing at a custom domain I never registered.
  • Shrunk the images from about 55 MB to about 4 MB, and added a print stylesheet.
  • Brought search back, on the Archives page.
  • Scheduled posts and build-time diagrams.
  • Cleaned up the resume.

One lesson I learned the hard way: squash-merging stacked PRs makes every next PR in the stack conflict. That one gets its own post.

Next up: writing the stacked PRs post.