Full blue background (screen_fill), double-line bordered panels side
by side: left panel for the menu, right panel for content. The right
panel's title bar shows the current page name, username and online count.
Color theme (THEME constant) maps to combined fg+bg ANSI codes so all
elements look native on the blue background: bright cyan borders, white
normal text, yellow labels, black-on-cyan selection highlights.
Status bar at the bottom mimics the NC function key bar with bright key
labels on cyan background.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each BBS screen is now a declarative `page` block. Shared rendering
logic (wiki list, scroll helpers, wiki page opening) lives in a `helpers`
block. The persistent chrome (header bar, sidebar menu, footer) is
defined once in a `chrome` block rendered every frame.
The main flow no longer reaches into runner internals: context flows
through naturally via the updated rubbs `tui` step.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Docker can't detect external git changes — Gemfile.lock change is
the signal. Workflow: after pushing rubbs, run bundle update bbs
and commit the new Gemfile.lock.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All content rendering now lives in bbs.rb via the rubbs DSL.
fetch/pick handle wiki list + article drill-down; output handles
the multi-line game catalog. display.rb is gone.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>