Haruno Knowledge base

Branching a chat

Copy a conversation into a new chat to try another direction without losing the original.

  • Mac appNot availableThe Mac app has no equivalent.
  • Windows appAvailable

A branch is a new chat that starts as a copy of an existing one. You can take it in a new direction, and the original stays exactly as it was. Use it when you want to try another approach, or keep a version before you change something.

Three ways to branch

  • On a message. Rest the pointer on a message and choose Branch in new chat, or right-click the message and choose it there. The branch keeps the conversation up to the end of that exchange. An exchange is your message and Haruno's answer to it.
  • The whole chat. Choose File ▸ Branch chat. The branch keeps everything.
  • From History. Open More actions on a chat in the list and choose Branch in new chat. It keeps the whole chat.
The branch button sits beside Copy under a reply.
A reply from Haruno with two small buttons under its text: branch and copy.A reply from Haruno with two small buttons under its text: branch and copy.

What happens next

The branch opens in place of the chat on screen, so you can carry on right away. It has its own row in History, named after the original with "(branch)" added, and it is an ordinary chat from then on. Writing in it does not change the original.

The branch is listed at the top of History, with the time you made it. Branching a branch does not add a second "(branch)" to the name.

While the copy is being made the status line says "Creating branch…".

When Branch is not offered

  • While Haruno is working on a reply. Wait for it to finish, or stop it.
  • In a chat that has not started yet.
  • On a message that has no saved position in the conversation, such as a /command, a turn that failed, or a message that was shortened when the conversation was compacted.
  • In an automation's conversation opened from Hooks.
  • In an archived chat. History offers the choice only for active chats.
  • In a temporary chat. See Temporary chat.

If you type /branch or /fork in a temporary chat or an automation's conversation, Haruno answers that it is not available there.

When it does not work

  • "Couldn't branch chat" means nothing was made.
  • "Branch saved to History. Open it from there." means the branch exists but could not be opened on screen. Open it from History.
Branch, edit or regenerate?

Branch keeps both versions. Edit message replaces the rest of the chat from that message on. Regenerate answer replaces the latest answer and saves the old one in History. See Regenerating a reply.

Last updated · PR #2944 · View this version on GitHub

History (1 version)
  1. Internal knowledge base for staff: site, reader keys, assistant, 197 pages and the PR rule (#2944)
    What changed
    @@ -0,0 +1,48 @@
    +---
    +title: Branching a chat
    +summary: Copy a conversation into a new chat to try another direction without losing the original.
    +feature: chat-branching
    +covers:
    +  - windows-client/docs/chat-branching.md
    +  - windows-client/Haruno.Desktop.ViewModels/Chat/ChatBranchCoordinator.cs
    +  - windows-client/Haruno.Desktop.Services/Chat/ChatTranscriptRepository.cs
    +  - windows-client/haruno-webview/web/src/state/branchGuard.ts
    +---
    +
    +A branch is a new chat that starts as a copy of an existing one. You can take it in a new direction, and the original stays exactly as it was. Use it when you want to try another approach, or keep a version before you change something.
    +
    +## Three ways to branch
    +
    +- **On a message.** Rest the pointer on a message and choose **Branch in new chat**, or right-click the message and choose it there. The branch keeps the conversation up to the end of that exchange. An exchange is your message and Haruno's answer to it.
    +- **The whole chat.** Choose **File ▸ Branch chat**. The branch keeps everything.
    +- **From History.** Open **More actions** on a chat in the list and choose **Branch in new chat**. It keeps the whole chat.
    +
    +<Shot src="/m/af6d49fc67f3-windows-chat-branch-button-light.png" dark="/m/c6a8027bcc97-windows-chat-branch-button-dark.png" alt="A reply from Haruno with two small buttons under its text: branch and copy." caption="The branch button sits beside Copy under a reply." />
    +
    +## What happens next
    +
    +The branch opens in place of the chat on screen, so you can carry on right away. It has its own row in History, named after the original with "(branch)" added, and it is an ordinary chat from then on. Writing in it does not change the original.
    +
    +The branch is listed at the top of History, with the time you made it. Branching a branch does not add a second "(branch)" to the name.
    +
    +While the copy is being made the status line says "Creating branch…".
    +
    +## When Branch is not offered
    +
    +- While Haruno is working on a reply. Wait for it to finish, or stop it.
    +- In a chat that has not started yet.
    +- On a message that has no saved position in the conversation, such as a `/command`, a turn that failed, or a message that was shortened when the conversation was compacted.
    +- In an automation's conversation opened from Hooks.
    +- In an archived chat. History offers the choice only for active chats.
    +- In a temporary chat. See [Temporary chat](/windows/chat/temporary-chat/).
    +
    +If you type `/branch` or `/fork` in a temporary chat or an automation's conversation, Haruno answers that it is not available there.
    +
    +## When it does not work
    +
    +- "Couldn't branch chat" means nothing was made.
    +- "Branch saved to History. Open it from there." means the branch exists but could not be opened on screen. Open it from History.
    +
    +<Callout variant="tip" title="Branch, edit or regenerate?">
    +**Branch** keeps both versions. **Edit message** replaces the rest of the chat from that message on. **Regenerate answer** replaces the latest answer and saves the old one in History. See [Regenerating a reply](/windows/chat/regenerate/).
    +</Callout>