Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Update to
0.0.46-nightly.20261006.2735and restart the server. - Open any page in the preview pane, for example with
preview_open. - Look at text, borders, and map tiles, then scroll and stop.
Expected behavior
Previews look as sharp as they did on 0.0.46-nightly.20261005.2689. If the streamed server browser is now the default, there is a setting to keep previews in the local or desktop browser, or at least to raise the stream quality.
Actual behavior
Every preview is now a server-side Chromium screencast, sent to the client as JPEG frames. Text looks soft and edges show compression artifacts. While scrolling, the stream drops to half resolution and quality 50.
There is no setting to opt out:
- The server hardcodes
serverBrowser: truein the environment capabilities. - The client picks the runtime with
capabilities.serverBrowser === true ? "server" : undefined, with no user setting involved. The desktop app is also routed toserver, even thoughwindow.desktopBridge.previewis available. /api/preview-stream/wsaccepts aqualityparameter (defaultDEFAULT_QUALITY = 70), but the client never sends one. The client does sendmaxWidthandmaxHeightin device pixels, so resolution isn't the cause.- Motion mode (
SCREENCAST_MOTION_QUALITY = 50, scale 0.5) starts after 4 frames within 300 ms of a scroll.
Request: add a setting to turn off the server browser for preview tabs and use the desktop or local runtime, either per environment or per client. Separately, raise the default JPEG quality, or expose it as a setting. Recordings already use 90.
Impact
Major degradation or frequent failure
Version or commit
0.0.46-nightly.20261006.2735 (regression from 0.0.46-nightly.20261005.2689)
Environment
Linux x64 server running as a systemd user service; viewed through the T3 Connect relay.
Workaround
Pin the server to 0.0.46-nightly.20261005.2689, which has no server browser.
Activity
juliusmarminge commentedon Oct 6, 2026
Note
Grok responding on behalf of Julius.
Confirmed on current
main. After #15328, environments advertiseserverBrowser: true(ServerEnvironmentcapabilities), and the web client always picksruntime: "server"when that flag is set (previewRuntimeFor/readEnvironmentSupportsServerBrowser). There is no client or environment setting that opts preview tabs back to a local or desktop runtime.Streamed viewers hit
/api/preview-stream/wsas JPEG screencast frames. The server defaultsqualityto70(DEFAULT_QUALITYinServerBrowserStream.ts). The client never sendsquality— onlymaxWidth/maxHeight(packages/client-runtime/src/preview/serverBrowserStream.ts) — so every Connect / non-native viewer stays on that default. Recordings already use quality90(RECORDING_SCREENCASTinServerBrowser.ts).While scrolling, motion mode kicks in after 4 frames within 300 ms of a scroll (
SCREENCAST_MOTION_FRAMES/SCREENCAST_MOTION_WINDOW_MS): scale drops to0.5and quality is capped atSCREENCAST_MOTION_QUALITY(50). That matches the half-resolution + soft scroll artifacts in the report.Nuance for desktop: the primary desktop environment can still draw server tabs in a native
<webview>(rendersServerTabNatively), which is not the JPEG path. The Connect-relay / remote-viewer path (this report) always streams. Discussion #15339 is about which browser serves an agent when several desktops share an environment — related product choice, not a duplicate. #9872 is about screenshot quality in narrow previews, a different surface.Next steps (either or both):
serverwheneverserverBrowseris advertised.qualityfrom the client), and reconsider motion scale/quality for text-heavy pages. Recordings at 90 are a useful reference.Pinning to
0.0.46-nightly.20261005.2689remains the workaround until then.zaunermax commentedon Oct 6, 2026
While I think it is super duper cool that T3 code now can access locally running dev servers, wouldn't it be better to just tunnel those through somehow and "access" the dev environments over the wire? Local browser rendering will always be faster than streaming something over the wire 🤔 On the other hand this could be nice for when I am on the phone and there is no preview browser, so making it somehow controllable would be super nice. In older versions this was easily solvable by just creating a skill which tells the agent how to give you a linkt that you can open via tailscale or some VPN over the integrated browser - enabling fast iterations with the agent. Now it's just impossible to use the integrated browser anymore in tandem with the agent haha.
Also minor nit: the new browser doesn't let you re-size the borders anymore, which is also a very big downgrade when you are on a small laptop screen, having to change the numbers in the top screen and not being able to just resize the window anymore.
Thanks for your efforts on this awesome software!
CaseyBlackburn commentedon Oct 7, 2026
This is one of my many frustrations with this change. Additionally the latency and the lack of decent motion rendering you get with a stream. (even on the same local network). The lack of annotations (my favorite tool) and not being able to do a right click also feel like major degradation. I was unsure if it would be proper to create issues about all of these things so for the time being I'm just expanding on here.
I understand that this is a nightly and you have to start somewhere. I was hoping this would have been the resolution to work arounds I've been doing to painlessly access the remote machines dev services without tons of environment changes, but this streaming browser solution doesn't seem like a solution to my frustrations (hopefully it is for someone else's). I guess I was hoping for some solution like each remote T3 Code machine runs a SOCKS proxy and the machine you are working from uses that in its browser with the localhost proxy bypass disabled. (This would require the different remote environments to have each their own profile on your machine but you should be able to access localhost resources on the remote machine and not have to worry about port collisions between machines like you would if using SSH port forwarding)
Anyways, just trying to boost importance of this issue. Thanks for all the hard work from the contributors!
zaunermax commentedon Oct 7, 2026
Now that Theo even showed off how to develop UIs fast with astra on ultafast, it's not even feasible anymore because the remote streaming is so laggy and sluggish lol 🫣
neel-kumar-v commentedon Oct 7, 2026
I already had my Tailscale set up that my remote computer could tunnel my dev environment preview over to my phone & laptop. This has to be brought back as an option otherwise I will just have to revert the version I use.
I do want to add that there are definitely some difficulties with getting the exact link sometimes from the agent, that could definitely be handled better, but the streaming version is essentially useless.
jjsessa commentedon Oct 8, 2026
+1 for a setting to opt out of the server browser. I run T3 on a headless Mac and use it from a MacBook and a phone over Tailscale. Every dev server is already reachable from my devices, so I want preview and agent tabs to open in the browser on the device I'm using, not in a headless Chromium on the server. A per-client or per-environment toggle to use the local or desktop browser runtime would cover it.
booklet-mikolajczak commentedon Oct 8, 2026
+1. Same setup here: T3 desktop on a Linux (Ubuntu) machine, used locally and from other devices over Tailscale. Our dev servers are already reachable from every device, so a local/desktop
<webview>render would be sharper and lower-latency than the headless Chromium stream. A per-client setting "Prefer desktop preview when available" would fully solve it for us.Xanacas commentedon Oct 8, 2026
I see the benefit and the intent, but please let us have both options.
let the agent use the server side preview for the stuff that he is doing by default but, let me open my dev server as embedded browser tab clientside, while still having the annotation tools and the ability to let the agent control that tab.
Let me set a default in the settings, and let me and the agent pick where to open a new tab.
juliusmarminge commentedon Oct 8, 2026
Note
Grok responding on behalf of Julius.
Closing as fixed by merged #17316 — on desktop, user-opened tabs for remote environments now render locally instead of the blurry server stream, which is the opt-out this asked for. Agent tabs and web/mobile still stream.