Files
Triple-C/app/src/lib/sessionName.ts
T

28 lines
1.1 KiB
TypeScript
Raw Normal View History

import type { Project, TerminalSession } from "./types";
/**
* What a terminal session is called on screen.
*
* The rule used to be written twice inside `MainTabs.tsx` — once in `tabLabel`
* for the drag ghost, once inline in `renderTab` — both local and neither
* exported, so the two could disagree the moment either was edited. It is here
* because a third caller (the note send-target picker) would have made that
* three.
*
* A user-set name wins and is prefixed with the project, because a custom name
* is usually about the work rather than the project and needs the context. The
* `(bash)` marker only appears on the fallback: a session someone bothered to
* name does not need to be told apart from its neighbours.
*/
export function sessionDisplayName(
session: TerminalSession,
project?: Project,
): string {
const custom = project?.renamed_session_names?.[session.id];
if (custom) return `${session.projectName}: ${custom}`;
return (
(session.sessionName ?? session.projectName) +
(session.sessionType === "bash" ? " (bash)" : "")
);
}