fix: redesign session log player controls, fix tooltip overlap and drop dot separators

This commit is contained in:
LukeGus committed 2026-10-01 00:09:32 -05:00
1 parent b3c8f37c0d
commit 9015d5dccb
35 files changed
+434 -283

No files matched your search

@@ -79,8 +79,9 @@ export function PanePreview({
return (
<>
<div className="flex items-center gap-3 border-b border-border px-3 py-1.5 text-xs text-muted-foreground">
<span className="font-medium text-foreground">
{pane.sessionName} · {pane.paneId}
<span className="flex gap-2 font-medium text-foreground">
<span>{pane.sessionName}</span>
<span className="text-muted-foreground">{pane.paneId}</span>
</span>
{metrics && (
<>
@@ -72,8 +72,9 @@ export function SearchResults({
className="flex cursor-pointer items-baseline gap-2 px-3 py-1 text-xs hover:bg-muted/40"
onClick={() => onSelect(match)}
>
<span className="shrink-0 font-medium text-primary">
{match.sessionName} · {match.paneId}
<span className="flex shrink-0 gap-1.5 font-medium text-primary">
<span>{match.sessionName}</span>
<span className="text-primary/60">{match.paneId}</span>
</span>
<span className="truncate font-mono text-muted-foreground">
{highlightMatch(match.text, query)}
@@ -1,6 +1,6 @@
// Session/window/pane tree styled after the VSCode "tmux manager" view.
// Each session is a single row: status dot, name, inline tag badges, and a
// right-aligned meta label (relative time · cpu · mem) that is overlaid by
// right-aligned meta label (relative time, cpu, mem) that is overlaid by
// the hover actions (attach, new window, …-menu). The overlay uses a grid
// stack with opacity so rows never shift and the actions stay reachable via
// keyboard focus.
@@ -119,11 +119,17 @@ export function SessionTree({
});
}
function metaLabel(session: TmuxSessionOverview): string {
function metaLabel(session: TmuxSessionOverview) {
const time = formatRelativeTime(session.lastActivity, now, t);
const agg = metricsBySession.get(session.name);
if (!agg) return time;
return `${time} · ${agg.cpu.toFixed(0)}% · ${formatMem(agg.memKb)}`;
return (
<span className="flex gap-2">
<span>{time}</span>
<span>{agg.cpu.toFixed(0)}%</span>
<span>{formatMem(agg.memKb)}</span>
</span>
);
}
return (