Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: function pinnedGroup
created: 2026-10-15T03:19:17Z
norm: '1'
sig: 58e3b298c3735df9
body_hash: b8c3efd6fb70866d
raw_hash: d12e8469fd135be8
vouched: 2026-10-15T03:35:06Z
body_hash: 8d39b5406045357d
raw_hash: 8adf6bb06abf3680
vouched: 2026-10-22T14:47:34Z
lines: 149-161
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: function App
created: 2026-10-15T03:38:04Z
norm: '1'
sig: 063d0f00fea02511
body_hash: a9cafa59e02070dc
raw_hash: df133116ed1fd81f
vouched: 2026-10-22T14:56:07Z
body_hash: e4eb291a858d929b
raw_hash: 6281f263fe223b15
vouched: 2026-10-22T15:09:40Z
lines: 235-824
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: function row
created: 2026-10-19T20:51:09Z
norm: '1'
sig: 3ee93dbf7c44f79a
body_hash: 1c77e647620585f1
raw_hash: 25dda144b7871c5f
vouched: 2026-10-21T22:00:14Z
body_hash: 8365145a4d0f53de
raw_hash: c6795856e4c91aa5
vouched: 2026-10-22T14:47:34Z
lines: 120-170
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: '@file'
created: 2026-10-14T17:32:54Z
norm: '1'
sig: 9d222e7bbdcbbb9b
body_hash: 3aa62bf2730ffbd6
raw_hash: 25ea69f781b64004
vouched: 2026-10-15T17:31:19Z
body_hash: d991eadc415d5ec7
raw_hash: 45c8c49ae096f57c
vouched: 2026-10-22T14:47:34Z
lines: 1-102
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: function Dashboard
created: 2026-10-19T20:51:03Z
norm: '1'
sig: 4bfb45497157c0e0
body_hash: 3517529f5c766be4
raw_hash: 40843a80b4f5c8da
vouched: 2026-10-22T14:56:08Z
body_hash: d1696132fea7c765
raw_hash: 907b4bdd8de26f76
vouched: 2026-10-22T15:09:45Z
lines: 256-606
---

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
id: 01M5J19G3V2MV9HP7BDEH6QX5F
anchor: function said
created: 2026-10-22T14:47:23Z
norm: '1'
sig: e80bd30ab53e049a
body_hash: ae83801c0d0d76e7
raw_hash: c4ce2d878b06ba59
lines: 285-290
---

mention counts only grow; apps subtract the count they last saw, so resetting one hides or invents mentions
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ anchor: function local
created: 2026-10-19T20:56:13Z
norm: '1'
sig: 2bb79c92d28ae467
body_hash: fa355c5e44da2b1a
raw_hash: c5e60940ca9e03a5
body_hash: 403aedf70502b8fa
raw_hash: 9a6b1610ac602b9d
vouched: 2026-10-22T14:47:34Z
lines: 92-145
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: '@file'
created: 2026-10-20T17:04:56Z
norm: '1'
sig: 1acdc0f6a0895ac5
body_hash: fa085b53cc7365ec
raw_hash: 40117df15a7c5ea7
vouched: 2026-10-22T15:02:43Z
body_hash: 38cce3f1f25177dd
raw_hash: e92b21447ef6a159
vouched: 2026-10-22T15:09:48Z
lines: 1-1153
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: '@file'
created: 2026-10-22T14:00:47Z
norm: '1'
sig: 1acdc0f6a0895ac5
body_hash: fa085b53cc7365ec
raw_hash: 40117df15a7c5ea7
vouched: 2026-10-22T15:02:43Z
body_hash: 38cce3f1f25177dd
raw_hash: e92b21447ef6a159
vouched: 2026-10-22T15:09:55Z
lines: 1-1309
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: '@file'
created: 2026-10-15T02:58:00Z
norm: '1'
sig: 1a43097a4e1ad24c
body_hash: b6bff4ee7aa001b5
raw_hash: da64faa9eaa88a3e
vouched: 2026-10-20T17:05:11Z
body_hash: 3d68c7dfc3bf4c24
raw_hash: eac2665348c286fe
vouched: 2026-10-22T14:47:34Z
lines: 1-194
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ anchor: function link
created: 2026-10-15T05:13:18Z
norm: '1'
sig: 70a4266f20c7e0b6
body_hash: ab38af677adfb446
raw_hash: d6d6ef85bf34d26e
body_hash: 9c7b5f0af7b00b30
raw_hash: b03cf6340d03ce58
vouched: 2026-10-22T14:47:35Z
lines: 24-115
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: class Channel
created: 2026-10-14T17:33:22Z
norm: '1'
sig: c905677fa4be33c1
body_hash: 64e6dacda54276dc
raw_hash: 6d689f07f518e3a9
vouched: 2026-10-22T15:03:17Z
body_hash: 197cae8f51ae874a
raw_hash: 18b03b0abb19ae39
vouched: 2026-10-22T15:09:56Z
lines: 114-792
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: class Channel
created: 2026-10-15T00:30:42Z
norm: '1'
sig: c905677fa4be33c1
body_hash: 64e6dacda54276dc
raw_hash: 6d689f07f518e3a9
vouched: 2026-10-22T15:03:17Z
body_hash: 197cae8f51ae874a
raw_hash: 18b03b0abb19ae39
vouched: 2026-10-22T15:09:57Z
lines: 114-792
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: class Channel
created: 2026-10-15T02:34:37Z
norm: '1'
sig: c905677fa4be33c1
body_hash: 64e6dacda54276dc
raw_hash: 6d689f07f518e3a9
vouched: 2026-10-22T15:03:17Z
body_hash: 197cae8f51ae874a
raw_hash: 18b03b0abb19ae39
vouched: 2026-10-22T15:09:58Z
lines: 114-794
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: class Channel
created: 2026-10-15T10:17:55Z
norm: '1'
sig: c905677fa4be33c1
body_hash: 64e6dacda54276dc
raw_hash: 6d689f07f518e3a9
vouched: 2026-10-22T15:03:17Z
body_hash: 197cae8f51ae874a
raw_hash: 18b03b0abb19ae39
vouched: 2026-10-22T15:09:58Z
lines: 121-817
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ anchor: class Channel
created: 2026-10-16T22:11:35Z
norm: '1'
sig: c905677fa4be33c1
body_hash: 64e6dacda54276dc
raw_hash: 6d689f07f518e3a9
vouched: 2026-10-22T15:03:17Z
body_hash: 197cae8f51ae874a
raw_hash: 18b03b0abb19ae39
vouched: 2026-10-22T15:09:59Z
lines: 127-873
---

