Skip to content

Studio: non-loss follow-ups from CodeRabbit's review of #201 #209

Open

Description

@AojdevStudio

CodeRabbit's review of #201 at 361b3c5 left findings that do not lose a draft or send the wrong text. Astra allows them as follow-ups to #201. Each needs a test written first.

  1. A picture path saved before the update is resolved against the wrong folder. A draft from before feat(studio): the window works on the sidecar's committed chats, and the claude -p runner is gone #201 may name a picture by a path relative to its project, and copyPictures (sidecar/src/chat.ts) resolves it from the sidecar's working folder. The send fails with "can't be read". Resolve such paths against the project when the draft is revised at start.
  2. Long names. A picture name near 255 bytes makes a temporary copy name past the file system's limit (.<name>.part), so the copy fails. Use a short temporary name.
  3. Temporary-name collision. A picture named like another one's temporary copy (.photo.jpg.part) can remove that copy during the send. Keep temporary names apart from every name in the draft.
  4. An edited retry makes a second project. After a first send fails once its project is made, an edit gives the start draft a new revision, so the retry makes another project. The first project keeps an empty chat. Tie an edited retry to the first project that has not had its message yet.
  5. Picture previews stay in memory. Previews of pasted pictures are freed only when the window closes. Free a picture's preview once no draft holds it.
  6. Send is on before the chat loads. A send during a turn that has not loaded yet is refused with an error. Keep Send off until the open chat loads.
  7. A stale readiness answer can come back. An earlier setup.check that answers after a later one can bring a cleared notice back. Apply only the newest answer.

Activity

  1. pullfrog commented on Nov 8, 2026

    @pullfrog

    No confirmed duplicate found. #205 covers the draft ownership redesign, while #207 tracks different startup and disk cleanup defects. These follow-ups are against the still-open #201 at 361b3c5.

    Implementation plan — write each regression test first:

    1. In sidecar/src/store.ts, normalize legacy project draft attachment paths during reviseOldDrafts, preserving absolute paths and the correct project context. In sidecar/src/chat.ts, use short, exclusively created temporary names outside the draft’s destination-name set; test long names, colliding names, and retry cleanup.
    2. Extend startProject/chat.send to associate an edited retry with its uncommitted first project without reusing a committed message or losing newer drafts. Test failures before commit, edits, retries, and lost responses alongside Studio drafts: one owner for the draft and the outgoing message #205’s idempotency cases.
    3. In src/studio/StudioApp.tsx, release preview URLs only after no screen draft references them, including after send and screen changes. Test shared references and late pastes.
    4. Keep Send disabled until the current project’s chat.open succeeds, including reconnects and failed loads; guard the send handler too. Sequence setup.check requests so stale successes and failures cannot replace newer results. Test delayed and out-of-order responses in StudioApp.test.tsx.

    Changes to chat.ts touch the update safety model’s tracked source: run the repository’s formal verification skill as well as the sidecar and Studio regression suites.

    Pullfrog  | Implement a fix ➔ | View workflow run | via Pullfrog | Using gpt-6.1-terra | 𝕏

  2. added
    bugSomething isn't working
    enhancementNew feature or request
    rustPull requests that update rust code
    on Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingenhancementNew feature or requestrustPull requests that update rust codetypescript

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions