╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1379 // focus id -> the live TextInput, refreshed each frame by the views that own │ │1380 // inputs. web/wasm form handling looks widgets up here by focus id. │ │1381 text_inputs: std.AutoHashMapUnmanaged(usize, *wgt.TextInput(Widget)) = .empty, │ │1382 - // focus id -> the page-constant text the web overlay renders into an │ │1383 - // input initially, refreshed each frame alongside `text_inputs`. never │ │1384 - // the input's live content: the overlay html must not change as the │ │1382 + // focus id -> the page-constant text the web renderer puts in an input │ │1383 + // initially, refreshed each frame alongside `text_inputs`. never an │ │1384 + // editable input's live content: the overlay html must not change as the │ │1385 // user types, or the diff in _setOverlay would rebuild the element. │ │1386 input_values: std.AutoHashMapUnmanaged(usize, []const u8) = .empty, │ │1387 nav_back: bool = false, // set by input (escape) to request the native TUI pop a page; see Nav│ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │2042 } else Widget{ .background = try AnsiBackground.init(allocator, page_widget, session) };│ │2043 errdefer root.deinit(allocator); │ │2044 │ │2045 - // input-owning views build their TextInputs in init — so reset the │ │2046 - // focus-id -> *TextInput map here │ │2045 + // input-owning views build their TextInputs in init, so reset their │ │2046 + // registrations here │ │2047 session.text_inputs.clearRetainingCapacity(); │ │2048 session.input_values.clearRetainingCapacity(); │ │2049 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