a commander opens in /chat, where you were already reading
Clicking one in the Live list navigated to /command-hq — out of the screen, into a different route with a different layout, having lost your place in the list you were scanning. I argued for that in the commit before this one: /chat renders the transcript without the category, cost, watcher state or the disarm control. It loses to a simpler argument. A commander IS a chat — same harness, same transcript, resumable by the same route — and being thrown out of the page you are reading costs more than metadata you did not ask for. Command HQ is where you go to MANAGE a commander, which is a separate errand from reading what it just said. Verified rather than assumed, because a commander's cwd is not one of /chat's directory groups: the default-group load misses, and GET /chat/sessions/:id falls through to the by-id scan, which returns all six messages and the real cwd with it. So the detail panel resumes it with no cwd hint at all. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,6 @@ import { useChatPwds, useClaudeSessions } from 'state/useClaudeSessions';
|
|||||||
import type { LiveSession } from 'state/useLiveSessions';
|
import type { LiveSession } from 'state/useLiveSessions';
|
||||||
import { useLiveSessions } from 'state/useLiveSessions';
|
import { useLiveSessions } from 'state/useLiveSessions';
|
||||||
import { useSelectedChatSession } from '../../channels';
|
import { useSelectedChatSession } from '../../channels';
|
||||||
import { commandHqSessionPath } from '../CommandHQ/command-hq-routes';
|
|
||||||
import { chatNewPath, chatSessionPath, cwdFromSplat } from './chat-routes';
|
import { chatNewPath, chatSessionPath, cwdFromSplat } from './chat-routes';
|
||||||
import { DirPickerModal } from './DirPickerModal';
|
import { DirPickerModal } from './DirPickerModal';
|
||||||
import { LiveMarker, SessionRow, shortenPath, useScrollActiveIntoView, useSessionRowActions } from './SessionRow';
|
import { LiveMarker, SessionRow, shortenPath, useScrollActiveIntoView, useSessionRowActions } from './SessionRow';
|
||||||
@@ -368,16 +367,17 @@ const LiveView = ({ activeId, home }: { activeId?: string; home: string | null }
|
|||||||
*/
|
*/
|
||||||
const LiveRow = ({ session, activeId, home }: { session: LiveSession; activeId?: string; home: string | null }) => {
|
const LiveRow = ({ session, activeId, home }: { session: LiveSession; activeId?: string; home: string | null }) => {
|
||||||
const transcriptId = session.claudeSessionId;
|
const transcriptId = session.claudeSessionId;
|
||||||
// A commander opens in Command HQ. `/chat/<id>` would render the same transcript with none of what makes
|
// A commander opens HERE, in /chat, like any other row.
|
||||||
// it a commander legible — no category, no cost, no watcher state, and no way to disarm it.
|
//
|
||||||
const to = transcriptId
|
// This briefly linked to Command HQ, on the argument that /chat renders the transcript without the
|
||||||
? session.isCommander
|
// category, cost, watcher state or the disarm control. That argument loses to a simpler one: sending
|
||||||
? commandHqSessionPath(transcriptId, undefined)
|
// somebody out of the screen they are reading, into a different route with a different layout, is a
|
||||||
: chatSessionPath(transcriptId)
|
// bigger loss than the metadata they did not ask for. A commander IS a chat — the same harness, the same
|
||||||
: undefined;
|
// transcript, resumable by the same route. Command HQ is where you go to MANAGE one, which is a separate
|
||||||
|
// errand from reading what it just said.
|
||||||
return (
|
return (
|
||||||
<DataRow
|
<DataRow
|
||||||
to={to}
|
to={transcriptId ? chatSessionPath(transcriptId) : undefined}
|
||||||
title={session.title ?? 'Starting…'}
|
title={session.title ?? 'Starting…'}
|
||||||
selected={!!transcriptId && transcriptId === activeId}
|
selected={!!transcriptId && transcriptId === activeId}
|
||||||
meta={[
|
meta={[
|
||||||
|
|||||||
Reference in New Issue
Block a user