Skip to content

Very Slow OpenCode Loading Time #7979

Closed

Description

@CypherpunkSamurai

Description

Very Slow Opencode Loading Times. It downloads content checker binary (oh-my-opencode) then it performs update of plugins etc.

Plugins

oh-my-opencode, opencode-antigravity-auth@beta, opencode-websearch-cited, @zenobius/opencode-background, @ramtinj95/opencode-tokenscope, @bastiangx/opencode-unmoji, @franlol/opencode-md-table-formatter@0.0.3

OpenCode version

1.1.14

Steps to reproduce

  1. Run Opencode
  2. Takes a min or two to run

Screenshot and/or share link

Image

Operating System

Windows 11

Terminal

Windows Terminal

Activity

  1. github-actions commented on Jan 12, 2026

    @github-actions
    Contributor

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

    Feel free to ignore if none of these address your specific case.

  2. neriousy commented on Feb 3, 2026

    @neriousy
    Member

    Fixed in #9675 - on windows the OmO postinstall was ran on each startup. In new release you should see a significant improvement

  3. scarf005 commented on Feb 6, 2026

    @scarf005
    Contributor

    on opencode 1.1.53 and oh-my-opencode 3.2.3, it still takes 3.5 seconds to load opencode in terminal

  4. YanwuZeng commented on Feb 11, 2026

    @YanwuZeng

    Starting it takes 20s on my old desktop.

  5. scratchmex commented on Feb 17, 2026

    @scratchmex
    Contributor

    this is how long it takes for me. opened inside an empty directory. this was not the case the first time I used it. it was way quicker

    Screen.Recording.2026-02-17.at.12.20.28.p.m.mov

    logs don't show anything

    full log in DEBUG
    INFO  2026-02-07T16:20:34 +151ms service=server method=GET path=/event request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/event request
    INFO  2026-02-07T16:20:34 +1ms service=default directory=/Users/ivang creating instance
    INFO  2026-02-07T16:20:34 +0ms service=project directory=/Users/ivang fromDirectory
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/session request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/session request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/config/providers request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/config/providers request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/provider request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/provider request
    INFO  2026-02-07T16:20:34 +1ms service=server method=GET path=/agent request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/agent request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/config request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/config request
    INFO  2026-02-07T16:20:34 +12ms service=default directory=/Users/ivang bootstrapping
    INFO  2026-02-07T16:20:34 +2ms service=config path=/Users/ivang/.config/opencode/config.json loading
    INFO  2026-02-07T16:20:34 +0ms service=config path=/Users/ivang/.config/opencode/opencode.json loading
    INFO  2026-02-07T16:20:34 +0ms service=config path=/Users/ivang/.config/opencode/opencode.jsonc loading
    INFO  2026-02-07T16:20:34 +9ms service=config path=/Users/ivang/.opencode/opencode.jsonc loading
    INFO  2026-02-07T16:20:34 +0ms service=config path=/Users/ivang/.opencode/opencode.json loading
    INFO  2026-02-07T16:20:34 +3ms service=plugin name=CodexAuthPlugin loading internal plugin
    INFO  2026-02-07T16:20:34 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin
    INFO  2026-02-07T16:20:34 +0ms service=plugin name=gitlabAuthPlugin loading internal plugin
    INFO  2026-02-07T16:20:34 +0ms service=plugin path=opencode-anthropic-auth@0.0.13 loading plugin
    INFO  2026-02-07T16:20:34 +20ms service=bus type=* subscribing
    INFO  2026-02-07T16:20:34 +1ms service=bus type=session.updated subscribing
    INFO  2026-02-07T16:20:34 +0ms service=bus type=message.updated subscribing
    INFO  2026-02-07T16:20:34 +0ms service=bus type=message.part.updated subscribing
    INFO  2026-02-07T16:20:34 +0ms service=bus type=session.updated subscribing
    INFO  2026-02-07T16:20:34 +0ms service=bus type=message.updated subscribing
    INFO  2026-02-07T16:20:34 +0ms service=bus type=message.part.updated subscribing
    INFO  2026-02-07T16:20:34 +0ms service=bus type=session.diff subscribing
    INFO  2026-02-07T16:20:34 +0ms service=format init
    INFO  2026-02-07T16:20:34 +0ms service=bus type=file.edited subscribing
    INFO  2026-02-07T16:20:34 +0ms service=lsp serverIds=deno, typescript, vue, eslint, oxlint, biome, gopls, ruby-lsp, pyright, elixir-ls, zls, csharp, fsharp, sourcekit-lsp, rust, clangd, svelte, astro, jdtls, kotlin-ls, yaml-ls, lua-ls, php intelephense, prisma, dart, ocaml-lsp, bash, terraform, texlab, dockerfile, gleam, clojure-lsp, nixd, tinymist, haskell-language-server enabled LSP servers
    INFO  2026-02-07T16:20:34 +1ms service=scheduler id=snapshot.cleanup run
    INFO  2026-02-07T16:20:34 +0ms service=scheduler id=tool.truncation.cleanup run
    INFO  2026-02-07T16:20:34 +0ms service=bus type=command.executed subscribing
    INFO  2026-02-07T16:20:34 +1ms service=server event connected
    INFO  2026-02-07T16:20:34 +1ms service=bus type=* subscribing
    INFO  2026-02-07T16:20:34 +0ms service=server status=started providers
    INFO  2026-02-07T16:20:34 +2ms service=provider status=started state
    INFO  2026-02-07T16:20:34 +2ms service=server status=completed duration=56 method=GET path=/event request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=54 method=GET path=/config request
    INFO  2026-02-07T16:20:34 +8ms service=provider init
    INFO  2026-02-07T16:20:34 +6ms service=provider providerID=oca found
    INFO  2026-02-07T16:20:34 +0ms service=provider status=completed duration=16 state
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=18 providers
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=69 method=GET path=/provider request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=69 method=GET path=/config/providers request
    INFO  2026-02-07T16:20:34 +4ms service=server status=completed duration=72 method=GET path=/agent request
    INFO  2026-02-07T16:20:34 +7ms service=server method=GET path=/command request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/command request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/command request
    INFO  2026-02-07T16:20:34 +1ms service=server method=GET path=/lsp request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/lsp request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/lsp request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/mcp request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/mcp request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/mcp request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/experimental/resource request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/experimental/resource request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/experimental/resource request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/formatter request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/formatter request
    INFO  2026-02-07T16:20:34 +2ms service=server method=GET path=/session/status request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/session/status request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/session/status request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/provider/auth request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/provider/auth request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/provider/auth request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/vcs request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/vcs request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/vcs request
    INFO  2026-02-07T16:20:34 +0ms service=server method=GET path=/path request
    INFO  2026-02-07T16:20:34 +0ms service=server status=started method=GET path=/path request
    INFO  2026-02-07T16:20:34 +0ms service=server status=completed duration=0 method=GET path=/path request
    INFO  2026-02-07T16:20:34 +7ms service=server status=completed duration=90 method=GET path=/session request
    INFO  2026-02-07T16:20:34 +32ms service=server status=completed duration=41 method=GET path=/formatter request
    INFO  2026-02-07T16:20:35 +1181ms service=default worker shutting down
    INFO  2026-02-07T16:20:35 +0ms service=default disposing all instances
    INFO  2026-02-07T16:20:35 +1ms service=bus type=* unsubscribing
    INFO  2026-02-07T16:20:35 +0ms service=server event disconnected
    INFO  2026-02-07T16:20:35 +0ms service=default directory=/Users/ivang disposing instance
    INFO  2026-02-07T16:20:35 +0ms service=state key=/Users/ivang waiting for state disposal to complete
    INFO  2026-02-07T16:20:35 +1ms service=state key=/Users/ivang state disposal completed
    
  6. mfattakhov commented on Feb 18, 2026

    @mfattakhov

    Can we remove the windows label or add mac os too? For me it is 5s for input box to load and logs don't help much. It was waaay quicker one or two weeks ago.

    Screen.Recording.2026-02-18.at.09.50.58.mov
    log file:
    INFO  2026-02-18T06:51:01 +55ms service=server method=GET path=/event request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/event request
    INFO  2026-02-18T06:51:01 +0ms service=default directory=/Users/mfattakhov/.config/opencode creating instance
    INFO  2026-02-18T06:51:01 +1ms service=project directory=/Users/mfattakhov/.config/opencode fromDirectory
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/session request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/session request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/config/providers request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/config/providers request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/provider request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/provider request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/agent request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/agent request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/config request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/config request
    INFO  2026-02-18T06:51:01 +13ms service=db path=/Users/mfattakhov/.local/share/opencode/opencode.db opening database
    INFO  2026-02-18T06:51:01 +1ms service=db count=3 mode=bundled applying migrations
    INFO  2026-02-18T06:51:01 +6ms service=default directory=/Users/mfattakhov/.config/opencode bootstrapping
    INFO  2026-02-18T06:51:01 +3ms service=config path=/Users/mfattakhov/.config/opencode/config.json loading
    INFO  2026-02-18T06:51:01 +0ms service=config path=/Users/mfattakhov/.config/opencode/opencode.json loading
    INFO  2026-02-18T06:51:01 +3ms service=config path=/Users/mfattakhov/.config/opencode/opencode.jsonc loading
    INFO  2026-02-18T06:51:01 +0ms service=config path=/Users/mfattakhov/.config/opencode/opencode.json loading
    INFO  2026-02-18T06:51:01 +3ms service=plugin name=CodexAuthPlugin loading internal plugin
    INFO  2026-02-18T06:51:01 +0ms service=plugin name=CopilotAuthPlugin loading internal plugin
    INFO  2026-02-18T06:51:01 +0ms service=plugin name=gitlabAuthPlugin loading internal plugin
    INFO  2026-02-18T06:51:01 +0ms service=plugin path=opencode-anthropic-auth@0.0.13 loading plugin
    INFO  2026-02-18T06:51:01 +12ms service=bus type=* subscribing
    INFO  2026-02-18T06:51:01 +0ms service=bus type=session.updated subscribing
    INFO  2026-02-18T06:51:01 +0ms service=bus type=message.updated subscribing
    INFO  2026-02-18T06:51:01 +0ms service=bus type=message.part.updated subscribing
    INFO  2026-02-18T06:51:01 +0ms service=bus type=session.diff subscribing
    INFO  2026-02-18T06:51:01 +0ms service=format init
    INFO  2026-02-18T06:51:01 +0ms service=bus type=file.edited subscribing
    INFO  2026-02-18T06:51:01 +0ms service=lsp serverIds=deno, typescript, vue, eslint, oxlint, biome, gopls, ruby-lsp, pyright, elixir-ls, zls, csharp, fsharp, sourcekit-lsp, rust, clangd, svelte, astro, jdtls, kotlin-ls, yaml-ls, lua-ls, php intelephense, prisma, dart, ocaml-lsp, bash, terraform, texlab, dockerfile, gleam, clojure-lsp, nixd, tinymist, haskell-language-server enabled LSP servers
    INFO  2026-02-18T06:51:01 +1ms service=scheduler id=snapshot.cleanup run
    INFO  2026-02-18T06:51:01 +1ms service=scheduler id=tool.truncation.cleanup run
    INFO  2026-02-18T06:51:01 +0ms service=bus type=command.executed subscribing
    INFO  2026-02-18T06:51:01 +0ms service=server event connected
    INFO  2026-02-18T06:51:01 +1ms service=bus type=* subscribing
    INFO  2026-02-18T06:51:01 +1ms service=server status=started providers
    INFO  2026-02-18T06:51:01 +1ms service=provider status=started state
    INFO  2026-02-18T06:51:01 +3ms service=server status=completed duration=50 method=GET path=/event request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=49 method=GET path=/config request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=49 method=GET path=/session request
    INFO  2026-02-18T06:51:01 +10ms service=provider init
    INFO  2026-02-18T06:51:01 +4ms service=server status=completed duration=63 method=GET path=/agent request
    INFO  2026-02-18T06:51:01 +2ms service=provider providerID=opencode found
    INFO  2026-02-18T06:51:01 +1ms service=provider providerID=zai-coding-plan found
    INFO  2026-02-18T06:51:01 +0ms service=provider providerID=anthropic found
    INFO  2026-02-18T06:51:01 +0ms service=provider providerID=google-vertex found
    INFO  2026-02-18T06:51:01 +0ms service=provider providerID=google-vertex-anthropic found
    INFO  2026-02-18T06:51:01 +0ms service=provider providerID=lmstudio found
    INFO  2026-02-18T06:51:01 +0ms service=provider status=completed duration=20 state
    INFO  2026-02-18T06:51:01 +19ms service=server status=completed duration=40 providers
    INFO  2026-02-18T06:51:01 +1ms service=server status=completed duration=86 method=GET path=/provider request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=86 method=GET path=/config/providers request
    INFO  2026-02-18T06:51:01 +37ms service=server method=GET path=/command request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/command request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=0 method=GET path=/command request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/lsp request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/lsp request
    INFO  2026-02-18T06:51:01 +1ms service=server status=completed duration=1 method=GET path=/lsp request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/mcp request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/mcp request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=0 method=GET path=/mcp request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/experimental/resource request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/experimental/resource request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=0 method=GET path=/experimental/resource request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/formatter request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/formatter request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/session/status request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/session/status request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=0 method=GET path=/session/status request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/provider/auth request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/provider/auth request
    INFO  2026-02-18T06:51:01 +1ms service=server status=completed duration=1 method=GET path=/provider/auth request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/vcs request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/vcs request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=0 method=GET path=/vcs request
    INFO  2026-02-18T06:51:01 +0ms service=server method=GET path=/path request
    INFO  2026-02-18T06:51:01 +0ms service=server status=started method=GET path=/path request
    INFO  2026-02-18T06:51:01 +0ms service=server status=completed duration=0 method=GET path=/path request
    INFO  2026-02-18T06:51:01 +9ms service=server status=completed duration=10 method=GET path=/formatter request
    INFO  2026-02-18T06:51:06 +5061ms service=default worker shutting down
    INFO  2026-02-18T06:51:06 +1ms service=default disposing all instances
    INFO  2026-02-18T06:51:06 +1ms service=bus type=* unsubscribing
    INFO  2026-02-18T06:51:06 +0ms service=server event disconnected
    INFO  2026-02-18T06:51:06 +0ms service=default directory=/Users/mfattakhov/.config/opencode disposing instance
    INFO  2026-02-18T06:51:06 +0ms service=state key=/Users/mfattakhov/.config/opencode waiting for state disposal to complete
    INFO  2026-02-18T06:51:06 +1ms service=state key=/Users/mfattakhov/.config/opencode state disposal completed
    
  7. hijoe commented on Feb 18, 2026

    @hijoe

    This isn't just windows, it's like that on macos also. Using ghostty takes almost 10 seconds to load. Wezterm is much faster but still noticeably slower since their last big update.

  8. scarf005 commented on Feb 19, 2026

    @scarf005
    Contributor

    please also add linux label or remove windows label, while faster than 20s 3.5s still takes bit of time:

    time opencode
    ^C
    ________________________________________________________
    Executed in    3.51 secs      fish           external
       usr time   17.27 millis  531.00 micros   16.74 millis
       sys time   20.06 millis  312.00 micros   19.75 millis
    
  9. MaxDillon commented on Mar 1, 2026

    @MaxDillon

    This isn't just windows, it's like that on macos also. Using ghostty takes almost 10 seconds to load. Wezterm is much faster but still noticeably slower since their last big update.

    @hijoe @mfattakhov @scratchmex Are you using the opencode system theme? I switched away from the system theme and the sluggishness went away immediately. The mismatch is likely in functions like getTerminalBackgroundColor:app.tsx:44-102

    It can't all be here, as the timeout here is only 1 second, but I think there is a mismatch between the escape sequences that ghostty sends and what we are expecting. Let me know if switching themes resolves your issues as well.

  10. scratchmex commented on Mar 1, 2026

    @scratchmex
    Contributor

    Are you using the opencode system theme?

    I can confirm switching away from the system theme cuts the loading time in a bit more than half. Insane. The time from clear screen to the TUI render now is faster. Still slow overall

  11. MaxDillon commented on Mar 2, 2026

    @MaxDillon
    stty -echo -icanon min 0 time 5
    printf '\033]10;?\007\033]11;?\007\033]12;?\007\033]13;?\007\033]14;?\007\033]15;?\007\033]16;?\007\033]17;?\007\033]19;?\007'
    dd bs=1 count=512 2>/dev/null | /bin/cat -v                                                                                                                                                                                                                     stty sane

    The root issue is in the interaction between the getPallette function in opentui and ghostty. Here are the different responses to this command in ghostty and wezterm:

    ghostty:

    ^[]10;rgb:cdcd/d6d6/f4f4^G^[]11;rgb:1e1e/1e1e/2e2e^G^[]12;rgb:f5f5/e0e0/dcdc^G%
    

    wezterm:

    ^[]10;rgb:cdcd/d6d6/f4f4^[\^[]11;rgb:1e1e/1e1e/2e2e^[\^[]12;rgb:f5f5/e0e0/dcdc^[\^[]17;rgb:5858/5b5b/7070^[\^[]19;rgb:cdcd/d6d6/f4f4^[\% 
    

    We see that ghostty gets back 10, 11, 12 (foreground, background, cursor), but does not return the 17/19. However neither of them return 13, 14, 15, 16, all of which are expected from special colors to return cleanly:

    class TerminalPallette implements TerminalPalletteDetector {
      ...
      private async querySpecialColors(timeoutMs = 1200): Promise<Record<number, Hex>> {
        const out = this.stdout
        const inp = this.stdin
        const results: Record<number, Hex> = {
          10: null,
          11: null,
          12: null,
          13: null,
          14: null,
          15: null,
          16: null,
          17: null,
          19: null,
        }
        ...

    This should lead to both wezterm and ghostty hanging, but there is a backup idleTimer that times out after 150ms of inactivity (no escape sequences). Ghostty has a really chatty protocol, although I haven't looked too closely into why:

    I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[I\x1B[
    

    It sends a continuous stream of these escape sequences, preventing the inactivity timeout from triggering.

    The fix is in opetui, changing the timeout logic to only reset if the results table has been updated in the allotted time. It does not reset on unrelated escape sequences.

  12. CypherpunkSamurai commented on Mar 2, 2026

    @CypherpunkSamurai
    Author

    @MaxDillon are you just using the record feature in zeterm to dump the ansi? or is it just cat tty device dump

  13. MaxDillon commented on Mar 2, 2026

    @MaxDillon

    @MaxDillon are you just using the record feature in zeterm to dump the ansi? or is it just cat tty device dump

    @CypherpunkSamurai I used the command listed at the top of my comment:

    stty -echo -icanon min 0 time 5
    printf '\033]10;?\007\033]11;?\007\033]12;?\007\033]13;?\007\033]14;?\007\033]15;?\007\033]16;?\007\033]17;?\007\033]19;?\007'
    dd bs=1 count=512 2>/dev/null | /bin/cat -v 

    for asking for reported colors.

    The ESC [ I escape sequences, however, turned out to be the real issue as discovered in my fix here
    anomalyco/opentui#765

    Those I got by logging the buffer data directly in the onBuffer function in opentui

    export class TerminalPalette implements TerminalPaletteDetector {
      private async querySpecialColors(timeoutMs = 1200): Promise<Record<number, Hex>> {
        ...
    
        return new Promise<Record<number, Hex>>((resolve) => {
          let buffer = ""
          let idleTimer: NodeJS.Timeout | null = null
    
          const onData = (chunk: string | Buffer) => {
            buffer += chunk.toString()
            ...
  14. mfattakhov commented on Mar 2, 2026

    @mfattakhov

    wow, @MaxDillon thx! it really helped a lot, its still not instant but much more usable. thou I use web ui more and more these days

  15. yassine-safraoui commented on Jun 24, 2026

    @yassine-safraoui

    I'm running into this on Windows, startup time is 11 seconds. I'm on 1.17.9, using Windows Terminal app.

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

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingperfIndicates a performance issue or need for optimizationwindows

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions