Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

Description

@Tylerjet

What happened

I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

Diagnosis

Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

  • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
  • The slow favicon requests took up to 52.301 seconds.
  • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
  • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
  • All 12 affected connection traces included SessionStore.markDisconnected.
  • 23 distinct transport incidents occurred in the analyzed 60-minute window.

On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

Steps to reproduce

A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

  1. Run the T3 Code desktop app with retained projects and threads.
  2. Use the default flat sidebar (legacySidebarEnabled: false).
  3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
  4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
  5. During reconnect hydration, inspect server.trace.ndjson.
  6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
  7. Observe each resolver invocation repeating the findExistingFile candidate probes.
  8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

Version

T3 Code 0.0.34-nightly.20260819.1133
Tag: v0.0.34-nightly.20260819.1133
Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

Environment

Windows 11 x64, build 10.0.26200
Node.js 22.22.3
T3 Code Nightly desktop app using its managed local server
Codex provider

Evidence

Sanitized 60-minute trace summary
Slow tracked RPC roots (>15 seconds): 105
assets.createUrl: 97, maximum 52.301 seconds
vcs.refreshStatus: 2, maximum 40.543 seconds
vcs.listRefs: 6, maximum 24.984 seconds
Affected favicon connection traces: 12
ws.rpc.assets.createUrl spans: 476
AssetAccess.issueAssetUrl spans: 475
ProjectFaviconResolver.resolvePath spans: 461
ProjectFaviconResolver.findExistingFile spans: 9670
traces containing SessionStore.markDisconnected: 12/12
Distinct transport incidents: 23
Live server follow-up:
health responses: 15/15 HTTP 200
median: 1 ms
maximum: 75 ms
desktop process: alive and responding
provider event logs: continued advancing

Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

Related issues

Fix applied or workaround

No fix was applied during this issue-only triage.

The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

Filed by

Codex (GPT-5) via t3 triage

Metadata

Metadata

Assignees

