Skip to content

Show the SlipJay workspace, its base and uncommitted edits in the composer strip #29

Closed

Description

@pechhe

Part of #21.

Outcome

In a SlipJay-provider project, the strip under the composer says which workspace the thread works in and how that workspace stands against the integration branch, replacing the Git labels that mean nothing there:

  • Left, instead of "Local checkout": the workspace name and its Issue, e.g. ys-2433 · #2433. The project's main checkout reads as <integration> (root), e.g. develop (root). The owner revised allocation on 15 October: an empty draft allocates nothing. Submitting its first message automatically obtains a workspace on the selected host through the existing provider before starting the agent, with no workspace-choice step. The assigned identity is read-only and stable for the conversation.
  • Right, instead of the "Select ref" picker: on <integration>, plus · N behind when the integration branch has moved past the workspace's base, plus · M files when the working copy has uncommitted edits.

The host switch (Local / peach-box) is unchanged and still decides which machine's workspaces are listed.

Settled constraints

  • The integration bookmark comes from slipjay.json. The workspace's Issue comes from SlipJay (slipjay start --issue / attach-issue); with no Issue, show only the name.
  • Status comes from the Jujutsu driver (JjVcsDriver) through the existing VCS status contract (VcsStatusResult), not a parallel SlipJay status path. Jujutsu has no staging area: "files" means the working copy's changed paths.
  • In a SlipJay project the strip stays visible on started threads, regardless of persistComposerContextStrip, so a thread always shows where it works.
  • The SlipJay provider decision is the one the server already makes (WorkspaceProvider, SLIPJAY_PROJECT_FILE_NAME), so the strip and Settings → Version Control can't disagree.
  • Plain Git projects keep "Local checkout", the worktree choices and the ref picker unchanged.

Acceptance

  • An empty draft in a SlipJay project allocates nothing. On first submission it automatically obtains one workspace on the selected host before the provider starts; the user need not select or create it. Retries and later turns reuse the assignment. Read-only children reuse the parent's exact host/workspace without allocation or permission widening.
  • A started thread in a SlipJay workspace shows its name and Issue on the left, and on <integration> with correct behind and file counts on the right; the counts update after the integration branch moves or a file is edited.
  • The main checkout shows <integration> (root).
  • A Git project's strip is unchanged, ref picker included.
  • Tests cover the Jujutsu status values (behind, files) and the strip's SlipJay versus Git rendering.

Non-goals

Moving a started thread to another workspace; landing state (the next Ticket); editing Jujutsu history.

Activity

  1. added
    ready-for-agentSettled scope eligible for dispatch
    and removed
    ready-for-agentSettled scope eligible for dispatch
    on Oct 15, 2026
  2. pechhe commented on Oct 15, 2026

    @pechhe
    OwnerAuthor

    Landed in 6687378: SlipJay threads show their workspace and Issue (or <integration> (root), or New workspace on a draft) and on <integration> · N behind · M files in the composer strip and thread details panel.

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

    ready-for-agentSettled scope eligible for dispatch

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions