fix(v4): nothing of a session left on screen after logout

From the fresh review of the stick's increment 1 (With fixes):
- Critical: after logout Zuse's last screen, her prompt included, could be
  drawn back on a headless machine. The logout clear (ESC[2J) blanked the
  pixels only: Alt+TAB, still read while headless, redrew the terminal
  from its saved text; and if she had Alt+TABbed to the graphics view
  before the pull, the clear did nothing and her session stayed on screen
  (and the console did not draw at her next login). Now vt100_reset()
  forgets everything the terminal has shown -- the on-screen text, the
  scrollback and their boot snapshots -- makes it visible again and fills
  the screen; and Alt+TAB does nothing while the screen is off (v3's never
  is, so v3 is unchanged).
- Important: an EMERGENCY_CONSOLE_ENABLED build no longer clears the screen
  when Zuse's drive is pulled: its console goes on running.

Red: alttab_after_logout 183308 (4515 lit), alttab_before_pull 183529
(4539 lit; the console not redrawn), emergency_pull 183759 (0 lit).
Green: 184115, 184328, 184552; regression 184805-185956 (screens,
keyboard, hotplug, emergency, v3 typed by keyboard) all pass.
Accepted: 190111, 190312, 190710, POST 538/538, dict_hash
0xfec8c47cfc6f437f; test-32, 39 modules, 0 failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
rajames
2026-10-26 19:14:22 -04:00
co-authored by Claude Opus 5.5
parent cab0ffb487
commit a78cc56c31
36 changed files with 11376 additions and 4 deletions
+5 -2
View File
@@ -262,8 +262,9 @@ void console_fb_mirror(int on) { g_fb_mirror = on ? 1 : 0; }
void console_fb_clear(void)
{
if (fb_is_available()) vt100_puts("\x1b[2J\x1b[H");
if (fb_is_available()) vt100_reset();
}
static uint64_t g_console_tx_count; /* monotonic console_putc() counter (BSS) */
void console_set_vm_name(const char *name) {
@@ -487,7 +488,9 @@ void console_fb_scroll_fwd(uint32_t n)
void console_fb_toggle_graphics(void)
{
if (fb_is_available()) {
/* Not while the screen is off (the v4 boot, headless): Alt+TAB would
* draw the terminal back (fixed 2026-10-26). v3's is always on. */
if (fb_mirrored()) {
vt100_toggle_graphics();
}
}