---
{
  "n": 60,
  "title": "A window's own chat stays in that window",
  "abstract": "The dump, the board's New work panel, a new board and a new sequence each have a chat of their own; what the user and the agent say there stays there and never reaches the main chat.",
  "refs": [
    "todo:1786",
    "doc:58"
  ],
  "seen": [
    "agent",
    "user"
  ],
  "data": {
    "environment": "main",
    "revisions": 1,
    "open_until": 1790323219.1057851,
    "buttons": [
      {
        "label": "Accept this proposal",
        "say": "I accept this proposal"
      },
      {
        "label": "Change it first",
        "say": "I want changes first"
      }
    ],
    "pressed": [
      "Accept this proposal"
    ]
  },
  "created": 1790321122.4083,
  "updated": 1790789579.851582,
  "deleted": 1790789579.851504,
  "completed": 0.0,
  "outcome": "",
  "type": "doc"
}
---
Proposal from message 10816, for to-do 1786.

## What goes wrong now
A window with its own chat still leaks into the main chat. What the user types in the dump arrives as an ordinary message, so it shows in the main chat. The agent's answer in the dump puts an 'Answered in dump 24' card there. And whatever the agent writes as plain text while working a dump lands in the main chat, questions included. The board's New work panel, a new board and a new sequence have the same leak.

## The idea
Every window that has a chat of its own is a private conversation, kept on the row it is about: the dump, the board, the sequence being drafted. Both sides of it live there and nowhere else.

- **The user's side.** What the user types in the window is stored as a message carrying the window it was written in, such as window dump:24. The main chat leaves out every message that has a window, and each window shows only its own. The agent still hears it, as a message about that window.
- **The agent's side.** The agent answers with one command, journal <type> say <n> "<text>" (dump say and board say already exist), and asks with journal <type> ask. Both write into the window's conversation and nowhere else, with no card in the main chat.
- **Plain text while a window is open.** While the agent works on a window's request, which the sequence it follows already knows (talks_in), its plain turn text is kept out of the main chat, and the agent is told once to use say instead.
- **One funnel.** The window and its conversation are one small piece that the dump, the board, board creation and sequence creation all use, not four copies. A new window with a chat becomes private just by declaring that it has one.

## What the user sees
The main chat shows only the main conversation. Each window shows its whole conversation, the user's words and the agent's, in order. To see what happened in a window, the user opens that window; the main chat says nothing about it.

## Open points
- Should the main chat show one quiet line, such as 'Working in dump 24', while the agent is busy in a window, so it is plain why the agent does not answer in the main chat? My pick: yes, one line, gone when the window closes.
- A message the user writes in the main chat about a window's row still belongs to the main chat.