No one assigned

    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

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
       blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      
      Skip to content

      Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

      Description

      @Tylerjet

      What happened

      I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

      The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

      Diagnosis

      Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

      For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

      Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

      • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
      • The slow favicon requests took up to 52.301 seconds.
      • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
      • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
      • All 12 affected connection traces included SessionStore.markDisconnected.
      • 23 distinct transport incidents occurred in the analyzed 60-minute window.

      On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

      Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

      The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

      Steps to reproduce

      A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

      1. Run the T3 Code desktop app with retained projects and threads.
      2. Use the default flat sidebar (legacySidebarEnabled: false).
      3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
      4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
      5. During reconnect hydration, inspect server.trace.ndjson.
      6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
      7. Observe each resolver invocation repeating the findExistingFile candidate probes.
      8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

      A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

      Version

      T3 Code 0.0.34-nightly.20260819.1133
      Tag: v0.0.34-nightly.20260819.1133
      Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

      Environment

      Windows 11 x64, build 10.0.26200
      Node.js 22.22.3
      T3 Code Nightly desktop app using its managed local server
      Codex provider

      Evidence

      Sanitized 60-minute trace summary
      Slow tracked RPC roots (>15 seconds): 105
      assets.createUrl: 97, maximum 52.301 seconds
      vcs.refreshStatus: 2, maximum 40.543 seconds
      vcs.listRefs: 6, maximum 24.984 seconds
      Affected favicon connection traces: 12
      ws.rpc.assets.createUrl spans: 476
      AssetAccess.issueAssetUrl spans: 475
      ProjectFaviconResolver.resolvePath spans: 461
      ProjectFaviconResolver.findExistingFile spans: 9670
      traces containing SessionStore.markDisconnected: 12/12
      Distinct transport incidents: 23
      Live server follow-up:
      health responses: 15/15 HTTP 200
      median: 1 ms
      maximum: 75 ms
      desktop process: alive and responding
      provider event logs: continued advancing

      Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

      Related issues

      Fix applied or workaround

      No fix was applied during this issue-only triage.

      The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

      Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

      Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

      Filed by

      Codex (GPT-5) via t3 triage

      Metadata

      Metadata

      Assignees

      No one assigned

        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

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
          Skip to content

          Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

          Description

          @Tylerjet

          What happened

          I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

          The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

          Diagnosis

          Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

          For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

          Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

          • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
          • The slow favicon requests took up to 52.301 seconds.
          • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
          • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
          • All 12 affected connection traces included SessionStore.markDisconnected.
          • 23 distinct transport incidents occurred in the analyzed 60-minute window.

          On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

          Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

          The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

          Steps to reproduce

          A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

          1. Run the T3 Code desktop app with retained projects and threads.
          2. Use the default flat sidebar (legacySidebarEnabled: false).
          3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
          4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
          5. During reconnect hydration, inspect server.trace.ndjson.
          6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
          7. Observe each resolver invocation repeating the findExistingFile candidate probes.
          8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

          A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

          Version

          T3 Code 0.0.34-nightly.20260819.1133
          Tag: v0.0.34-nightly.20260819.1133
          Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

          Environment

          Windows 11 x64, build 10.0.26200
          Node.js 22.22.3
          T3 Code Nightly desktop app using its managed local server
          Codex provider

          Evidence

          Sanitized 60-minute trace summary
          Slow tracked RPC roots (>15 seconds): 105
          assets.createUrl: 97, maximum 52.301 seconds
          vcs.refreshStatus: 2, maximum 40.543 seconds
          vcs.listRefs: 6, maximum 24.984 seconds
          Affected favicon connection traces: 12
          ws.rpc.assets.createUrl spans: 476
          AssetAccess.issueAssetUrl spans: 475
          ProjectFaviconResolver.resolvePath spans: 461
          ProjectFaviconResolver.findExistingFile spans: 9670
          traces containing SessionStore.markDisconnected: 12/12
          Distinct transport incidents: 23
          Live server follow-up:
          health responses: 15/15 HTTP 200
          median: 1 ms
          maximum: 75 ms
          desktop process: alive and responding
          provider event logs: continued advancing

          Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

          Related issues

          Fix applied or workaround

          No fix was applied during this issue-only triage.

          The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

          Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

          Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

          Filed by

          Codex (GPT-5) via t3 triage

          Metadata

          Metadata

          Assignees

          No one assigned

            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

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

              Description

              @Tylerjet

              What happened

              I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

              The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

              Diagnosis

              Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

              For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

              Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

              • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
              • The slow favicon requests took up to 52.301 seconds.
              • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
              • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
              • All 12 affected connection traces included SessionStore.markDisconnected.
              • 23 distinct transport incidents occurred in the analyzed 60-minute window.

              On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

              Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

              The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

              Steps to reproduce

              A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

              1. Run the T3 Code desktop app with retained projects and threads.
              2. Use the default flat sidebar (legacySidebarEnabled: false).
              3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
              4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
              5. During reconnect hydration, inspect server.trace.ndjson.
              6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
              7. Observe each resolver invocation repeating the findExistingFile candidate probes.
              8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

              A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

              Version

              T3 Code 0.0.34-nightly.20260819.1133
              Tag: v0.0.34-nightly.20260819.1133
              Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

              Environment

              Windows 11 x64, build 10.0.26200
              Node.js 22.22.3
              T3 Code Nightly desktop app using its managed local server
              Codex provider

              Evidence

              Sanitized 60-minute trace summary
              Slow tracked RPC roots (>15 seconds): 105
              assets.createUrl: 97, maximum 52.301 seconds
              vcs.refreshStatus: 2, maximum 40.543 seconds
              vcs.listRefs: 6, maximum 24.984 seconds
              Affected favicon connection traces: 12
              ws.rpc.assets.createUrl spans: 476
              AssetAccess.issueAssetUrl spans: 475
              ProjectFaviconResolver.resolvePath spans: 461
              ProjectFaviconResolver.findExistingFile spans: 9670
              traces containing SessionStore.markDisconnected: 12/12
              Distinct transport incidents: 23
              Live server follow-up:
              health responses: 15/15 HTTP 200
              median: 1 ms
              maximum: 75 ms
              desktop process: alive and responding
              provider event logs: continued advancing

              Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

              Related issues

              Fix applied or workaround

              No fix was applied during this issue-only triage.

              The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

              Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

              Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

              Filed by

              Codex (GPT-5) via t3 triage

              Metadata

              Metadata

              Assignees

              No one assigned

                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

                  , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
                  Skip to content

                  Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

                  Description

                  @Tylerjet

                  What happened

                  I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

                  The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

                  Diagnosis

                  Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

                  For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

                  Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

                  • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
                  • The slow favicon requests took up to 52.301 seconds.
                  • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
                  • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
                  • All 12 affected connection traces included SessionStore.markDisconnected.
                  • 23 distinct transport incidents occurred in the analyzed 60-minute window.

                  On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

                  Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

                  The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

                  Steps to reproduce

                  A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

                  1. Run the T3 Code desktop app with retained projects and threads.
                  2. Use the default flat sidebar (legacySidebarEnabled: false).
                  3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
                  4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
                  5. During reconnect hydration, inspect server.trace.ndjson.
                  6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
                  7. Observe each resolver invocation repeating the findExistingFile candidate probes.
                  8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

                  A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

                  Version

                  T3 Code 0.0.34-nightly.20260819.1133
                  Tag: v0.0.34-nightly.20260819.1133
                  Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

                  Environment

                  Windows 11 x64, build 10.0.26200
                  Node.js 22.22.3
                  T3 Code Nightly desktop app using its managed local server
                  Codex provider

                  Evidence

                  Sanitized 60-minute trace summary
                  Slow tracked RPC roots (>15 seconds): 105
                  assets.createUrl: 97, maximum 52.301 seconds
                  vcs.refreshStatus: 2, maximum 40.543 seconds
                  vcs.listRefs: 6, maximum 24.984 seconds
                  Affected favicon connection traces: 12
                  ws.rpc.assets.createUrl spans: 476
                  AssetAccess.issueAssetUrl spans: 475
                  ProjectFaviconResolver.resolvePath spans: 461
                  ProjectFaviconResolver.findExistingFile spans: 9670
                  traces containing SessionStore.markDisconnected: 12/12
                  Distinct transport incidents: 23
                  Live server follow-up:
                  health responses: 15/15 HTTP 200
                  median: 1 ms
                  maximum: 75 ms
                  desktop process: alive and responding
                  provider event logs: continued advancing

                  Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

                  Related issues

                  Fix applied or workaround

                  No fix was applied during this issue-only triage.

                  The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

                  Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

                  Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

                  Filed by

                  Codex (GPT-5) via t3 triage

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    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

                      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                      Skip to content

                      Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

                      Description

                      @Tylerjet

                      What happened

                      I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

                      The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

                      Diagnosis

                      Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

                      For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

                      Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

                      • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
                      • The slow favicon requests took up to 52.301 seconds.
                      • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
                      • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
                      • All 12 affected connection traces included SessionStore.markDisconnected.
                      • 23 distinct transport incidents occurred in the analyzed 60-minute window.

                      On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

                      Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

                      The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

                      Steps to reproduce

                      A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

                      1. Run the T3 Code desktop app with retained projects and threads.
                      2. Use the default flat sidebar (legacySidebarEnabled: false).
                      3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
                      4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
                      5. During reconnect hydration, inspect server.trace.ndjson.
                      6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
                      7. Observe each resolver invocation repeating the findExistingFile candidate probes.
                      8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

                      A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

                      Version

                      T3 Code 0.0.34-nightly.20260819.1133
                      Tag: v0.0.34-nightly.20260819.1133
                      Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

                      Environment

                      Windows 11 x64, build 10.0.26200
                      Node.js 22.22.3
                      T3 Code Nightly desktop app using its managed local server
                      Codex provider

                      Evidence

                      Sanitized 60-minute trace summary
                      Slow tracked RPC roots (>15 seconds): 105
                      assets.createUrl: 97, maximum 52.301 seconds
                      vcs.refreshStatus: 2, maximum 40.543 seconds
                      vcs.listRefs: 6, maximum 24.984 seconds
                      Affected favicon connection traces: 12
                      ws.rpc.assets.createUrl spans: 476
                      AssetAccess.issueAssetUrl spans: 475
                      ProjectFaviconResolver.resolvePath spans: 461
                      ProjectFaviconResolver.findExistingFile spans: 9670
                      traces containing SessionStore.markDisconnected: 12/12
                      Distinct transport incidents: 23
                      Live server follow-up:
                      health responses: 15/15 HTTP 200
                      median: 1 ms
                      maximum: 75 ms
                      desktop process: alive and responding
                      provider event logs: continued advancing

                      Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

                      Related issues

                      Fix applied or workaround

                      No fix was applied during this issue-only triage.

                      The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

                      Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

                      Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

                      Filed by

                      Codex (GPT-5) via t3 triage

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        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

                          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
                          Skip to content

                          Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

                          Description

                          @Tylerjet

                          What happened

                          I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

                          The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

                          Diagnosis

                          Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

                          For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

                          Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

                          • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
                          • The slow favicon requests took up to 52.301 seconds.
                          • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
                          • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
                          • All 12 affected connection traces included SessionStore.markDisconnected.
                          • 23 distinct transport incidents occurred in the analyzed 60-minute window.

                          On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

                          Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

                          The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

                          Steps to reproduce

                          A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

                          1. Run the T3 Code desktop app with retained projects and threads.
                          2. Use the default flat sidebar (legacySidebarEnabled: false).
                          3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
                          4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
                          5. During reconnect hydration, inspect server.trace.ndjson.
                          6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
                          7. Observe each resolver invocation repeating the findExistingFile candidate probes.
                          8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

                          A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

                          Version

                          T3 Code 0.0.34-nightly.20260819.1133
                          Tag: v0.0.34-nightly.20260819.1133
                          Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

                          Environment

                          Windows 11 x64, build 10.0.26200
                          Node.js 22.22.3
                          T3 Code Nightly desktop app using its managed local server
                          Codex provider

                          Evidence

                          Sanitized 60-minute trace summary
                          Slow tracked RPC roots (>15 seconds): 105
                          assets.createUrl: 97, maximum 52.301 seconds
                          vcs.refreshStatus: 2, maximum 40.543 seconds
                          vcs.listRefs: 6, maximum 24.984 seconds
                          Affected favicon connection traces: 12
                          ws.rpc.assets.createUrl spans: 476
                          AssetAccess.issueAssetUrl spans: 475
                          ProjectFaviconResolver.resolvePath spans: 461
                          ProjectFaviconResolver.findExistingFile spans: 9670
                          traces containing SessionStore.markDisconnected: 12/12
                          Distinct transport incidents: 23
                          Live server follow-up:
                          health responses: 15/15 HTTP 200
                          median: 1 ms
                          maximum: 75 ms
                          desktop process: alive and responding
                          provider event logs: continued advancing

                          Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

                          Related issues

                          Fix applied or workaround

                          No fix was applied during this issue-only triage.

                          The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

                          Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

                          Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

                          Filed by

                          Codex (GPT-5) via t3 triage

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            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

                              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                              Skip to content

                              Uncached project favicon discovery amplifies reconnect hydration into slow RPCs and disconnects #7536

                              Description

                              @Tylerjet

                              What happened

                              I am receiving a lot of slow to respond errors which causes the local client to report as disconnected so I cannot send new messages or interact with actions in the T3 Code UI.

                              The desktop client repeatedly reports slow requests, then marks its managed local server as disconnected. While disconnected, messages cannot be sent and UI actions do not work, although active provider work may continue in the background.

                              Diagnosis

                              Trace analysis against the source matching the installed build found that project favicon requests dominate the slow RPCs.

                              For every assets.createUrl request for a project favicon, AssetAccess.issueAssetUrl calls ProjectFaviconResolver.resolvePath. The resolver has no per-workspace cache or single-flight deduplication, so concurrent requests for the same project repeat the complete candidate and source-file discovery process.

                              Reconnect and sidebar hydration can issue hundreds of these requests. In the affected connection traces:

                              • 97 of 105 tracked RPCs exceeding 15 seconds were assets.createUrl.
                              • The slow favicon requests took up to 52.301 seconds.
                              • 476 assets.createUrl spans led to 475 AssetAccess.issueAssetUrl spans.
                              • 461 ProjectFaviconResolver.resolvePath spans produced 9,670 findExistingFile spans across 11 affected connection traces.
                              • All 12 affected connection traces included SessionStore.markDisconnected.
                              • 23 distinct transport incidents occurred in the analyzed 60-minute window.

                              On-demand VCS activity also appeared in the affected traces and likely compounds the contention, but only eight slow RPC roots were VCS operations. The favicon path was the dominant repeated workload.

                              Live follow-up health probes returned HTTP 200 for 15/15 requests with a 1 ms median and 75 ms maximum. The server process remained responsive and provider event logs continued advancing. This points to a busy/starved transport path rather than a crashed process or network outage.

                              The previously reported unanchored favicon regex is no longer present in this build. Here the resolver calls complete but are repeated hundreds of times without caching or deduplication.

                              Steps to reproduce

                              A clean-profile deterministic UI reproduction has not yet been produced. The observed sequence is:

                              1. Run the T3 Code desktop app with retained projects and threads.
                              2. Use the default flat sidebar (legacySidebarEnabled: false).
                              3. Use projects that do not all have an explicit t3.jsoniconPath or immediately discoverable favicon.
                              4. Allow normal sidebar/project hydration and use the client until a transport reconnect occurs.
                              5. During reconnect hydration, inspect server.trace.ndjson.
                              6. Observe repeated ws.rpc.assets.createUrlAssetAccess.issueAssetUrlProjectFaviconResolver.resolvePath calls for the same workspaces.
                              7. Observe each resolver invocation repeating the findExistingFile candidate probes.
                              8. Under concurrent sidebar/VCS activity, ordinary RPCs exceed 15 seconds and the client reports itself disconnected.

                              A direct server-side performance reproduction would issue concurrent project-favicon assets.createUrl requests for the same workspace and verify that favicon discovery is performed once per request rather than shared or cached.

                              Version

                              T3 Code 0.0.34-nightly.20260819.1133
                              Tag: v0.0.34-nightly.20260819.1133
                              Commit: 24c4ba68f536d56e8482a1e4d7070a6771da551d

                              Environment

                              Windows 11 x64, build 10.0.26200
                              Node.js 22.22.3
                              T3 Code Nightly desktop app using its managed local server
                              Codex provider

                              Evidence

                              Sanitized 60-minute trace summary
                              Slow tracked RPC roots (>15 seconds): 105
                              assets.createUrl: 97, maximum 52.301 seconds
                              vcs.refreshStatus: 2, maximum 40.543 seconds
                              vcs.listRefs: 6, maximum 24.984 seconds
                              Affected favicon connection traces: 12
                              ws.rpc.assets.createUrl spans: 476
                              AssetAccess.issueAssetUrl spans: 475
                              ProjectFaviconResolver.resolvePath spans: 461
                              ProjectFaviconResolver.findExistingFile spans: 9670
                              traces containing SessionStore.markDisconnected: 12/12
                              Distinct transport incidents: 23
                              Live server follow-up:
                              health responses: 15/15 HTTP 200
                              median: 1 ms
                              maximum: 75 ms
                              desktop process: alive and responding
                              provider event logs: continued advancing

                              Counts are grouped by root trace where appropriate; nested failure spans are not reported as separate incidents. Project names, paths, thread identifiers, and user content have been removed.

                              Related issues

                              Fix applied or workaround

                              No fix was applied during this issue-only triage.

                              The Battery Saver background profile was already persisted, automatic Git fetch was disabled, and provider health refresh was set to 15 minutes. The problem still recurred.

                              Enabling Settings → Legacy features → Sidebar (legacy) may reduce sidebar-driven hydration work, but this workaround has not yet been applied or verified on the affected installation.

                              Providing an explicit t3.jsoniconPath may let individual projects bypass parts of favicon discovery, but that has also not been tested as a complete workaround.

                              Filed by

                              Codex (GPT-5) via t3 triage

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                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