diff --git a/docs/AGENTS.md b/docs/AGENTS.md index cec4e34e88..4ce4678015 100644 --- a/docs/AGENTS.md +++ b/docs/AGENTS.md @@ -132,6 +132,7 @@ Mobile app tests live in `mobile/src/**/*.test.ts` and use Bun's built-in test r - If a tool/agent provides an emoji string (e.g., todo-derived status or `displayStatus`), render via `EmojiIcon` (`src/browser/components/icons/EmojiIcon.tsx`) instead of rendering the emoji. - If a new emoji appears in tool output, extend `EmojiIcon` to map it to an SVG icon. - Colors defined in `src/browser/styles/globals.css` (`:root @theme` block). Reference via CSS variables (e.g., `var(--color-plan-mode)`), never hardcode hex values. +- Tooltips must use the shared `Tooltip`/`TooltipIfPresent` components, not native `title` attributes. Native titles create duplicate OS tooltips and cannot be z-indexed; shared tooltips portal above clipped containers. - For incrementing numeric UI (costs, timers, token counts, percentages), use semantic numeric typography utilities (`counter-nums` / `counter-nums-mono`) to prevent width jitter. - Choose `counter-nums-mono` only when monospace is an intentional visual style (e.g., terminal/telemetry), not merely as a workaround. - Use `min-w-[Nch]` only when reserving layout width is intentional and separate from tabular numeral stability. diff --git a/src/browser/features/Memory/MemoryBrowser.tsx b/src/browser/features/Memory/MemoryBrowser.tsx index 094ecd12f7..e85aa56bf3 100644 --- a/src/browser/features/Memory/MemoryBrowser.tsx +++ b/src/browser/features/Memory/MemoryBrowser.tsx @@ -11,6 +11,7 @@ import { } from "lucide-react"; import { ConfirmationModal } from "@/browser/components/ConfirmationModal/ConfirmationModal"; +import { TooltipIfPresent } from "@/browser/components/Tooltip/Tooltip"; import { useAPI } from "@/browser/contexts/API"; import { RowActionButton } from "@/browser/features/RightSidebar/GoalBoardSections"; import { isAbortError } from "@/browser/utils/isAbortError"; @@ -555,16 +556,25 @@ function ConsolidationFooter(props: { return (
-
-
- Workspace: {formatConsolidationRecord(status?.workspaceRecord ?? null)} -
-
Project: {projectLabel}
-
- Global: {formatConsolidationRecord(status?.globalRecord ?? null)} + {summaryTitle}
+ } + side="top" + align="start" + > + {/* Use the shared, portaled tooltip only: a native title duplicates the UI tooltip and ignores z-index. */} +
+
+ Workspace: {formatConsolidationRecord(status?.workspaceRecord ?? null)} +
+
Project: {projectLabel}
+
+ Global: {formatConsolidationRecord(status?.globalRecord ?? null)} +
+ {runError !== null &&
{runError}
}
- {runError !== null &&
{runError}
} -
+