v1.6.27
feat(web,dashboard): themed Tooltip primitive + cache 5m/1h tier surfacing
Two threads land together: the dashboard's hover hints become themed
- design-token-aware, and Anthropic's cache-creation 5m vs 1h tier
split now surfaces in the Sessions table + SessionDetail panel
(previously the split flowed end-to-end through the backend but the
UI collapsed it into a single "Cache W" bucket).
Tooltip primitive (web/src/components/primitives/Tooltip.tsx).
Replaces every native HTML title="..." hover hint with a themed
surface (--bg-3 background, --line-3 border, --shadow-2
elevation, optional arrow via FloatingArrow). @floating-ui/react
powers placement — flip / shift / offset / arrow positioning.
Hover-or-focus triggers with a 200ms restMs delay (matches OS-native
tooltip cadence); escape-to-close; multi-line support; max-width
default 280px with per-callsite override. Pinned in
vite.config.ts manualChunks as vendor-floating-ui
per [[feedback_vite_manualchunks_clsx]] so it doesn't get swept
into vendor-recharts. 49 KB / 18 KB gzipped vendor chunk.
Two-div internal layout — outer div carries floatingStyles
(positioning transform), inner div carries useTransitionStyles
output (scale-in animation). Without this split the transition's
transform would clobber the placement transform and tooltips would
render at the body origin (fixed pre-release after operator caught
the regression in QA).
Migration sweep — roughly 80 HTML title= callsites across
13 pages + 14 primitives migrated to the new primitive. Title-
forwarding primitives (Pill / IdLink / ToolBadge / ComboChip /
DensityBar / ActiveFilterChips / SlideOver close / CopyOnClick)
now wrap their title prop in Tooltip internally — every caller
that already passed title= to those gets themed tooltips with no
per-callsite change. The HelpInd ? chip surfaces the new look
across every column header. Component title= props on PageStub /
ChartShell / StatCard / etc. are unchanged (those have always been
display labels, not browser tooltips).
Cache tier surfacing. The Sessions table's "Cache W" column
now hovers a 5m/1h breakdown panel — absolute counts + percentage
split + a note about the 60% 1h premium when it's engaged.
Backend lifts cache_creation_1h_tokens out of
cost.TokenBundle.CacheCreation1h on the per-session rollup
(internal/intelligence/dashboard/dashboard.go::handleSessions).
The SessionDetail panel's Token Buckets section splits "Cache
Write" into "Cache Write (5m)" + "Cache Write (1h)" sub-rows
when the session actually carried 1h-tier writes (sub-row is
omitted entirely when cache_creation_1h_tokens == 0 — non-
Anthropic sessions stay at the original 4-bucket shape).
Anthropic-only feature; other providers see no change. types.ts
gains the matching cache_creation_1h_tokens on SessionRow and
cache_creation_1h on SessionDetail.tokens.
fix(hook): Unregister symmetry + wsl.exe-prefix guard on Linux/default heuristics
Two review follow-ups from v1.6.26 brought forward into the same
ship. (Re-stated here because v1.6.26 was a private-only release;
the public mirror at 1.6.25 didn't see them.) Cross-binary
observer uninstall now cleans up entries written by a
differently-installed observer via the content-heuristic
(filterClaudeGroups / filterCodexGroups / unregisterCursor
removal loop). isObserverClaudeEntry and isObserverCursorEntry
reject wsl.exe-wrapped commands so the Linux/default and
Windows-WSL-bridge registrars match disjoint shapes.
Downloads
Pre-built binaries for each supported platform are attached below. Linux variants bundle antigravity-bridge.exe next to the observer binary for WSL2 users of the Antigravity adapter.
| Platform | Asset |
|---|---|
| Linux x86_64 | observer-v1.6.27-linux-x64.tar.gz |
| Linux arm64 | observer-v1.6.27-linux-arm64.tar.gz |
| macOS x86_64 (Intel) | observer-v1.6.27-darwin-x64.tar.gz |
| macOS arm64 (Apple Silicon) | observer-v1.6.27-darwin-arm64.tar.gz |
| Windows x86_64 | observer-v1.6.27-win32-x64.zip |
Verify with sha256sum -c SHA256SUMS (or shasum -a 256 -c SHA256SUMS on macOS) from the directory containing the downloads.
Also available via npm: npm install -g @superbased/observer@1.6.27