feat(sidebar): Smart Done means finished and unread (dark) (#30425)

* feat(sidebar): Smart Done means finished and unread (dark)

Owner decision Q1: with ORCA_SIDEBAR_INPUTS=main, a Done row holds its tier only
while the workspace unread flag is set, so opening the workspace or sending the
next prompt ends it. Reuses the existing flag; no new state or timer.

Co-Authored-By: Claude <noreply@anthropic.com>

* test(sidebar): reading a workspace drops its Done row in the live list

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
Jinwoo Hong
2026-10-18 17:39:48 -04:00
committed by GitHub
co-authored by Claude
parent 3dbb804f3e
commit d3026df586
8 changed files with 186 additions and 61 deletions
+16 -2
View File
@@ -6,7 +6,11 @@ import {
} from '../../../src/shared/workspace-view/workspace-row-sort'
import { compareCodePoints, compareSidebarText } from '../../../src/shared/sidebar-list/text-order'
import { getWorktreeRowIdentity } from './worktree-host-row-identity'
import { compareSmartStamps, recentStamp } from '../../../src/shared/sidebar-list/stamp-order'
import {
compareSmartStamps,
recentStamp,
type StampOrderRow
} from '../../../src/shared/sidebar-list/stamp-order'
function finiteOr(value: number | undefined, fallback: number): number {
return value !== undefined && Number.isFinite(value) ? value : fallback
@@ -17,6 +21,16 @@ function getManualSortRank(worktree: Worktree): number | null {
return typeof rank === 'number' && Number.isFinite(rank) ? rank : null
}
// The phone's row names the unread flag `unread`.
function stampRow(worktree: Worktree): StampOrderRow {
return {
lastActivityAt: worktree.lastActivityAt,
smartTier: worktree.smartTier,
smartAt: worktree.smartAt,
isUnread: worktree.unread
}
}
export function hostSortsByStamps(worktrees: readonly Worktree[]): boolean {
return worktrees.some((worktree) => worktree.sortedByStamps)
}
@@ -39,7 +53,7 @@ export function sortWorktrees(
repoLabel: (w) => w.repo,
recentActivity: recentStamp,
manualRank: getManualSortRank,
compareSmart: compareSmartStamps
compareSmart: (a, b) => compareSmartStamps(stampRow(a), stampRow(b))
})
)
}
@@ -40,6 +40,7 @@ describe('sortWorktrees with host stamps', () => {
lastActivityAt: 10,
smartTier: 'done',
smartAt: 20,
unread: true,
sortedByStamps: true
})
const needsYou = worktree({
@@ -86,4 +87,28 @@ describe('sortWorktrees with host stamps', () => {
'quiet'
])
})
it('a Done the user has seen rests by Recent (owner decision Q1)', () => {
const seen = worktree({
worktreeId: 'seen',
displayName: 'A',
lastActivityAt: 30,
smartTier: 'done',
smartAt: 30,
unread: false,
sortedByStamps: true
})
const working = worktree({
worktreeId: 'working',
displayName: 'B',
lastActivityAt: 1,
smartTier: 'working',
smartAt: 1,
sortedByStamps: true
})
expect(sortWorktrees([seen, working], 'smart').map((item) => item.worktreeId)).toEqual([
'working',
'seen'
])
})
})
@@ -1,5 +1,5 @@
=== sort=smart groupBy=none pinnedInGroups=false ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
@@ -27,7 +27,7 @@ cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca::/w/feat-b 4=orca::/w/feat-c 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=shared::/w/same@ssh:gpu-vm 7=shared::/w/same@local 8=orca::/w/Zeta 9=api::/w/api-y@runtime:env-1
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x shared::/w/same orca::/w/Zeta api::/w/api-y orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh folder:fw-review folder:fw-notes folder:fw-remote
-- collapsed: pinned lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=all label="All" count=11 tone="text-foreground" icon=List hostCounts={local:7 runtime:env-1:2 ssh:gpu-vm:2} hostIds={local:[orca::/w/Zeta,orca::/orca,ext::/ext,lab::/lab,shared::/w/same] runtime:env-1:[api::/w/api-y,api::/api] ssh:gpu-vm:[orca-ssh::/orca-ssh]} ids=[orca::/w/Zeta,api::/w/api-y,orca::/orca,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same]
@@ -50,7 +50,7 @@ cmd1-9 mounted: 1=orca::/w/Zeta 2=api::/w/api-y@runtime:env-1 3=orca::/orca 4=ap
cmd1-9 unmounted: 1=orca::/w/Zeta 2=api::/w/api-y@runtime:env-1 3=orca::/orca 4=api::/api@runtime:env-1 5=ext::/ext 6=lab::/lab 7=orca-ssh::/orca-ssh 8=shared::/w/same@local 9=folder:fw-review@local
cmd ids unmounted: orca::/w/Zeta api::/w/api-y orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote
=== sort=smart groupBy=none pinnedInGroups=true ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
@@ -59,14 +59,14 @@ ITEM rowKey=pinned:|orca::/w/feat-b depth=1 groupDepth=0 lastChild=true children
ITEM rowKey=pinned:|orca::/w/feat-c depth=2 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=pinned owning=project:p-orca parent=pinned:|orca::/w/feat-b
ITEM rowKey=pinned:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=pinned owning=project:p-orca
ITEM rowKey=pinned:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=pinned owning=project:repo:shared
HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts={local:11 runtime:env-1:2 ssh:gpu-vm:4} hostIds={local:[orca::/w/Zeta,orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] runtime:env-1:[api::/w/api-y,api::/api] ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same]} ids=[orca::/w/Zeta,api::/w/api-y,orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts={local:11 ssh:gpu-vm:4 runtime:env-1:2} hostIds={local:[orca::/w/Zeta,orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same] runtime:env-1:[api::/w/api-y,api::/api]} ids=[orca::/w/Zeta,orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,api::/w/api-y,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=all:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=all:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=all:|lab::/w/gitlab-mr depth=1 groupDepth=0 children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=all:|orca::/w/feat-a
ITEM rowKey=all:|orca::/w/feat-b depth=1 groupDepth=0 lastChild=true children=1 lineageKey=lineage:orca::/w/feat-b hostLabel="Local Linux" placement=natural owning=project:p-orca parent=all:|orca::/w/feat-a
ITEM rowKey=all:|orca::/w/feat-c depth=2 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca parent=all:|orca::/w/feat-b
ITEM rowKey=all:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
ITEM rowKey=all:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=all:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=all:|ext::/ext depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:ext
@@ -85,19 +85,19 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> all:ssh:gpu-vm|orca-ssh::/w/remote
PREFERRED ssh:gpu-vm|shared::/w/same -> all:ssh:gpu-vm|shared::/w/same
renderedKeys: 29
placeholders: -
selectionOrder: |orca::/w/Zeta runtime:env-1|api::/w/api-y |orca::/w/feat-a |lab::/w/gitlab-mr |orca::/w/feat-b |orca::/w/feat-c ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/orca runtime:env-1|api::/api |ext::/ext |lab::/lab |orca-ssh::/orca-ssh local|shared::/w/same ssh:gpu-vm|shared::/w/same local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
cmd1-9 mounted: 1=orca::/w/Zeta 2=api::/w/api-y@runtime:env-1 3=orca::/w/feat-a#lineage:orca::/w/feat-a 4=lab::/w/gitlab-mr 5=orca::/w/feat-b#lineage:orca::/w/feat-b 6=orca::/w/feat-c 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/orca 9=api::/api@runtime:env-1
cmd1-9 unmounted: 1=orca::/w/Zeta 2=api::/w/api-y@runtime:env-1 3=orca::/w/feat-a 4=lab::/w/gitlab-mr 5=orca::/w/feat-b 6=orca::/w/feat-c 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/orca 9=api::/api@runtime:env-1
cmd ids unmounted: orca::/w/Zeta api::/w/api-y orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote
selectionOrder: |orca::/w/Zeta |orca::/w/feat-a |lab::/w/gitlab-mr |orca::/w/feat-b |orca::/w/feat-c ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y |orca::/orca runtime:env-1|api::/api |ext::/ext |lab::/lab |orca-ssh::/orca-ssh local|shared::/w/same ssh:gpu-vm|shared::/w/same local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
cmd1-9 mounted: 1=orca::/w/Zeta 2=orca::/w/feat-a#lineage:orca::/w/feat-a 3=lab::/w/gitlab-mr 4=orca::/w/feat-b#lineage:orca::/w/feat-b 5=orca::/w/feat-c 6=orca-ssh::/w/remote-x@ssh:gpu-vm 7=api::/w/api-y@runtime:env-1 8=orca::/orca 9=api::/api@runtime:env-1
cmd1-9 unmounted: 1=orca::/w/Zeta 2=orca::/w/feat-a 3=lab::/w/gitlab-mr 4=orca::/w/feat-b 5=orca::/w/feat-c 6=orca-ssh::/w/remote-x@ssh:gpu-vm 7=api::/w/api-y@runtime:env-1 8=orca::/orca 9=api::/api@runtime:env-1
cmd ids unmounted: orca::/w/Zeta orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x api::/w/api-y orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote
-- collapsed: pinned lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts={local:11 runtime:env-1:2 ssh:gpu-vm:4} hostIds={local:[orca::/w/Zeta,orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] runtime:env-1:[api::/w/api-y,api::/api] ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same]} ids=[orca::/w/Zeta,api::/w/api-y,orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts={local:11 ssh:gpu-vm:4 runtime:env-1:2} hostIds={local:[orca::/w/Zeta,orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same] runtime:env-1:[api::/w/api-y,api::/api]} ids=[orca::/w/Zeta,orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,api::/w/api-y,orca::/w/feat-b,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=all:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=all:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a lineageCollapsed=true hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=all:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
ITEM rowKey=all:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=all:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=all:|ext::/ext depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:ext
@@ -109,7 +109,7 @@ FOLDER key=folder-workspace:fw-review projectGroup=pg-folders depth=0 groupDepth
FOLDER key=folder-workspace:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
FOLDER key=folder-workspace:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
SECTION pinned: pinned:|orca::/w/feat-a pinned:|lab::/w/gitlab-mr pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
SECTION all: all:|orca::/w/Zeta all:runtime:env-1|api::/w/api-y all:|orca::/w/feat-a all:|lab::/w/gitlab-mr all:|orca::/w/feat-b all:|orca::/w/feat-c all:ssh:gpu-vm|orca-ssh::/w/remote-x all:|orca::/orca all:runtime:env-1|api::/api all:|ext::/ext all:|lab::/lab all:|orca-ssh::/orca-ssh all:local|shared::/w/same all:ssh:gpu-vm|shared::/w/same
SECTION all: all:|orca::/w/Zeta all:|orca::/w/feat-a all:|lab::/w/gitlab-mr all:|orca::/w/feat-b all:|orca::/w/feat-c all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:|orca::/orca all:runtime:env-1|api::/api all:|ext::/ext all:|lab::/lab all:|orca-ssh::/orca-ssh all:local|shared::/w/same all:ssh:gpu-vm|shared::/w/same
PREFERRED |orca::/w/feat-a -> all:|orca::/w/feat-a
PREFERRED |lab::/w/gitlab-mr -> all:|lab::/w/gitlab-mr
PREFERRED |orca::/w/feat-b -> all:|orca::/w/feat-b
@@ -118,12 +118,12 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> all:ssh:gpu-vm|orca-ssh::/w/remote
PREFERRED ssh:gpu-vm|shared::/w/same -> all:ssh:gpu-vm|shared::/w/same
renderedKeys: 20
placeholders: -
selectionOrder: |orca::/w/Zeta runtime:env-1|api::/w/api-y |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/orca runtime:env-1|api::/api |ext::/ext |lab::/lab |orca-ssh::/orca-ssh local|shared::/w/same ssh:gpu-vm|shared::/w/same local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
cmd1-9 mounted: 1=orca::/w/Zeta 2=api::/w/api-y@runtime:env-1 3=orca::/w/feat-a#lineage:orca::/w/feat-a 4=orca-ssh::/w/remote-x@ssh:gpu-vm 5=orca::/orca 6=api::/api@runtime:env-1 7=ext::/ext 8=lab::/lab 9=orca-ssh::/orca-ssh
cmd1-9 unmounted: 1=orca::/w/Zeta 2=api::/w/api-y@runtime:env-1 3=orca::/w/feat-a 4=orca-ssh::/w/remote-x@ssh:gpu-vm 5=orca::/orca 6=api::/api@runtime:env-1 7=ext::/ext 8=lab::/lab 9=orca-ssh::/orca-ssh
cmd ids unmounted: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote
selectionOrder: |orca::/w/Zeta |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y |orca::/orca runtime:env-1|api::/api |ext::/ext |lab::/lab |orca-ssh::/orca-ssh local|shared::/w/same ssh:gpu-vm|shared::/w/same local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
cmd1-9 mounted: 1=orca::/w/Zeta 2=orca::/w/feat-a#lineage:orca::/w/feat-a 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=api::/w/api-y@runtime:env-1 5=orca::/orca 6=api::/api@runtime:env-1 7=ext::/ext 8=lab::/lab 9=orca-ssh::/orca-ssh
cmd1-9 unmounted: 1=orca::/w/Zeta 2=orca::/w/feat-a 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=api::/w/api-y@runtime:env-1 5=orca::/orca 6=api::/api@runtime:env-1 7=ext::/ext 8=lab::/lab 9=orca-ssh::/orca-ssh
cmd ids unmounted: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x api::/w/api-y orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote
=== sort=smart groupBy=repo pinnedInGroups=false ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
ITEM rowKey=pinned:|lab::/w/gitlab-mr depth=1 groupDepth=0 children=0 hostLabel="Local Linux" showProject=true placement=pinned owning=project:repo:lab parent=pinned:|orca::/w/feat-a
@@ -162,7 +162,7 @@ cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca::/w/feat-b 4=orca::/w/feat-c 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=shared::/w/same@ssh:gpu-vm 7=orca::/orca 8=orca-ssh::/orca-ssh 9=orca::/w/Zeta
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x shared::/w/same orca::/orca orca-ssh::/orca-ssh orca::/w/Zeta lab::/lab folder:fw-review folder:fw-notes folder:fw-remote api::/api api::/w/api-y ext::/ext
-- collapsed: pinned project:p-orca project:repo:lab project-group:pg-remote-folders project:repo:shared project:repo:empty lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=project-group:pg-work label="Work" count=2 tone="text-foreground" icon=FolderTree projectGroup=pg-work projectGroupDepth=0
HEADER key=project:p-orca label="orca" count=3 tone="text-foreground" icon=FolderTree repo=orca projectGroupDepth=1
@@ -193,7 +193,7 @@ cmd1-9 mounted: 1=folder:fw-review@local 2=folder:fw-notes@local 3=api::/api@run
cmd1-9 unmounted: 1=folder:fw-review@local 2=folder:fw-notes@local 3=api::/api@runtime:env-1 4=api::/w/api-y@runtime:env-1 5=ext::/ext
cmd ids unmounted: folder:fw-review folder:fw-notes api::/api api::/w/api-y ext::/ext
=== sort=smart groupBy=repo pinnedInGroups=true ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
ITEM rowKey=pinned:|lab::/w/gitlab-mr depth=1 groupDepth=0 children=0 hostLabel="Local Linux" showProject=true placement=pinned owning=project:repo:lab parent=pinned:|orca::/w/feat-a
@@ -244,7 +244,7 @@ cmd1-9 mounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/Zeta 4=orca::/w/f
cmd1-9 unmounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/Zeta 4=orca::/w/feat-a 5=lab::/w/gitlab-mr 6=orca::/w/feat-b 7=orca::/w/feat-c 8=orca-ssh::/w/remote-x@ssh:gpu-vm 9=lab::/lab
cmd ids unmounted: orca::/orca orca-ssh::/orca-ssh orca::/w/Zeta orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x lab::/lab folder:fw-review folder:fw-notes folder:fw-remote api::/api api::/w/api-y shared::/w/same ext::/ext
-- collapsed: pinned project:p-orca project:repo:lab project-group:pg-remote-folders project:repo:shared project:repo:empty lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=project-group:pg-work label="Work" count=2 tone="text-foreground" icon=FolderTree projectGroup=pg-work projectGroupDepth=0
HEADER key=project:p-orca label="orca" count=8 tone="text-foreground" icon=FolderTree repo=orca projectGroupDepth=1
@@ -281,7 +281,7 @@ cmd1-9 mounted: 1=folder:fw-review@local 2=folder:fw-notes@local 3=api::/api@run
cmd1-9 unmounted: 1=folder:fw-review@local 2=folder:fw-notes@local 3=api::/api@runtime:env-1 4=api::/w/api-y@runtime:env-1 5=ext::/ext
cmd ids unmounted: folder:fw-review folder:fw-notes api::/api api::/w/api-y ext::/ext
=== sort=smart groupBy=workspace-status pinnedInGroups=false ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
@@ -312,7 +312,7 @@ cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca::/w/feat-b 4=orca::/w/feat-c 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=shared::/w/same@ssh:gpu-vm 7=shared::/w/same@local 8=orca::/orca 9=api::/api@runtime:env-1
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x shared::/w/same orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh folder:fw-notes folder:fw-remote folder:fw-review orca::/w/Zeta api::/w/api-y
-- collapsed: pinned workspace-status:in-review lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=workspace-status:in-progress label="In progress" count=8 tone="text-[#d4a300]" icon=ConductorProgressIcon hostCounts={local:5 runtime:env-1:1 ssh:gpu-vm:2} hostIds={local:[orca::/orca,ext::/ext,lab::/lab,shared::/w/same] runtime:env-1:[api::/api] ssh:gpu-vm:[orca-ssh::/orca-ssh]} ids=[orca::/orca,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same]
@@ -337,7 +337,7 @@ cmd1-9 mounted: 1=orca::/orca 2=api::/api@runtime:env-1 3=ext::/ext 4=lab::/lab
cmd1-9 unmounted: 1=orca::/orca 2=api::/api@runtime:env-1 3=ext::/ext 4=lab::/lab 5=orca-ssh::/orca-ssh 6=shared::/w/same@local 7=folder:fw-notes@local 8=folder:fw-remote@ssh:gpu-vm 9=orca::/w/Zeta
cmd ids unmounted: orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-notes folder:fw-remote orca::/w/Zeta api::/w/api-y
=== sort=smart groupBy=workspace-status pinnedInGroups=true ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
@@ -379,7 +379,7 @@ cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=orca::/orca 5=orca::/w/feat-c 6=api::/api@runtime:env-1 7=ext::/ext 8=lab::/lab 9=orca-ssh::/orca-ssh
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca-ssh::/w/remote-x orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-notes folder:fw-remote orca::/w/feat-b folder:fw-review orca::/w/Zeta api::/w/api-y
-- collapsed: pinned workspace-status:in-review lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=workspace-status:in-progress label="In progress" count=13 tone="text-[#d4a300]" icon=ConductorProgressIcon hostCounts={local:8 ssh:gpu-vm:4 runtime:env-1:1} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same] runtime:env-1:[api::/api]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
@@ -415,7 +415,7 @@ cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=orca::/orca 4=orca::/w/feat-c 5=api::/api@runtime:env-1 6=ext::/ext 7=lab::/lab 8=orca-ssh::/orca-ssh 9=shared::/w/same@local
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-notes folder:fw-remote orca::/w/Zeta api::/w/api-y
=== sort=smart groupBy=pr-status pinnedInGroups=false ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
@@ -445,7 +445,7 @@ cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca::/w/feat-b 4=orca::/w/feat-c 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=shared::/w/same@ssh:gpu-vm 7=api::/w/api-y@runtime:env-1 8=shared::/w/same@local 9=orca::/orca
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca::/w/feat-b orca::/w/feat-c orca-ssh::/w/remote-x shared::/w/same api::/w/api-y orca::/orca api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh folder:fw-review folder:fw-notes folder:fw-remote orca::/w/Zeta
-- collapsed: pinned pr:in-progress lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=pr:in-review label="In review" count=1 tone="text-workspace-status-review" icon=ConductorReviewIcon hostCounts={runtime:env-1:1} hostIds={runtime:env-1:[api::/w/api-y]} ids=[api::/w/api-y]
@@ -462,7 +462,7 @@ cmd1-9 mounted: 1=api::/w/api-y@runtime:env-1 2=orca::/w/Zeta
cmd1-9 unmounted: 1=api::/w/api-y@runtime:env-1 2=orca::/w/Zeta
cmd ids unmounted: api::/w/api-y orca::/w/Zeta
=== sort=smart groupBy=pr-status pinnedInGroups=true ===
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
ITEM rowKey=pinned:|orca::/w/feat-a depth=0 groupDepth=0 children=2 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=pinned owning=project:p-orca
@@ -473,9 +473,9 @@ ITEM rowKey=pinned:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=0 childre
ITEM rowKey=pinned:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=pinned owning=project:repo:shared
HEADER key=pr:done label="Done" count=1 tone="text-workspace-status-done" icon=ConductorDoneIcon hostCounts={local:1} hostIds={local:[orca::/w/feat-b]} ids=[orca::/w/feat-b]
ITEM rowKey=pr:done:|orca::/w/feat-b depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-review" icon=ConductorReviewIcon hostCounts={runtime:env-1:1 local:1} hostIds={runtime:env-1:[api::/w/api-y] local:[orca::/w/feat-a]} ids=[api::/w/api-y,orca::/w/feat-a]
ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
ITEM rowKey=pr:in-review:|orca::/w/feat-a depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-review" icon=ConductorReviewIcon hostCounts={local:1 runtime:env-1:1} hostIds={local:[orca::/w/feat-a] runtime:env-1:[api::/w/api-y]} ids=[orca::/w/feat-a,api::/w/api-y]
ITEM rowKey=pr:in-review:|orca::/w/feat-a depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 lastChild=true children=0 hostLabel="env-1" placement=natural owning=project:repo:api
HEADER key=pr:in-progress label="In progress" count=13 tone="text-workspace-status-progress" icon=ConductorProgressIcon hostCounts={ssh:gpu-vm:4 local:8 runtime:env-1:1} hostIds={ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same] local:[lab::/w/gitlab-mr,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
ITEM rowKey=pr:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
ITEM rowKey=pr:in-progress:|lab::/w/gitlab-mr depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:lab
@@ -500,17 +500,17 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> pr:in-progress:ssh:gpu-vm|orca-ssh
PREFERRED ssh:gpu-vm|shared::/w/same -> pr:in-progress:ssh:gpu-vm|shared::/w/same
renderedKeys: 32
placeholders: -
selectionOrder: |orca::/w/feat-b runtime:env-1|api::/w/api-y |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr |orca::/orca |orca::/w/feat-c runtime:env-1|api::/api |ext::/ext |lab::/lab |orca-ssh::/orca-ssh local|shared::/w/same ssh:gpu-vm|shared::/w/same local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/Zeta
cmd1-9 mounted: 1=orca::/w/feat-b#lineage:orca::/w/feat-b 2=api::/w/api-y@runtime:env-1 3=orca::/w/feat-a#lineage:orca::/w/feat-a 4=orca-ssh::/w/remote-x@ssh:gpu-vm 5=lab::/w/gitlab-mr 6=orca::/orca 7=orca::/w/feat-c 8=api::/api@runtime:env-1 9=ext::/ext
cmd1-9 unmounted: 1=orca::/w/feat-b 2=api::/w/api-y@runtime:env-1 3=orca::/w/feat-a 4=orca-ssh::/w/remote-x@ssh:gpu-vm 5=lab::/w/gitlab-mr 6=orca::/orca 7=orca::/w/feat-c 8=api::/api@runtime:env-1 9=ext::/ext
cmd ids unmounted: orca::/w/feat-b api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote orca::/w/Zeta
selectionOrder: |orca::/w/feat-b |orca::/w/feat-a runtime:env-1|api::/w/api-y ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr |orca::/orca |orca::/w/feat-c runtime:env-1|api::/api |ext::/ext |lab::/lab |orca-ssh::/orca-ssh local|shared::/w/same ssh:gpu-vm|shared::/w/same local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/Zeta
cmd1-9 mounted: 1=orca::/w/feat-b#lineage:orca::/w/feat-b 2=orca::/w/feat-a#lineage:orca::/w/feat-a 3=api::/w/api-y@runtime:env-1 4=orca-ssh::/w/remote-x@ssh:gpu-vm 5=lab::/w/gitlab-mr 6=orca::/orca 7=orca::/w/feat-c 8=api::/api@runtime:env-1 9=ext::/ext
cmd1-9 unmounted: 1=orca::/w/feat-b 2=orca::/w/feat-a 3=api::/w/api-y@runtime:env-1 4=orca-ssh::/w/remote-x@ssh:gpu-vm 5=lab::/w/gitlab-mr 6=orca::/orca 7=orca::/w/feat-c 8=api::/api@runtime:env-1 9=ext::/ext
cmd ids unmounted: orca::/w/feat-b orca::/w/feat-a api::/w/api-y orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same folder:fw-review folder:fw-notes folder:fw-remote orca::/w/Zeta
-- collapsed: pinned pr:in-review pr:closed lineage:orca::/w/feat-a --
visible: orca::/w/Zeta api::/w/api-y orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
visible: orca::/w/Zeta orca::/w/feat-a orca-ssh::/w/remote-x lab::/w/gitlab-mr api::/w/api-y orca::/w/feat-b orca::/orca orca::/w/feat-c api::/api ext::/ext lab::/lab orca-ssh::/orca-ssh shared::/w/same shared::/w/same
PENDING key=pending:creation-1 creation=creation-1 repo=api
HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCounts={local:4 ssh:gpu-vm:2} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/w/feat-b,orca::/w/feat-c,shared::/w/same]
HEADER key=pr:done label="Done" count=1 tone="text-workspace-status-done" icon=ConductorDoneIcon hostCounts={local:1} hostIds={local:[orca::/w/feat-b]} ids=[orca::/w/feat-b]
ITEM rowKey=pr:done:|orca::/w/feat-b depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-review" icon=ConductorReviewIcon hostCounts={runtime:env-1:1 local:1} hostIds={runtime:env-1:[api::/w/api-y] local:[orca::/w/feat-a]} ids=[api::/w/api-y,orca::/w/feat-a]
HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-review" icon=ConductorReviewIcon hostCounts={local:1 runtime:env-1:1} hostIds={local:[orca::/w/feat-a] runtime:env-1:[api::/w/api-y]} ids=[orca::/w/feat-a,api::/w/api-y]
HEADER key=pr:in-progress label="In progress" count=13 tone="text-workspace-status-progress" icon=ConductorProgressIcon hostCounts={ssh:gpu-vm:4 local:8 runtime:env-1:1} hostIds={ssh:gpu-vm:[orca-ssh::/w/remote-x,orca-ssh::/orca-ssh,shared::/w/same] local:[lab::/w/gitlab-mr,orca::/orca,orca::/w/feat-c,ext::/ext,lab::/lab,shared::/w/same] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,orca::/orca,orca::/w/feat-c,api::/api,ext::/ext,lab::/lab,orca-ssh::/orca-ssh,shared::/w/same,shared::/w/same]
ITEM rowKey=pr:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
ITEM rowKey=pr:in-progress:|lab::/w/gitlab-mr depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:lab
@@ -527,7 +527,7 @@ FOLDER key=folder-workspace:fw-notes projectGroup=pg-folders depth=0 groupDepth=
FOLDER key=folder-workspace:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
HEADER key=pr:closed label="Closed" count=1 tone="text-zinc-600 dark:text-zinc-300" icon=CircleX hostCounts={local:1} hostIds={local:[orca::/w/Zeta]} ids=[orca::/w/Zeta]
SECTION pinned: pinned:|orca::/w/feat-a pinned:|lab::/w/gitlab-mr pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
SECTION pr:in-review: pr:in-review:runtime:env-1|api::/w/api-y pr:in-review:|orca::/w/feat-a
SECTION pr:in-review: pr:in-review:|orca::/w/feat-a pr:in-review:runtime:env-1|api::/w/api-y
SECTION pr:closed: pr:closed:|orca::/w/Zeta
PREFERRED |orca::/w/feat-a -> pr:in-review:|orca::/w/feat-a
PREFERRED |lab::/w/gitlab-mr -> pr:in-progress:|lab::/w/gitlab-mr
@@ -27,12 +27,12 @@ const GOLDEN_DIR = './__goldens__/sidebar-list-stamp-order'
defineSidebarListGoldens(GOLDEN_DIR)
// One row per tier and tie: two Done rows a second apart, two Working rows (the older one resumed
// after an approval keeps the ask's time), and Rest rows that only Recent orders.
const TIERS: Record<string, SmartStampFields> = {
// One row per tier and tie: an unread Done and a seen one (which rests), two Working rows (the
// older one resumed after an approval keeps the ask's time), and Rest rows that only Recent orders.
const TIERS: Record<string, SmartStampFields & { isUnread?: boolean }> = {
Zeta: { smartTier: 'needs-you', smartAt: GOLDEN_NOW - 600_000 },
'feat-a': { smartTier: 'done', smartAt: GOLDEN_NOW - 60_000 },
'api-y': { smartTier: 'done', smartAt: GOLDEN_NOW - 59_000 },
'feat-a': { smartTier: 'done', smartAt: GOLDEN_NOW - 60_000, isUnread: true },
'api-y': { smartTier: 'done', smartAt: GOLDEN_NOW - 59_000, isUnread: false },
'remote-x': { smartTier: 'working', smartAt: GOLDEN_NOW - 30_000 },
'gitlab-mr': { smartTier: 'working', smartAt: GOLDEN_NOW - 900_000 }
}
@@ -86,4 +86,25 @@ describe('useSidebarWorktreeSortOrder with the switch on', () => {
rerender({ map: maps.after })
expect(result.current).toEqual([z.id, a.id])
})
it('a Done row drops to the rest once its workspace is read', () => {
const done = makeWorktree(`${repo.id}::/done`, 'done', {
repoId: repo.id,
lastActivityAt: 5,
smartTier: 'done',
smartAt: 5,
isUnread: true
})
const working = makeWorktree(`${repo.id}::/working`, 'working', {
repoId: repo.id,
lastActivityAt: 1,
smartTier: 'working',
smartAt: 1
})
useAppStore.setState({ worktreesByRepo: { [repo.id]: [done, working] } })
const { result } = renderHook(() => useSidebarWorktreeSortOrder({ repoMap, sortBy: 'smart' }))
expect(result.current).toEqual([done.id, working.id])
setRows([{ ...done, isUnread: false }, working])
expect(result.current).toEqual([working.id, done.id])
})
})
@@ -17,18 +17,25 @@ import { compareSmartStamps, recentStamp } from './stamp-order'
* Every row of the before/after table in the sort-stamps design note, replayed through the host's
* classifier and the stamp order every client sorts by.
*/
type Row = { id: string; stamps: SortStamps; pane: AgentPaneState }
type Row = { id: string; stamps: SortStamps; pane: AgentPaneState; unread: boolean }
const T0 = 10_000_000
class Host {
readonly rows = new Map<string, Row>()
now = T0
/** The workspace on screen: a finish there is seen, so it raises no unread flag. */
openId: string | null = null
constructor(ids: string[]) {
// Older rows were touched earlier: b before a, c before b, ...
ids.forEach((id, index) => {
this.rows.set(id, { id, stamps: { recentAt: T0 - (index + 1) * 60_000 }, pane: REST_PANE })
this.rows.set(id, {
id,
stamps: { recentAt: T0 - (index + 1) * 60_000 },
pane: REST_PANE,
unread: false
})
})
}
@@ -44,6 +51,15 @@ class Host {
}
this.apply(row, { kind: 'agent', from: row.pane.phase, to: pane.phase, panes: [pane] })
row.pane = pane
if (pane.phase === 'done' && id !== this.openId) {
row.unread = true
}
}
/** Opening a workspace clears its unread flag, as the window does. */
open(id: string): void {
this.openId = id
this.rows.get(id)!.unread = false
}
bell(id: string): void {
@@ -52,7 +68,7 @@ class Host {
create(id: string): void {
// Creation writes the first Recent stamp on the new record.
this.rows.set(id, { id, stamps: { recentAt: this.now }, pane: REST_PANE })
this.rows.set(id, { id, stamps: { recentAt: this.now }, pane: REST_PANE, unread: false })
}
order(sortBy: WorkspaceSortBy): string[] {
@@ -76,7 +92,8 @@ function view(row: Row) {
return {
lastActivityAt: row.stamps.recentAt,
smartTier: row.stamps.smartTier,
smartAt: row.stamps.smartAt
smartAt: row.stamps.smartAt,
isUnread: row.unread
}
}
@@ -97,25 +114,55 @@ describe('sort stamps: the design note’s before/after table', () => {
expect(both(host)).toEqual(before)
})
it('an agent finishing a turn tops Recent and Done at once, and stays until the next prompt', () => {
it('a finish tops Recent and Done at once; Done holds while unread, with no fade', () => {
const host = new Host(['a', 'b', 'c'])
host.agent('a', 'working')
host.advance(20_000)
host.agent('c', 'working')
host.advance(20_000)
host.agent('c', 'done')
expect(both(host)).toEqual({ recent: ['c', 'a', 'b'], smart: ['c', 'a', 'b'] })
// No fade: Done holds after any time without an event (owner decision Q1).
// No fade: an unread Done holds after any time without an event.
host.advance(3 * 60 * 60_000)
expect(host.order('smart')).toEqual(['c', 'a', 'b'])
})
it('a finish in the open workspace moves it the same way; opening never stamps', () => {
it('opening the finished workspace ends Done; it rests by Recent (owner decision Q1)', () => {
const host = new Host(['a', 'b', 'c'])
host.agent('a', 'working')
host.advance(20_000)
host.agent('c', 'working')
host.advance(20_000)
host.agent('c', 'done')
host.open('c')
// Working a now outranks c, which leads the rest by its Recent stamp.
expect(both(host)).toEqual({ recent: ['c', 'a', 'b'], smart: ['a', 'c', 'b'] })
})
it('the next prompt ends Done: the row moves to Working', () => {
const host = new Host(['a', 'b', 'c'])
host.agent('a', 'working')
host.advance(20_000)
host.agent('c', 'working')
host.advance(20_000)
host.agent('c', 'done')
host.advance(20_000)
host.agent('c', 'working')
expect(host.rows.get('c')!.stamps.smartTier).toBe('working')
expect(host.order('smart')).toEqual(['c', 'a', 'b'])
})
it('a finish in the open workspace is seen: top of Recent, never Done; opening never stamps', () => {
const host = new Host(['a', 'b'])
host.agent('a', 'working')
host.open('b')
// Opening b is not an event, so nothing changes until its agent finishes.
expect(both(host)).toEqual({ recent: ['a', 'b'], smart: ['a', 'b'] })
host.advance(20_000)
host.agent('b', 'working')
host.advance(20_000)
host.agent('b', 'done')
expect(both(host)).toEqual({ recent: ['b', 'a'], smart: ['b', 'a'] })
expect(both(host)).toEqual({ recent: ['b', 'a'], smart: ['a', 'b'] })
})
it('an agent asking for approval tops Needs you at once', () => {
+17 -5
View File
@@ -8,13 +8,13 @@ function sortSmart(rows: Record<string, StampOrderRow>): string[] {
}
describe('stamp order', () => {
it('ranks Needs you, Done, Working, then Rest, each newest first', () => {
it('ranks Needs you, unread Done, Working, then Rest, each newest first', () => {
expect(
sortSmart({
rest: { lastActivityAt: 900 },
working: { lastActivityAt: 1, smartTier: 'working', smartAt: 50 },
doneOld: { lastActivityAt: 1, smartTier: 'done', smartAt: 10 },
doneNew: { lastActivityAt: 1, smartTier: 'done', smartAt: 20 },
doneOld: { lastActivityAt: 1, smartTier: 'done', smartAt: 10, isUnread: true },
doneNew: { lastActivityAt: 1, smartTier: 'done', smartAt: 20, isUnread: true },
needsYou: { lastActivityAt: 1, smartTier: 'needs-you', smartAt: 5 },
restOld: { lastActivityAt: 100 }
})
@@ -40,9 +40,21 @@ describe('stamp order', () => {
it('ties within a tier fall to Recent', () => {
expect(
sortSmart({
older: { lastActivityAt: 1, smartTier: 'done', smartAt: 5 },
newer: { lastActivityAt: 2, smartTier: 'done', smartAt: 5 }
older: { lastActivityAt: 1, smartTier: 'done', smartAt: 5, isUnread: true },
newer: { lastActivityAt: 2, smartTier: 'done', smartAt: 5, isUnread: true }
})
).toEqual(['newer', 'older'])
})
it('a Done you have seen rests by Recent, below Working (owner decision Q1)', () => {
expect(
sortSmart({
seen: { lastActivityAt: 30, smartTier: 'done', smartAt: 30, isUnread: false },
working: { lastActivityAt: 1, smartTier: 'working', smartAt: 1 },
quiet: { lastActivityAt: 20 },
// An older row without the flag reads as seen.
noFlag: { lastActivityAt: 10, smartTier: 'done', smartAt: 40 }
})
).toEqual(['working', 'seen', 'quiet', 'noFlag'])
})
})
+9 -3
View File
@@ -5,6 +5,8 @@ export type StampOrderRow = {
lastActivityAt?: number
smartTier?: SmartTier
smartAt?: number
/** The workspace unread flag: an agent finished while you were not looking. */
isUnread?: boolean
}
const TIER_RANK: Record<SmartTier, number> = { 'needs-you': 0, done: 1, working: 2 }
@@ -19,12 +21,16 @@ export function recentStamp(row: StampOrderRow): number {
return finiteOr0(row.lastActivityAt)
}
// A tier a newer host knows and this client does not reads as Rest.
// A tier a newer host knows and this client does not reads as Rest. Done holds only while unread:
// opening the workspace clears the flag, and the next prompt moves the tier to Working.
function tierRank(row: StampOrderRow): number {
return isSmartTier(row.smartTier) ? TIER_RANK[row.smartTier] : REST_RANK
if (!isSmartTier(row.smartTier) || (row.smartTier === 'done' && row.isUnread !== true)) {
return REST_RANK
}
return TIER_RANK[row.smartTier]
}
/** Smart by stamps: Needs you, Done, Working, each newest first; then Rest by Recent. */
/** Smart by stamps: Needs you, unread Done, Working, each newest first; then Rest by Recent. */
export function compareSmartStamps(a: StampOrderRow, b: StampOrderRow): number {
const rankA = tierRank(a)
const rankB = tierRank(b)