v0.1.5 First Boot 9 min September 18, 2026, 14:40 — 16:30

Act II: Hardware Detective & Console Awakening

Migration to xterm 4, unexpected Kernel-Power 41 crashes during C++ compilation, and the birth of Safe Build Protocol. First integration bugs: silent terminals and frozen cursors.

BUG-004 BUG-005 BUG-006 BUG-007 #hardware #kernel-power #xterm #pty #safe-build
Debugging Transcript: UI Meets Hard Reality
September 18, 2026, 10:49 — 11:14
Expand
Architect
created host does not save
Architect
I do not get it, where do I enter the password for the created host?
Architect
tell me, shouldn’t the app request network access? right now it says the host is unreachable, even though in the standard terminal I connect to it just fine
Antigravity
A gap between core and UI was identified: unit tests validated the repository on in-memory mocks, but the UI form controller was not yet forwarding passwords to SecureStorage. The Windows socket was also blocked due to missing network capabilities in the runner manifest. Patching the form-to-vault binding and network layer.
Act Context: The core packages were ready, but assembling them into the root desktop application triggered a hardware detective story: compiling native C++ plugins pushed the Ryzen 5 8400F into sudden Kernel-Power 41 shutdowns. This act establishes the Safe Build Protocol, navigates the xterm 4.0 breaking upgrade, and hunts down the first integration regressions.

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:

  1. Switched Windows power management to “Balanced”, eliminating unneeded silicon overvoltage.
  2. Relocated build caches and temp buffers from C: to D: (>140 GB free space).
  3. 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:

  1. 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.
  2. 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: TerminalView listened to input, but the session.output stream was unattached to terminal.onOutput. Wired the bidirectional pipe.
  3. BUG-007 (The Slammed Door Effect): Navigating back to the server list destroyed the active session, dropping SSH sockets. Replaced naive Navigator.push with a persistent session tab stack maintaining background TCP channels.
📖 Article typography justified using the Knuth-Plass algorithm via mcp-typography-server powered by Justif.
Knuth-Plass • TeX Style