Expand Down
17 changes: 11 additions & 6 deletions apps/app/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import {
} from "@ace/host/protocol";

import { chosen, deployed, remember } from "./address";
import { glow, type Outcome, useAttention } from "./attention";
import { type Attention, glow, useAttention } from "./attention";
import { Channel, ChannelDetails, type ChannelDraft } from "./channel";
import { useCompute } from "./compute";
import { Dashboard } from "./dashboard";
Expand Down Expand Up @@ -135,8 +135,9 @@ function row(
user: string,
host: string,
online: SidebarRow["online"],
outcome?: Outcome,
attention?: Attention,
): SidebarRow {
const outcome = attention?.mark;
const place = placement(channel);
// A host's channels are all its owner's, so this is also the host's owner-only check.
const own = channel.owner === user && channel.host === host;
Expand Down Expand Up @@ -175,9 +176,9 @@ function row(
agent: channel.state === "running" && channel.busy && outcome !== "question"
? "thinking"
: "idle",
unreadCount: outcome === "done" ? 1 : 0,
unreadCount: outcome === "done" || outcome === "message" ? 1 : 0,
needsAttention: outcome === "failed" || outcome === "question",
mentionCount: 0,
mentionCount: attention?.mentions || 0,
lastActivityAt: Math.floor((channel.active || channel.created) / 1000),
online,
};
Expand All @@ -199,7 +200,7 @@ function pinnedGroup(
pins: string[],
hello: Hello,
collapsed: Partial<Record<SessionSidebarGroupId, boolean>>,
attention: Map<string, Outcome>,
attention: Map<string, Attention>,
online: (channel: Listing) => SidebarRow["online"],
): SessionSidebarGroup {
const rows = pins.flatMap((id) => {
Expand Down Expand Up @@ -228,7 +229,7 @@ function projectGroups(
people: People,
now: number,
collapsed: Partial<Record<SessionSidebarGroupId, boolean>>,
attention: Map<string, Outcome>,
attention: Map<string, Attention>,
pins: string[],
online: (channel: Listing) => SidebarRow["online"],
): SessionSidebarGroup[] {
Expand Down Expand Up @@ -447,9 +448,12 @@ export function App() {
removable: removable(value),
})),
];
const github = people[hello.user];
const names = useMemo(() => github ? [github.toLowerCase()] : [], [github]);
const { attention, pulse } = useAttention(
channels,
hello.user,
names,
page === "channels" ? channel?.id : undefined,
);
const online = (channel: Listing) =>
Expand Down Expand Up @@ -955,6 +959,7 @@ export function App() {
user={hello.user}
people={people}
presence={presence[current.id]}
attention={attention}
local={local}
connected={connected}
onSetup={!local && current.repo ? () => startSetup(current) : undefined}
Expand Down
Loading