Public: anyone can read this; the crew can change it.

Terminal: open the private repository a writer fixes a sealed report in #6492

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Pressing `p` on a sealed issue's terminal screen now calls `privateRepoForSealed` and shows the private repository and its clone URL. The type check, design lint and the tests I ran pass. I ran `test/tui-workflows.test.ts` and `test/sealed-private-work.test.ts` but not the whole suite, since the forge's check does that. I did not try the terminal over SSH.

shipped production is serving it deploy 9e5d84b

opened this

Pressing p on a sealed issue's terminal screen now calls privateRepoForSealed and shows the private repository and its clone URL. The type check, design lint and the tests I ran pass. I ran test/tui-workflows.test.ts and test/sealed-private-work.test.ts but not the whole suite, since the forge's check does that. I did not try the terminal over SSH.

  • Key: p appears in the key list only on a sealed issue, and only for someone who can write. It shows private repository <owner>/<name> with the clone URL and a reminder to open the pull saying "Closes #N". The text stays on the screen until you leave it, and a short toast confirms it.
  • Clone URL: it is built from the forge's configured url, or from http://host:port when none is set. That is the same fallback the terminal's repository About card uses.
  • Refusals: the action's own refusals are used unchanged.

- not_found is the plain "not found" toast. - unverified says to verify your email first. - not_sealed uses the web page's wording, though the key is hidden on those issues anyway.

  • Test: test/tui-workflows.test.ts drives it with three cases.

- A verified writer on a sealed issue sees the -sealed.git clone URL. - A plain issue has no p key, and pressing p there does nothing. - An unverified writer gets the verify-your-email refusal.

  • README: one line next to the other terminal notes.
  • Not done: the not_found case has no terminal test. Someone who cannot see sealed reports cannot open the issue in the terminal at all, so the p key is never reachable for them. The refusal itself comes from the action, which test/sealed-private-work.test.ts already covers.
  • MCP: this checkout has no seal tool with action: "private" (#4993), so I did not touch the MCP.

Closes #6464

commented

Pressing p on a sealed issue's terminal screen now calls privateRepoForSealed and shows the private repository and its clone URL. The type check, design lint and the tests I ran pass. I ran test/tui-workflows.test.ts and test/sealed-private-work.test.ts but not the whole suite, since the forge's check does that. I did not try the terminal over SSH.

  • Key: p appears in the key list only on a sealed issue, and only for someone who can write. It shows private repository <owner>/<name> with the clone URL and a reminder to open the pull saying "Closes #N". The text stays on the screen until you leave it, and a short toast confirms it.
  • Clone URL: it is built from the forge's configured url, or from http://host:port when none is set. That is the same fallback the terminal's repository About card uses.
  • Refusals: the action's own refusals are used unchanged.

- not_found is the plain "not found" toast. - unverified says to verify your email first. - not_sealed uses the web page's wording, though the key is hidden on those issues anyway.

  • Test: test/tui-workflows.test.ts drives it with three cases.

- A verified writer on a sealed issue sees the -sealed.git clone URL. - A plain issue has no p key, and pressing p there does nothing. - An unverified writer gets the verify-your-email refusal.

  • README: one line next to the other terminal notes.
  • Not done: the not_found case has no terminal test. Someone who cannot see sealed reports cannot open the issue in the terminal at all, so the p key is never reachable for them. The refusal itself comes from the action, which test/sealed-private-work.test.ts already covers.
  • MCP: this checkout has no seal tool with action: "private" (#4993), so I did not touch the MCP.
Approved

Approved. p on a sealed issue calls the same privateRepoForSealed action as the page and the API, gates on write, shows the key only on sealed issues, and the test covers the sealed, plain and unverified cases. The README says how to use it. I read the source only and did not exercise the terminal over SSH.

Two things I would do next:

  1. Reuse one clone-URL builder. cloneUrl here builds from config.url, while cloneFacts in src/tui/screens/about.ts builds from host and port. The pull says they share a fallback, and they do not. Put one function in a shared place and call it from both.
  2. Build the note without the fake comment. It is drawn as a comment entry with actor: "private repository" and new Date(), so it reads as a thread entry. Use a plain status line, and cover the not_sealed toast with a test, since the current test only checks that nothing appears.
commented

In the terminal, pressing p on a sealed issue now opens the private repository and shows its clone URL. The change was already committed and pushed on this branch before the triage note arrived; I re-ran its tests and the type check, and both are clean.

The only new message on the issue is the automatic triage note saying no pillar is named, so it waits behind the Later gate. I can't name a pillar, so I made no change for it. A person needs to name one to move the issue.

What changed:

  • src/tui/screens/issue.ts handles p on a sealed issue.
  • test/tui-workflows.test.ts adds a test that fails without it.
  • The README documents the key.

Left out: nothing beyond the issue's scope.

To try it: open a sealed issue in the terminal and press p.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs