In February half of my time went into cctop — a macOS menubar app I built for monitoring Claude Code sessions. I have built a workflow around this small utility and improved it continuously. On the RDoc side, I continued working through my 2026 roadmap with a 7.2.0 release and started version 8.0’s development with the team: more Markdown fixes, and some groundwork for bigger changes ahead.
st0012/cctop
I use Claude Code a lot, often with multiple sessions running at once. Keeping track of which session needs attention, which is idle, and jumping to the right terminal gets tedious. So I built cctop — a macOS menubar app that shows all my active AI coding sessions in one place.
It’s a pure Swift/SwiftUI app that uses Claude Code/opencode hooks to capture session state. The menubar panel shows each session’s project, status, and how long ago it was updated. You can click a session or use a keyboard shortcut to jump straight to its terminal or editor window — it works with VS Code, iTerm2, and Ghostty.
Key features include Quick Jump (a global hotkey that shows numbered badges so you can press a number to switch sessions), keyboard navigation, a Recent Projects tab, and a compact mode that collapses the panel to a slim status bar.
The app is signed and notarized, and installable via brew install st0012/tap/cctop (I spent $99 on Apple’s Developer program for this).
Unlike most similar tools, cctop never directly modifies the client’s settings or files. All data stays local on your machine, nothing is transmitted anywhere. You can also write custom plugins to replace the default one for advanced needs. These are the development principles I plan to follow going forward.
ruby/rdoc
RDoc 7.2.0
I released RDoc 7.2.0 in early February. To help with future releases, I added a /release-check Claude Code skill that reviews PRs since the last release, checks if labels are applied correctly, and recommends the release type.
I also added a CI check that catches Marshal format incompatibilities between old and new RDoc versions — this prevents the kind of RI breakage we hit before.
Markdown fixes
A few Markdown parser bugs got fixed this month. Tables with incomplete rows were crashing due to nil padding. The table parser was also consuming non-table lines (like <br>) as single-cell rows.
I also fixed an issue where legacy CGI-encoded rdoc-ref labels weren’t resolving to the correct GitHub-style heading anchors and broke links.
Aliki template
I fixed Aliki’s templates so headings in the ToC sidebar now display correctly. I also stopped generating a redundant page file when a page is already used as main_page.
Cleanup and breaking changes
On the cleanup side, I removed long-deprecated CLI options and directives (--diagram, --inline-source, :main:, etc.) and refactored formatter options to take values directly instead of holding full Option objects. These are breaking changes, so they will be released in v8.0.
What’s next
A few things carrying into March:
- Server mode with live reload (
rdoc --server) — this is the main focus - More internal refactors like decoupling
StorefromCodeObject - Remove the Darkfish generator and provide a better theme extension API
st0012/ruby-lsp-rspec
Fixed a crash in the formatter when backtrace lines don’t follow the standard file:line:message format. Chained exceptions with Caused by: headers were triggering a NoMethodError.
Sponsor my work
If you have been enjoying my work, your sponsorship will be greatly appreciated.
Current costs:
- Apple Developer Program: $99/year
- Screen Studio for recording demo videos: $30/month
- Claude Code Max: £90/£180/month (I alternate between 5x and 20x plans)
(And yes, I applied to Anthropic’s Claude for Open Source program as soon as it opened. But as of now I have not heard back yet.)