What's Changed
Fixed
Two real bugs behind "search lags and clicking a function shows nothing":
- Clicks were dead: the app handled
on_list_item_selected, but textual's ListView postsListView.Selected— so clicking or ENTER on a function never invoked the handler at all. Renamed toon_list_view_selected; clicking/entering now actually opens the function. - Every keystroke froze the UI: each filter character ran a synchronous ~1s bridge round-trip on the UI thread (on a 220k-function firmware), and every function open ran disasm/decompile synchronously. Search is now debounced (250 ms) and executed on a worker thread with results applied back via
call_later; function opens load their listing off-thread with a "loading" status; typing stays responsive while queries run. - The sidebar renders at most 200 rows per rebuild instead of 1000 ListItems; the count hint ("showing 200 of 220802 — keep typing") explains the rest.
- The initial sidebar load also moved off the UI thread — startup no longer blocks.
Verified with real keystrokes in a headless pilot against a live 220k-function worker: filter → ENTER opens the function, p toggles pseudocode, x/b (xrefs/CFG) all fire.
Full Changelog: v1.1.3...v1.1.4