╭ changed ────────╮ │src/main_wasm.zig│ ╰─────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────╮ │83 // leaves the live <form> alone — crucial since wiping it mid-click │ │84 // would detach the submit button before the browser can dispatch the │ │85 // form submission. │ │86 - const overlay = try web.generateOverlay(allocator, root_ptr); │ │86 + const overlay = try web.generateOverlay(allocator, root_ptr, &session);│ │87 defer allocator.free(overlay); │ │88 setOverlay(overlay); │ │89 │ ╰───────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────╮ │248 .text_input, .text_input_password => {}, │ │249 else => return error.NotATextInput, │ │250 } │ │251 - const ti: *wgt.TextInput(ui.Widget) = @fieldParentPtr("focus", child.focus); │ │251 + const ti = session.text_inputs.get(focus_id) orelse return error.UnknownFocusId;│ │252 try ti.setContent(allocator, bytes); │ │253 // mirror the TTY behavior in Login.View.input: editing an input clears │ │254 // the stale failure flag so the "(invalid)" label doesn't linger after │ ╰─────────────────────────────────────────────────────────────────────────────────────────╯