fix: use suffix for unnamed session labels

This commit is contained in:
Federico Jaramillo Martinez
2026-07-02 14:27:21 +02:00
parent 3cb81b1bcf
commit d2e10cd89a
5 changed files with 24 additions and 2 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@jmfederico/pi-web": patch
---
Show the random-looking suffix for unnamed sessions so newly created empty sessions are easier to distinguish.
+2 -1
View File
@@ -2,6 +2,7 @@ import { LitElement, css, html, type PropertyValues } from "lit";
import { customElement, property, state } from "lit/decorators.js";
import type { SessionActivity, SessionInfo, SessionStatus } from "../api";
import { isCachedNewSessionInfo } from "../cachedNewSessions";
import { shortSessionId } from "../sessionLabels";
import { isSessionActive } from "../../../shared/activity";
import { actionMenuPanelStyle } from "./actionMenu";
import { renderActionActivityIndicator, type ActivityIndicatorKind } from "./activityBadge";
@@ -11,7 +12,7 @@ import { listStyles } from "./shared";
function sessionLabel(session: SessionInfo): string {
if (session.name !== undefined && session.name !== "") return session.name;
return session.firstMessage !== "" ? session.firstMessage : session.id.slice(0, 8);
return session.firstMessage !== "" ? session.firstMessage : shortSessionId(session.id);
}
export interface SessionRow {
@@ -1,6 +1,7 @@
import { LitElement, css, html } from "lit";
import { customElement, property, query, state } from "lit/decorators.js";
import type { Machine, Project, SessionInfo, Workspace } from "../../api";
import { shortSessionId } from "../../sessionLabels";
import type { NavigationSection } from "../../appShell/navigationState";
@customElement("app-context-bar")
@@ -193,7 +194,7 @@ function workspaceContextTitle(workspace: Workspace | undefined): string {
function sessionContextLabel(session: SessionInfo | undefined): string {
const name = session?.name?.trim();
const firstMessage = session?.firstMessage.trim();
return name !== undefined && name !== "" ? name : firstMessage !== undefined && firstMessage !== "" ? firstMessage : session?.id.slice(0, 8) ?? "No session";
return name !== undefined && name !== "" ? name : firstMessage !== undefined && firstMessage !== "" ? firstMessage : session === undefined ? "No session" : shortSessionId(session.id);
}
function sessionContextTitle(session: SessionInfo | undefined): string {
+12
View File
@@ -0,0 +1,12 @@
import { describe, expect, it } from "vitest";
import { shortSessionId } from "./sessionLabels";
describe("shortSessionId", () => {
it("uses the random-looking suffix of UUIDv7 session ids", () => {
expect(shortSessionId("019f22c5-d53e-7489-997f-fce1e570a202")).toBe("e570a202");
});
it("keeps short ids intact", () => {
expect(shortSessionId("abc123")).toBe("abc123");
});
});
+3
View File
@@ -0,0 +1,3 @@
export function shortSessionId(id: string): string {
return id.slice(-8);
}