[Bug]: preview_evaluate accepts returnByValue:false but returns no usable object reference
Los mantenedores suelen responder en 1 día
@juliusmarminge ya está trabajando en esto.
Desde el 21/10/2026.
- #22948 de @juliusmarminge — abierto
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 70/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- electron, typescript
- Área
- backend-api-design
Línea de trabajo
Lee el contrato de returnByValue en packages/contracts/src/previewAutomation.ts y el mapeo de resultados en apps/server/src/preview/ServerBrowserPage.ts. Compara el comportamiento de Runtime.evaluate con false y true, y luego comprueba la cobertura en las pruebas existentes de automatización de vista previa. Se considera terminado cuando false devuelve una referencia utilizable a un objeto remoto o se rechaza explícitamente, mientras que default y true siguen devolviendo el contenido del objeto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Written by human: this is possibly the lowest-priority issue I've ever opened. I seriously doubt anybody has ever actually encountered this problem naturally, but because it was mentioned once, my clankers keep bugging me to get this one fixed. IMO, the right solution is just to reject returnByValue:false altogether and close this out.
Written by AI:
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
packages/contracts or packages/shared
Steps to reproduce
-
Open a fresh blank preview tab in T3 Code Desktop:
preview_open({ profileId: "incognito", reuseExistingTab: false, open: true, show: true }) -
Retain its tab ID and evaluate an object with non-by-value mode:
preview_evaluate({ tabId, expression: "({ alpha: 1, href: location.href })", returnByValue: false }) -
Repeat with
returnByValue:true. -
Repeat with
returnByValueomitted.
Expected behavior
Either return a usable remote-object reference, as the contract describes, or explicitly reject the unsupported false option.
Default and explicit by-value evaluation should continue returning object contents.
Actual behavior
returnByValue:false succeeds but returns only:
{"value":"Object"}
There is no object handle or content in the result.
The same expression with returnByValue:true returns:
{"value":{"alpha":1,"href":"about:blank"}}
Default by-value evaluation also works. The behavior reproduced repeatedly, on both a blank page and a locally served static page.
The original generic execution error from #3716 did not reproduce. This report concerns the remaining contract mismatch.
Impact
Minor bug or occasional failure
Version or commit
main @ 680152e27b2a961686389ca69a1557cbb2c55f08
Environment
Linux x86_64; Electron 44.9.3; Chromium 152.0.7977.167; Codex provider through T3 Code.
Logs or stack traces
No exception is returned.
The contract describes `returnByValue` as:
> Serialize and return the value instead of a remote object reference. Defaults to true.
https://github.com/pingdotgg/t3code/blob/680152e27b2a961686389ca69a1557cbb2c55f08/packages/contracts/src/previewAutomation.ts#L622
The server forwards the option to `Runtime.evaluate`, then maps the result to its value or description. The remote object ID is not returned:
https://github.com/pingdotgg/t3code/blob/680152e27b2a961686389ca69a1557cbb2c55f08/apps/server/src/preview/ServerBrowserPage.ts#L851
Screenshots, recordings, or supporting files
No response
Workaround
Omit returnByValue or set it to true when inspecting serializable values.
Related issues
Focused follow-up requested in the closing comment on #3716:
https://github.com/pingdotgg/t3code/issues/3716#issuecomment-6314979496
Explicitly rejecting false would resolve this report without requiring a new remote-object manipulation feature.
Investigated and drafted by GPT-6.1-Sol through the Codex harness in T3 Code.
- Lenguaje dominante
- TypeScript
- Estrellas
- 24.8k
- Forks
- 6.4k
- Merge medio
- 4 h 35 min
- PR fusionados (30 d)
- 174
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pingdotgg/t3code
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
[Bug]: Forgejo skipped status keeps watch_pull_request pending when no required-check policy is setAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
Los mantenedores suelen responder en 1 día
Todos los issues de pingdotgg/t3code
Issues similares
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 82/100
source-cooperative/docs.source.coop#41 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Nimblesite/SharpLsp#468 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
solidjs-community/solid-primitives#1082 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
Los mantenedores suelen responder en 1 día
-
Bundled uv is never updated and trusts the compromised eMudhra certificatesPosiblemente ocupada @FabienDanieau la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100