Skip to content

TUI paints empty frames on macOS ARM64 (Apple Silicon): server boots fully but renderer never draws UI — 1.16.2, 1.17.0, 1.18.21 #44337

Closed as not planned

Description

@GratefulDave

Environment

  • OS: macOS 26.x (Darwin 25.6.0), Apple M5 Max (ARM64)
  • Terminals tested: WezTerm (current), Herdr multiplexer panes, raw PTY with synthetic query responses
  • Versions tested: 1.16.2, 1.17.0, 1.18.21 (official install script)
  • Reproduces with: --pure, no plugins, no project config, no global config, autoupdate: false

Summary

On this machine no version of the OpenCode TUI ever renders UI. Two failure stages, both observed:

  1. Config-dependent boot stall: with the default config present, the process hangs after loading config files — log ends at the last loading path=... line, no error. Moving all configs/plugins aside lets boot complete.
  2. Renderer paints nothing regardless: even when the backend boots fully (init → created session → event connected in logs) and the terminal answers every capability query, the screen shows only blank rows.

opencode run "..." also produces no output on stdin/stdout, same machine.

Evidence

Log progression with clean config (v1.17.0, WezTerm, real terminal):

init
created id=ses_fd27ff7a2ffelh8mjND5h6TyHQ slug=misty-sailor version=1.17.0 ... directory=/Users/davidandrews/PycharmProjects/lex
event connected

→ Window remained blank. User confirmed no TUI ever visible.

Raw PTY capture (no responder): process emits exactly the capability query block and then goes silent for minutes:

\x1b[>0q \x1bP+q4d73 \x1b[?1016$p \x1b[?2027$p \x1b[?2031$p \x1b[?1004$p \x1b[?2004$p \x1b[?2026$p \x1b]10;? \x1b]11;? \x1b]99;i=opentui-notifications:p=?; \x1b]1337;Capabilities \x1b]66;w=1;

284 bytes total (1.18.21), 274 bytes (1.16.2). Matches #32361 byte-for-byte.

Raw PTY capture (all queries answered: XTVERSION, XTGETTCAP, DECRQM ;2$y, OSC 10/11 color replies, DSR [6n): handshake completes, process then emits ~6.5 KB of cursor-positioning + full-width space rows — it actively paints empty frames and continues painting empty frames for 45+ s. Zero UI glyphs (OpenCode, Ask anything, BUILD never appear in the byte stream).

sample of hung process: ~100% of main-thread samples in kevent64 (event loop waiting, not spinning). JavaScriptCore worker threads present.

Ruled out:

  • Project/global config content (repro with all configs moved away)
  • Plugins (--pure, plugin dirs emptied — including a third-party integration shim in ~/.config/opencode/plugins/)
  • MCP servers (project config with 9 MCP servers removed)
  • Terminal emulator (3 different environments incl. raw PTY where we answer everything ourselves)
  • Autoupdate (OPENCODE_DISABLE_AUTOUPDATE=1, "autoupdate": false)
  • Stale state (~/.cache/opencode, ~/.local/share/opencode, ~/.opencode cleared)
  • Version regression window from TUI hangs on black screen at boot (OpenTUI) since v1.17.0 — Ubuntu/Wayland, all terminals, no plugins #32361 — pinned 1.16.2/1.17.0, still fails here

Notable observation

The one render path that DID paint visible UI on this machine is opencode --mini (banner + input prompt rendered once in a multiplexer pane), though keyboard input did not attach there either.

Related

Happy to run any instrumented build, capture more traces, or test patches.

Activity

  1. github-actions commented on Aug 23, 2026

    @github-actions
    Contributor

    This issue might be a duplicate of existing issues. Please check:

    If your issue contains unique reproduction details or evidence not covered by those reports, feel free to keep this open or ask a maintainer to link them instead.

  2. GratefulDave commented on Aug 23, 2026

    @GratefulDave
    Author

    It's hard to believe you would want to eliminate mac users for an issue like this over several months. :/

  3. GratefulDave commented on Aug 23, 2026

    @GratefulDave
    Author

    Cross-machine isolation (same owner, two Macs)

    Controlled A/B between two machines, both driven from the identical Herdr pane on the failing machine:

    Variable Mac mini (TUI works) MacBook (TUI fails)
    Chip Apple M4 Pro Apple M5 Max
    macOS 26.6.2 arm64 26.6.x arm64
    opencode 1.18.20 (Homebrew) 1.18.20, 1.18.21, 1.17.0, 1.16.2 — all fail
    Build channel Homebrew Homebrew and install-script — both fail
    Environment login env still fails under env -i (minimal env)
    Config full config + plugins no config at all — still fails

    Key discriminator: the display path is identical and works — the mini's opencode TUI renders fine in a Herdr pane on the failing MacBook over ssh. Only locally executed opencode on the M5 Max fails, across every version, build channel, config state, and environment tested.

    This points at something hardware-dependent on M5 Max (first-party Bun/JavaScriptCore execution or event-loop behavior on this chip generation) rather than terminal, config, or OS-version differences.

    Happy to test instrumented builds on this machine.

  4. thdxr commented on Oct 11, 2026

    @thdxr
    Member

    Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.

    — from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions