Skip to content

fix(experiments): don't color tooltip delta dash red when there's no data - #90721

Merged
trunk-io[bot] merged 1 commit into
masterfrom
experiments/tooltip-delta-dash-color
Aug 28, 2026
Merged

trunk-io[bot] merged 1 commit into
masterfrom
experiments/tooltip-delta-dash-color

Conversation

@jurajmajerik

Copy link
Copy Markdown
Contributor

Problem

In the metric results tooltip, a variant without enough data shows a dash for Delta, but the dash renders red as if the variant were losing.

The color ternary treats winning === undefined (no credible interval yet) the same as winning === false.

Changes

  • The Delta dash now renders in the default text color when there is no data. Green/red coloring still applies once a delta exists.
  • The results table already guards this case; only the tooltip was affected.

How did you test this code?

Verified the isWinning code path returns undefined when the variant has no interval. Not run: visual check in the app.

Automatic notifications

  • Publish to changelog?

Docs update

None

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Claude Code session. Skills invoked: /wt, /writing-pr-descriptions. Investigated the tooltip rendering, found the unguarded ternary in MetricRowGroupTooltip.tsx, and applied a one-line fix.

@jurajmajerik jurajmajerik self-assigned this Aug 28, 2026
@trunk-io

trunk-io Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

😎 Merged successfully - details.

@github-actions

github-actions Bot commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

🤖 CI report

✅ Trunk lane — non-backend lane

This PR is assigned to the non-backend lane. It does not run backend Python tests and may merge in parallel with PRs in other lanes.

⚠️ Bundle size — 🔺 +18 B (+0.0%)

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 68.12 MiB · 🔺 +18 B (+0.0%)

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

✅ Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.37 MiB · 22 files no change ███░░░░░░░ 30.3% of 4.51 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.82 MiB · 3,247 files no change █████████░ 90.8% of 9.71 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
762 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
307.0 KiB ../node_modules/.pnpm/posthog-js@1.422.0_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
263.4 KiB ../node_modules/.pnpm/posthog-js@1.422.0_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.js
252.5 KiB src/taxonomy/core-filter-definitions-by-group.json
154.2 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
104.7 KiB src/lib/api.ts
95.2 KiB ../packages/quill/packages/quill/dist/index.js
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

✅ Toolbar bundle — eager 2.26 MiB within budget

What the toolbar ships to customer pages, measured from the esbuild output (minified, post-tree-shake). The eager set is the entry plus everything statically imported from it — fetched before any feature runs; deferred chunks load lazily. The eager guardrail is 5.72 MiB. Each output file must also stay below 10 MB, where CloudFront stops compressing it. The module boundary is enforced separately by check-toolbar-graph.

Metric Size Δ vs base Budget
Eager (shipped)
entry + static imports
2.26 MiB · 18 files no change ████░░░░░░ 39.5% of 5.72 MiB
Deferred (lazy) 2.11 MiB · 45 files no change n/a — loads on demand
Loader dist/toolbar.js 1.1 KiB no change █░░░░░░░░░ 5.8% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
749.2 KiB dist/toolbar/toolbar-app-XJ7BMNHX.css
588.2 KiB dist/toolbar/chunk-chunk-QXQCK5SA.js
484.7 KiB dist/toolbar/chunk-chunk-QMGLBVDO.js
133.8 KiB dist/toolbar/chunk-chunk-EUOYQWGB.js
131.8 KiB dist/toolbar/chunk-chunk-FDH2IBXT.js
71.3 KiB dist/toolbar/toolbar-app-DKGYKGXO.js
69.0 KiB dist/toolbar/chunk-chunk-TSAL54PB.js
35.6 KiB dist/toolbar/chunk-chunk-TMLTCDV6.js
20.9 KiB dist/toolbar/chunk-chunk-BHKA3C5E.js
6.8 KiB dist/toolbar/chunk-chunk-DV7IWQNF.js

Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile

✅ Dist folder size — 🔺 +70 B (+0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1434.83 MiB · 🔺 +70 B (+0.0%)

✅ Playwright — all passed

All tests passed.

View test results →

@jurajmajerik jurajmajerik added the stamphog Request AI approval (no full review) label Aug 28, 2026
@trunk-io

trunk-io Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Static Badge   Static Badge   Static Badge

View Full Report ↗︎ ⋅ Docs

@jurajmajerik
jurajmajerik marked this pull request as ready for review August 28, 2026 08:28
@jurajmajerik jurajmajerik removed the stamphog Request AI approval (no full review) label Aug 28, 2026
@github-actions

github-actions Bot commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit a0cd14d · box box-31d8970eb8be · ready in 711s (push → usable) · build log · rebuilds on every push, torn down on close

@jurajmajerik jurajmajerik added the stamphog Request AI approval (no full review) label Aug 28, 2026
@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested a review from a team August 28, 2026 08:28
@greptile-apps

greptile-apps Bot commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "fix(experiments): don't color tooltip de..." | Re-trigger Greptile

@stamphog stamphog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trivial one-line UI color-logic fix within the owning team, no risk territory involved.

  • Author wrote 0% of the modified lines and has 48 merged PRs in these paths (familiarity MODERATE).
  • 👍 on the PR from greptile-apps[bot].
Gate mechanics and policy version
Gate Result
prerequisites ✓ all clear
deny-list ✓ no deny categories matched
size ✓ 2L, 1F substantive — within ceiling
tier ✓ T1-agent / T1a-trivial (2L, 1F, single-area, fix)
stamphog 2.0.0b4 .stamphog/policy.yml @ a0cd14d · reviewed head a0cd14d

@trunk-io
trunk-io Bot merged commit 9cd0784 into master Aug 28, 2026
336 of 349 checks passed
@trunk-io
trunk-io Bot deleted the experiments/tooltip-delta-dash-color branch August 28, 2026 09:02
@deployment-status-posthog

deployment-status-posthog Bot commented Aug 28, 2026 •

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-08-28 09:35 UTC Run
prod-us ✅ Deployed 2026-08-28 09:59 UTC Run
prod-eu ✅ Deployed 2026-08-28 10:01 UTC Run

This branch was successfully deployed

1 active deployment
preview-pr-90721 — a0cd14d7 Deployed Aug 28, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stamphog Request AI approval (no full review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant