March was a productive month across several projects. On the RDoc side, I focused on making server mode reliable and started work on RBS type signatures in documentation. I also made CI faster in ruby/ruby, added new features to IRB, and shipped a lot of improvements to cctop.
ruby/rdoc
Server mode
The main focus this month was server mode. The rdoc --server PR with live reload landed in mid-March.
After merging, I polished it with several follow-up fixes:
With server mode in good shape, I also added make html-server to ruby/ruby so CRuby contributors can preview documentation with live reload.
This is a huge contributing experience improvement as make html currently takes 30~60s to run, depending on your machine, and you have to run it again after every change.
Here’s a demo:
Bug fixes
Auto-linking created broken links when referencing non-text source files like array.c.
The C parser crashed with encoding errors when reading external source files with non-ASCII characters.
Code cleanup
I removed dead code (unused constants, AnonClass, memoized caches in Context), fixed herb linter errors in ERB templates, and moved the RubygemsHook documentation to the right place.
What’s next
A few things I’m working on heading into April:
- RBS type signatures in documentation — a draft PR that adds support for rendering RBS signatures alongside method definitions.
- Coverage report overhaul — improving how RDoc reports documentation coverage.
- Enable
break_on_newlinefor Markdown — making Markdown line breaks work as expected by default.

ruby/ruby
CI optimizations
I spent some time making CRuby’s CI faster this month. The biggest win was parallelizing bundled gems test execution, making that step 35–42% faster.
I also rebalanced compilation jobs and switched to cheaper result runners, saving about 5 minutes per CI run.
A couple of smaller cleanups: removed a dead “Resolve job ID” step from the CI workflow, and extracted a check_event_support helper in vm_trace.c to reduce duplication.
ruby/irb
Tab completion now shows what commands do in the documentation dialog.
I also added a new startup banner that shows the Ruby logo, version info, and tips.
On the experimental side, I have an open PR for agent mode in binding.irb. With binding.irb(agent: true), IRB exposes itself over a Unix socket so AI agents can interact with a running Ruby process — inspecting state, running expressions, and debugging. This is still exploratory and I’m figuring out the right interface.
st0012/cctop
Around 30 changes shipped this month, mostly polish and reliability:
- Visual redesign — new theme system (Claude, Tokyo Night, Gruvbox, Nord), notch status pill replacing compact mode, and a draggable panel with per-screen position persistence.
- Multi-agent support — cctop now supports Claude Code, opencode, and pi. Active subagents are tracked on session cards.
- Multi-monitor fixes — fixed panel resets, cross-screen navigation shortcuts, and notch pill flickering on external displays.
- Editor integration — VS Code forks (Cursor, Windsurf) are now correctly identified, and jump-to-session works for minimized iTerm2 windows.
- Input fixes — keyboard navigation digits now work with non-English input methods, and notifications properly prompt for permission on menubar-only apps.
Sponsor my work
I’m happy to welcome Janko Marohnić as a new GitHub sponsor this month — thank you!
I also got accepted into Anthropic’s Claude for Open Source program. In last month’s update I mentioned I had applied but hadn’t heard back yet — now I have, and it’s a huge help for sustaining this work.
Current costs:
- Apple Developer Program: $99/year
- Screen Studio for recording demo videos: $30/month
- Claude Code Max: covered by Anthropic’s Claude for Open Source program until September 2026