diff --git a/README.md b/README.md
index 1c85f08..d4f35d3 100644
--- a/README.md
+++ b/README.md
@@ -14,7 +14,7 @@ The pictures below come from the [demo mode](#demo-mode), on Boite's fake core.
### Every session at a glance
-Point at the pill and the island opens as a deck of tabs. **Threads** lists every conversation running in Boite, however many there are, including those running on your other machines. Sub-agents fold under the conversation that started them. A click opens the thread in Boite.
+Point at the pill and the island opens as a deck of tabs. **Threads** lists every conversation running in Boite, however many there are, including those running on your other machines, each with its machine's name. Sub-agents fold under the conversation that started them. A click opens the thread in Boite.
@@ -36,7 +36,7 @@ When an agent asks for a permission or has a question, the pill says so. Open it
- **Threads**: the sessions at work and the requests waiting for you.
- **Today**: the clock and the week, the next scheduled mission, your to-do list, a focus timer and the day's numbers.
-- **Chat**: your conversation with B.O.T.S.
+- **Chat**: your conversation with B.O.T.S, or with any agent of your Boite, on this machine or another one.
- **Stats**: each subscription's quota windows and when they reset, the threads finished today with their files, time and tokens, and the memory your agents hold.
- **Music**: the player, with the words.
- **Apps**, **Clipboard**, **Wallpapers** and **System**: your computer, on Windows.
diff --git a/src/components/island/MachineChip.svelte b/src/components/island/MachineChip.svelte
new file mode 100644
index 0000000..348d7e0
--- /dev/null
+++ b/src/components/island/MachineChip.svelte
@@ -0,0 +1,31 @@
+
+
+
+{machine}
+
+
diff --git a/src/components/island/assistant/AgentMenu.svelte b/src/components/island/assistant/AgentMenu.svelte
index 85faa5f..9aff6a8 100644
--- a/src/components/island/assistant/AgentMenu.svelte
+++ b/src/components/island/assistant/AgentMenu.svelte
@@ -1,7 +1,8 @@
@@ -71,20 +74,22 @@
>
{agent.name}
+ {#if assistant.machine}{/if}
{#if open}
{copy.agents}
- {#each assistant.agents as entry (entry.id)}
-
diff --git a/src/components/island/assistant/AssistantChat.svelte b/src/components/island/assistant/AssistantChat.svelte
index 862ee2f..3b7ce0f 100644
--- a/src/components/island/assistant/AssistantChat.svelte
+++ b/src/components/island/assistant/AssistantChat.svelte
@@ -123,7 +123,7 @@
class="ghost icon reveal"
aria-label={fill(copy.openAgent, { name })}
title={fill(copy.openAgent, { name })}
- onclick={() => agent && void showAgent(agent.id).catch(() => {})}
+ onclick={() => agent && void showAgent(agent.id, assistant.coreId).catch(() => {})}
data-testid="assistant-reveal"
>
diff --git a/src/components/island/sessions/SessionRow.svelte b/src/components/island/sessions/SessionRow.svelte
index 6dba5c6..a53d3ba 100644
--- a/src/components/island/sessions/SessionRow.svelte
+++ b/src/components/island/sessions/SessionRow.svelte
@@ -8,7 +8,8 @@
here. An ended row offers to start the thread again, archive it, or show the
changes in its folder (`NoticeActions.svelte`); archived, it can be undone
for a few seconds (`archive-undo.ts`). A row can be followed in the pill
- (`followed.ts`): a small eye before its time says so. The actions show on
+ (`followed.ts`): a small eye before its time says so. A thread of another
+ machine of the group names it in a chip after its project. The actions show on
the row under the pointer or the focus, over the row's end and over its
second line, so they take no room and the list never moves. The time
reads calm (`session-time.ts`): seconds under a minute only.
@@ -25,12 +26,15 @@
import { strings } from '../../../lib/strings';
import RobotFace from '../../agents/RobotFace.svelte';
import CompanionReply from '../../companion/CompanionReply.svelte';
+ import MachineChip from '../MachineChip.svelte';
import NoticeActions from './NoticeActions.svelte';
import SubAgentList from './SubAgentList.svelte';
interface Props {
row: SessionRow;
project: string;
+ /** The machine of the group it runs on, when it is not this one. */
+ machine?: string | null;
now: number;
/** The sub-agents of its current run, in start order (`sub-agents.ts`). */
agents: readonly SubAgent[];
@@ -47,7 +51,7 @@
onarchive(): Promise;
}
- let { row, project, now, agents, foldSpace, notice, notes, followed, onreveal, onfollow, onarchive }: Props = $props();
+ let { row, project, machine = null, now, agents, foldSpace, notice, notes, followed, onreveal, onfollow, onarchive }: Props = $props();
const copy = strings.island.sessions;
const foldable = $derived(agents.length > 0);
@@ -70,7 +74,7 @@
onreveal(row.id)}>
- {row.title}{#if project} · {project}{/if}
+ {row.title}{#if project} · {project}{/if}{#if machine} {/if}{state}{#if line} · {line}{/if}
diff --git a/src/components/island/sessions/SessionsList.svelte b/src/components/island/sessions/SessionsList.svelte
index 1b06aa4..c292176 100644
--- a/src/components/island/sessions/SessionsList.svelte
+++ b/src/components/island/sessions/SessionsList.svelte
@@ -5,9 +5,12 @@
the lead robot naps beside "Nothing running": a few breaths, then still.
An archived row leaves a line in its place for a few seconds, to undo it
(`archive-undo.ts`); a row followed in the pill says so (`followed.ts`).
- A row with sub-agents counts the ones at work and unfolds them all.
+ A row with sub-agents counts the ones at work and unfolds them all. A
+ thread of another machine of the group names it in a chip.
-->