feat(review-hog): add detailed view of the review pipeline - #73502
Conversation
🦔 Hogbox preview · ❌ build failedThe preview didn't come up for commit Previews are optional and never block merging. A failure here is often a hogland or tailnet hiccup rather than anything in your PR, so the check stays green and this comment is the status. |
Prompt To Fix All With AIFix the following 1 code review issue. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 1
products/review_hog/frontend/PipelineDetailModal.tsx:180-184
**Clamp the viewport scale**
The height calculation becomes zero or negative when the viewport is 124px tall or shorter. This gives the wrapper non-positive dimensions and applies a non-positive canvas transform, leaving the detailed view empty or inverted until the viewport grows.
Reviews (1): Last reviewed commit: "feat: Add ReviewHog's logic scheme." | Re-trigger Greptile |
🤖 CI report
|
| File | Size | Δ vs base |
|---|---|---|
posthog-app/_parent/products/review_hog/frontend/CodeReviewScene.js |
60.8 KiB | 🔺 +7.9 KiB (+15.0%) |
render-query/src/render-query/render-query.js |
21.26 MiB | 🔺 +1.6 KiB (+0.0%) |
exporter/src/queries/schema.js |
1.03 MiB | 🔺 +1.2 KiB (+0.1%) |
posthog-app/src/queries/schema.js |
1.03 MiB | 🔺 +1.2 KiB (+0.1%) |
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.24 MiB · 22 files | 🔺 +2.2 KiB (+0.2%) | ███░░░░░░░ 27.6% of 4.51 MiB |
authenticated shell (every logged-in page)src/scenes/AuthenticatedShell.tsx |
8.07 MiB · 3,010 files | 🔺 +390 B (+0.0%) | ████████░░ 83.1% 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 |
|---|---|
| 281.5 KiB | ../node_modules/.pnpm/posthog-js@1.407.2/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 |
| 236.0 KiB | src/taxonomy/core-filter-definitions-by-group.json |
| 226.1 KiB | ../node_modules/.pnpm/posthog-js@1.407.2/node_modules/posthog-js/dist/module.js |
| 154.3 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 |
| 106.2 KiB | src/lib/api.ts |
| 94.0 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.18 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.18 MiB · 17 files | 🔺 +2.2 KiB (+0.1%) | ████░░░░░░ 38.1% of 5.72 MiB |
| Deferred (lazy) | 2.07 MiB · 33 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 |
|---|---|
| 716.0 KiB | dist/toolbar/toolbar-app-UT2TAV4U.css |
| 545.1 KiB | dist/toolbar/chunk-chunk-JXZAQF2A.js |
| 484.2 KiB | dist/toolbar/chunk-chunk-BQIRV2TJ.js |
| 133.6 KiB | dist/toolbar/chunk-chunk-YBAFBB2V.js |
| 131.8 KiB | dist/toolbar/chunk-chunk-T5KY5WYR.js |
| 71.0 KiB | dist/toolbar/toolbar-app-HJ3A3JN3.js |
| 69.0 KiB | dist/toolbar/chunk-chunk-27JL52RE.js |
| 35.6 KiB | dist/toolbar/chunk-chunk-YSBEFDVO.js |
| 20.9 KiB | dist/toolbar/chunk-chunk-2H2TQVQG.js |
| 12.2 KiB | dist/toolbar/chunk-chunk-PIK3PADE.js |
Posted automatically by check-toolbar-size · sizes are toolbar output bytes (shipped, post-tree-shake) from the esbuild metafile
✅ Dist folder size — 🔺 +1.18 MiB (+0.1%)
Total size of the built frontend/dist folder (all assets), compared against the base branch.
Total: 1353.48 MiB · 🔺 +1.18 MiB (+0.1%)
ℹ️ MCP UI apps size — 32 app(s), 17065.5 KB JS
Built size of each MCP UI app (main.js + styles.css).
| App | JS | CSS |
|---|---|---|
| debug | 599.5 KB | 187.7 KB |
| action | 457.8 KB | 187.7 KB |
| action-list | 564.3 KB | 187.7 KB |
| cohort | 456.8 KB | 187.7 KB |
| cohort-list | 563.3 KB | 187.7 KB |
| email-template | 456.6 KB | 187.7 KB |
| error-details | 472.4 KB | 187.7 KB |
| error-issue | 457.5 KB | 187.7 KB |
| error-issue-list | 564.2 KB | 187.7 KB |
| experiment | 561.5 KB | 187.7 KB |
| experiment-list | 565.1 KB | 187.7 KB |
| experiment-results | 563.2 KB | 187.7 KB |
| feature-flag | 567.1 KB | 187.7 KB |
| feature-flag-list | 570.9 KB | 187.7 KB |
| feature-flag-testing | 461.0 KB | 187.7 KB |
| insight-actors | 562.1 KB | 187.7 KB |
| invite-email-preview | 456.0 KB | 187.7 KB |
| llm-costs | 559.5 KB | 187.7 KB |
| session-recording | 458.6 KB | 187.7 KB |
| session-summary | 463.9 KB | 187.7 KB |
| survey | 458.4 KB | 187.7 KB |
| survey-global-stats | 562.2 KB | 187.7 KB |
| survey-list | 565.0 KB | 187.7 KB |
| survey-stats | 562.2 KB | 187.7 KB |
| trace-span | 457.2 KB | 187.7 KB |
| trace-span-list | 564.2 KB | 187.7 KB |
| workflow | 457.1 KB | 187.7 KB |
| workflow-list | 563.7 KB | 187.7 KB |
| loops-review | 461.2 KB | 187.7 KB |
| query-results | 745.5 KB | 187.7 KB |
| render-ui | 826.2 KB | 187.7 KB |
| visual-review-snapshots | 461.6 KB | 187.7 KB |
There was a problem hiding this comment.
Pull request overview
Adds a “Detailed view” modal that visualizes ReviewHog’s PR review pipeline, and wires it into the ReviewHog Code review scene via kea state. Also includes a small regeneration/formatting update to the MCP UI app render dispatcher.
Changes:
- Add
PipelineDetailModal(fixed-layout pipeline diagram) and a “Detailed view” CTA in the “How we review your PRs” section. - Extend
reviewHogSettingsLogicwithpipelineDetailOpenstate and open/close actions to control the modal. - Regenerate/format
render-dispatch.generated.tsx(import formatting + a few object key style tweaks).
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| services/mcp/src/ui-apps/generated/render-dispatch.generated.tsx | Regenerated formatting/structure changes to the UI app render dispatch map. |
| products/review_hog/frontend/reviewHogSettingsLogic.ts | Adds kea actions + reducer state to control opening/closing the pipeline detail modal. |
| products/review_hog/frontend/PipelineDetailModal.tsx | New modal component rendering the detailed pipeline diagram and handling responsive scaling. |
| products/review_hog/frontend/CodeReviewScene.tsx | Adds “Detailed view” button and mounts the modal within the pipeline section. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Note 🤖 stamphog reviewed Two independent automated reviewers (Greptile and Copilot) both flagged that the pipeline-detail modal's scale calculation goes zero/negative on short viewports, collapsing or inverting the diagram — the comments are marked resolved but the diff still has no clamp on that computation, so the concern was never actually addressed.
Gate mechanics and policy version
|
|
The concern is valid — the diff still has no lower bound on The fix is a one-liner This ensures |
The fit-to-viewport factor went to zero or negative once the window was shorter than LemonModal's ~124px of vertical chrome, collapsing or mirroring the pipeline canvas. Floor the scale at a small positive value and name the chrome offset, per review feedback. Generated-By: PostHog Code Task-Id: af36a018-da62-4696-8d54-772f4bf30eef
Problem
The "How we review your PRs" section on the Code review scene compresses ReviewHog's pipeline into four short steps. That's not enough to understand (or trust) how a review actually runs: how the diff is chunked, which perspectives look at each chunk, where the blind-spot sweep and dedupe happen, and why only validated findings end up on the PR.
Changes
reviewHogSettingsLogicgainspipelineDetailOpenstate with open/close actions to drive the modal.MIN_SCALE) and the modal chrome offset is a named constant (MODAL_VERTICAL_CHROME_PX), so viewports shorter than the modal chrome overflow instead of collapsing or mirroring the canvas.How did you test this code?
oxfmt --checkandoxlint(repo-pinned versions) pass on the changed files.window.innerHeight <= 124produced a scale ≤ 0 (zero-size wrapper, inverted transform); it is now floored at 0.1.Automatic notifications
Docs update
No docs changes needed: the modal is self-describing UI explaining existing behavior.
🤖 Agent context
Autonomy: Human-driven (agent-assisted)
Created with PostHog Code