Desktop app cannot change keys after the first Setup

Abierto
#564 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@Patriciaath999 ya está trabajando en esto.

Desde el 31/10/2026.

  • #569 de @Patriciaath999 — abierto

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
35/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
rust
Área
desktop, security

Línea de trabajo

Start by reading src/main.rs:446-454, desktop/src/server.rs:118,235, and desktop/src/main.rs:294-330 to trace Setup, the launch save code, child shutdown, and exit handling. Decide how the shell securely obtains or generates the save code, then distinguish an intentional restart from a crash and preserve the refusal while an interview is running or reporting. Done means the desktop Setup page can change keys, restart the child successfully, and retain the web half’s interview-safety behavior.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

The desktop app still offers no way to change keys after the first Setup. #528 reopens Setup from the lobby for a standalone loopback web server and leaves the desktop app's child server out on purpose: run_web passes !launched_as_child when it builds the Setup context (src/main.rs:446), and the shell launches its child with CODETRIAL_EXIT_WITH_STDIN (desktop/src/server.rs:118), so the lobby there never shows Change keys. A desktop user who skipped the Google key still has to find codetrial.env.local under %LOCALAPPDATA%\org.sysprog21.codetrial, edit it by hand and restart the app.

This is the desktop half split out of #513. It needs three things:

  1. Change keys in the child server. #528 requires a save code generated at each launch and printed only to the terminal that started the server (src/main.rs:454). The desktop app has no terminal, so the shell has to obtain that code and supply it to the page, or the child needs another proof only the shell holds.
  2. A restart that is not a failure. After Setup writes the file, the shell has to stop the child with Server::stop (desktop/src/server.rs:235) and call launch again (desktop/src/main.rs:294). Today any child exit reaches Status::Exited, which shows the failure page unless the app is quitting (desktop/src/main.rs:330), so the restart has to be told apart from a crash.
  3. The same refusal as the web half. #528 refuses a save while a local interview is running or still writing its report; the desktop restart must keep that, so it never ends an interview in progress.

Which should carry the save code to the desktop page: the shell reading it from the child's output, or the shell generating it and passing it to the child at launch?

Lenguaje dominante
Rust
Estrellas
223
Forks
148
Merge medio
1 d 10 h
PR fusionados (30 d)
227

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de sysprog21/codetrial

Todos los issues de sysprog21/codetrial

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.