> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fabriqa.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Chat & Conversations

> Work across multiple chat tabs, navigate messages with keyboard shortcuts, fork conversations, queue follow-ups, and control streaming output.

# Chat & Conversations

Fabriqa organizes work into chats within a workspace. Each chat is an isolated conversation with its own history, context, and output. This page covers how to create, navigate, and control chats efficiently.

## Chat Tabs

Each workspace can have multiple chats open simultaneously as tabs across the top of the window.

* **`Cmd+N`** — create a new chat in the current workspace.
* **`Cmd+Shift+N`** — create a new chat linked to a git worktree (opens mode picker).
* **`Cmd+W`** — close the active tab.
* **`Cmd+1`–`Cmd+9`** — jump directly to any tab by position.

Tabs can be dragged to reorder them. Each tab maintains its own draft input independently.

## View Modes

Fabriqa offers three ways to render chat output. Toggle between them with **`Cmd+Shift+M`** (cycles through all three) or use slash commands:

| Mode                 | Description                                                  | Slash Command      |
| -------------------- | ------------------------------------------------------------ | ------------------ |
| **Document**         | Formatted markdown with rich text, headings, and code blocks | `/render-document` |
| **Terminal Full**    | Full terminal-style output — every line, unstyled            | `/render-terminal` |
| **Terminal Summary** | Terminal-style output, collapsed for readability             | `/cycle-view`      |

The selected mode is a global app setting that applies to all chat windows. Switch it at any time without losing conversation history.

## Message Navigation

Navigate within a conversation entirely from the keyboard — no scrolling required:

| Action                        | macOS            | Windows / Linux |
| ----------------------------- | ---------------- | --------------- |
| Scroll to top                 | `Cmd+↑`          | `Ctrl+↑`        |
| Scroll to bottom              | `Cmd+↓`          | `Ctrl+↓`        |
| Jump to previous message      | `Option+↑`       | `Alt+↑`         |
| Jump to next message          | `Option+↓`       | `Alt+↓`         |
| Jump to previous user message | `Option+Shift+↑` | `Alt+Shift+↑`   |
| Jump to next user message     | `Option+Shift+↓` | `Alt+Shift+↓`   |
| Select all messages           | `Cmd+A`          | `Ctrl+A`        |

<Note>
  Navigation shortcuts activate when the chat input is not focused. Click on the message area or press `Escape` to blur the input first.
</Note>

## Forking Conversations

Fork a conversation to branch from any previous assistant message and explore an alternative path without losing the original thread.

1. Hover over an assistant message.
2. Click the **fork** icon that appears in the message action bar.
3. A new tab opens with the conversation history up to that point, ready for a new prompt.

The original conversation is unchanged. Forks are listed as separate chat tabs.

## Queue While Streaming

You don't need to wait for a response to finish before sending your next message. Type your follow-up in the composer while a response is still streaming and press `Enter` — Fabriqa queues it and executes it automatically when the current response completes.

This is useful for chaining instructions: "now add tests", "now update the README", etc.

## Cancel and Steer

To stop an in-progress response:

* Press **`Esc Esc`** (double Escape) — the streaming stops immediately.
* Or type `/cancel` in the composer.

After cancelling, the partial response stays in the conversation. You can then send a corrected or refined instruction.

## Sticky User Message Strip

A pinned header strip shows the most recent user instruction at the top of the chat view while the assistant is responding. This helps you keep track of what you asked, especially during long agentic runs with many tool calls.

## Thinking and Plan Blocks

When the active model uses extended thinking or proposes a plan before executing:

* **Thinking blocks** are displayed inline with a collapsible toggle. Expand to see the model's reasoning process.
* **Plan blocks** show the proposed list of steps with **Approve** and **Reject** controls. Approving a plan lets the agent proceed; rejecting lets you redirect.

## Send and Input Controls

| Action               | Shortcut                     |
| -------------------- | ---------------------------- |
| Send message         | `Enter`                      |
| New line in composer | `Shift+Enter`                |
| Show shortcuts help  | `?` (when input not focused) |
