Skip to content

feat(review-hog): add detailed view of the review pipeline - #73502

Merged
sortafreel merged 2 commits into
masterfrom
reviewhog/detailed-view
Jul 24, 2026
Merged

feat(review-hog): add detailed view of the review pipeline#73502
sortafreel merged 2 commits into
masterfrom
reviewhog/detailed-view

Conversation

@sortafreel

@sortafreel sortafreel commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

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

  • Adds a "Detailed view" modal to the pipeline section: a fixed 1280×720 diagram of the full review flow (meaningful diff → chunks → per-chunk perspectives + blind-spot sweep → cross-chunk dedupe → per-chunk validation → one published review) that scales down uniformly to fit the viewport.
  • reviewHogSettingsLogic gains pipelineDetailOpen state with open/close actions to drive the modal.
  • Review feedback addressed: the fit-to-viewport scale is clamped to a positive floor (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 --check and oxlint (repo-pinned versions) pass on the changed files.
  • The clamp fix: previously window.innerHeight <= 124 produced a scale ≤ 0 (zero-size wrapper, inverted transform); it is now floored at 0.1.
  • The agent session that produced the follow-up commit had no runnable frontend stack, so no manual visual check was done there; typechecking and Jest run in CI.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

No docs changes needed: the modal is self-describing UI explaining existing behavior.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

  • The detailed-view modal and kea wiring were built in a PostHog Code (Claude Code) session; a follow-up PostHog Code session addressed the Greptile/Copilot review comments (scale clamp + named chrome constant) and filled in this description.
  • No repo skills were invoked; validation was pinned-version oxfmt/oxlint on the touched files (no node_modules available in the session, so Jest/typecheck are left to CI).

Created with PostHog Code

Copilot AI review requested due to automatic review settings July 24, 2026 12:35
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ❌ build failed

The preview didn't come up for commit a7bc862. See the build log for the failing step. It'll retry on the next push.

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.

@greptile-apps

greptile-apps Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor
Prompt To Fix All With AI
Fix 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

Comment thread products/review_hog/frontend/PipelineDetailModal.tsx Outdated
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

⚠️ Bundle size — 🔺 +11.9 KiB (+0.0%)

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

Total: 64.40 MiB · 🔺 +11.9 KiB (+0.0%)

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 reviewHogSettingsLogic with pipelineDetailOpen state 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.

Comment thread products/review_hog/frontend/PipelineDetailModal.tsx
@sortafreel sortafreel added the stamphog Request AI approval (no full review) label Jul 24, 2026
@stamphog

stamphog Bot commented Jul 24, 2026

Copy link
Copy Markdown

Note

🤖 stamphog reviewed 20f76bab3711c6b8f905d8d7cacb7ca985844c0b — verdict: REFUSED

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.

  • Author wrote 46% of the modified lines and has 9 merged PRs in these paths (familiarity MODERATE).
  • copilot-pull-request-reviewer[bot], greptile-apps[bot] reviewed the current head.
  • PipelineDetailModal.tsx: scale (line ~308-312) is computed as Math.min(1, widthFactor, heightFactor) with no lower bound — when windowSize.height is below 124px the height factor goes negative, producing a negative scale that collapses/inverts the canvas, exactly as both @greptile-apps and @copilot-pull-request-reviewer noted on this same head; the comments are marked resolved but no code change addresses it.
Gate mechanics and policy version
Gate Result
prerequisites all clear
deny-list no deny categories matched
size 356L, 3F substantive, 424L/4F incl. docs/generated/snapshots — within ceiling
tier T1-agent / T1d-complex (424L, 4F, two-areas, feat)
stamphog 2.0.0b3 .stamphog/policy.yml @ b7321c7 · reviewed head 20f76ba

@stamphog stamphog Bot removed the stamphog Request AI approval (no full review) label Jul 24, 2026
@greptile-apps

greptile-apps Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

The concern is valid — the diff still has no lower bound on scale. When windowSize.height drops below 124 px the height factor goes negative, and Math.min happily picks that negative value.

The fix is a one-liner Math.max(0, ...) clamp:

    const scale = Math.max(
        0,
        Math.min(
            1,
            ((windowSize.width ?? CANVAS_W) * 0.9) / CANVAS_W,
            ((windowSize.height ?? CANVAS_H + 124) - 124) / CANVAS_H
        )
    )

This ensures scale is always in [0, 1]: zero collapses the canvas to nothing (graceful), while any positive value renders correctly. A floor of something like 0.2 is also fine if you'd rather show a very small diagram than nothing at all on extreme viewports.

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
@sortafreel sortafreel changed the title feat: Add ReviewHog's logic scheme. feat(review-hog): add detailed view of the review pipeline Jul 24, 2026
@sortafreel
sortafreel merged commit 197fddf into master Jul 24, 2026
226 checks passed
@sortafreel
sortafreel deleted the reviewhog/detailed-view branch July 24, 2026 13:50
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 24, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-24 14:42 UTC Run
prod-us ✅ Deployed 2026-07-24 14:58 UTC Run
prod-eu ✅ Deployed 2026-07-24 15:01 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants