mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
fix(sidebar): same-id workspaces on two hosts sort, nest and stay retained on their own; nested groups and project order hold in host sections (dark switch) (#31111)
* fix(sidebar): key the shared list's order, lineage and retention by host identity (dark switch) * fix(sidebar): repeat a nested project group's path in each host section (dark switch) * fix(sidebar): hold Recent project order under the pointer on the desktop (dark switch) * refactor(sidebar): keep the inline-lineage cast where it was
This commit is contained in:
@@ -12,8 +12,7 @@ import {
|
||||
type ExecutionHostId
|
||||
} from '../../../shared/execution-host'
|
||||
import type { SidebarTemporalSnapshot } from '../../../shared/sidebar-list/sidebar-temporal-snapshot'
|
||||
import type { Worktree } from '../../../shared/worktree/types'
|
||||
import type { Repo } from '../../../shared/repo-types'
|
||||
import { listGitWorkspaceRowKeys } from '../../../shared/sidebar-list/workspace-rows'
|
||||
import { SidebarRetentionOwner, type SidebarRetentionCandidates } from './sidebar-retention-owner'
|
||||
import type { AgentStatusStoreView } from './workspace-activity-facts-producer'
|
||||
import { SortStampsProducer } from './sort-stamps-producer'
|
||||
@@ -41,7 +40,11 @@ export abstract class OrcaRuntimeWithSidebarTemporal extends OrcaRuntimeWithWork
|
||||
// The durable file keeps the hide form; the window reads it the same way at hydration.
|
||||
showSleepingWorkspaces: () =>
|
||||
!(this.store?.getUI?.().hideSleepingWorkspaces ?? DEFAULT_HIDE_SLEEPING_WORKSPACES),
|
||||
listRows: () => this.listSidebarRows(),
|
||||
listRowKeys: async () =>
|
||||
listGitWorkspaceRowKeys(
|
||||
(await this.listResolvedWorktreeSnapshot()).worktrees,
|
||||
this.store?.getRepos() ?? []
|
||||
),
|
||||
retentionCandidates: () => this.readSidebarRetentionCandidates()
|
||||
})
|
||||
readonly workspaceViewers = new WorkspaceViewers(Date.now)
|
||||
@@ -232,21 +235,6 @@ export abstract class OrcaRuntimeWithSidebarTemporal extends OrcaRuntimeWithWork
|
||||
}
|
||||
}
|
||||
|
||||
// Retained ids are host-qualified; a row without a stamped host belongs to its repo's host.
|
||||
private async listSidebarRows(repoById = this.readSidebarRepoMap()): Promise<Worktree[]> {
|
||||
const { worktrees } = await this.listResolvedWorktreeSnapshot()
|
||||
return worktrees.map((worktree) => {
|
||||
const repo = repoById.get(worktree.repoId)
|
||||
return worktree.hostId || !repo
|
||||
? worktree
|
||||
: { ...worktree, hostId: getRepoExecutionHostId(repo) }
|
||||
})
|
||||
}
|
||||
|
||||
private readSidebarRepoMap(): Map<string, Repo> {
|
||||
return new Map((this.store?.getRepos() ?? []).map((repo) => [repo.id, repo]))
|
||||
}
|
||||
|
||||
private readSidebarRetentionCandidates(): SidebarRetentionCandidates {
|
||||
const { facts } = this.workspaceActivityFacts.snapshot()
|
||||
return {
|
||||
|
||||
@@ -47,13 +47,13 @@ function harness(worktrees: Worktree[]) {
|
||||
}
|
||||
const owner = new SidebarRetentionOwner(new SidebarClock(), {
|
||||
showSleepingWorkspaces: () => world.showSleeping,
|
||||
listRows: async () => {
|
||||
listRowKeys: async () => {
|
||||
const rows = world.worktrees
|
||||
if (world.holdNextListing) {
|
||||
world.holdNextListing = false
|
||||
await new Promise<void>((resolve) => world.releases.push(resolve))
|
||||
}
|
||||
return rows
|
||||
return rows.map(getWorktreeHostIdentity)
|
||||
},
|
||||
retentionCandidates: () => ({
|
||||
ids: world.active,
|
||||
@@ -140,4 +140,18 @@ describe('SidebarRetentionOwner', () => {
|
||||
await flush()
|
||||
expect(owner.snapshot().retention?.retainedIds).toEqual([getWorktreeHostIdentity(remote)])
|
||||
})
|
||||
|
||||
it('retains every host’s row of a same-id pair, as activity is by bare id', async () => {
|
||||
const local = worktree('a', { hostId: 'local' })
|
||||
const remote = worktree('a', { hostId: 'ssh:box' })
|
||||
const { world, owner } = harness([local, remote])
|
||||
owner.beginSession('s1')
|
||||
await flush()
|
||||
world.active = new Set(['a'])
|
||||
world.tabsOpen = new Set(['a'])
|
||||
owner.noteActivityChange()
|
||||
world.active = new Set()
|
||||
owner.noteActivityChange()
|
||||
expect(owner.snapshot().retention?.retainedIds).toEqual(['local|a', 'ssh:box|a'])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { ProducerRevision } from './producer-revision'
|
||||
import type { Worktree } from '../../../shared/worktree/types'
|
||||
import { getWorktreeHostIdentity } from '../../../shared/worktree/host-qualified-identity'
|
||||
import { getWorktreeIdFromHostIdentity } from '../../../shared/worktree/host-qualified-identity'
|
||||
import {
|
||||
createSleepingSweepRetentionState,
|
||||
updateSleepingSweepRetention
|
||||
@@ -22,8 +21,8 @@ export type SidebarRetentionCandidates = {
|
||||
|
||||
export type SidebarRetentionInputs = {
|
||||
showSleepingWorkspaces: () => boolean
|
||||
/** Every row this host lists; it host-qualifies the retained ids. */
|
||||
listRows: () => Promise<Worktree[]>
|
||||
/** The keys the workspaces domain lists this host's rows under; readers match retention on them. */
|
||||
listRowKeys: () => Promise<readonly string[]>
|
||||
retentionCandidates: () => SidebarRetentionCandidates
|
||||
}
|
||||
|
||||
@@ -39,7 +38,8 @@ export class SidebarRetentionOwner {
|
||||
private disposed = false
|
||||
// A listing started before a reset or a later one must not land.
|
||||
private listingSeq = 0
|
||||
private identityById = new Map<string, string>()
|
||||
// Both of a same-id pair on two hosts: the sweep and activity are by bare id.
|
||||
private keysById = new Map<string, string[]>()
|
||||
private retentionState = createSleepingSweepRetentionState()
|
||||
private retention: SidebarRetention | null = null
|
||||
// Until a listing lands no retained id can be host-qualified, so nothing is published.
|
||||
@@ -99,24 +99,26 @@ export class SidebarRetentionOwner {
|
||||
|
||||
private relist(): void {
|
||||
const seq = ++this.listingSeq
|
||||
void this.inputs.listRows().then(
|
||||
(worktrees) => {
|
||||
void this.inputs.listRowKeys().then(
|
||||
(keys) => {
|
||||
if (seq === this.listingSeq && this.running) {
|
||||
this.applyListing(worktrees)
|
||||
this.applyListing(keys)
|
||||
}
|
||||
},
|
||||
(error: unknown) => console.warn('[sidebar-retention] could not list rows', error)
|
||||
)
|
||||
}
|
||||
|
||||
private applyListing(worktrees: readonly Worktree[]): void {
|
||||
private applyListing(keys: readonly string[]): void {
|
||||
if (!this.listed) {
|
||||
this.listed = true
|
||||
this.revision.bump()
|
||||
}
|
||||
this.identityById = new Map(
|
||||
worktrees.map((worktree) => [worktree.id, getWorktreeHostIdentity(worktree)])
|
||||
)
|
||||
this.keysById = new Map()
|
||||
for (const key of keys) {
|
||||
const id = getWorktreeIdFromHostIdentity(key)
|
||||
this.keysById.set(id, [...(this.keysById.get(id) ?? []), key])
|
||||
}
|
||||
this.retentionPass()
|
||||
}
|
||||
|
||||
@@ -138,7 +140,7 @@ export class SidebarRetentionOwner {
|
||||
const { retainedIds, nextExpiryInMs } = updateSleepingSweepRetention({
|
||||
state: this.retentionState,
|
||||
// The last listing's rows too, so an id that just went idle is not pruned out of its grace.
|
||||
candidateWorktreeIds: [...new Set([...candidates.ids, ...this.identityById.keys()])],
|
||||
candidateWorktreeIds: [...new Set([...candidates.ids, ...this.keysById.keys()])],
|
||||
isActive: candidates.isActive,
|
||||
isUnverifiableGap: candidates.isUnverifiableGap,
|
||||
nowMs: now
|
||||
@@ -149,7 +151,7 @@ export class SidebarRetentionOwner {
|
||||
this.clock.schedule(RETENTION_DEADLINE, now + nextExpiryInMs, () => this.retentionPass())
|
||||
}
|
||||
// An id no listing has carried yet has no host to qualify it with, so it waits for one.
|
||||
const ids = [...retainedIds].flatMap((id) => this.identityById.get(id) ?? []).sort()
|
||||
const ids = [...retainedIds].flatMap((id) => this.keysById.get(id) ?? []).sort()
|
||||
const previous = this.retention?.retainedIds
|
||||
if (!previous || previous.length !== ids.length || previous.some((id, i) => id !== ids[i])) {
|
||||
this.retention = { retainedIds: ids, retentionDecidedAt: now }
|
||||
|
||||
+7
-7
@@ -66,8 +66,8 @@ ITEM rowKey=all:|orca::/w/feat-c depth=2 groupDepth=0 lastChild=true children=0
|
||||
ITEM rowKey=all:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=all:|orca::/w/feat-a
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
@@ -85,8 +85,8 @@ 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/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@local 8=shared::/w/same@ssh:gpu-vm 9=orca::/orca
|
||||
selectionOrder: |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@ssh:gpu-vm 8=shared::/w/same@local 9=orca::/orca
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@local 8=shared::/w/same@ssh:gpu-vm 9=orca::/orca
|
||||
cmd ids unmounted: orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x api::/w/api-y shared::/w/same orca::/orca orca::/w/Zeta orca-ssh::/orca-ssh api::/api lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote
|
||||
-- collapsed: pinned lineage:orca::/w/feat-a --
|
||||
@@ -97,8 +97,8 @@ HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts=
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
@@ -109,7 +109,7 @@ FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:local|shared::/w/same all:ssh:gpu-vm|shared::/w/same all:|orca::/orca all:|orca::/w/Zeta all:|orca-ssh::/orca-ssh all:runtime:env-1|api::/api all:|lab::/lab all:|ext::/ext
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:ssh:gpu-vm|shared::/w/same all:local|shared::/w/same all:|orca::/orca all:|orca::/w/Zeta all:|orca-ssh::/orca-ssh all:runtime:env-1|api::/api all:|lab::/lab all:|ext::/ext
|
||||
PREFERRED |orca::/w/feat-a -> all:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> all:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-c -> all:|orca::/w/feat-c
|
||||
@@ -118,8 +118,8 @@ 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/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca::/w/Zeta 8=orca-ssh::/orca-ssh 9=api::/api@runtime:env-1
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/orca 7=orca::/w/Zeta 8=orca-ssh::/orca-ssh 9=api::/api@runtime:env-1
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca::/w/Zeta 8=orca-ssh::/orca-ssh 9=api::/api@runtime:env-1
|
||||
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x api::/w/api-y shared::/w/same orca::/orca orca::/w/Zeta orca-ssh::/orca-ssh api::/api lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote
|
||||
=== sort=manual projectOrder=recent pinnedInGroups=false === same as sort=manual projectOrder=manual pinnedInGroups=false
|
||||
|
||||
+6
-6
@@ -63,8 +63,8 @@ ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 lastCh
|
||||
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,shared::/w/same,orca-ssh::/orca-ssh] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -84,8 +84,8 @@ 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 |orca::/w/feat-a runtime:env-1|api::/w/api-y ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext 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=shared::/w/same@local 7=shared::/w/same@ssh:gpu-vm 8=orca::/orca 9=orca-ssh::/orca-ssh
|
||||
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 ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext 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=shared::/w/same@ssh:gpu-vm 7=shared::/w/same@local 8=orca::/orca 9=orca-ssh::/orca-ssh
|
||||
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=shared::/w/same@local 7=shared::/w/same@ssh:gpu-vm 8=orca::/orca 9=orca-ssh::/orca-ssh
|
||||
cmd ids unmounted: orca::/w/feat-b orca::/w/feat-a api::/w/api-y orca-ssh::/w/remote-x lab::/w/gitlab-mr shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote orca::/w/Zeta
|
||||
-- collapsed: pinned pr:in-review pr:closed lineage:orca::/w/feat-a --
|
||||
@@ -98,8 +98,8 @@ HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-re
|
||||
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,shared::/w/same,orca-ssh::/orca-ssh] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -121,8 +121,8 @@ 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: 23
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-b ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
selectionOrder: |orca::/w/feat-b ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd ids unmounted: orca::/w/feat-b orca-ssh::/w/remote-x lab::/w/gitlab-mr shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote
|
||||
=== sort=manual projectOrder=recent pinnedInGroups=false === same as sort=manual projectOrder=manual pinnedInGroups=false
|
||||
|
||||
+8
-8
@@ -99,8 +99,8 @@ PENDING key=pending:creation-1 creation=creation-1 repo=api
|
||||
ITEM rowKey=project:repo:api:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=project:repo:api: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=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=FolderTree repo=empty projectGroupDepth=0
|
||||
HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
IMPORTED key=imported-worktrees-card:repo-group:ext repo=ext placement=repo-group hidden=ext::/w/detected-hidden
|
||||
@@ -114,7 +114,7 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> project:p-orca:ssh:gpu-vm|orca-ssh
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 39
|
||||
placeholders: empty
|
||||
selectionOrder: |orca::/orca |orca-ssh::/orca-ssh |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta |lab::/lab local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/api runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |ext::/ext
|
||||
selectionOrder: |orca::/orca |orca-ssh::/orca-ssh |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta |lab::/lab local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/api runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |ext::/ext
|
||||
cmd1-9 mounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/feat-a#lineage:orca::/w/feat-a 4=orca::/w/feat-b#lineage:orca::/w/feat-b 5=orca::/w/feat-c 6=lab::/w/gitlab-mr 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/w/Zeta 9=lab::/lab
|
||||
cmd1-9 unmounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/feat-a 4=orca::/w/feat-b 5=orca::/w/feat-c 6=lab::/w/gitlab-mr 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/w/Zeta 9=lab::/lab
|
||||
cmd ids unmounted: orca::/orca orca-ssh::/orca-ssh orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x orca::/w/Zeta lab::/lab folder:fw-review folder:fw-notes folder:fw-remote api::/api api::/w/api-y shared::/w/same ext::/ext
|
||||
@@ -139,7 +139,7 @@ HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=Fold
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:p-orca: project:p-orca:|orca::/orca project:p-orca:|orca-ssh::/orca-ssh project:p-orca:|orca::/w/feat-a project:p-orca:|orca::/w/feat-b project:p-orca:|orca::/w/feat-c project:p-orca:|lab::/w/gitlab-mr project:p-orca:ssh:gpu-vm|orca-ssh::/w/remote-x project:p-orca:|orca::/w/Zeta
|
||||
SECTION project:repo:lab: project:repo:lab:|lab::/lab
|
||||
SECTION project:repo:shared: project:repo:shared:local|shared::/w/same project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:repo:shared: project:repo:shared:ssh:gpu-vm|shared::/w/same project:repo:shared:local|shared::/w/same
|
||||
SECTION project:repo:empty: -
|
||||
SECTION project:repo:ext: project:repo:ext:|ext::/ext
|
||||
PREFERRED |orca::/w/feat-a -> project:p-orca:|orca::/w/feat-a
|
||||
@@ -256,8 +256,8 @@ PENDING key=pending:creation-1 creation=creation-1 repo=api
|
||||
ITEM rowKey=project:repo:api:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=project:repo:api: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=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
IMPORTED key=imported-worktrees-card:repo-group:ext repo=ext placement=repo-group hidden=ext::/w/detected-hidden
|
||||
ITEM rowKey=project:repo:ext:|ext::/ext depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:ext
|
||||
@@ -271,7 +271,7 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> project:p-orca:ssh:gpu-vm|orca-ssh
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 39
|
||||
placeholders: empty
|
||||
selectionOrder: |orca::/orca |orca-ssh::/orca-ssh |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta |lab::/lab local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/api runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |ext::/ext
|
||||
selectionOrder: |orca::/orca |orca-ssh::/orca-ssh |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta |lab::/lab local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/api runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |ext::/ext
|
||||
cmd1-9 mounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/feat-a#lineage:orca::/w/feat-a 4=orca::/w/feat-b#lineage:orca::/w/feat-b 5=orca::/w/feat-c 6=lab::/w/gitlab-mr 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/w/Zeta 9=lab::/lab
|
||||
cmd1-9 unmounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/feat-a 4=orca::/w/feat-b 5=orca::/w/feat-c 6=lab::/w/gitlab-mr 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/w/Zeta 9=lab::/lab
|
||||
cmd ids unmounted: orca::/orca orca-ssh::/orca-ssh orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x orca::/w/Zeta lab::/lab folder:fw-review folder:fw-notes folder:fw-remote api::/api api::/w/api-y shared::/w/same ext::/ext
|
||||
@@ -298,7 +298,7 @@ HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:p-orca: project:p-orca:|orca::/orca project:p-orca:|orca-ssh::/orca-ssh project:p-orca:|orca::/w/feat-a project:p-orca:|orca::/w/feat-b project:p-orca:|orca::/w/feat-c project:p-orca:|lab::/w/gitlab-mr project:p-orca:ssh:gpu-vm|orca-ssh::/w/remote-x project:p-orca:|orca::/w/Zeta
|
||||
SECTION project:repo:lab: project:repo:lab:|lab::/lab
|
||||
SECTION project:repo:shared: project:repo:shared:local|shared::/w/same project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:repo:shared: project:repo:shared:ssh:gpu-vm|shared::/w/same project:repo:shared:local|shared::/w/same
|
||||
SECTION project:repo:empty: -
|
||||
PREFERRED |orca::/w/feat-a -> project:p-orca:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> project:p-orca:|orca::/w/feat-b
|
||||
|
||||
+7
-7
@@ -68,8 +68,8 @@ HEADER key=workspace-status:in-progress label="In progress" count=13 tone="text-
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=workspace-status:in-progress:|orca::/w/feat-a
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -92,8 +92,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> workspace-status:in-progress:ssh:g
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> workspace-status:in-progress:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 31
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/feat-b local|folder:fw-review runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
selectionOrder: |orca::/w/feat-a |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/feat-b local|folder:fw-review runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca-ssh::/w/remote-x shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-notes folder:fw-remote orca::/w/feat-b folder:fw-review api::/w/api-y orca::/w/Zeta
|
||||
-- collapsed: pinned workspace-status:in-review lineage:orca::/w/feat-a --
|
||||
@@ -103,8 +103,8 @@ HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCou
|
||||
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,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same,orca-ssh::/orca-ssh] runtime:env-1:[api::/api]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a lineageCollapsed=true hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -118,7 +118,7 @@ HEADER key=workspace-status:completed label="Done" count=2 tone="text-[#c7a594]"
|
||||
ITEM rowKey=workspace-status:completed:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=workspace-status:completed:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:|orca::/orca workspace-status:in-progress:|orca-ssh::/orca-ssh workspace-status:in-progress:runtime:env-1|api::/api workspace-status:in-progress:|orca::/w/feat-c workspace-status:in-progress:|lab::/lab workspace-status:in-progress:|ext::/ext
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:|orca::/orca workspace-status:in-progress:|orca-ssh::/orca-ssh workspace-status:in-progress:runtime:env-1|api::/api workspace-status:in-progress:|orca::/w/feat-c workspace-status:in-progress:|lab::/lab workspace-status:in-progress:|ext::/ext
|
||||
SECTION workspace-status:in-review: workspace-status:in-review:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-a -> workspace-status:in-progress:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> workspace-status:in-review:|orca::/w/feat-b
|
||||
@@ -128,8 +128,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> workspace-status:in-progress:ssh:g
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> workspace-status:in-progress:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 21
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@local 4=shared::/w/same@ssh:gpu-vm 5=orca::/orca 6=orca-ssh::/orca-ssh 7=api::/api@runtime:env-1 8=orca::/w/feat-c 9=lab::/lab
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@ssh:gpu-vm 4=shared::/w/same@local 5=orca::/orca 6=orca-ssh::/orca-ssh 7=api::/api@runtime:env-1 8=orca::/w/feat-c 9=lab::/lab
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@local 4=shared::/w/same@ssh:gpu-vm 5=orca::/orca 6=orca-ssh::/orca-ssh 7=api::/api@runtime:env-1 8=orca::/w/feat-c 9=lab::/lab
|
||||
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-notes folder:fw-remote api::/w/api-y orca::/w/Zeta
|
||||
=== sort=manual projectOrder=recent pinnedInGroups=false === same as sort=manual projectOrder=manual pinnedInGroups=false
|
||||
|
||||
+27
-27
@@ -56,8 +56,8 @@ ITEM rowKey=all:|orca::/w/feat-c depth=2 groupDepth=0 lastChild=true children=0
|
||||
ITEM rowKey=all:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=all:|orca::/w/feat-a
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
@@ -70,8 +70,8 @@ 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: 24
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/w/Zeta local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@local 8=shared::/w/same@ssh:gpu-vm 9=orca::/w/Zeta
|
||||
selectionOrder: |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/w/Zeta local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@ssh:gpu-vm 8=shared::/w/same@local 9=orca::/w/Zeta
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@local 8=shared::/w/same@ssh:gpu-vm 9=orca::/w/Zeta
|
||||
cmd ids unmounted: orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x api::/w/api-y shared::/w/same orca::/w/Zeta folder:fw-review folder:fw-notes folder:fw-remote
|
||||
-- collapsed: pinned lineage:orca::/w/feat-a --
|
||||
@@ -82,14 +82,14 @@ HEADER key=all label="All" count=12 tone="text-foreground" icon=List hostCounts=
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:local|shared::/w/same all:ssh:gpu-vm|shared::/w/same all:|orca::/w/Zeta
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:ssh:gpu-vm|shared::/w/same all:local|shared::/w/same all:|orca::/w/Zeta
|
||||
PREFERRED |orca::/w/feat-a -> all:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> all:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-c -> all:|orca::/w/feat-c
|
||||
@@ -98,8 +98,8 @@ 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: 15
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/w/Zeta local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/w/Zeta 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/w/Zeta local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/w/Zeta 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/w/Zeta 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x api::/w/api-y shared::/w/same orca::/w/Zeta folder:fw-review folder:fw-notes folder:fw-remote
|
||||
=== groupBy=repo pinnedInGroups=false ===
|
||||
@@ -189,8 +189,8 @@ HEADER key=project:repo:api label="api" count=1 tone="text-foreground" icon=Fold
|
||||
PENDING key=pending:creation-1 creation=creation-1 repo=api
|
||||
ITEM rowKey=project:repo:api: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=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=FolderTree repo=empty projectGroupDepth=0
|
||||
HEADER key=project:repo:ext label="ext" count=0 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
IMPORTED key=imported-worktrees-card:repo-group:ext repo=ext placement=repo-group hidden=ext::/w/detected-hidden
|
||||
@@ -204,7 +204,7 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> project:p-orca:ssh:gpu-vm|orca-ssh
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 33
|
||||
placeholders: empty
|
||||
selectionOrder: |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same
|
||||
selectionOrder: |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=orca::/w/Zeta 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=orca::/w/Zeta 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
cmd ids unmounted: orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x orca::/w/Zeta folder:fw-review folder:fw-notes folder:fw-remote api::/w/api-y shared::/w/same
|
||||
@@ -219,8 +219,8 @@ HEADER key=project-group:pg-remote-folders label="Remote folders" count=1 tone="
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=1
|
||||
HEADER key=project:repo:api label="api" count=1 tone="text-foreground" icon=FolderTree repo=api projectGroupDepth=0
|
||||
HEADER key=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=FolderTree repo=empty projectGroupDepth=0
|
||||
HEADER key=project:repo:ext label="ext" count=0 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
IMPORTED key=imported-worktrees-card:repo-group:ext repo=ext placement=repo-group hidden=ext::/w/detected-hidden
|
||||
@@ -237,8 +237,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> project:p-orca:ssh:gpu-vm|orca-ssh
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 15
|
||||
placeholders: empty
|
||||
selectionOrder: ssh:gpu-vm|folder:fw-remote local|shared::/w/same ssh:gpu-vm|shared::/w/same
|
||||
cmd1-9 mounted: 1=folder:fw-remote@ssh:gpu-vm 2=shared::/w/same@local 3=shared::/w/same@ssh:gpu-vm
|
||||
selectionOrder: ssh:gpu-vm|folder:fw-remote ssh:gpu-vm|shared::/w/same local|shared::/w/same
|
||||
cmd1-9 mounted: 1=folder:fw-remote@ssh:gpu-vm 2=shared::/w/same@ssh:gpu-vm 3=shared::/w/same@local
|
||||
cmd1-9 unmounted: 1=folder:fw-remote@ssh:gpu-vm 2=shared::/w/same@local 3=shared::/w/same@ssh:gpu-vm
|
||||
cmd ids unmounted: folder:fw-remote shared::/w/same
|
||||
=== groupBy=workspace-status pinnedInGroups=false ===
|
||||
@@ -301,8 +301,8 @@ HEADER key=workspace-status:in-progress label="In progress" count=8 tone="text-[
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=workspace-status:in-progress:|orca::/w/feat-a
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-c depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
|
||||
@@ -320,8 +320,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> workspace-status:in-progress:ssh:g
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> workspace-status:in-progress:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 26
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/w/feat-c local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/feat-b local|folder:fw-review runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/w/feat-c 7=folder:fw-notes@local 8=folder:fw-remote@ssh:gpu-vm 9=orca::/w/feat-b#lineage:orca::/w/feat-b
|
||||
selectionOrder: |orca::/w/feat-a |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/w/feat-c local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/feat-b local|folder:fw-review runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/w/feat-c 7=folder:fw-notes@local 8=folder:fw-remote@ssh:gpu-vm 9=orca::/w/feat-b#lineage:orca::/w/feat-b
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/w/feat-c 7=folder:fw-notes@local 8=folder:fw-remote@ssh:gpu-vm 9=orca::/w/feat-b
|
||||
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca-ssh::/w/remote-x shared::/w/same orca::/w/feat-c folder:fw-notes folder:fw-remote orca::/w/feat-b folder:fw-review api::/w/api-y orca::/w/Zeta
|
||||
-- collapsed: pinned workspace-status:in-review lineage:orca::/w/feat-a --
|
||||
@@ -331,8 +331,8 @@ HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCou
|
||||
HEADER key=workspace-status:in-progress label="In progress" count=8 tone="text-[#d4a300]" icon=ConductorProgressIcon hostCounts={local:5 ssh:gpu-vm:3} hostIds={local:[orca::/w/feat-a,lab::/w/gitlab-mr,shared::/w/same,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,shared::/w/same,shared::/w/same,orca::/w/feat-c]
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a lineageCollapsed=true hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-c depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
|
||||
@@ -341,7 +341,7 @@ HEADER key=workspace-status:completed label="Done" count=2 tone="text-[#c7a594]"
|
||||
ITEM rowKey=workspace-status:completed:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=workspace-status:completed:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:|orca::/w/feat-c
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:|orca::/w/feat-c
|
||||
SECTION workspace-status:in-review: workspace-status:in-review:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-a -> workspace-status:in-progress:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> workspace-status:in-review:|orca::/w/feat-b
|
||||
@@ -351,8 +351,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> workspace-status:in-progress:ssh:g
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> workspace-status:in-progress:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 16
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/w/feat-c local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@local 4=shared::/w/same@ssh:gpu-vm 5=orca::/w/feat-c 6=folder:fw-notes@local 7=folder:fw-remote@ssh:gpu-vm 8=api::/w/api-y@runtime:env-1 9=orca::/w/Zeta
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/w/feat-c local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@ssh:gpu-vm 4=shared::/w/same@local 5=orca::/w/feat-c 6=folder:fw-notes@local 7=folder:fw-remote@ssh:gpu-vm 8=api::/w/api-y@runtime:env-1 9=orca::/w/Zeta
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@local 4=shared::/w/same@ssh:gpu-vm 5=orca::/w/feat-c 6=folder:fw-notes@local 7=folder:fw-remote@ssh:gpu-vm 8=api::/w/api-y@runtime:env-1 9=orca::/w/Zeta
|
||||
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x shared::/w/same orca::/w/feat-c folder:fw-notes folder:fw-remote api::/w/api-y orca::/w/Zeta
|
||||
=== groupBy=pr-status pinnedInGroups=false ===
|
||||
@@ -415,8 +415,8 @@ ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 lastCh
|
||||
HEADER key=pr:in-progress label="In progress" count=8 tone="text-workspace-status-progress" icon=ConductorProgressIcon hostCounts={ssh:gpu-vm:3 local:5} hostIds={ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/w/feat-c]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/w/feat-c]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/w/feat-c depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
@@ -431,8 +431,8 @@ 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: 27
|
||||
placeholders: -
|
||||
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 local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/w/feat-c 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=shared::/w/same@local 7=shared::/w/same@ssh:gpu-vm 8=orca::/w/feat-c 9=folder:fw-review@local
|
||||
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 ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/w/feat-c 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=shared::/w/same@ssh:gpu-vm 7=shared::/w/same@local 8=orca::/w/feat-c 9=folder:fw-review@local
|
||||
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=shared::/w/same@local 7=shared::/w/same@ssh:gpu-vm 8=orca::/w/feat-c 9=folder:fw-review@local
|
||||
cmd ids unmounted: orca::/w/feat-b orca::/w/feat-a api::/w/api-y orca-ssh::/w/remote-x lab::/w/gitlab-mr shared::/w/same orca::/w/feat-c folder:fw-review folder:fw-notes folder:fw-remote orca::/w/Zeta
|
||||
-- collapsed: pinned pr:in-review pr:closed lineage:orca::/w/feat-a --
|
||||
@@ -445,8 +445,8 @@ HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-re
|
||||
HEADER key=pr:in-progress label="In progress" count=8 tone="text-workspace-status-progress" icon=ConductorProgressIcon hostCounts={ssh:gpu-vm:3 local:5} hostIds={ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/w/feat-c]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/w/feat-c]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/w/feat-c depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
@@ -463,7 +463,7 @@ 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: 18
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-b ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/w/feat-c local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/w/feat-c 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
selectionOrder: |orca::/w/feat-b ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/w/feat-c local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/w/feat-c 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/w/feat-c 7=folder:fw-review@local 8=folder:fw-notes@local 9=folder:fw-remote@ssh:gpu-vm
|
||||
cmd ids unmounted: orca::/w/feat-b orca-ssh::/w/remote-x lab::/w/gitlab-mr shared::/w/same orca::/w/feat-c folder:fw-review folder:fw-notes folder:fw-remote
|
||||
|
||||
+14
-14
@@ -140,8 +140,8 @@ ITEM rowKey=all:|orca::/w/feat-c depth=2 groupDepth=0 lastChild=true children=0
|
||||
ITEM rowKey=all:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=all:|orca::/w/feat-a
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
@@ -186,8 +186,8 @@ HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts=
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
@@ -198,7 +198,7 @@ FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:local|shared::/w/same all:ssh:gpu-vm|shared::/w/same all:|orca::/orca all:|orca::/w/Zeta all:|orca-ssh::/orca-ssh all:runtime:env-1|api::/api all:|lab::/lab all:|ext::/ext
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:ssh:gpu-vm|shared::/w/same all:local|shared::/w/same all:|orca::/orca all:|orca::/w/Zeta all:|orca-ssh::/orca-ssh all:runtime:env-1|api::/api all:|lab::/lab all:|ext::/ext
|
||||
PREFERRED |orca::/w/feat-a -> all:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> all:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-c -> all:|orca::/w/feat-c
|
||||
@@ -351,7 +351,7 @@ FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=1
|
||||
HEADER key=project-group:pg-remote-folders label="Remote folders" count=1 tone="text-foreground" icon=FolderTree projectGroup=pg-remote-folders projectGroupDepth=0
|
||||
HEADER key=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=FolderTree repo=empty projectGroupDepth=0
|
||||
HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
IMPORTED key=imported-worktrees-card:repo-group:ext repo=ext placement=repo-group hidden=ext::/w/detected-hidden
|
||||
@@ -371,7 +371,7 @@ ITEM rowKey=project:p-orca:|orca-ssh::/orca-ssh depth=0 groupDepth=1 children=0
|
||||
ITEM rowKey=project:p-orca:ssh:gpu-vm|orca-ssh::/w/remote-x depth=0 groupDepth=1 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca path=project-group:pg-work>project:p-orca
|
||||
HEADER key=project-group:pg-remote-folders label="Remote folders" count=1 tone="text-foreground" icon=FolderTree projectGroup=pg-remote-folders projectGroupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=1
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
-- rows before host sections --
|
||||
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,orca::/w/feat-b,lab::/w/gitlab-mr,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,orca::/w/feat-b,lab::/w/gitlab-mr,shared::/w/same,orca::/w/feat-c]
|
||||
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
|
||||
@@ -403,8 +403,8 @@ PENDING key=pending:creation-1 creation=creation-1 repo=api
|
||||
ITEM rowKey=project:repo:api:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=project:repo:api: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=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=FolderTree repo=empty projectGroupDepth=0
|
||||
HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
IMPORTED key=imported-worktrees-card:repo-group:ext repo=ext placement=repo-group hidden=ext::/w/detected-hidden
|
||||
@@ -452,7 +452,7 @@ HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=Fold
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:p-orca: project:p-orca:|orca::/orca project:p-orca:|orca-ssh::/orca-ssh project:p-orca:|orca::/w/feat-a project:p-orca:|orca::/w/feat-b project:p-orca:|orca::/w/feat-c project:p-orca:|lab::/w/gitlab-mr project:p-orca:ssh:gpu-vm|orca-ssh::/w/remote-x project:p-orca:|orca::/w/Zeta
|
||||
SECTION project:repo:lab: project:repo:lab:|lab::/lab
|
||||
SECTION project:repo:shared: project:repo:shared:local|shared::/w/same project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:repo:shared: project:repo:shared:ssh:gpu-vm|shared::/w/same project:repo:shared:local|shared::/w/same
|
||||
SECTION project:repo:empty: -
|
||||
SECTION project:repo:ext: project:repo:ext:|ext::/ext
|
||||
PREFERRED |orca::/w/feat-a -> project:p-orca:|orca::/w/feat-a
|
||||
@@ -617,8 +617,8 @@ HEADER key=workspace-status:in-progress label="In progress" count=13 tone="text-
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=workspace-status:in-progress:|orca::/w/feat-a
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -663,8 +663,8 @@ ITEM rowKey=pinned:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=tru
|
||||
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,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same,orca-ssh::/orca-ssh] runtime:env-1:[api::/api]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a lineageCollapsed=true hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -680,7 +680,7 @@ HEADER key=workspace-status:completed label="Done" count=2 tone="text-[#c7a594]"
|
||||
ITEM rowKey=workspace-status:completed:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=workspace-status:completed:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:|orca::/orca workspace-status:in-progress:|orca-ssh::/orca-ssh workspace-status:in-progress:runtime:env-1|api::/api workspace-status:in-progress:|orca::/w/feat-c workspace-status:in-progress:|lab::/lab workspace-status:in-progress:|ext::/ext
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:|orca::/orca workspace-status:in-progress:|orca-ssh::/orca-ssh workspace-status:in-progress:runtime:env-1|api::/api workspace-status:in-progress:|orca::/w/feat-c workspace-status:in-progress:|lab::/lab workspace-status:in-progress:|ext::/ext
|
||||
SECTION workspace-status:in-review: workspace-status:in-review:|orca::/w/feat-b
|
||||
SECTION workspace-status:completed: workspace-status:completed:runtime:env-1|api::/w/api-y workspace-status:completed:|orca::/w/Zeta
|
||||
PREFERRED |orca::/w/feat-a -> workspace-status:in-progress:|orca::/w/feat-a
|
||||
@@ -848,8 +848,8 @@ ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 lastCh
|
||||
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,shared::/w/same,orca-ssh::/orca-ssh] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -898,8 +898,8 @@ ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 lastCh
|
||||
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,shared::/w/same,orca-ssh::/orca-ssh] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -914,7 +914,7 @@ ITEM rowKey=pr:closed:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true childre
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION pr:done: pr:done:|orca::/w/feat-b
|
||||
SECTION pr:in-review: pr:in-review:|orca::/w/feat-a pr:in-review:runtime:env-1|api::/w/api-y
|
||||
SECTION pr:in-progress: pr:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x pr:in-progress:|lab::/w/gitlab-mr pr:in-progress:local|shared::/w/same pr:in-progress:ssh:gpu-vm|shared::/w/same pr:in-progress:|orca::/orca pr:in-progress:|orca-ssh::/orca-ssh pr:in-progress:runtime:env-1|api::/api pr:in-progress:|orca::/w/feat-c pr:in-progress:|lab::/lab pr:in-progress:|ext::/ext
|
||||
SECTION pr:in-progress: pr:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x pr:in-progress:|lab::/w/gitlab-mr pr:in-progress:ssh:gpu-vm|shared::/w/same pr:in-progress:local|shared::/w/same pr:in-progress:|orca::/orca pr:in-progress:|orca-ssh::/orca-ssh pr:in-progress:runtime:env-1|api::/api pr:in-progress:|orca::/w/feat-c pr:in-progress:|lab::/lab pr:in-progress:|ext::/ext
|
||||
SECTION pr:closed: pr:closed:|orca::/w/Zeta
|
||||
PREFERRED |orca::/w/feat-a -> pr:in-review:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> pr:done:|orca::/w/feat-b
|
||||
|
||||
+20
-20
@@ -1,8 +1,8 @@
|
||||
=== groupBy=none sort=name projectOrder=manual ===
|
||||
visible: r-angstrom::/w/angstrom r-angstrom::/w/angstrom r-angstrom::/w/ångström r-eclair::/w/Eclair r-ssh::/w/eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-ssh::/w/w2 r-eclair::/w/w2 r-eclair::/w/w10 r-eclair::/w/zebra
|
||||
HEADER key=all label="All" count=23 tone="text-foreground" icon=List hostCounts={local:20 ssh:gpu-vm:3} hostIds={local:[r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra] ssh:gpu-vm:[r-angstrom::/w/angstrom,r-ssh::/w/eclair,r-ssh::/w/w2]} ids=[r-angstrom::/w/angstrom,r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-ssh::/w/eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-ssh::/w/w2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra]
|
||||
ITEM rowKey=all:|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
HEADER key=all label="All" count=23 tone="text-foreground" icon=List hostCounts={ssh:gpu-vm:3 local:20} hostIds={ssh:gpu-vm:[r-angstrom::/w/angstrom,r-ssh::/w/eclair,r-ssh::/w/w2] local:[r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra]} ids=[r-angstrom::/w/angstrom,r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-ssh::/w/eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-ssh::/w/w2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra]
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-angstrom::/w/ångström depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-eclair::/w/Eclair depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-eclair
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-ssh::/w/eclair depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
@@ -26,8 +26,8 @@ FOLDER key=folder-workspace:local|folder:fw-w10 projectGroup=pg-zebra depth=0 gr
|
||||
FOLDER key=folder-workspace:local|folder:fw-zebra projectGroup=pg-zebra depth=0 groupDepth=0
|
||||
renderedKeys: 34
|
||||
placeholders: -
|
||||
selectionOrder: |r-angstrom::/w/angstrom ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/ångström |r-eclair::/w/Eclair ssh:gpu-vm|r-ssh::/w/eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 ssh:gpu-vm|r-ssh::/w/w2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-angstrom local|folder:fw-angstrom-accent local|folder:fw-Eclair local|folder:fw-eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra
|
||||
cmd1-9 mounted: 1=r-angstrom::/w/angstrom 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/ångström 4=r-eclair::/w/Eclair 5=r-ssh::/w/eclair@ssh:gpu-vm 6=r-eclair::/w/eclair 7=r-eclair::/w/éclair 8=r-eclair::/w/éclair 9=r-eclair::/w/W2
|
||||
selectionOrder: ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/angstrom |r-angstrom::/w/ångström |r-eclair::/w/Eclair ssh:gpu-vm|r-ssh::/w/eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 ssh:gpu-vm|r-ssh::/w/w2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-angstrom local|folder:fw-angstrom-accent local|folder:fw-Eclair local|folder:fw-eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra
|
||||
cmd1-9 mounted: 1=r-angstrom::/w/angstrom@ssh:gpu-vm 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/ångström 4=r-eclair::/w/Eclair 5=r-ssh::/w/eclair@ssh:gpu-vm 6=r-eclair::/w/eclair 7=r-eclair::/w/éclair 8=r-eclair::/w/éclair 9=r-eclair::/w/W2
|
||||
cmd1-9 unmounted: 1=r-angstrom::/w/angstrom 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/ångström 4=r-eclair::/w/Eclair 5=r-ssh::/w/eclair@ssh:gpu-vm 6=r-eclair::/w/eclair 7=r-eclair::/w/éclair 8=r-eclair::/w/éclair 9=r-eclair::/w/W2
|
||||
cmd ids unmounted: r-angstrom::/w/angstrom r-angstrom::/w/ångström r-eclair::/w/Eclair r-ssh::/w/eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-ssh::/w/w2 r-eclair::/w/w2 r-eclair::/w/w10 r-eclair::/w/zebra folder:fw-angstrom folder:fw-angstrom-accent folder:fw-Eclair folder:fw-eclair folder:fw-eclair-accent folder:fw-W2 folder:fw-w2-a folder:fw-w2-b folder:fw-w10 folder:fw-zebra
|
||||
=== groupBy=none sort=name projectOrder=recent === same as groupBy=none sort=name projectOrder=manual
|
||||
@@ -36,8 +36,8 @@ visible: r-eclair::/w/w10 r-eclair::/w/zebra r-angstrom::/w/angstrom r-angstrom:
|
||||
HEADER key=all label="All" count=23 tone="text-foreground" icon=List hostCounts={local:20 ssh:gpu-vm:3} hostIds={local:[r-eclair::/w/w10,r-eclair::/w/zebra,r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2] ssh:gpu-vm:[r-angstrom::/w/angstrom,r-ssh::/w/eclair,r-ssh::/w/w2]} ids=[r-eclair::/w/w10,r-eclair::/w/zebra,r-angstrom::/w/angstrom,r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-ssh::/w/eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-ssh::/w/w2,r-eclair::/w/w2]
|
||||
ITEM rowKey=all:|r-eclair::/w/w10 depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-eclair
|
||||
ITEM rowKey=all:|r-eclair::/w/zebra depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-eclair
|
||||
ITEM rowKey=all:|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-angstrom::/w/ångström depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-eclair::/w/Eclair depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-eclair
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-ssh::/w/eclair depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
@@ -59,16 +59,16 @@ FOLDER key=folder-workspace:local|folder:fw-w10 projectGroup=pg-zebra depth=0 gr
|
||||
FOLDER key=folder-workspace:local|folder:fw-zebra projectGroup=pg-zebra depth=0 groupDepth=0
|
||||
renderedKeys: 34
|
||||
placeholders: -
|
||||
selectionOrder: |r-eclair::/w/w10 |r-eclair::/w/zebra |r-angstrom::/w/angstrom ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/ångström |r-eclair::/w/Eclair ssh:gpu-vm|r-ssh::/w/eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 ssh:gpu-vm|r-ssh::/w/w2 |r-eclair::/w/w2 local|folder:fw-angstrom local|folder:fw-angstrom-accent local|folder:fw-Eclair local|folder:fw-eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra
|
||||
cmd1-9 mounted: 1=r-eclair::/w/w10 2=r-eclair::/w/zebra 3=r-angstrom::/w/angstrom 4=r-angstrom::/w/angstrom@ssh:gpu-vm 5=r-angstrom::/w/ångström 6=r-eclair::/w/Eclair 7=r-ssh::/w/eclair@ssh:gpu-vm 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
selectionOrder: |r-eclair::/w/w10 |r-eclair::/w/zebra ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/angstrom |r-angstrom::/w/ångström |r-eclair::/w/Eclair ssh:gpu-vm|r-ssh::/w/eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 ssh:gpu-vm|r-ssh::/w/w2 |r-eclair::/w/w2 local|folder:fw-angstrom local|folder:fw-angstrom-accent local|folder:fw-Eclair local|folder:fw-eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra
|
||||
cmd1-9 mounted: 1=r-eclair::/w/w10 2=r-eclair::/w/zebra 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/angstrom 5=r-angstrom::/w/ångström 6=r-eclair::/w/Eclair 7=r-ssh::/w/eclair@ssh:gpu-vm 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
cmd1-9 unmounted: 1=r-eclair::/w/w10 2=r-eclair::/w/zebra 3=r-angstrom::/w/angstrom 4=r-angstrom::/w/angstrom@ssh:gpu-vm 5=r-angstrom::/w/ångström 6=r-eclair::/w/Eclair 7=r-ssh::/w/eclair@ssh:gpu-vm 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
cmd ids unmounted: r-eclair::/w/w10 r-eclair::/w/zebra r-angstrom::/w/angstrom r-angstrom::/w/ångström r-eclair::/w/Eclair r-ssh::/w/eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-ssh::/w/w2 r-eclair::/w/w2 folder:fw-angstrom folder:fw-angstrom-accent folder:fw-Eclair folder:fw-eclair folder:fw-eclair-accent folder:fw-W2 folder:fw-w2-a folder:fw-w2-b folder:fw-w10 folder:fw-zebra
|
||||
=== groupBy=none sort=recent projectOrder=recent === same as groupBy=none sort=recent projectOrder=manual
|
||||
=== groupBy=none sort=repo projectOrder=manual ===
|
||||
visible: r-angstrom::/w/angstrom r-angstrom::/w/angstrom r-angstrom::/w/ångström r-ssh::/w/eclair r-ssh::/w/w2 r-eclair::/w/Eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-eclair::/w/w2 r-eclair::/w/w10 r-eclair::/w/zebra
|
||||
HEADER key=all label="All" count=23 tone="text-foreground" icon=List hostCounts={local:20 ssh:gpu-vm:3} hostIds={local:[r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra] ssh:gpu-vm:[r-angstrom::/w/angstrom,r-ssh::/w/eclair,r-ssh::/w/w2]} ids=[r-angstrom::/w/angstrom,r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-ssh::/w/eclair,r-ssh::/w/w2,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra]
|
||||
ITEM rowKey=all:|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
HEADER key=all label="All" count=23 tone="text-foreground" icon=List hostCounts={ssh:gpu-vm:3 local:20} hostIds={ssh:gpu-vm:[r-angstrom::/w/angstrom,r-ssh::/w/eclair,r-ssh::/w/w2] local:[r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra]} ids=[r-angstrom::/w/angstrom,r-angstrom::/w/angstrom,r-angstrom::/w/ångström,r-ssh::/w/eclair,r-ssh::/w/w2,r-eclair::/w/Eclair,r-eclair::/w/eclair,r-eclair::/w/éclair,r-eclair::/w/éclair,r-eclair::/w/W2,r-eclair::/w/w2,r-eclair::/w/w10,r-eclair::/w/zebra]
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-angstrom::/w/angstrom depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:|r-angstrom::/w/ångström depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-ssh::/w/eclair depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
ITEM rowKey=all:ssh:gpu-vm|r-ssh::/w/w2 depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
@@ -92,8 +92,8 @@ FOLDER key=folder-workspace:local|folder:fw-w10 projectGroup=pg-zebra depth=0 gr
|
||||
FOLDER key=folder-workspace:local|folder:fw-zebra projectGroup=pg-zebra depth=0 groupDepth=0
|
||||
renderedKeys: 34
|
||||
placeholders: -
|
||||
selectionOrder: |r-angstrom::/w/angstrom ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/ångström ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2 |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-angstrom local|folder:fw-angstrom-accent local|folder:fw-Eclair local|folder:fw-eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra
|
||||
cmd1-9 mounted: 1=r-angstrom::/w/angstrom 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/ångström 4=r-ssh::/w/eclair@ssh:gpu-vm 5=r-ssh::/w/w2@ssh:gpu-vm 6=r-eclair::/w/Eclair 7=r-eclair::/w/eclair 8=r-eclair::/w/éclair 9=r-eclair::/w/éclair
|
||||
selectionOrder: ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/angstrom |r-angstrom::/w/ångström ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2 |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-angstrom local|folder:fw-angstrom-accent local|folder:fw-Eclair local|folder:fw-eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra
|
||||
cmd1-9 mounted: 1=r-angstrom::/w/angstrom@ssh:gpu-vm 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/ångström 4=r-ssh::/w/eclair@ssh:gpu-vm 5=r-ssh::/w/w2@ssh:gpu-vm 6=r-eclair::/w/Eclair 7=r-eclair::/w/eclair 8=r-eclair::/w/éclair 9=r-eclair::/w/éclair
|
||||
cmd1-9 unmounted: 1=r-angstrom::/w/angstrom 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/ångström 4=r-ssh::/w/eclair@ssh:gpu-vm 5=r-ssh::/w/w2@ssh:gpu-vm 6=r-eclair::/w/Eclair 7=r-eclair::/w/eclair 8=r-eclair::/w/éclair 9=r-eclair::/w/éclair
|
||||
cmd ids unmounted: r-angstrom::/w/angstrom r-angstrom::/w/ångström r-ssh::/w/eclair r-ssh::/w/w2 r-eclair::/w/Eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-eclair::/w/w2 r-eclair::/w/w10 r-eclair::/w/zebra folder:fw-angstrom folder:fw-angstrom-accent folder:fw-Eclair folder:fw-eclair folder:fw-eclair-accent folder:fw-W2 folder:fw-w2-a folder:fw-w2-b folder:fw-w10 folder:fw-zebra
|
||||
=== groupBy=none sort=repo projectOrder=recent === same as groupBy=none sort=repo projectOrder=manual
|
||||
@@ -103,8 +103,8 @@ HEADER key=project-group:pg-angstrom label="angstrom" count=1 tone="text-foregro
|
||||
FOLDER key=folder-workspace:local|folder:fw-eclair projectGroup=pg-angstrom depth=0 groupDepth=1
|
||||
HEADER key=project-group:pg-angstrom-accent label="ångström" count=1 tone="text-foreground" icon=FolderTree projectGroup=pg-angstrom-accent projectGroupDepth=0
|
||||
HEADER key=project:repo:r-angstrom label="ångström" count=3 tone="text-foreground" icon=FolderTree repo=r-angstrom projectGroupDepth=1
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:ssh:gpu-vm|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/ångström depth=0 groupDepth=1 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
HEADER key=project-group:pg-eclair label="eclair" count=2 tone="text-foreground" icon=FolderTree projectGroup=pg-eclair projectGroupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-angstrom projectGroup=pg-eclair depth=0 groupDepth=1
|
||||
@@ -132,8 +132,8 @@ ITEM rowKey=project:repo:r-ssh:ssh:gpu-vm|r-ssh::/w/eclair depth=0 groupDepth=0
|
||||
ITEM rowKey=project:repo:r-ssh:ssh:gpu-vm|r-ssh::/w/w2 depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
renderedKeys: 41
|
||||
placeholders: -
|
||||
selectionOrder: local|folder:fw-eclair |r-angstrom::/w/angstrom ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/ångström local|folder:fw-angstrom local|folder:fw-angstrom-accent |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-Eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2
|
||||
cmd1-9 mounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/Eclair 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
selectionOrder: local|folder:fw-eclair ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/angstrom |r-angstrom::/w/ångström local|folder:fw-angstrom local|folder:fw-angstrom-accent |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-Eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2
|
||||
cmd1-9 mounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/angstrom 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/Eclair 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
cmd1-9 unmounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/Eclair 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
cmd ids unmounted: folder:fw-eclair r-angstrom::/w/angstrom r-angstrom::/w/ångström folder:fw-angstrom folder:fw-angstrom-accent r-eclair::/w/Eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-eclair::/w/w2 r-eclair::/w/w10 r-eclair::/w/zebra folder:fw-Eclair folder:fw-eclair-accent folder:fw-W2 folder:fw-w2-a folder:fw-w2-b folder:fw-w10 folder:fw-zebra r-ssh::/w/eclair r-ssh::/w/w2
|
||||
=== groupBy=repo sort=name projectOrder=recent === same as groupBy=repo sort=name projectOrder=manual
|
||||
@@ -143,8 +143,8 @@ HEADER key=project-group:pg-angstrom label="angstrom" count=1 tone="text-foregro
|
||||
FOLDER key=folder-workspace:local|folder:fw-eclair projectGroup=pg-angstrom depth=0 groupDepth=1
|
||||
HEADER key=project-group:pg-angstrom-accent label="ångström" count=1 tone="text-foreground" icon=FolderTree projectGroup=pg-angstrom-accent projectGroupDepth=0
|
||||
HEADER key=project:repo:r-angstrom label="ångström" count=3 tone="text-foreground" icon=FolderTree repo=r-angstrom projectGroupDepth=1
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:ssh:gpu-vm|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/ångström depth=0 groupDepth=1 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
HEADER key=project-group:pg-eclair label="eclair" count=2 tone="text-foreground" icon=FolderTree projectGroup=pg-eclair projectGroupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-angstrom projectGroup=pg-eclair depth=0 groupDepth=1
|
||||
@@ -172,8 +172,8 @@ ITEM rowKey=project:repo:r-ssh:ssh:gpu-vm|r-ssh::/w/eclair depth=0 groupDepth=0
|
||||
ITEM rowKey=project:repo:r-ssh:ssh:gpu-vm|r-ssh::/w/w2 depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
renderedKeys: 41
|
||||
placeholders: -
|
||||
selectionOrder: local|folder:fw-eclair |r-angstrom::/w/angstrom ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/ångström local|folder:fw-angstrom local|folder:fw-angstrom-accent |r-eclair::/w/w10 |r-eclair::/w/zebra |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 local|folder:fw-Eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2
|
||||
cmd1-9 mounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/w10 8=r-eclair::/w/zebra 9=r-eclair::/w/Eclair
|
||||
selectionOrder: local|folder:fw-eclair ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/angstrom |r-angstrom::/w/ångström local|folder:fw-angstrom local|folder:fw-angstrom-accent |r-eclair::/w/w10 |r-eclair::/w/zebra |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 local|folder:fw-Eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2
|
||||
cmd1-9 mounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/angstrom 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/w10 8=r-eclair::/w/zebra 9=r-eclair::/w/Eclair
|
||||
cmd1-9 unmounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/w10 8=r-eclair::/w/zebra 9=r-eclair::/w/Eclair
|
||||
cmd ids unmounted: folder:fw-eclair r-angstrom::/w/angstrom r-angstrom::/w/ångström folder:fw-angstrom folder:fw-angstrom-accent r-eclair::/w/w10 r-eclair::/w/zebra r-eclair::/w/Eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-eclair::/w/w2 folder:fw-Eclair folder:fw-eclair-accent folder:fw-W2 folder:fw-w2-a folder:fw-w2-b folder:fw-w10 folder:fw-zebra r-ssh::/w/eclair r-ssh::/w/w2
|
||||
=== groupBy=repo sort=recent projectOrder=recent === same as groupBy=repo sort=recent projectOrder=manual
|
||||
@@ -183,8 +183,8 @@ HEADER key=project-group:pg-angstrom label="angstrom" count=1 tone="text-foregro
|
||||
FOLDER key=folder-workspace:local|folder:fw-eclair projectGroup=pg-angstrom depth=0 groupDepth=1
|
||||
HEADER key=project-group:pg-angstrom-accent label="ångström" count=1 tone="text-foreground" icon=FolderTree projectGroup=pg-angstrom-accent projectGroupDepth=0
|
||||
HEADER key=project:repo:r-angstrom label="ångström" count=3 tone="text-foreground" icon=FolderTree repo=r-angstrom projectGroupDepth=1
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:ssh:gpu-vm|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/angstrom depth=0 groupDepth=1 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
ITEM rowKey=project:repo:r-angstrom:|r-angstrom::/w/ångström depth=0 groupDepth=1 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:r-angstrom path=project-group:pg-angstrom-accent>project:repo:r-angstrom
|
||||
HEADER key=project-group:pg-eclair label="eclair" count=2 tone="text-foreground" icon=FolderTree projectGroup=pg-eclair projectGroupDepth=0
|
||||
FOLDER key=folder-workspace:local|folder:fw-angstrom projectGroup=pg-eclair depth=0 groupDepth=1
|
||||
@@ -212,8 +212,8 @@ ITEM rowKey=project:repo:r-ssh:ssh:gpu-vm|r-ssh::/w/eclair depth=0 groupDepth=0
|
||||
ITEM rowKey=project:repo:r-ssh:ssh:gpu-vm|r-ssh::/w/w2 depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:r-ssh
|
||||
renderedKeys: 41
|
||||
placeholders: -
|
||||
selectionOrder: local|folder:fw-eclair |r-angstrom::/w/angstrom ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/ångström local|folder:fw-angstrom local|folder:fw-angstrom-accent |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-Eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2
|
||||
cmd1-9 mounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/Eclair 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
selectionOrder: local|folder:fw-eclair ssh:gpu-vm|r-angstrom::/w/angstrom |r-angstrom::/w/angstrom |r-angstrom::/w/ångström local|folder:fw-angstrom local|folder:fw-angstrom-accent |r-eclair::/w/Eclair |r-eclair::/w/eclair |r-eclair::/w/éclair |r-eclair::/w/éclair |r-eclair::/w/W2 |r-eclair::/w/w2 |r-eclair::/w/w10 |r-eclair::/w/zebra local|folder:fw-Eclair local|folder:fw-eclair-accent local|folder:fw-W2 local|folder:fw-w2-a local|folder:fw-w2-b local|folder:fw-w10 local|folder:fw-zebra ssh:gpu-vm|r-ssh::/w/eclair ssh:gpu-vm|r-ssh::/w/w2
|
||||
cmd1-9 mounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom@ssh:gpu-vm 3=r-angstrom::/w/angstrom 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/Eclair 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
cmd1-9 unmounted: 1=folder:fw-eclair@local 2=r-angstrom::/w/angstrom 3=r-angstrom::/w/angstrom@ssh:gpu-vm 4=r-angstrom::/w/ångström 5=folder:fw-angstrom@local 6=folder:fw-angstrom-accent@local 7=r-eclair::/w/Eclair 8=r-eclair::/w/eclair 9=r-eclair::/w/éclair
|
||||
cmd ids unmounted: folder:fw-eclair r-angstrom::/w/angstrom r-angstrom::/w/ångström folder:fw-angstrom folder:fw-angstrom-accent r-eclair::/w/Eclair r-eclair::/w/eclair r-eclair::/w/éclair r-eclair::/w/éclair r-eclair::/w/W2 r-eclair::/w/w2 r-eclair::/w/w10 r-eclair::/w/zebra folder:fw-Eclair folder:fw-eclair-accent folder:fw-W2 folder:fw-w2-a folder:fw-w2-b folder:fw-w10 folder:fw-zebra r-ssh::/w/eclair r-ssh::/w/w2
|
||||
=== groupBy=repo sort=repo projectOrder=recent === same as groupBy=repo sort=repo projectOrder=manual
|
||||
|
||||
+24
-24
@@ -66,8 +66,8 @@ ITEM rowKey=all:|orca::/w/feat-c depth=2 groupDepth=0 lastChild=true children=0
|
||||
ITEM rowKey=all:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=all:|orca::/w/feat-a
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
@@ -85,8 +85,8 @@ 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/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@local 8=shared::/w/same@ssh:gpu-vm 9=orca::/orca
|
||||
selectionOrder: |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca::/w/feat-b#lineage:orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@ssh:gpu-vm 8=shared::/w/same@local 9=orca::/orca
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca::/w/feat-b 3=orca::/w/feat-c 4=lab::/w/gitlab-mr 5=orca-ssh::/w/remote-x@ssh:gpu-vm 6=api::/w/api-y@runtime:env-1 7=shared::/w/same@local 8=shared::/w/same@ssh:gpu-vm 9=orca::/orca
|
||||
cmd ids unmounted: orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x api::/w/api-y shared::/w/same orca::/orca orca::/w/Zeta orca-ssh::/orca-ssh api::/api lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote
|
||||
-- collapsed: pinned lineage:orca::/w/feat-a --
|
||||
@@ -97,8 +97,8 @@ HEADER key=all label="All" count=17 tone="text-foreground" icon=List hostCounts=
|
||||
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:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=all:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca::/w/Zeta depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=all:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
@@ -109,7 +109,7 @@ FOLDER key=folder-workspace:local|folder:fw-review projectGroup=pg-folders depth
|
||||
FOLDER key=folder-workspace:local|folder:fw-notes projectGroup=pg-folders depth=0 groupDepth=0
|
||||
FOLDER key=folder-workspace:ssh:gpu-vm|folder:fw-remote projectGroup=pg-remote-folders depth=0 groupDepth=0
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:local|shared::/w/same all:ssh:gpu-vm|shared::/w/same all:|orca::/orca all:|orca::/w/Zeta all:|orca-ssh::/orca-ssh all:runtime:env-1|api::/api all:|lab::/lab all:|ext::/ext
|
||||
SECTION all: all:|orca::/w/feat-a all:|orca::/w/feat-b all:|orca::/w/feat-c all:|lab::/w/gitlab-mr all:ssh:gpu-vm|orca-ssh::/w/remote-x all:runtime:env-1|api::/w/api-y all:ssh:gpu-vm|shared::/w/same all:local|shared::/w/same all:|orca::/orca all:|orca::/w/Zeta all:|orca-ssh::/orca-ssh all:runtime:env-1|api::/api all:|lab::/lab all:|ext::/ext
|
||||
PREFERRED |orca::/w/feat-a -> all:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> all:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-c -> all:|orca::/w/feat-c
|
||||
@@ -118,8 +118,8 @@ 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/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca::/w/Zeta 8=orca-ssh::/orca-ssh 9=api::/api@runtime:env-1
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca::/w/Zeta |orca-ssh::/orca-ssh runtime:env-1|api::/api |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/orca 7=orca::/w/Zeta 8=orca-ssh::/orca-ssh 9=api::/api@runtime:env-1
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=api::/w/api-y@runtime:env-1 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca::/w/Zeta 8=orca-ssh::/orca-ssh 9=api::/api@runtime:env-1
|
||||
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x api::/w/api-y shared::/w/same orca::/orca orca::/w/Zeta orca-ssh::/orca-ssh api::/api lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote
|
||||
=== groupBy=repo pinnedInGroups=false ===
|
||||
@@ -223,8 +223,8 @@ PENDING key=pending:creation-1 creation=creation-1 repo=api
|
||||
ITEM rowKey=project:repo:api:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=project:repo:api: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=project:repo:shared label="shared" count=2 tone="text-foreground" icon=FolderTree repo=shared projectGroupDepth=0
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=project:repo:shared:local|shared::/w/same depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
HEADER key=project:repo:empty label="empty" count=0 tone="text-foreground" icon=FolderTree repo=empty projectGroupDepth=0
|
||||
HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=FolderTree repo=ext projectGroupDepth=0
|
||||
INBOX key=new-external-worktrees-inbox:ext repo=ext inbox=ext::/w/detected-hidden
|
||||
@@ -238,7 +238,7 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> project:p-orca:ssh:gpu-vm|orca-ssh
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 39
|
||||
placeholders: empty
|
||||
selectionOrder: |orca::/orca |orca-ssh::/orca-ssh |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta |lab::/lab local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/api runtime:env-1|api::/w/api-y local|shared::/w/same ssh:gpu-vm|shared::/w/same |ext::/ext
|
||||
selectionOrder: |orca::/orca |orca-ssh::/orca-ssh |orca::/w/feat-a |orca::/w/feat-b |orca::/w/feat-c |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x |orca::/w/Zeta |lab::/lab local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/api runtime:env-1|api::/w/api-y ssh:gpu-vm|shared::/w/same local|shared::/w/same |ext::/ext
|
||||
cmd1-9 mounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/feat-a#lineage:orca::/w/feat-a 4=orca::/w/feat-b#lineage:orca::/w/feat-b 5=orca::/w/feat-c 6=lab::/w/gitlab-mr 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/w/Zeta 9=lab::/lab
|
||||
cmd1-9 unmounted: 1=orca::/orca 2=orca-ssh::/orca-ssh 3=orca::/w/feat-a 4=orca::/w/feat-b 5=orca::/w/feat-c 6=lab::/w/gitlab-mr 7=orca-ssh::/w/remote-x@ssh:gpu-vm 8=orca::/w/Zeta 9=lab::/lab
|
||||
cmd ids unmounted: orca::/orca orca-ssh::/orca-ssh orca::/w/feat-a orca::/w/feat-b orca::/w/feat-c lab::/w/gitlab-mr orca-ssh::/w/remote-x orca::/w/Zeta lab::/lab folder:fw-review folder:fw-notes folder:fw-remote api::/api api::/w/api-y shared::/w/same ext::/ext
|
||||
@@ -263,7 +263,7 @@ HEADER key=project:repo:ext label="ext" count=1 tone="text-foreground" icon=Fold
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:p-orca: project:p-orca:|orca::/orca project:p-orca:|orca-ssh::/orca-ssh project:p-orca:|orca::/w/feat-a project:p-orca:|orca::/w/feat-b project:p-orca:|orca::/w/feat-c project:p-orca:|lab::/w/gitlab-mr project:p-orca:ssh:gpu-vm|orca-ssh::/w/remote-x project:p-orca:|orca::/w/Zeta
|
||||
SECTION project:repo:lab: project:repo:lab:|lab::/lab
|
||||
SECTION project:repo:shared: project:repo:shared:local|shared::/w/same project:repo:shared:ssh:gpu-vm|shared::/w/same
|
||||
SECTION project:repo:shared: project:repo:shared:ssh:gpu-vm|shared::/w/same project:repo:shared:local|shared::/w/same
|
||||
SECTION project:repo:empty: -
|
||||
SECTION project:repo:ext: project:repo:ext:|ext::/ext
|
||||
PREFERRED |orca::/w/feat-a -> project:p-orca:|orca::/w/feat-a
|
||||
@@ -348,8 +348,8 @@ HEADER key=workspace-status:in-progress label="In progress" count=13 tone="text-
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|lab::/w/gitlab-mr depth=1 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" showProject=true placement=natural owning=project:repo:lab parent=workspace-status:in-progress:|orca::/w/feat-a
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -372,8 +372,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> workspace-status:in-progress:ssh:g
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> workspace-status:in-progress:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 31
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/feat-b local|folder:fw-review runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
selectionOrder: |orca::/w/feat-a |lab::/w/gitlab-mr ssh:gpu-vm|orca-ssh::/w/remote-x ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote |orca::/w/feat-b local|folder:fw-review runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=lab::/w/gitlab-mr 3=orca-ssh::/w/remote-x@ssh:gpu-vm 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd ids unmounted: orca::/w/feat-a lab::/w/gitlab-mr orca-ssh::/w/remote-x shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-notes folder:fw-remote orca::/w/feat-b folder:fw-review api::/w/api-y orca::/w/Zeta
|
||||
-- collapsed: pinned workspace-status:in-review lineage:orca::/w/feat-a --
|
||||
@@ -383,8 +383,8 @@ HEADER key=pinned label="Pinned" count=6 tone="text-foreground" icon=Pin hostCou
|
||||
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,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] ssh:gpu-vm:[orca-ssh::/w/remote-x,shared::/w/same,orca-ssh::/orca-ssh] runtime:env-1:[api::/api]} ids=[orca::/w/feat-a,orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/w/feat-a depth=0 groupDepth=0 children=1 lineageKey=lineage:orca::/w/feat-a lineageCollapsed=true hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status: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=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=workspace-status:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=workspace-status:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -398,7 +398,7 @@ HEADER key=workspace-status:completed label="Done" count=2 tone="text-[#c7a594]"
|
||||
ITEM rowKey=workspace-status:completed:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
ITEM rowKey=workspace-status:completed:|orca::/w/Zeta depth=0 groupDepth=0 lastChild=true children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
SECTION pinned: pinned:|orca::/w/feat-a pinned:|orca::/w/feat-b pinned:|orca::/w/feat-c pinned:|lab::/w/gitlab-mr pinned:ssh:gpu-vm|orca-ssh::/w/remote-x pinned:ssh:gpu-vm|shared::/w/same
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:|orca::/orca workspace-status:in-progress:|orca-ssh::/orca-ssh workspace-status:in-progress:runtime:env-1|api::/api workspace-status:in-progress:|orca::/w/feat-c workspace-status:in-progress:|lab::/lab workspace-status:in-progress:|ext::/ext
|
||||
SECTION workspace-status:in-progress: workspace-status:in-progress:|orca::/w/feat-a workspace-status:in-progress:|lab::/w/gitlab-mr workspace-status:in-progress:ssh:gpu-vm|orca-ssh::/w/remote-x workspace-status:in-progress:ssh:gpu-vm|shared::/w/same workspace-status:in-progress:local|shared::/w/same workspace-status:in-progress:|orca::/orca workspace-status:in-progress:|orca-ssh::/orca-ssh workspace-status:in-progress:runtime:env-1|api::/api workspace-status:in-progress:|orca::/w/feat-c workspace-status:in-progress:|lab::/lab workspace-status:in-progress:|ext::/ext
|
||||
SECTION workspace-status:in-review: workspace-status:in-review:|orca::/w/feat-b
|
||||
PREFERRED |orca::/w/feat-a -> workspace-status:in-progress:|orca::/w/feat-a
|
||||
PREFERRED |orca::/w/feat-b -> workspace-status:in-review:|orca::/w/feat-b
|
||||
@@ -408,8 +408,8 @@ PREFERRED ssh:gpu-vm|orca-ssh::/w/remote-x -> workspace-status:in-progress:ssh:g
|
||||
PREFERRED ssh:gpu-vm|shared::/w/same -> workspace-status:in-progress:ssh:gpu-vm|shared::/w/same
|
||||
renderedKeys: 21
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@local 4=shared::/w/same@ssh:gpu-vm 5=orca::/orca 6=orca-ssh::/orca-ssh 7=api::/api@runtime:env-1 8=orca::/w/feat-c 9=lab::/lab
|
||||
selectionOrder: |orca::/w/feat-a ssh:gpu-vm|orca-ssh::/w/remote-x ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-notes ssh:gpu-vm|folder:fw-remote runtime:env-1|api::/w/api-y |orca::/w/Zeta
|
||||
cmd1-9 mounted: 1=orca::/w/feat-a#lineage:orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@ssh:gpu-vm 4=shared::/w/same@local 5=orca::/orca 6=orca-ssh::/orca-ssh 7=api::/api@runtime:env-1 8=orca::/w/feat-c 9=lab::/lab
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-a 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=shared::/w/same@local 4=shared::/w/same@ssh:gpu-vm 5=orca::/orca 6=orca-ssh::/orca-ssh 7=api::/api@runtime:env-1 8=orca::/w/feat-c 9=lab::/lab
|
||||
cmd ids unmounted: orca::/w/feat-a orca-ssh::/w/remote-x shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-notes folder:fw-remote api::/w/api-y orca::/w/Zeta
|
||||
=== groupBy=pr-status pinnedInGroups=false ===
|
||||
@@ -477,8 +477,8 @@ ITEM rowKey=pr:in-review:runtime:env-1|api::/w/api-y depth=0 groupDepth=0 lastCh
|
||||
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,shared::/w/same,orca-ssh::/orca-ssh] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -498,8 +498,8 @@ 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 |orca::/w/feat-a runtime:env-1|api::/w/api-y ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext 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=shared::/w/same@local 7=shared::/w/same@ssh:gpu-vm 8=orca::/orca 9=orca-ssh::/orca-ssh
|
||||
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 ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext 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=shared::/w/same@ssh:gpu-vm 7=shared::/w/same@local 8=orca::/orca 9=orca-ssh::/orca-ssh
|
||||
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=shared::/w/same@local 7=shared::/w/same@ssh:gpu-vm 8=orca::/orca 9=orca-ssh::/orca-ssh
|
||||
cmd ids unmounted: orca::/w/feat-b orca::/w/feat-a api::/w/api-y orca-ssh::/w/remote-x lab::/w/gitlab-mr shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote orca::/w/Zeta
|
||||
-- collapsed: pinned pr:in-review pr:closed lineage:orca::/w/feat-a --
|
||||
@@ -512,8 +512,8 @@ HEADER key=pr:in-review label="In review" count=2 tone="text-workspace-status-re
|
||||
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,shared::/w/same,orca-ssh::/orca-ssh] local:[lab::/w/gitlab-mr,shared::/w/same,orca::/orca,orca::/w/feat-c,lab::/lab,ext::/ext] runtime:env-1:[api::/api]} ids=[orca-ssh::/w/remote-x,lab::/w/gitlab-mr,shared::/w/same,shared::/w/same,orca::/orca,orca-ssh::/orca-ssh,api::/api,orca::/w/feat-c,lab::/lab,ext::/ext]
|
||||
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
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:ssh:gpu-vm|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:local|shared::/w/same depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:repo:shared
|
||||
ITEM rowKey=pr:in-progress:|orca::/orca depth=0 groupDepth=0 children=0 hostLabel="Local Linux" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:|orca-ssh::/orca-ssh depth=0 groupDepth=0 children=0 hostLabel="GPU VM" placement=natural owning=project:p-orca
|
||||
ITEM rowKey=pr:in-progress:runtime:env-1|api::/api depth=0 groupDepth=0 children=0 hostLabel="env-1" placement=natural owning=project:repo:api
|
||||
@@ -535,7 +535,7 @@ 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: 23
|
||||
placeholders: -
|
||||
selectionOrder: |orca::/w/feat-b ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr local|shared::/w/same ssh:gpu-vm|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
selectionOrder: |orca::/w/feat-b ssh:gpu-vm|orca-ssh::/w/remote-x |lab::/w/gitlab-mr ssh:gpu-vm|shared::/w/same local|shared::/w/same |orca::/orca |orca-ssh::/orca-ssh runtime:env-1|api::/api |orca::/w/feat-c |lab::/lab |ext::/ext local|folder:fw-review local|folder:fw-notes ssh:gpu-vm|folder:fw-remote
|
||||
cmd1-9 mounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@ssh:gpu-vm 5=shared::/w/same@local 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd1-9 unmounted: 1=orca::/w/feat-b 2=orca-ssh::/w/remote-x@ssh:gpu-vm 3=lab::/w/gitlab-mr 4=shared::/w/same@local 5=shared::/w/same@ssh:gpu-vm 6=orca::/orca 7=orca-ssh::/orca-ssh 8=api::/api@runtime:env-1 9=orca::/w/feat-c
|
||||
cmd ids unmounted: orca::/w/feat-b orca-ssh::/w/remote-x lab::/w/gitlab-mr shared::/w/same orca::/orca orca-ssh::/orca-ssh api::/api orca::/w/feat-c lab::/lab ext::/ext folder:fw-review folder:fw-notes folder:fw-remote
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { Repo } from '../../../../shared/repo-types'
|
||||
import type { TerminalTab } from '../../../../shared/terminal-tab-types'
|
||||
import type { WorktreeLineage } from '../../../../shared/worktree/lineage-types'
|
||||
import type { Worktree } from '../../../../shared/worktree/types'
|
||||
import { getWorktreeHostIdentity } from '../../../../shared/worktree/host-qualified-identity'
|
||||
import type { ExecutionHostId, ExecutionHostScope } from '../../../../shared/execution-host'
|
||||
import { getIndexedAllWorktrees } from '@/store/worktree-repo-index'
|
||||
import { selectVisibleSidebarWorktrees } from '../../../../shared/sidebar-list/visible-worktrees'
|
||||
@@ -35,19 +36,25 @@ export type VisibleWorktreeOptions = {
|
||||
injectLineageAncestors?: boolean
|
||||
preserveLineageParentOrder?: boolean
|
||||
forcedVisibleWorktreeIds?: readonly string[]
|
||||
/** The sorted keys are host identities (the stamp sort's), not bare ids, so a same-id pair keeps two ranks. */
|
||||
sortedByHostIdentity?: boolean
|
||||
/** Exempt from the sleeping sweep only; unlike forcedVisibleWorktreeIds, every other filter still applies. */
|
||||
sleepingSweepExemptWorktreeIds?: ReadonlySet<string>
|
||||
}
|
||||
|
||||
export function computeVisibleWorktrees(
|
||||
worktreesByRepo: Record<string, Worktree[]>,
|
||||
sortedIds: string[],
|
||||
sortedKeys: readonly string[],
|
||||
opts: VisibleWorktreeOptions
|
||||
): Worktree[] {
|
||||
const rankByKey = getSortedWorktreeRankIndex(sortedKeys)
|
||||
const keyOf = opts.sortedByHostIdentity
|
||||
? getWorktreeHostIdentity
|
||||
: (worktree: Worktree) => worktree.id
|
||||
return selectVisibleSidebarWorktrees({
|
||||
rows: getIndexedAllWorktrees(worktreesByRepo),
|
||||
ancestorById: getLineageAncestorIndex(worktreesByRepo),
|
||||
rankById: getSortedWorktreeRankIndex(sortedIds),
|
||||
ancestorByIdentity: getLineageAncestorIndex(worktreesByRepo),
|
||||
rankOf: (worktree) => rankByKey.get(keyOf(worktree)),
|
||||
filters: sidebarWorkspaceRowFilters(opts),
|
||||
facts: buildDesktopWorkspaceRowFactReader(opts),
|
||||
worktreeLineageById: opts.worktreeLineageById,
|
||||
@@ -60,8 +67,8 @@ export function computeVisibleWorktrees(
|
||||
|
||||
export function computeVisibleWorktreeIds(
|
||||
worktreesByRepo: Record<string, Worktree[]>,
|
||||
sortedIds: string[],
|
||||
sortedKeys: readonly string[],
|
||||
opts: VisibleWorktreeOptions
|
||||
): string[] {
|
||||
return computeVisibleWorktrees(worktreesByRepo, sortedIds, opts).map((worktree) => worktree.id)
|
||||
return computeVisibleWorktrees(worktreesByRepo, sortedKeys, opts).map((worktree) => worktree.id)
|
||||
}
|
||||
|
||||
@@ -12,18 +12,17 @@ vi.mock('../../../../shared/resolved-worktree-lineage', async (importOriginal) =
|
||||
const actual = await importOriginal<typeof ResolvedWorktreeLineage>()
|
||||
return {
|
||||
...actual,
|
||||
getCyclicWorktreeLineageChildIds: (
|
||||
...args: Parameters<typeof actual.getCyclicWorktreeLineageChildIds>
|
||||
) => {
|
||||
getCyclicLineageChildKeys: (...args: Parameters<typeof actual.getCyclicLineageChildKeys>) => {
|
||||
counters.cycleDetections += 1
|
||||
return actual.getCyclicWorktreeLineageChildIds(...args)
|
||||
return actual.getCyclicLineageChildKeys(...args)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
import { computeVisibleWorktreeIds } from './compute-visible-worktrees'
|
||||
import type { computeVisibleWorktrees } from './compute-visible-worktrees'
|
||||
import { getCyclicProjectedWorktreeLineageIds } from '../../../../shared/sidebar-list/worktree-lineage-projection'
|
||||
import { getSidebarLineageParentsByIdentity } from '../../../../shared/sidebar-list/worktree-lineage-projection'
|
||||
import { getWorktreeHostIdentity } from '../../../../shared/worktree/host-qualified-identity'
|
||||
import { getLineageAncestorIndex, getSortedWorktreeRankIndex } from './visible-worktree-indexes'
|
||||
|
||||
type IdentifiedWorktree = Worktree & { instanceId: string }
|
||||
@@ -139,8 +138,8 @@ describe('visible worktree indexes', () => {
|
||||
[child.id, 1]
|
||||
])
|
||||
|
||||
expect(getCyclicProjectedWorktreeLineageIds(lineageById, secondAncestors)).toBe(
|
||||
getCyclicProjectedWorktreeLineageIds(lineageById, firstAncestors)
|
||||
expect(getSidebarLineageParentsByIdentity(lineageById, secondAncestors)).toBe(
|
||||
getSidebarLineageParentsByIdentity(lineageById, firstAncestors)
|
||||
)
|
||||
})
|
||||
|
||||
@@ -163,10 +162,12 @@ describe('visible worktree indexes', () => {
|
||||
// phantom ancestor row.
|
||||
expect(computeVisibleWorktreeIds(worktreesByRepo, sortedIds, opts)).toEqual([child.id])
|
||||
expect(computeVisibleWorktreeIds(worktreesByRepo, sortedIds, opts)).toEqual([child.id])
|
||||
expect(getLineageAncestorIndex(worktreesByRepo).has(parent.id)).toBe(false)
|
||||
expect(getLineageAncestorIndex(worktreesByRepo).has(getWorktreeHostIdentity(parent))).toBe(
|
||||
false
|
||||
)
|
||||
})
|
||||
|
||||
it('keeps the last row for a two-host id collision, as the per-call map did', () => {
|
||||
it('keeps both rows of a two-host id collision', () => {
|
||||
const local: Worktree = {
|
||||
...makeWorktree('shared'),
|
||||
hostId: LOCAL_EXECUTION_HOST_ID,
|
||||
@@ -175,6 +176,8 @@ describe('visible worktree indexes', () => {
|
||||
const remote: Worktree = { ...makeWorktree('shared'), hostId: 'ssh:box', path: '/tmp/remote' }
|
||||
const worktreesByRepo = { repo1: [local, remote] }
|
||||
|
||||
expect(getLineageAncestorIndex(worktreesByRepo).get('shared')?.path).toBe('/tmp/remote')
|
||||
const index = getLineageAncestorIndex(worktreesByRepo)
|
||||
expect(index.get(getWorktreeHostIdentity(local))?.path).toBe('/tmp/local')
|
||||
expect(index.get(getWorktreeHostIdentity(remote))?.path).toBe('/tmp/remote')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
import { getIndexedAllWorktrees } from '@/store/worktree-repo-index'
|
||||
import type { Worktree } from '../../../../shared/worktree/types'
|
||||
import { getWorktreeHostIdentity } from '../../../../shared/worktree/host-qualified-identity'
|
||||
|
||||
type WorktreesByRepo = Record<string, Worktree[]>
|
||||
|
||||
/**
|
||||
* Non-archived rows by id — the map `computeVisibleWorktrees` hands to the
|
||||
* lineage projection.
|
||||
* Non-archived rows by host identity — the map `computeVisibleWorktrees` hands to
|
||||
* the lineage projection.
|
||||
*
|
||||
* Why cached: `getCyclicProjectedWorktreeLineageIds` keys its memo on this map's
|
||||
* Why cached: `getSidebarLineageParentsByIdentity` keys its memo on this map's
|
||||
* identity, so a per-call Map is a guaranteed miss that re-walks every workspace
|
||||
* and re-runs cycle detection on each PTY, tab and agent-status write.
|
||||
*
|
||||
* Why not the store's `getIndexedWorktreeMap`: this index excludes archived rows
|
||||
* (an archived parent resolving as a valid ancestor would inject a phantom row),
|
||||
* and it keeps the last row for a two-host id collision rather than the first.
|
||||
* and keeps both rows of a two-host id collision.
|
||||
*/
|
||||
const lineageAncestorIndexCache = new WeakMap<WorktreesByRepo, Map<string, Worktree>>()
|
||||
|
||||
@@ -25,7 +26,7 @@ export function getLineageAncestorIndex(worktreesByRepo: WorktreesByRepo): Map<s
|
||||
const index = new Map<string, Worktree>()
|
||||
for (const worktree of getIndexedAllWorktrees(worktreesByRepo)) {
|
||||
if (!worktree.isArchived) {
|
||||
index.set(worktree.id, worktree)
|
||||
index.set(getWorktreeHostIdentity(worktree), worktree)
|
||||
}
|
||||
}
|
||||
lineageAncestorIndexCache.set(worktreesByRepo, index)
|
||||
@@ -33,7 +34,7 @@ export function getLineageAncestorIndex(worktreesByRepo: WorktreesByRepo): Map<s
|
||||
}
|
||||
|
||||
/**
|
||||
* Rank of each id in the frozen sidebar sort order. Keyed on the array the sort
|
||||
* Rank of each key in the frozen sidebar sort order. Keyed on the array the sort
|
||||
* hook already holds identity-stable across unrelated store writes.
|
||||
*/
|
||||
const sortedWorktreeRankIndexCache = new WeakMap<readonly string[], Map<string, number>>()
|
||||
|
||||
@@ -40,7 +40,7 @@ import { selectPendingWorktreeCreationKeys } from './pending-worktree-creation-k
|
||||
import { collectRenderedSidebarRowKeys } from './rendered-row-keys'
|
||||
import { useEffectiveCollapsedGroups } from './use-collapsed-groups'
|
||||
import { useSidebarExternalWorktreeCards } from './use-external-worktree-cards'
|
||||
import { useOrderHeldWhileEngaged } from './use-order-hold'
|
||||
import { useOrderHeldWhileEngaged, useProjectRecencyHeldWhileEngaged } from './use-order-hold'
|
||||
import { useReusedArrayIdentity } from './use-reused-array-identity'
|
||||
|
||||
const NO_FEED: SidebarFeedDomains = {
|
||||
@@ -150,9 +150,10 @@ export function useMainSidebarListModel(args: SidebarListModelArgs): SidebarList
|
||||
workspaceHostOrder
|
||||
]
|
||||
)
|
||||
const index = useMemo(() => indexSidebarFeed(domains, repos), [domains, repos])
|
||||
const ranked = useMemo(() => rankSidebarFeedWorktrees(index, sortBy), [index, sortBy])
|
||||
const liveIndex = useMemo(() => indexSidebarFeed(domains, repos), [domains, repos])
|
||||
const ranked = useMemo(() => rankSidebarFeedWorktrees(liveIndex, sortBy), [liveIndex, sortBy])
|
||||
const rankedIds = useOrderHeldWhileEngaged(useReusedArrayIdentity(ranked), sortBy)
|
||||
const index = useProjectRecencyHeldWhileEngaged(liveIndex, args.projectOrderBy)
|
||||
|
||||
const visibleReposForRows = useMemo(
|
||||
() =>
|
||||
|
||||
@@ -2,7 +2,11 @@
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest'
|
||||
import { act, cleanup, renderHook } from '@testing-library/react'
|
||||
import type { SortBy } from '../../../../../../shared/sidebar-list/smart-sort'
|
||||
import { useOrderHeldWhileEngaged } from './use-order-hold'
|
||||
import type { SidebarFeedIndex } from '../../../../../../shared/sidebar-list/sidebar-feed-index'
|
||||
import type { ProjectOrderBy } from '../../../../../../shared/ui-chrome-types'
|
||||
import type { Worktree } from '../../../../../../shared/worktree/types'
|
||||
import { makeWorktree } from '../../../worktree-jump-palette-test-fixtures'
|
||||
import { useOrderHeldWhileEngaged, useProjectRecencyHeldWhileEngaged } from './use-order-hold'
|
||||
|
||||
vi.mock('../../../../../../shared/sidebar-inputs-switch', () => ({
|
||||
ORCA_SIDEBAR_INPUTS_IS_MAIN: true
|
||||
@@ -93,3 +97,40 @@ describe('useOrderHeldWhileEngaged', () => {
|
||||
expect(result.current).toEqual(['a', 'b'])
|
||||
})
|
||||
})
|
||||
|
||||
describe('useProjectRecencyHeldWhileEngaged', () => {
|
||||
afterEach(() => {
|
||||
cleanup()
|
||||
document.body.replaceChildren()
|
||||
})
|
||||
|
||||
const indexAt = (recentAt: number): SidebarFeedIndex => ({
|
||||
workspaces: [],
|
||||
worktrees: [makeWorktree('b', 'b', { lastActivityAt: recentAt })],
|
||||
folderWorkspaces: [],
|
||||
repoMap: new Map()
|
||||
})
|
||||
const recentOf = (index: SidebarFeedIndex): number[] =>
|
||||
index.worktrees.map((worktree: Worktree) => worktree.lastActivityAt)
|
||||
|
||||
it('keeps Recent project stamps under the pointer, and lets go on leave or in Manual', () => {
|
||||
const { row } = mountList()
|
||||
const outside = document.createElement('div')
|
||||
document.body.append(outside)
|
||||
const { result, rerender } = renderHook(
|
||||
({ index, by }: { index: SidebarFeedIndex; by: ProjectOrderBy }) =>
|
||||
useProjectRecencyHeldWhileEngaged(index, by),
|
||||
{ initialProps: { index: indexAt(50), by: 'recent' } }
|
||||
)
|
||||
fire(row, 'pointerover')
|
||||
rerender({ index: indexAt(200), by: 'recent' })
|
||||
expect(recentOf(result.current)).toEqual([50])
|
||||
rerender({ index: indexAt(300), by: 'manual' })
|
||||
expect(recentOf(result.current)).toEqual([300])
|
||||
rerender({ index: indexAt(400), by: 'recent' })
|
||||
rerender({ index: indexAt(500), by: 'recent' })
|
||||
expect(recentOf(result.current)).toEqual([400])
|
||||
fire(outside, 'pointerover')
|
||||
expect(recentOf(result.current)).toEqual([500])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import { useState, useSyncExternalStore } from 'react'
|
||||
import { useMemo, useState, useSyncExternalStore } from 'react'
|
||||
import { ORCA_SIDEBAR_INPUTS_IS_MAIN } from '../../../../../../shared/sidebar-inputs-switch'
|
||||
import {
|
||||
withHeldProjectRecency,
|
||||
type SidebarFeedIndex
|
||||
} from '../../../../../../shared/sidebar-list/sidebar-feed-index'
|
||||
import type { SortBy } from '../../../../../../shared/sidebar-list/smart-sort'
|
||||
import type { ProjectOrderBy } from '../../../../../../shared/ui-chrome-types'
|
||||
import { mergeHeldOrder } from './held-order'
|
||||
|
||||
const LIST_SELECTOR = '[data-worktree-sidebar-container]'
|
||||
@@ -68,17 +73,21 @@ function subscribe(listener: () => void): () => void {
|
||||
const noSubscription = (): (() => void) => () => {}
|
||||
const notEngaged = (): boolean => false
|
||||
|
||||
function useListEngaged(): boolean {
|
||||
// Switch point: the stamp-sorted list moves on events, so it holds; today's list settles itself.
|
||||
return useSyncExternalStore(
|
||||
ORCA_SIDEBAR_INPUTS_IS_MAIN ? subscribe : noSubscription,
|
||||
ORCA_SIDEBAR_INPUTS_IS_MAIN ? isEngaged : notEngaged,
|
||||
notEngaged
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Desktop only, display only: in Recent and Smart, rows stay put under the pointer and during a
|
||||
* drag, so a click never lands on a row that just moved; the new order applies on leave or drag end.
|
||||
*/
|
||||
export function useOrderHeldWhileEngaged(ids: string[], sortBy: SortBy): string[] {
|
||||
// Switch point: the stamp-sorted list moves on events, so it holds; today's list settles itself.
|
||||
const engaged = useSyncExternalStore(
|
||||
ORCA_SIDEBAR_INPUTS_IS_MAIN ? subscribe : noSubscription,
|
||||
ORCA_SIDEBAR_INPUTS_IS_MAIN ? isEngaged : notEngaged,
|
||||
notEngaged
|
||||
)
|
||||
const engaged = useListEngaged()
|
||||
const [shown, setShown] = useState({ ids, sortBy })
|
||||
// Only Recent and Smart move on their own; a mode switch applies at once, like adds and removals.
|
||||
const holds = engaged && (sortBy === 'recent' || sortBy === 'smart')
|
||||
@@ -92,3 +101,20 @@ export function useOrderHeldWhileEngaged(ids: string[], sortBy: SortBy): string[
|
||||
}
|
||||
return ORCA_SIDEBAR_INPUTS_IS_MAIN ? next.ids : ids
|
||||
}
|
||||
|
||||
/** As above for project sections in Recent order: they keep the stamps they had at engagement. */
|
||||
export function useProjectRecencyHeldWhileEngaged(
|
||||
index: SidebarFeedIndex,
|
||||
projectOrderBy: ProjectOrderBy
|
||||
): SidebarFeedIndex {
|
||||
const holds = useListEngaged() && projectOrderBy === 'recent'
|
||||
const [heldFrom, setHeldFrom] = useState<SidebarFeedIndex | null>(null)
|
||||
const nextHeldFrom = holds ? (heldFrom ?? index) : null
|
||||
if (nextHeldFrom !== heldFrom) {
|
||||
setHeldFrom(nextHeldFrom)
|
||||
}
|
||||
return useMemo(
|
||||
() => (nextHeldFrom ? withHeldProjectRecency(index, nextHeldFrom) : index),
|
||||
[index, nextHeldFrom]
|
||||
)
|
||||
}
|
||||
|
||||
+6
-2
@@ -4,7 +4,10 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { act, cleanup, renderHook } from '@testing-library/react'
|
||||
import { useAppStore } from '@/store'
|
||||
import { SLEEPING_SWEEP_SETTLE_MS } from '../../../../../../shared/sidebar-list/sleeping-sweep-retention'
|
||||
import { getWorktreeIdFromHostIdentity } from '../../../../../../shared/worktree/host-qualified-identity'
|
||||
import {
|
||||
getWorktreeHostIdentity,
|
||||
getWorktreeIdFromHostIdentity
|
||||
} from '../../../../../../shared/worktree/host-qualified-identity'
|
||||
import { SidebarClock } from '../../../../../../main/runtime/sidebar-inputs/sidebar-clock'
|
||||
import { SidebarRetentionOwner } from '../../../../../../main/runtime/sidebar-inputs/sidebar-retention-owner'
|
||||
import { makeRepo, makeWorktree } from '../../../worktree-jump-palette-test-fixtures'
|
||||
@@ -18,7 +21,8 @@ const repo = makeRepo()
|
||||
function mainOwner(): SidebarRetentionOwner {
|
||||
return new SidebarRetentionOwner(new SidebarClock(), {
|
||||
showSleepingWorkspaces: () => useAppStore.getState().showSleepingWorkspaces,
|
||||
listRows: async () => useAppStore.getState().worktreesByRepo[repo.id] ?? [],
|
||||
listRowKeys: async () =>
|
||||
(useAppStore.getState().worktreesByRepo[repo.id] ?? []).map(getWorktreeHostIdentity),
|
||||
retentionCandidates: () => {
|
||||
const state = useAppStore.getState()
|
||||
const live = (id: string): boolean =>
|
||||
|
||||
+10
-7
@@ -5,6 +5,7 @@ import { act, cleanup, renderHook } from '@testing-library/react'
|
||||
import { useAppStore } from '@/store'
|
||||
import type { Worktree } from '../../../../../../shared/worktree/types'
|
||||
import { makeRepo, makeWorktree } from '../../../worktree-jump-palette-test-fixtures'
|
||||
import { getWorktreeHostIdentity } from '../../../../../../shared/worktree/host-qualified-identity'
|
||||
import { useSidebarWorktreeSortOrder } from './use-sort-order'
|
||||
|
||||
vi.mock('../../../../../../shared/sidebar-inputs-switch', () => ({
|
||||
@@ -20,6 +21,8 @@ const initialState = useAppStore.getInitialState()
|
||||
const repo = makeRepo()
|
||||
const repoMap = new Map([[repo.id, repo]])
|
||||
|
||||
const identities = (...worktrees: Worktree[]): string[] => worktrees.map(getWorktreeHostIdentity)
|
||||
|
||||
function setRows(worktrees: Worktree[]): void {
|
||||
act(() => {
|
||||
useAppStore.setState({ worktreesByRepo: { [repo.id]: worktrees } })
|
||||
@@ -38,11 +41,11 @@ describe('useSidebarWorktreeSortOrder with the switch on', () => {
|
||||
const b = makeWorktree(`${repo.id}::/b`, 'b', { repoId: repo.id, lastActivityAt: 1 })
|
||||
useAppStore.setState({ sortBy: 'smart', worktreesByRepo: { [repo.id]: [a, b] } })
|
||||
const { result } = renderHook(() => useSidebarWorktreeSortOrder({ repoMap, sortBy: 'smart' }))
|
||||
expect(result.current).toEqual([a.id, b.id])
|
||||
expect(result.current).toEqual(identities(a, b))
|
||||
|
||||
const askingB: Worktree = { ...b, smartTier: 'needs-you', smartAt: 3 }
|
||||
setRows([a, askingB])
|
||||
expect(result.current).toEqual([b.id, a.id])
|
||||
expect(result.current).toEqual(identities(b, a))
|
||||
// The store keeps no settled epoch: a bump with a new row would settle it at once otherwise.
|
||||
const c = makeWorktree(`${repo.id}::/c`, 'c', { repoId: repo.id, lastActivityAt: 9 })
|
||||
act(() => {
|
||||
@@ -52,7 +55,7 @@ describe('useSidebarWorktreeSortOrder with the switch on', () => {
|
||||
}))
|
||||
})
|
||||
expect(useAppStore.getState().settledSortEpoch).toBe(initialState.settledSortEpoch)
|
||||
expect(result.current).toEqual([b.id, c.id, a.id])
|
||||
expect(result.current).toEqual(identities(b, c, a))
|
||||
expect(persistOrder).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
@@ -76,7 +79,7 @@ describe('useSidebarWorktreeSortOrder with the switch on', () => {
|
||||
{ initialProps: { map: maps.before } }
|
||||
)
|
||||
const first = result.current
|
||||
expect(first).toEqual([a.id, z.id])
|
||||
expect(first).toEqual(identities(a, z))
|
||||
act(() => {
|
||||
useAppStore.setState({
|
||||
worktreesByRepo: { [repo.id]: [{ ...a, isUnread: true }], [other.id]: [z] }
|
||||
@@ -84,7 +87,7 @@ describe('useSidebarWorktreeSortOrder with the switch on', () => {
|
||||
})
|
||||
expect(result.current).toBe(first)
|
||||
rerender({ map: maps.after })
|
||||
expect(result.current).toEqual([z.id, a.id])
|
||||
expect(result.current).toEqual(identities(z, a))
|
||||
})
|
||||
|
||||
it('a Done row drops to the rest once its workspace is read', () => {
|
||||
@@ -103,8 +106,8 @@ describe('useSidebarWorktreeSortOrder with the switch on', () => {
|
||||
})
|
||||
useAppStore.setState({ worktreesByRepo: { [repo.id]: [done, working] } })
|
||||
const { result } = renderHook(() => useSidebarWorktreeSortOrder({ repoMap, sortBy: 'smart' }))
|
||||
expect(result.current).toEqual([done.id, working.id])
|
||||
expect(result.current).toEqual(identities(done, working))
|
||||
setRows([{ ...done, isUnread: false }, working])
|
||||
expect(result.current).toEqual([working.id, done.id])
|
||||
expect(result.current).toEqual(identities(working, done))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -15,6 +15,7 @@ import {
|
||||
import { useReusedArrayIdentity } from './use-reused-array-identity'
|
||||
import { useSidebarListSession } from '@/lib/sidebar-list-session'
|
||||
import { ORCA_SIDEBAR_INPUTS_IS_MAIN } from '../../../../../../shared/sidebar-inputs-switch'
|
||||
import { getWorktreeHostIdentity } from '../../../../../../shared/worktree/host-qualified-identity'
|
||||
|
||||
// ── Stable sort order ──────────────────────────────────────────
|
||||
// Why sortEpoch (not selection): selection side-effects (clearing isUnread, PR-cache refresh) must not reorder the sidebar under the user.
|
||||
@@ -84,7 +85,8 @@ function useSettledSidebarWorktreeSortOrder(args: {
|
||||
|
||||
/**
|
||||
* Switch on: the order is a pure read of the owning hosts' stamps on the rows, so a re-list is
|
||||
* what re-sorts. No settle window, latch, saved Smart order or create grace.
|
||||
* what re-sorts. No settle window, latch, saved Smart order or create grace. Host identities, so a
|
||||
* same-id pair on two hosts keeps its own ranks.
|
||||
*/
|
||||
function useStampSidebarWorktreeSortOrder(args: {
|
||||
repoMap: Map<string, Repo>
|
||||
@@ -104,7 +106,7 @@ function useStampSidebarWorktreeSortOrder(args: {
|
||||
// Stamps read no clock and no live sources.
|
||||
now: 0,
|
||||
sources: NO_LIVE_SMART_SORT_SOURCES
|
||||
}).sorted.map((worktree) => worktree.id),
|
||||
}).sorted.map(getWorktreeHostIdentity),
|
||||
[worktreesByRepo, repoMap, sortBy]
|
||||
)
|
||||
const sortedIds = useReusedArrayIdentity(ranked)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { useMemo } from 'react'
|
||||
import { ORCA_SIDEBAR_INPUTS_IS_MAIN } from '../../../../../../shared/sidebar-inputs-switch'
|
||||
import { useAppStore } from '@/store'
|
||||
import { getAgentStatusEpochNow } from '@/lib/agent-status-epoch-clock'
|
||||
import { getWorktreeIdsWithLiveAgent } from '@/lib/worktree-activity-state'
|
||||
@@ -122,6 +123,8 @@ export function useVisibleSidebarWorktrees(args: {
|
||||
defaultHostId,
|
||||
worktreeLineageById,
|
||||
preserveLineageParentOrder: sortBy === 'manual',
|
||||
// Switch point: the stamp sort ranks by host identity (use-sort-order.ts).
|
||||
sortedByHostIdentity: ORCA_SIDEBAR_INPUTS_IS_MAIN,
|
||||
forcedVisibleWorktreeIds: args.agentSendTargetWorktreeId
|
||||
? [args.agentSendTargetWorktreeId]
|
||||
: undefined
|
||||
|
||||
@@ -36,7 +36,8 @@ export function isValidResolvedWorktreeLineageEdge(
|
||||
)
|
||||
}
|
||||
|
||||
function getCyclicChildKeys<Key>(parentByChild: ReadonlyMap<Key, Key>): Set<Key> {
|
||||
/** The children on a cycle of a child-to-parent map, whatever the keys are. */
|
||||
export function getCyclicLineageChildKeys<Key>(parentByChild: ReadonlyMap<Key, Key>): Set<Key> {
|
||||
const processed = new Set<Key>()
|
||||
const cyclic = new Set<Key>()
|
||||
|
||||
@@ -70,7 +71,7 @@ function getCyclicChildKeys<Key>(parentByChild: ReadonlyMap<Key, Key>): Set<Key>
|
||||
export function getCyclicWorktreeLineageChildIds(
|
||||
lineageByChildId: ReadonlyMap<string, WorktreeLineage>
|
||||
): Set<string> {
|
||||
return getCyclicChildKeys(
|
||||
return getCyclicLineageChildKeys(
|
||||
new Map([...lineageByChildId].map(([childId, lineage]) => [childId, lineage.parentWorktreeId]))
|
||||
)
|
||||
}
|
||||
@@ -133,7 +134,7 @@ export function projectResolvedWorktreeLineage<T extends Worktree>(
|
||||
parentIndexByChildIndex.set(childIndex, parentIndices[0])
|
||||
})
|
||||
|
||||
for (const index of getCyclicChildKeys(parentIndexByChildIndex)) {
|
||||
for (const index of getCyclicLineageChildKeys(parentIndexByChildIndex)) {
|
||||
validLineageByChildIndex.delete(index)
|
||||
parentIndexByChildIndex.delete(index)
|
||||
}
|
||||
|
||||
@@ -157,13 +157,15 @@ function localizePendingRowsForHost(
|
||||
return localized
|
||||
}
|
||||
|
||||
function getPendingRowsKey(rows: readonly Extract<Row, { type: 'header' }>[]): string {
|
||||
return rows
|
||||
.map(
|
||||
(pendingRow) =>
|
||||
`${pendingRow.key}:${pendingRow.count}:${pendingRow.worktreeIds?.join(',') ?? ''}`
|
||||
)
|
||||
.join('\0')
|
||||
function getPendingRowKey(row: Extract<Row, { type: 'header' }>): string {
|
||||
return `${row.key}:${row.count}:${row.worktreeIds?.join(',') ?? ''}`
|
||||
}
|
||||
|
||||
/** A project group's header (it names no host itself): its nesting depth, else null. */
|
||||
function getProjectGroupHeaderDepth(row: Row): number | null {
|
||||
return row.type === 'header' && row.projectGroup && !row.repo
|
||||
? (row.projectGroupDepth ?? 0)
|
||||
: null
|
||||
}
|
||||
|
||||
export function addHostSectionRows(args: {
|
||||
@@ -200,19 +202,22 @@ export function addHostSectionRows(args: {
|
||||
const hostOptionsById = new Map(args.hostOptions.map((host) => [host.id, host]))
|
||||
const rowsByHostId = new Map<ExecutionHostId, Row[]>()
|
||||
const globalRows: Row[] = []
|
||||
// The headers above the next host-owned row: one lane header, or a project group's path.
|
||||
let pendingRows: Extract<Row, { type: 'header' }>[] = []
|
||||
let pendingRowsWereUsed = false
|
||||
const pendingRowsKeyByHostId = new Map<ExecutionHostId, string>()
|
||||
const flushUnusedPendingRows = (): void => {
|
||||
if (pendingRows.length === 0 || pendingRowsWereUsed) {
|
||||
const usedPendingRows = new Set<Row>()
|
||||
// Each host's last emitted header path, so a sibling group repeats only what differs.
|
||||
const emittedPathByHostId = new Map<ExecutionHostId, string[]>()
|
||||
const flushUnusedPendingRows = (rows: readonly Extract<Row, { type: 'header' }>[]): void => {
|
||||
const unused = rows.filter((row) => !usedPendingRows.has(row))
|
||||
if (unused.length === 0) {
|
||||
return
|
||||
}
|
||||
const hostScopedRow = pendingRows.some((row) => row.hostWorktreeCounts)
|
||||
const hostScopedRow = unused.some((row) => row.hostWorktreeCounts)
|
||||
if (!hostScopedRow) {
|
||||
globalRows.push(...pendingRows)
|
||||
globalRows.push(...unused)
|
||||
return
|
||||
}
|
||||
for (const row of pendingRows) {
|
||||
for (const row of unused) {
|
||||
for (const [hostId, count] of row.hostWorktreeCounts ?? []) {
|
||||
if (count <= 0) {
|
||||
continue
|
||||
@@ -234,17 +239,19 @@ export function addHostSectionRows(args: {
|
||||
const rowHostId = getRowHostId(row, args.defaultHostId)
|
||||
if (rowHostId) {
|
||||
const hostRows = rowsByHostId.get(rowHostId) ?? []
|
||||
if (pendingRows.length > 0) {
|
||||
const localizedPendingRows = localizePendingRowsForHost(pendingRows, rowHostId)
|
||||
const pendingRowsKey = getPendingRowsKey(localizedPendingRows)
|
||||
if (
|
||||
localizedPendingRows.length > 0 &&
|
||||
pendingRowsKeyByHostId.get(rowHostId) !== pendingRowsKey
|
||||
) {
|
||||
hostRows.push(...localizedPendingRows)
|
||||
pendingRowsKeyByHostId.set(rowHostId, pendingRowsKey)
|
||||
}
|
||||
pendingRowsWereUsed = pendingRowsWereUsed || localizedPendingRows.length > 0
|
||||
const localizedPendingRows = localizePendingRowsForHost(pendingRows, rowHostId)
|
||||
const path = localizedPendingRows.map(getPendingRowKey)
|
||||
const emitted = emittedPathByHostId.get(rowHostId) ?? []
|
||||
let shared = 0
|
||||
while (shared < path.length && path[shared] === emitted[shared]) {
|
||||
shared += 1
|
||||
}
|
||||
if (shared < path.length || path.length !== emitted.length) {
|
||||
hostRows.push(...localizedPendingRows.slice(shared))
|
||||
emittedPathByHostId.set(rowHostId, path)
|
||||
}
|
||||
if (localizedPendingRows.length > 0) {
|
||||
pendingRows.forEach((pendingRow) => usedPendingRows.add(pendingRow))
|
||||
}
|
||||
hostRows.push(row)
|
||||
rowsByHostId.set(rowHostId, hostRows)
|
||||
@@ -253,15 +260,20 @@ export function addHostSectionRows(args: {
|
||||
// Why: status/"All" headers describe the rows that follow. Buffer them
|
||||
// for every host-owned run so host remains above the existing grouping.
|
||||
if (row.type === 'header') {
|
||||
flushUnusedPendingRows()
|
||||
pendingRows = [row]
|
||||
pendingRowsWereUsed = false
|
||||
const depth = getProjectGroupHeaderDepth(row)
|
||||
// A nested group keeps its ancestors pending, so each host section gets the whole path.
|
||||
const kept =
|
||||
depth !== null && depth > 0
|
||||
? pendingRows.filter((pending) => (getProjectGroupHeaderDepth(pending) ?? depth) < depth)
|
||||
: []
|
||||
flushUnusedPendingRows(pendingRows.filter((pending) => !kept.includes(pending)))
|
||||
pendingRows = [...kept, row]
|
||||
} else {
|
||||
globalRows.push(row)
|
||||
}
|
||||
}
|
||||
|
||||
flushUnusedPendingRows()
|
||||
flushUnusedPendingRows(pendingRows)
|
||||
|
||||
const hostOrder: ExecutionHostId[] = []
|
||||
for (const host of args.hostOptions) {
|
||||
|
||||
@@ -2,10 +2,7 @@ import type { WorktreeLineage } from '../worktree/lineage-types'
|
||||
import type { Worktree } from '../worktree/types'
|
||||
import { getWorktreeHostIdentity } from '../worktree/host-qualified-identity'
|
||||
import { getLineagePlacementRows } from '../worktree-occurrence-plan'
|
||||
import {
|
||||
getCyclicProjectedWorktreeLineageIds,
|
||||
getSidebarLineageParent
|
||||
} from './worktree-lineage-projection'
|
||||
import { getSidebarLineageParentsByIdentity } from './worktree-lineage-projection'
|
||||
|
||||
export function getSidebarLineageRowsByIdentity(
|
||||
worktrees: readonly Worktree[],
|
||||
@@ -27,14 +24,14 @@ export function getSidebarLineageChildren(
|
||||
): Map<string, Worktree[]> {
|
||||
const rowsByIdentity = getSidebarLineageRowsByIdentity(worktrees, worktreeMap)
|
||||
const allowedRepoIds = filterRepoIds.length > 0 ? new Set(filterRepoIds) : null
|
||||
const cyclicIds = getCyclicProjectedWorktreeLineageIds(lineageById, worktreeMap)
|
||||
const parentByIdentity = getSidebarLineageParentsByIdentity(lineageById, rowsByIdentity)
|
||||
const childrenByParentIdentity = new Map<string, Worktree[]>()
|
||||
for (const child of rowsByIdentity.values()) {
|
||||
if (cyclicIds.has(child.id) || (allowedRepoIds && !allowedRepoIds.has(child.repoId))) {
|
||||
continue
|
||||
}
|
||||
const parent = getSidebarLineageParent(child, lineageById, rowsByIdentity)
|
||||
if (!parent || (allowedRepoIds && !allowedRepoIds.has(parent.repoId))) {
|
||||
for (const [childIdentity, child] of rowsByIdentity) {
|
||||
const parent = parentByIdentity.get(childIdentity)
|
||||
if (
|
||||
!parent ||
|
||||
(allowedRepoIds && (!allowedRepoIds.has(child.repoId) || !allowedRepoIds.has(parent.repoId)))
|
||||
) {
|
||||
continue
|
||||
}
|
||||
const identity = getWorktreeHostIdentity(parent)
|
||||
|
||||
@@ -6,6 +6,10 @@ import {
|
||||
import { buildExecutionHostRegistry } from '../execution-host-registry'
|
||||
import type { FolderWorkspace } from '../folder-workspace-types'
|
||||
import type { Repo } from '../repo-types'
|
||||
import {
|
||||
getWorktreeHostIdentity,
|
||||
type HostScopedWorktreeKey
|
||||
} from '../worktree/host-qualified-identity'
|
||||
import type { Worktree } from '../worktree/types'
|
||||
import type { HostSectionOption } from './host-section-rows'
|
||||
import type { SidebarFeedDomains } from './sidebar-feed-domains'
|
||||
@@ -85,11 +89,40 @@ export function indexSidebarFeed(
|
||||
}
|
||||
}
|
||||
|
||||
/** The ids in the owning hosts' stamp order for the sort mode; reads no clock. */
|
||||
export function rankSidebarFeedWorktrees(index: SidebarFeedIndex, sortBy: SortBy): string[] {
|
||||
/** Host identities in the owning hosts' stamp order for the sort mode; reads no clock. */
|
||||
export function rankSidebarFeedWorktrees(
|
||||
index: SidebarFeedIndex,
|
||||
sortBy: SortBy
|
||||
): HostScopedWorktreeKey[] {
|
||||
return sortWorktreesByStamps(
|
||||
index.worktrees.filter((worktree) => !worktree.isArchived),
|
||||
sortBy,
|
||||
index.repoMap
|
||||
).map((worktree) => worktree.id)
|
||||
).map(getWorktreeHostIdentity)
|
||||
}
|
||||
|
||||
/**
|
||||
* Presentation only: `live` with each workspace that `heldFrom` also lists keeping the Recent
|
||||
* stamp it had there, so project sections ordered by Recent hold still. New rows keep theirs.
|
||||
*/
|
||||
export function withHeldProjectRecency(
|
||||
live: SidebarFeedIndex,
|
||||
heldFrom: SidebarFeedIndex
|
||||
): SidebarFeedIndex {
|
||||
const heldAt = new Map(
|
||||
heldFrom.worktrees.map((worktree) => [
|
||||
getWorktreeHostIdentity(worktree),
|
||||
worktree.lastActivityAt
|
||||
])
|
||||
)
|
||||
let changed = false
|
||||
const worktrees = live.worktrees.map((worktree) => {
|
||||
const lastActivityAt = heldAt.get(getWorktreeHostIdentity(worktree)) ?? worktree.lastActivityAt
|
||||
if (lastActivityAt === worktree.lastActivityAt) {
|
||||
return worktree
|
||||
}
|
||||
changed = true
|
||||
return { ...worktree, lastActivityAt }
|
||||
})
|
||||
return changed ? { ...live, worktrees } : live
|
||||
}
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { LOCAL_EXECUTION_HOST_ID } from '../execution-host'
|
||||
import type { ProjectGroup } from '../project-group-types'
|
||||
import type { Repo } from '../repo-types'
|
||||
import { NO_WORKSPACE_ROW_FILTERS } from '../workspace-view/workspace-row-filters'
|
||||
import type { Worktree } from '../worktree/types'
|
||||
import { ALL_GROUP_KEY } from './group-keys'
|
||||
import type { HostSectionRow } from './host-section-rows'
|
||||
import { normalizePairedServerRow } from './paired-server-rows'
|
||||
import type { SidebarFeedDomains } from './sidebar-feed-domains'
|
||||
import {
|
||||
indexSidebarFeed,
|
||||
rankSidebarFeedWorktrees,
|
||||
withHeldProjectRecency,
|
||||
type SidebarFeedIndex
|
||||
} from './sidebar-feed-index'
|
||||
import {
|
||||
buildSidebarFeedRows,
|
||||
planSidebarFeedRows,
|
||||
renderSidebarFeedRows,
|
||||
type SidebarFeedCatalog,
|
||||
type SidebarFeedView
|
||||
} from './sidebar-feed-rows'
|
||||
import { IDLE_WORKSPACE_ACTIVITY } from './workspace-activity-facts'
|
||||
import { buildWorkspaceRows } from './workspace-rows'
|
||||
|
||||
function worktree(id: string, overrides: Partial<Worktree> = {}): Worktree {
|
||||
return {
|
||||
id,
|
||||
repoId: id.split('::')[0],
|
||||
path: id.split('::')[1],
|
||||
head: 'abc',
|
||||
branch: `refs/heads/${id}`,
|
||||
isBare: false,
|
||||
isMainWorktree: false,
|
||||
displayName: id.split('/').at(-1) ?? id,
|
||||
comment: '',
|
||||
linkedIssue: null,
|
||||
linkedPR: null,
|
||||
linkedLinearIssue: null,
|
||||
isArchived: false,
|
||||
isUnread: false,
|
||||
isPinned: false,
|
||||
sortOrder: 0,
|
||||
lastActivityAt: 0,
|
||||
...overrides
|
||||
}
|
||||
}
|
||||
|
||||
function repo(id: string, overrides: Partial<Repo> = {}): Repo {
|
||||
return { id, path: `/${id}`, displayName: id, badgeColor: '', addedAt: 0, ...overrides }
|
||||
}
|
||||
|
||||
function domains(overrides: Partial<SidebarFeedDomains>): SidebarFeedDomains {
|
||||
return {
|
||||
workspaces: new Map(),
|
||||
activity: new Map(),
|
||||
review: new Map(),
|
||||
creations: new Map(),
|
||||
pairedServerHosts: new Map(),
|
||||
pairedServerRows: new Map(),
|
||||
repoIcons: new Map(),
|
||||
desktop: null,
|
||||
retention: null,
|
||||
...overrides
|
||||
}
|
||||
}
|
||||
|
||||
function view(overrides: Partial<SidebarFeedView> = {}): SidebarFeedView {
|
||||
return {
|
||||
groupBy: 'none',
|
||||
sortBy: 'recent',
|
||||
projectOrderBy: 'manual',
|
||||
collapsedGroups: new Set(),
|
||||
filters: NO_WORKSPACE_ROW_FILTERS,
|
||||
workspaceHostScope: 'all',
|
||||
visibleWorkspaceHostIds: null,
|
||||
workspaceStatuses: [],
|
||||
pinnedDisplayPolicy: 'single-location',
|
||||
defaultHostId: LOCAL_EXECUTION_HOST_ID,
|
||||
hostLabelOverrides: new Map(),
|
||||
localHostLabel: 'This computer',
|
||||
...overrides
|
||||
}
|
||||
}
|
||||
|
||||
function catalog(repos: Repo[], projectGroups: ProjectGroup[] = []): SidebarFeedCatalog {
|
||||
return { repos, projectGroups, projectGrouping: { projects: [], projectHostSetups: [] } }
|
||||
}
|
||||
|
||||
/** Each listed row as `host|id@depth`, headers as `# label@depth`. */
|
||||
function outline(rows: readonly HostSectionRow[]): string[] {
|
||||
return rows.flatMap((row) => {
|
||||
if (row.type === 'item') {
|
||||
return [`${row.worktree.hostId ?? ''}|${row.worktree.id}@${String(row.depth)}`]
|
||||
}
|
||||
if (row.type === 'header' && row.key !== ALL_GROUP_KEY) {
|
||||
return [`# ${row.label ?? row.key}@${String(row.projectGroupDepth ?? 0)}`]
|
||||
}
|
||||
return row.type === 'host-header' ? [`## ${row.label}`] : []
|
||||
})
|
||||
}
|
||||
|
||||
describe('buildSidebarFeedRows keeps same-id workspaces on two hosts apart', () => {
|
||||
// The same repo registered locally and on an SSH box: `r::/w/same` names two workspaces.
|
||||
const repos = [repo('r'), repo('r', { connectionId: 'box' })]
|
||||
const workspaces = buildWorkspaceRows({
|
||||
worktrees: [
|
||||
// A twin repo's local rows name their host, as the window stamps them.
|
||||
worktree('r::/w/same', { hostId: 'local', displayName: 'Z', lastActivityAt: 100 }),
|
||||
worktree('r::/w/other', { hostId: 'local', displayName: 'M', lastActivityAt: 200 }),
|
||||
worktree('r::/w/same', { hostId: 'ssh:box', displayName: 'A', lastActivityAt: 300 })
|
||||
],
|
||||
folderWorkspaces: [],
|
||||
repos,
|
||||
lineageById: {}
|
||||
})
|
||||
|
||||
it.each(['recent', 'name'] as const)('orders each twin by its own %s stamp', (sortBy) => {
|
||||
const built = buildSidebarFeedRows(domains({ workspaces }), catalog(repos), view({ sortBy }))
|
||||
expect(outline(built.sectionRows)).toEqual([
|
||||
'ssh:box|r::/w/same@0',
|
||||
'local|r::/w/other@0',
|
||||
'local|r::/w/same@0'
|
||||
])
|
||||
})
|
||||
|
||||
it('keeps a sleeping row the host retains through a rebind gap', () => {
|
||||
const built = buildSidebarFeedRows(
|
||||
domains({
|
||||
workspaces,
|
||||
activity: new Map([['r::/w/other', { ...IDLE_WORKSPACE_ACTIVITY, browser: true }]]),
|
||||
retention: {
|
||||
retainedIds: [...workspaces.keys()].filter((key) => key.startsWith('ssh:')),
|
||||
retentionDecidedAt: 0
|
||||
}
|
||||
}),
|
||||
catalog(repos),
|
||||
view({ filters: { ...NO_WORKSPACE_ROW_FILTERS, hideSleepingWorkspaces: true } })
|
||||
)
|
||||
expect(outline(built.sectionRows)).toEqual(['ssh:box|r::/w/same@0', 'local|r::/w/other@0'])
|
||||
})
|
||||
})
|
||||
|
||||
describe('buildSidebarFeedRows nests each paired server’s own lineage', () => {
|
||||
const serverRows = (hostId: 'runtime:a' | 'runtime:b', recentAt: number) =>
|
||||
[
|
||||
{ worktreeId: 'r::/r/p', worktreeInstanceId: `${hostId}-p`, lastActivityAt: recentAt },
|
||||
{
|
||||
worktreeId: 'r::/r/c',
|
||||
worktreeInstanceId: `${hostId}-c`,
|
||||
parentWorktreeId: 'r::/r/p',
|
||||
lineageWorktreeInstanceId: `${hostId}-c`,
|
||||
parentWorktreeInstanceId: `${hostId}-p`,
|
||||
lastActivityAt: recentAt + 1
|
||||
}
|
||||
].flatMap((row) => normalizePairedServerRow(hostId, { repoId: 'r', ...row }) ?? [])
|
||||
const repos = [
|
||||
repo('r', { executionHostId: 'runtime:a' }),
|
||||
repo('r', { executionHostId: 'runtime:b' })
|
||||
]
|
||||
const feed = (reversed: boolean, activity: SidebarFeedDomains['activity'] = new Map()) => {
|
||||
const rows = [...serverRows('runtime:a', 10), ...serverRows('runtime:b', 20)]
|
||||
return domains({
|
||||
activity,
|
||||
pairedServerHosts: new Map(
|
||||
['runtime:a', 'runtime:b'].map((hostId) => [hostId, { freshness: 'live', host: null }])
|
||||
),
|
||||
pairedServerRows: new Map((reversed ? rows.toReversed() : rows).map((row) => [row.key, row]))
|
||||
})
|
||||
}
|
||||
|
||||
it.each([false, true])('in either server order (reversed: %s)', (reversed) => {
|
||||
const built = buildSidebarFeedRows(feed(reversed), catalog(repos), view())
|
||||
expect(outline(built.sectionRows)).toEqual([
|
||||
'runtime:b|r::/r/p@0',
|
||||
'runtime:b|r::/r/c@1',
|
||||
'runtime:a|r::/r/p@0',
|
||||
'runtime:a|r::/r/c@1'
|
||||
])
|
||||
})
|
||||
|
||||
it('brings back each server’s filtered-out parent above its own child', () => {
|
||||
// Activity is per bare id, so both servers' children are awake and both parents asleep.
|
||||
const awake = new Map([['r::/r/c', { ...IDLE_WORKSPACE_ACTIVITY, browser: true }]])
|
||||
const built = buildSidebarFeedRows(
|
||||
feed(false, awake),
|
||||
catalog(repos),
|
||||
view({ filters: { ...NO_WORKSPACE_ROW_FILTERS, hideSleepingWorkspaces: true } })
|
||||
)
|
||||
expect(outline(built.sectionRows)).toEqual([
|
||||
'runtime:b|r::/r/p@0',
|
||||
'runtime:b|r::/r/c@1',
|
||||
'runtime:a|r::/r/p@0',
|
||||
'runtime:a|r::/r/c@1'
|
||||
])
|
||||
})
|
||||
})
|
||||
|
||||
function projectGroup(id: string, parentGroupId: string | null): ProjectGroup {
|
||||
return {
|
||||
id,
|
||||
name: id,
|
||||
parentPath: null,
|
||||
parentGroupId,
|
||||
createdFrom: 'manual',
|
||||
tabOrder: 0,
|
||||
isCollapsed: false,
|
||||
color: null,
|
||||
createdAt: 0,
|
||||
updatedAt: 0
|
||||
}
|
||||
}
|
||||
|
||||
describe('buildSidebarFeedRows host sections', () => {
|
||||
it('repeats a nested project group’s whole path in each host it spans', () => {
|
||||
const repos = [
|
||||
repo('near', { displayName: 'near', projectGroupId: 'H' }),
|
||||
repo('far', { displayName: 'far', connectionId: 'box', projectGroupId: 'H' })
|
||||
]
|
||||
const workspaces = buildWorkspaceRows({
|
||||
worktrees: [worktree('near::/w/a'), worktree('far::/w/b', { hostId: 'ssh:box' })],
|
||||
folderWorkspaces: [],
|
||||
repos,
|
||||
lineageById: {}
|
||||
})
|
||||
const built = buildSidebarFeedRows(
|
||||
domains({ workspaces }),
|
||||
catalog(repos, [projectGroup('G', null), projectGroup('H', 'G')]),
|
||||
view({ groupBy: 'repo', visibleWorkspaceHostIds: ['local', 'ssh:box'] })
|
||||
)
|
||||
expect(outline(built.sectionRows)).toEqual([
|
||||
'## This computer',
|
||||
'# G@0',
|
||||
'# H@1',
|
||||
'# near@2',
|
||||
'|near::/w/a@0',
|
||||
'## box',
|
||||
'# G@0',
|
||||
'# H@1',
|
||||
'# far@2',
|
||||
'ssh:box|far::/w/b@0'
|
||||
])
|
||||
})
|
||||
})
|
||||
|
||||
describe('the desktop’s hover hold over the shared builder', () => {
|
||||
const repos = [repo('a'), repo('b')]
|
||||
const feedAt = (bRecent: number): SidebarFeedDomains =>
|
||||
domains({
|
||||
workspaces: buildWorkspaceRows({
|
||||
worktrees: [
|
||||
worktree('a::/w/1', { lastActivityAt: 100 }),
|
||||
worktree('b::/w/2', { lastActivityAt: bRecent })
|
||||
],
|
||||
folderWorkspaces: [],
|
||||
repos,
|
||||
lineageById: {}
|
||||
})
|
||||
})
|
||||
const recentView = view({ groupBy: 'repo', sortBy: 'recent', projectOrderBy: 'recent' })
|
||||
const itemsOf = (rows: readonly HostSectionRow[]) =>
|
||||
outline(rows).filter((line) => !line.startsWith('#'))
|
||||
|
||||
it('keeps project sections where they were while the pointer is over the list', () => {
|
||||
const engagedAt = indexSidebarFeed(feedAt(50), repos)
|
||||
const heldRanks = rankSidebarFeedWorktrees(engagedAt, 'recent')
|
||||
const live = feedAt(200)
|
||||
const liveIndex = indexSidebarFeed(live, repos)
|
||||
const shown = (index: SidebarFeedIndex) =>
|
||||
itemsOf(
|
||||
renderSidebarFeedRows(
|
||||
planSidebarFeedRows(live, index, catalog(repos), recentView, heldRanks),
|
||||
recentView,
|
||||
new Set()
|
||||
).sectionRows
|
||||
)
|
||||
// Held workspace ranks alone let B's project jump above A's.
|
||||
expect(shown(liveIndex)).toEqual(['|b::/w/2@0', '|a::/w/1@0'])
|
||||
expect(shown(withHeldProjectRecency(liveIndex, engagedAt))).toEqual([
|
||||
'|a::/w/1@0',
|
||||
'|b::/w/2@0'
|
||||
])
|
||||
})
|
||||
})
|
||||
@@ -49,7 +49,6 @@ import type {
|
||||
WorktreeGroupBy
|
||||
} from './row-types'
|
||||
import type { SidebarFeedDomains } from './sidebar-feed-domains'
|
||||
import { readFeedLineage } from './sidebar-feed-worktrees'
|
||||
import { planSidebarRows } from './sidebar-row-plan'
|
||||
import type { SortBy } from './smart-sort'
|
||||
import { selectVisibleSidebarWorktrees } from './visible-worktrees'
|
||||
@@ -110,13 +109,15 @@ export type SidebarFeedPlan = {
|
||||
hostScoped: boolean
|
||||
}
|
||||
|
||||
/** Filters, groups and nests the feed's workspaces in `rankedIds` order; collapse comes after. */
|
||||
const NO_LINEAGE_MAP: Record<string, WorktreeLineage> = {}
|
||||
|
||||
/** Filters, groups and nests the feed's workspaces in `rankedIdentities` order; collapse comes after. */
|
||||
export function planSidebarFeedRows(
|
||||
domains: SidebarFeedDomains,
|
||||
index: SidebarFeedIndex,
|
||||
catalog: SidebarFeedCatalog,
|
||||
view: SidebarFeedView,
|
||||
rankedIds: readonly string[],
|
||||
rankedIdentities: readonly string[],
|
||||
extras: SidebarFeedWindowExtras = {}
|
||||
): SidebarFeedPlan {
|
||||
const { repos, projectGroups } = catalog
|
||||
@@ -124,14 +125,14 @@ export function planSidebarFeedRows(
|
||||
const { workspaces, worktrees: allWorktrees, folderWorkspaces, repoMap } = index
|
||||
const byIdentity = new Map(workspaces.map((entry) => [entry.identity, entry]))
|
||||
const worktreeMap = new Map<string, Worktree>()
|
||||
const ancestorById = new Map<string, Worktree>()
|
||||
const ancestorByIdentity = new Map<string, Worktree>()
|
||||
const worktreesByRepo: Record<string, Worktree[]> = {}
|
||||
for (const worktree of allWorktrees) {
|
||||
if (!worktreeMap.has(worktree.id)) {
|
||||
worktreeMap.set(worktree.id, worktree)
|
||||
}
|
||||
if (!worktree.isArchived) {
|
||||
ancestorById.set(worktree.id, worktree)
|
||||
ancestorByIdentity.set(getWorktreeHostIdentity(worktree), worktree)
|
||||
}
|
||||
const repoWorktrees = worktreesByRepo[worktree.repoId]
|
||||
if (repoWorktrees) {
|
||||
@@ -140,8 +141,10 @@ export function planSidebarFeedRows(
|
||||
worktreesByRepo[worktree.repoId] = [worktree]
|
||||
}
|
||||
}
|
||||
const lineageById = readFeedLineage(workspaces)
|
||||
// Each row carries its own edge (sidebar-feed-worktrees.ts); an id-keyed map would keep one host's.
|
||||
const lineageById = NO_LINEAGE_MAP
|
||||
const retained = new Set(domains.retention?.retainedIds ?? [])
|
||||
const rankByIdentity = new Map(rankedIdentities.map((identity, rank) => [identity, rank]))
|
||||
const factsOf = (worktree: Worktree) => byIdentity.get(getWorktreeHostIdentity(worktree))?.facts
|
||||
const pairedDeviceIdsByEnvironment = new Map(
|
||||
[...domains.pairedServerHosts].flatMap(([hostId, { host }]) => {
|
||||
@@ -154,8 +157,8 @@ export function planSidebarFeedRows(
|
||||
|
||||
const visibleWorktrees = selectVisibleSidebarWorktrees({
|
||||
rows: allWorktrees,
|
||||
ancestorById,
|
||||
rankById: new Map(rankedIds.map((id, rank) => [id, rank])),
|
||||
ancestorByIdentity,
|
||||
rankOf: (worktree) => rankByIdentity.get(getWorktreeHostIdentity(worktree)),
|
||||
filters: view.filters,
|
||||
facts: {
|
||||
isArchived: (worktree) => worktree.isArchived,
|
||||
@@ -174,7 +177,10 @@ export function planSidebarFeedRows(
|
||||
isMainWorktree: (worktree) => worktree.isMainWorktree,
|
||||
isSleeping: (worktree) => {
|
||||
const activity = domains.activity.get(worktree.id)
|
||||
return !retained.has(worktree.id) && (!activity || isIdleWorkspaceActivity(activity))
|
||||
return (
|
||||
!retained.has(getWorktreeHostIdentity(worktree)) &&
|
||||
(!activity || isIdleWorkspaceActivity(activity))
|
||||
)
|
||||
}
|
||||
},
|
||||
worktreeLineageById: lineageById,
|
||||
|
||||
@@ -23,11 +23,11 @@ export type SidebarFeedRowFacts = Partial<
|
||||
/** One feed workspace as the shared builder reads it, keyed by its identity. */
|
||||
export type SidebarFeedWorkspace = {
|
||||
identity: string
|
||||
/** Carries the row's own lineage edge: same-id rows on two hosts each keep theirs. */
|
||||
worktree: Worktree
|
||||
facts: SidebarFeedRowFacts
|
||||
/** Set on a folder row: the builder lists folder workspaces apart from worktrees. */
|
||||
folderWorkspace: FolderWorkspace | null
|
||||
lineage: WorkspaceRow['lineage']
|
||||
}
|
||||
|
||||
/** The fields both a host's own rows and a paired server's rows carry for the list. */
|
||||
@@ -75,7 +75,8 @@ function readFeedRow(
|
||||
const hostId = getExecutionHostIdFromWorktreeHostIdentity(identity)
|
||||
const owner = parseExecutionHostId(ownerHostId)
|
||||
const { defaultBranch, automationCreated, cliCreated, detachedHead, creatorProvenance } = row
|
||||
const worktree: Worktree = {
|
||||
// The inline edge the lineage projection reads off a resolved row (worktree-lineage-projection.ts).
|
||||
const worktree: Worktree & { lineage: WorktreeLineage | null } = {
|
||||
id,
|
||||
...(hostId ? { hostId } : {}),
|
||||
...(owner?.kind === 'runtime' ? { runtimeOwnerEnvironmentId: owner.environmentId } : {}),
|
||||
@@ -101,14 +102,23 @@ function readFeedRow(
|
||||
...(creatorProvenance ? { creatorProvenance } : {}),
|
||||
lastActivityAt: row.recentAt ?? 0,
|
||||
...(row.smartTier !== undefined ? { smartTier: row.smartTier, smartAt: row.smartAt } : {}),
|
||||
...extra
|
||||
...extra,
|
||||
// The builder validates only the edge; provenance stays the host's.
|
||||
lineage: row.lineage
|
||||
? {
|
||||
worktreeId: id,
|
||||
...row.lineage,
|
||||
origin: 'manual',
|
||||
capture: { source: 'manual-action', confidence: 'explicit' },
|
||||
createdAt: 0
|
||||
}
|
||||
: null
|
||||
}
|
||||
return {
|
||||
identity,
|
||||
worktree,
|
||||
facts: { defaultBranch, automationCreated, cliCreated, detachedHead, creatorProvenance },
|
||||
folderWorkspace: row.kind === 'folder' ? folderWorkspaceOf(worktree, ownerHostId) : null,
|
||||
lineage: row.lineage ?? null
|
||||
folderWorkspace: row.kind === 'folder' ? folderWorkspaceOf(worktree, ownerHostId) : null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,23 +183,3 @@ export function readFeedPairedServerRow(
|
||||
const owner = parseExecutionHostId(getExecutionHostIdFromWorktreeHostIdentity(row.key))
|
||||
return owner?.kind === 'runtime' ? readFeedRow(row.key, row.worktreeId, owner.id, row) : null
|
||||
}
|
||||
|
||||
/** The rows' stored lineage edges as the builder's lineage map, keyed by bare id as the window's. */
|
||||
export function readFeedLineage(
|
||||
workspaces: readonly SidebarFeedWorkspace[]
|
||||
): Record<string, WorktreeLineage> {
|
||||
const lineageById: Record<string, WorktreeLineage> = {}
|
||||
for (const { worktree, lineage } of workspaces) {
|
||||
if (lineage && !(worktree.id in lineageById)) {
|
||||
// The builder validates only the edge; provenance stays the host's.
|
||||
lineageById[worktree.id] = {
|
||||
worktreeId: worktree.id,
|
||||
...lineage,
|
||||
origin: 'manual',
|
||||
capture: { source: 'manual-action', confidence: 'explicit' },
|
||||
createdAt: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
return lineageById
|
||||
}
|
||||
|
||||
@@ -6,18 +6,15 @@ import {
|
||||
type WorkspaceRowFactReader,
|
||||
type WorkspaceRowFilters
|
||||
} from '../workspace-view/workspace-row-filters'
|
||||
import {
|
||||
getCyclicProjectedWorktreeLineageIds,
|
||||
getLineageRenderInfo
|
||||
} from './worktree-lineage-projection'
|
||||
import { getSidebarLineageParentsByIdentity } from './worktree-lineage-projection'
|
||||
|
||||
export type VisibleSidebarWorktreeInputs = {
|
||||
/** Every catalog row, one per host-qualified identity. */
|
||||
rows: readonly Worktree[]
|
||||
/** Non-archived rows by id, the lineage ancestors a visible child may pull in. */
|
||||
ancestorById: ReadonlyMap<string, Worktree>
|
||||
/** Rank of each id in the frozen sort order; unranked rows go last. */
|
||||
rankById: ReadonlyMap<string, number>
|
||||
/** Non-archived rows by host identity, the lineage ancestors a visible child may pull in. */
|
||||
ancestorByIdentity: ReadonlyMap<string, Worktree>
|
||||
/** A row's place in the frozen sort order; unranked rows go last. */
|
||||
rankOf: (worktree: Worktree) => number | undefined
|
||||
filters: WorkspaceRowFilters
|
||||
facts: WorkspaceRowFactReader<Worktree>
|
||||
worktreeLineageById: Record<string, WorktreeLineage>
|
||||
@@ -30,8 +27,8 @@ export type VisibleSidebarWorktreeInputs = {
|
||||
/** The sidebar's visible worktrees, in display order, before grouping. */
|
||||
export function selectVisibleSidebarWorktrees({
|
||||
rows,
|
||||
ancestorById,
|
||||
rankById,
|
||||
ancestorByIdentity,
|
||||
rankOf,
|
||||
filters,
|
||||
facts,
|
||||
worktreeLineageById,
|
||||
@@ -49,8 +46,10 @@ export function selectVisibleSidebarWorktrees({
|
||||
if (forcedVisibleWorktreeIds && forcedVisibleWorktreeIds.length > 0) {
|
||||
const includedIds = new Set(all.map((worktree) => worktree.id))
|
||||
for (const worktreeId of forcedVisibleWorktreeIds) {
|
||||
const worktree = ancestorById.get(worktreeId)
|
||||
if (worktree && !includedIds.has(worktreeId)) {
|
||||
const worktree = includedIds.has(worktreeId)
|
||||
? undefined
|
||||
: [...ancestorByIdentity.values()].find((candidate) => candidate.id === worktreeId)
|
||||
if (worktree) {
|
||||
includedIds.add(worktreeId)
|
||||
all.push(worktree)
|
||||
}
|
||||
@@ -61,46 +60,40 @@ export function selectVisibleSidebarWorktrees({
|
||||
// worktrees before the next sortEpoch bump) are appended at the end.
|
||||
// Manual placement belongs to the parent, even when a hidden child has a higher rank.
|
||||
if (injectLineageAncestors !== false && preserveLineageParentOrder) {
|
||||
all = addVisibleLineageAncestors(all, ancestorById, worktreeLineageById, selectedRepoIds)
|
||||
all = addVisibleLineageAncestors(all, ancestorByIdentity, worktreeLineageById, selectedRepoIds)
|
||||
}
|
||||
all.sort((a, b) => {
|
||||
const ai = rankById.get(a.id) ?? Infinity
|
||||
const bi = rankById.get(b.id) ?? Infinity
|
||||
return ai - bi
|
||||
})
|
||||
all = all
|
||||
.map((worktree) => ({ worktree, rank: rankOf(worktree) ?? Infinity }))
|
||||
.sort((a, b) => a.rank - b.rank)
|
||||
.map(({ worktree }) => worktree)
|
||||
|
||||
return injectLineageAncestors === false || preserveLineageParentOrder
|
||||
? all
|
||||
: addVisibleLineageAncestors(all, ancestorById, worktreeLineageById, selectedRepoIds)
|
||||
: addVisibleLineageAncestors(all, ancestorByIdentity, worktreeLineageById, selectedRepoIds)
|
||||
}
|
||||
|
||||
function addVisibleLineageAncestors(
|
||||
worktrees: Worktree[],
|
||||
worktreeById: ReadonlyMap<string, Worktree>,
|
||||
ancestorByIdentity: ReadonlyMap<string, Worktree>,
|
||||
lineageById: Record<string, WorktreeLineage>,
|
||||
selectedRepoIds: ReadonlySet<string> | null
|
||||
): Worktree[] {
|
||||
const result: Worktree[] = []
|
||||
const included = new Set<string>()
|
||||
const visiting = new Set<string>()
|
||||
const cyclicLineageIds = getCyclicProjectedWorktreeLineageIds(lineageById, worktreeById)
|
||||
// The parent nesting puts each row under, so an injected ancestor is the one it nests in.
|
||||
const parentByIdentity = getSidebarLineageParentsByIdentity(lineageById, ancestorByIdentity)
|
||||
|
||||
const addWithAncestors = (worktree: Worktree): void => {
|
||||
const identity = getWorktreeHostIdentity(worktree)
|
||||
if (included.has(identity) || visiting.has(identity)) {
|
||||
if (included.has(identity)) {
|
||||
return
|
||||
}
|
||||
visiting.add(identity)
|
||||
const lineage = getLineageRenderInfo(worktree, lineageById, worktreeById, cyclicLineageIds)
|
||||
if (
|
||||
lineage.state === 'valid' &&
|
||||
(!selectedRepoIds || selectedRepoIds.has(lineage.parent.repoId))
|
||||
) {
|
||||
// Why: a repository filter is an explicit boundary; other filters keep
|
||||
// valid ancestors so visible children retain their hierarchy.
|
||||
addWithAncestors(lineage.parent)
|
||||
const parent = parentByIdentity.get(identity)
|
||||
// Why: a repository filter is an explicit boundary; other filters keep
|
||||
// valid ancestors so visible children retain their hierarchy.
|
||||
if (parent && (!selectedRepoIds || selectedRepoIds.has(parent.repoId))) {
|
||||
addWithAncestors(parent)
|
||||
}
|
||||
visiting.delete(identity)
|
||||
if (!included.has(identity)) {
|
||||
included.add(identity)
|
||||
result.push(worktree)
|
||||
|
||||
@@ -2,7 +2,11 @@ import { describe, expect, it } from 'vitest'
|
||||
import type { FolderWorkspace } from '../folder-workspace-types'
|
||||
import type { Repo } from '../repo-types'
|
||||
import type { Worktree } from '../worktree/types'
|
||||
import { buildWorkspaceRows, WorkspaceRowsSnapshotSchema } from './workspace-rows'
|
||||
import {
|
||||
buildWorkspaceRows,
|
||||
listGitWorkspaceRowKeys,
|
||||
WorkspaceRowsSnapshotSchema
|
||||
} from './workspace-rows'
|
||||
|
||||
const localRepo: Repo = {
|
||||
id: 'repo-1',
|
||||
@@ -174,4 +178,22 @@ describe('buildWorkspaceRows', () => {
|
||||
const snapshot = { revision: 1, rows: Object.fromEntries(rows) }
|
||||
expect(WorkspaceRowsSnapshotSchema.parse(snapshot)).toEqual(snapshot)
|
||||
})
|
||||
|
||||
it('lists the keys it builds rows under, which sleeping retention is matched on', () => {
|
||||
const otherRepo: Repo = { ...localRepo, id: 'repo-2', path: '/o' }
|
||||
const serverRepo: Repo = { ...localRepo, id: 'repo-3', executionHostId: 'runtime:env' }
|
||||
const worktrees = [
|
||||
// A local row whose metadata names no host keeps an unqualified key.
|
||||
worktree({ id: 'repo-2::/o/a', repoId: 'repo-2' }),
|
||||
worktree({ hostId: 'local' }),
|
||||
worktree({ hostId: 'ssh:box' }),
|
||||
worktree({ id: 'repo-3::/s/a', repoId: 'repo-3' })
|
||||
]
|
||||
const repos = [localRepo, sshRepo, otherRepo, serverRepo]
|
||||
const keys = listGitWorkspaceRowKeys(worktrees, repos)
|
||||
expect(keys).toEqual(['|repo-2::/o/a', 'local|repo-1::/r/a', 'ssh:box|repo-1::/r/a'])
|
||||
expect(keys).toEqual([
|
||||
...buildWorkspaceRows({ worktrees, folderWorkspaces: [], repos, lineageById: {} }).keys()
|
||||
])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -133,6 +133,48 @@ function toWorkspaceRow(
|
||||
}
|
||||
}
|
||||
|
||||
type ListedRow = { identity: string; hostId: ExecutionHostId }
|
||||
|
||||
/** Where this host lists a workspace, or null for one it does not (a paired server's). */
|
||||
function listedRow(worktree: Worktree, repo: Repo | undefined): ListedRow | null {
|
||||
const hostId = worktree.hostId ?? (repo ? getRepoExecutionHostId(repo) : undefined)
|
||||
if (!hostId || parseExecutionHostId(hostId)?.kind === 'runtime') {
|
||||
return null
|
||||
}
|
||||
// As the window stamps rows (worktree-host-ownership.ts): a remote repo's host always, a local
|
||||
// row only the host its metadata names.
|
||||
const identityHostId = hostId === LOCAL_EXECUTION_HOST_ID ? worktree.hostId : hostId
|
||||
return { identity: composeWorktreeHostIdentity(identityHostId, worktree.id), hostId }
|
||||
}
|
||||
|
||||
/** Each git worktree with the repo it belongs to; the same repo id can be registered on two hosts. */
|
||||
function withOwnerRepos(
|
||||
worktrees: readonly Worktree[],
|
||||
repos: readonly Repo[]
|
||||
): { worktree: Worktree; repo: Repo | undefined }[] {
|
||||
const reposById = new Map<string, Repo[]>()
|
||||
for (const repo of repos) {
|
||||
reposById.set(repo.id, [...(reposById.get(repo.id) ?? []), repo])
|
||||
}
|
||||
return worktrees.map((worktree) => {
|
||||
const owners = reposById.get(worktree.repoId) ?? []
|
||||
const repo =
|
||||
owners.find((owner) => getRepoExecutionHostId(owner) === worktree.hostId) ??
|
||||
(worktree.hostId === undefined && owners.length === 1 ? owners[0] : undefined)
|
||||
return { worktree, repo }
|
||||
})
|
||||
}
|
||||
|
||||
/** The keys `buildWorkspaceRows` lists these git worktrees under. */
|
||||
export function listGitWorkspaceRowKeys(
|
||||
worktrees: readonly Worktree[],
|
||||
repos: readonly Repo[]
|
||||
): string[] {
|
||||
return withOwnerRepos(worktrees, repos).flatMap(
|
||||
({ worktree, repo }) => listedRow(worktree, repo)?.identity ?? []
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Every workspace this host lists, from its own catalog: git worktrees (folder projects included)
|
||||
* and folder workspaces. A paired server's rows are another domain, so they are left out.
|
||||
@@ -143,10 +185,6 @@ export function buildWorkspaceRows(catalog: {
|
||||
repos: readonly Repo[]
|
||||
lineageById: Readonly<Record<string, WorktreeLineage>>
|
||||
}): Map<string, WorkspaceRow> {
|
||||
const reposById = new Map<string, Repo[]>()
|
||||
for (const repo of catalog.repos) {
|
||||
reposById.set(repo.id, [...(reposById.get(repo.id) ?? []), repo])
|
||||
}
|
||||
const rows = new Map<string, WorkspaceRow>()
|
||||
const add = (
|
||||
worktree: Worktree,
|
||||
@@ -154,23 +192,12 @@ export function buildWorkspaceRows(catalog: {
|
||||
repo?: Repo,
|
||||
lineage?: WorktreeLineage
|
||||
): void => {
|
||||
const hostId = worktree.hostId ?? (repo ? getRepoExecutionHostId(repo) : undefined)
|
||||
if (hostId && parseExecutionHostId(hostId)?.kind !== 'runtime') {
|
||||
// As the window stamps rows (worktree-host-ownership.ts): a remote repo's host always, a
|
||||
// local row only the host its metadata names.
|
||||
const identityHostId = hostId === LOCAL_EXECUTION_HOST_ID ? worktree.hostId : hostId
|
||||
rows.set(
|
||||
composeWorktreeHostIdentity(identityHostId, worktree.id),
|
||||
toWorkspaceRow(worktree, hostId, kind, repo, lineage)
|
||||
)
|
||||
const listed = listedRow(worktree, repo)
|
||||
if (listed) {
|
||||
rows.set(listed.identity, toWorkspaceRow(worktree, listed.hostId, kind, repo, lineage))
|
||||
}
|
||||
}
|
||||
for (const worktree of catalog.worktrees) {
|
||||
const owners = reposById.get(worktree.repoId) ?? []
|
||||
// The same repo id can be registered on two hosts; the row's host picks its owner.
|
||||
const repo =
|
||||
owners.find((owner) => getRepoExecutionHostId(owner) === worktree.hostId) ??
|
||||
(worktree.hostId === undefined && owners.length === 1 ? owners[0] : undefined)
|
||||
for (const { worktree, repo } of withOwnerRepos(catalog.worktrees, catalog.repos)) {
|
||||
add(worktree, 'git', repo, catalog.lineageById[worktree.id])
|
||||
}
|
||||
for (const folderWorkspace of catalog.folderWorkspaces) {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
getCyclicLineageChildKeys,
|
||||
getCyclicWorktreeLineageChildIds,
|
||||
isValidResolvedWorktreeLineageEdge
|
||||
} from '../resolved-worktree-lineage'
|
||||
@@ -30,6 +31,7 @@ export function getProjectedWorktreeLineage(
|
||||
type LineageProjection = {
|
||||
cyclicLineageIds?: Set<string>
|
||||
childrenByParentId?: Map<string, Worktree[]>
|
||||
sidebarParentByIdentity?: Map<string, Worktree>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,6 +204,37 @@ export function getSidebarLineageParent(
|
||||
: undefined
|
||||
}
|
||||
|
||||
/**
|
||||
* The row each row nests under in the sidebar, by host identity; a row on a lineage cycle nests
|
||||
* under nothing. Memoized on both inputs, which callers replace rather than mutate.
|
||||
*/
|
||||
export function getSidebarLineageParentsByIdentity(
|
||||
lineageById: Readonly<Record<string, WorktreeLineage>>,
|
||||
rowsByHostIdentity: ReadonlyMap<string, Worktree>
|
||||
): ReadonlyMap<string, Worktree> {
|
||||
const projection = getLineageProjection(lineageById, rowsByHostIdentity)
|
||||
if (projection.sidebarParentByIdentity) {
|
||||
return projection.sidebarParentByIdentity
|
||||
}
|
||||
const parentByIdentity = new Map<string, Worktree>()
|
||||
for (const [identity, row] of rowsByHostIdentity) {
|
||||
const parent = getSidebarLineageParent(row, lineageById, rowsByHostIdentity)
|
||||
if (parent) {
|
||||
parentByIdentity.set(identity, parent)
|
||||
}
|
||||
}
|
||||
const cyclic = getCyclicLineageChildKeys(
|
||||
new Map(
|
||||
[...parentByIdentity].map(([identity, parent]) => [identity, getWorktreeHostIdentity(parent)])
|
||||
)
|
||||
)
|
||||
for (const identity of cyclic) {
|
||||
parentByIdentity.delete(identity)
|
||||
}
|
||||
projection.sidebarParentByIdentity = parentByIdentity
|
||||
return parentByIdentity
|
||||
}
|
||||
|
||||
/** The rows a worktree nests under in the sidebar, nearest first; a lineage cycle nests nothing. */
|
||||
export function getSidebarLineageAncestors(
|
||||
worktree: Worktree,
|
||||
|
||||
Reference in New Issue
Block a user