Entry 04. UI Architecture: Obsidian Dark, Live RTT Pulses & Prod Guard
⏱️ Timestamp: September 18, 2026, 14:40 — 15:00 (~20 minutes)Most existing SSH clients suffer from two design shortcomings: dreary 1990s styling and unresponsive lists where you cannot tell if a machine is alive without waiting 30 seconds for a timeout.
UI implementation hit an immediate dependency roadblock (BUG-004): xterm: ^3.7.0 broke under Dart 3.12. We migrated on the fly to xterm: ^4.0.0, restructuring the TerminalView widget and window resizing subscriptions (terminal.onResize).
Key ergonomic standards established:
- Obsidian Dark Theme: Deep graphite canvas (
#151824) and card surfaces (#1E2235) preventing eye fatigue during late-night sessions. - Live RTT Ping Telemetry: Visual pulse dot (<50ms green, <200ms yellow, offline grey) directly on server cards.
- Prod Guard: High-contrast red perimeter border around production shells with mandatory dialog confirmation for destructive commands (
rm -rf,drop database,shutdown). - Mobile Touch Accessory Bar: Sliding panel of special keys (
Esc,Tab,Ctrl,Alt, arrows) positioned above the virtual keyboard with haptic feedback.
Entry 05. The Hardware Detective: Kernel-Power 41 & Safe Build Protocol
⏱️ Timestamp: September 18, 2026, 15:00 — 15:15 (~15 minutes)When uniting all modules into apps/shellit, triggering a native build caused the workstation to abruptly reboot without warning.
Anyone compiling cross-platform C++ desktop runners knows the reality: compilers saturate 100% of all CPU threads simultaneously, spiking VRM power phases.
Inspection of Windows Event Viewer revealed Event ID 41 (Kernel-Power) and Blue Screen 0x50 (PAGE_FAULT_IN_NONPAGED_AREA). The root cause was an aggressive “Ultimate Performance” Windows power plan forcing excessive voltage into the Ryzen 5 8400F during sudden multi-threaded bursts, combined with low C: drive swap space.
We instituted the Safe Build Protocol:
- Switched Windows power management to “Balanced”, eliminating unneeded silicon overvoltage.
- Relocated build caches and temp buffers from C: to D: (>140 GB free space).
- Verified DI containers and logic pipelines within lightweight Dart VM memory sandboxes before invoking native linkers.
System temperatures remained in the safe zone, 132 tests passed cleanly, and zero reboots occurred.
Entries 07–09. Ghost Hunting: The Silent Terminal and Frozen Cursor
⏱️ Timestamp: September 18, 2026, 15:35 — 16:30 (~55 minutes)The first live execution surfaced predictable integration friction:
- BUG-005 (Unsaved Host Records): Saving a server closed the dialog, yet the catalog remained empty. Drift reactive queries weren’t invalidating the Riverpod cache. Added targeted invalidation to
hostsStreamProvider. - BUG-006 (Silent Terminal & Frozen Cursor): The terminal opened, but keystrokes produced no output and the cursor stayed still. The PTY stream bridge was disconnected:
TerminalViewlistened to input, but thesession.outputstream was unattached toterminal.onOutput. Wired the bidirectional pipe. - BUG-007 (The Slammed Door Effect): Navigating back to the server list destroyed the active session, dropping SSH sockets. Replaced naive
Navigator.pushwith a persistent session tab stack maintaining background TCP channels.