<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ida-tui.git/idatui/rpcclient.py, branch main</title>
<subtitle>tui for headless ida</subtitle>
<id>https://git.sl0p.foo/ida-tui.git/atom/idatui/rpcclient.py?h=main</id>
<link rel='self' href='https://git.sl0p.foo/ida-tui.git/atom/idatui/rpcclient.py?h=main'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/'/>
<updated>2026-07-11T08:59:48Z</updated>
<entry>
<title>fix: don't hang drive pc on undecompilable functions</title>
<updated>2026-07-11T08:59:48Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-07-11T08:59:48Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/commit/?id=2c86330705569805c5d201113a569c9e03c0214a'/>
<id>urn:sha1:2c86330705569805c5d201113a569c9e03c0214a</id>
<content type='text'>
toggle_view's settle predicate (lambda: app._active != before) never
fired when tabbing toward pseudocode on a function Hex-Rays can't
decompile: App._apply_decomp snaps the view back to disasm, so _active
returns to its prior value -&gt; full 20s settle timeout (x2 in _show_decomp,
~40s for drive pc). Recognize the decomp-failed fallback as settled.

Also harden two amplifiers surfaced by the same case:
- rpcclient: the CLI socket had no read timeout and would block forever
  on any server slowness; add a bounded settimeout (IDATUI_RPC_TIMEOUT,
  default 90s) with a clear error.
- domain.decompile: pass a bounded 15s timeout and cache failures, so a
  failing decompile can't sit at the 30s client default or be re-run by
  transport retries.
</content>
</entry>
<entry>
<title>rpc: stdlib client + CLI (idatui.rpcclient)</title>
<updated>2026-07-10T13:15:48Z</updated>
<author>
<name>blasty</name>
<email>blasty@local</email>
</author>
<published>2026-07-10T13:15:48Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/ida-tui.git/commit/?id=0264621b4ce55aa928402229022269f7132958e8'/>
<id>urn:sha1:0264621b4ce55aa928402229022269f7132958e8</id>
<content type='text'>
Drive the TUI from another tmux pane with no deps:
  python -m idatui.rpcclient --sock &lt;path&gt; goto target=main
  python -m idatui.rpcclient keys g m a i n enter
  python -m idatui.rpcclient screen        # dumps the raw screen text
Also importable as RpcClient for the agent. Socket via --sock or
IDATUI_RPC_SOCK. Booleans are coerced; numerics/addresses stay strings
(the server coerces numeric params).
</content>
</entry>
</feed>
