Skip to content

fix(data-modeling): align lineage canvas interactions - #110794

Draft
sakce wants to merge 3 commits into
masterfrom
posthog/improve-modeling-lineage-ux
Draft

sakce wants to merge 3 commits into
masterfrom
posthog/improve-modeling-lineage-ux

Conversation

@sakce

@sakce sakce commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Problem

People who inspect Modeling lineage graphs face inconsistent node movement and canvas controls across graph surfaces.

This follow-up to #110638 tests the canvas with dense graphs and separates graph navigation from resource actions.

Why: Consistent controls make large graphs easier to understand without covering the relationships people need to inspect.

Changes

  • Canvas controls keep one location: zoom and fit lower left, the minimap lower right, and Lineage controls upper right.
  • Node Detail graphs can drag and reset nodes under the existing flag, matching the main graph.
  • Node open actions show “Open in new tab,” while accessible labels retain the node name.
  • The node legend starts as a labeled, collapsed “Node types” control.
  • The full-screen action uses a diagonal expand icon, while fit-view keeps the four-corner icon.
Surface Before After
Main lineage Expanded legend covers the graph Collapsed labeled legend
Node detail Similar fit-view and full-screen icons Distinct fit-view and full-screen icons

The drag and tooltip changes are interaction-only, so the still images do not show them.

How did you test this code?

  • Browser QA used an invented graph with 120 nodes and 216 edges at wide and narrow canvas widths.
  • Browser QA covered Node Detail drag, reset layout, the shorter tooltip, control positions, and console errors.
  • Ran the focused nodeDetailSceneLogic.test.ts and modelsLineageLogic.test.ts suites.
  • Ran pnpm --filter=@posthog/frontend fix.
  • Ran pnpm --filter=@posthog/frontend typescript:check.
  • Ran ./bin/hogli ci:preflight --fix --against origin/pr-110638.

Test rationale: Existing logic tests cover isolated graph positions. Browser QA covers drag behavior and responsive canvas controls.

👉 Stay up-to-date with PostHog coding conventions for a smoother review.

Release status

  • No feature flag controls this change
  • This change is behind a feature flag and is not available to users
  • This change makes a previously flagged feature available to everyone

The Node Detail drag behavior follows DATA_MODELING_LINEAGE_NODE_DRAGGING. The other canvas changes are unflagged.

Automatic notifications

  • Publish to changelog?

Docs update

No docs update. No existing user-facing Modeling lineage documentation covers these canvas controls.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Agent: PostHog Slack app, GPT-5

  • Task session
  • Skills: /writing-ui-components, /writing-user-facing-copy, /writing-code-comments, /querying-local-postgres, /running-ci-preflight, /reviewing-with-coderabbit, and /writing-pr-descriptions.
  • The CodeRabbit CLI pass was skipped because the CLI was unavailable in this task environment.
  • A duplicate search found no matching open PR. This PR follows feat(data-modeling): add draggable lineage nodes #110638.
  • The screenshots and QA graph use invented local data.

Created with PostHog from a Slack thread

@sakce sakce self-assigned this Oct 2, 2026
@sakce
sakce added this pull request to stack #110798 October 2, 2026 13:11
@sakce sakce added the skip-inkeep-docs Use this label to skip an Inkeep docs PR in posthog.com label Oct 2, 2026 — with PostHog
@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

🤖 CI report

✅ Trunk lane — non-backend lane (fe:product:data_modeling)

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

⚠️ Complexity (TypeScript) — 5 functions above the limit (max 52)

Cyclomatic complexity above the limit in changed typescript files (10 for production files, 15 for test files). Warn only: worth simplifying when you next touch these functions.

Function Location Complexity Limit
LineageNode products/data_modeling/frontend/lineage/LineageNode.tsx:198 52 10
LineageGraphContent products/data_modeling/frontend/lineage/LineageGraph.tsx:70 21 10
NodeDetailLineage products/data_modeling/frontend/nodeDetail/NodeDetailLineage.tsx:22 20 10
<anonymous> products/data_modeling/frontend/nodeDetail/nodeDetailSceneLogic.ts:500 12 10
<anonymous> products/data_modeling/frontend/lineage/LineageGraph.tsx:193 11 10
✅ Duplication (Python) — clean

New Python code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.

✅ Duplication (TypeScript) — clean

New TypeScript code duplication introduced by this branch. Fails at 70+ tokens in app code, or 150+ tokens when both copies live in test files. Advisory while the gate proves itself: extract a shared helper instead of copying.

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

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

Total: 69.76 MiB · 🔺 +661 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.63 MiB · 22 files 🔺 +186 B (+0.0%) █████████░ 88.7% of 1.84 MiB
logged-out boot: index + App + bootApp (preloaded by every page, including /login)
src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
3.72 MiB · 660 files 🔺 +186 B (+0.0%) █████████░ 92.3% of 4.03 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
7.59 MiB · 2,407 files 🔺 +186 B (+0.0%) █████████░ 91.0% of 8.34 MiB
dashboard scene
src/scenes/dashboard/Dashboard.tsx
9.66 MiB · 3,389 files 🔺 +186 B (+0.0%) ███████░░░ 71.7% of 13.48 MiB
today home path
src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
7.60 MiB · 2,415 files 🔺 +186 B (+0.0%) █████████░ 88.5% of 8.58 MiB
events scene
src/scenes/activity/explore/EventsScene.tsx
9.28 MiB · 3,241 files 🔺 +186 B (+0.0%) ███████░░░ 73.5% of 12.64 MiB
replay detail scene
src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
12.12 MiB · 4,129 files 🔺 +186 B (+0.0%) ████████░░ 77.1% of 15.72 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/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/layout/navigation-3000/navigationLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/scenes/dashboard/dashboardLogic.tsx stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/lemon-ui/LemonMarkdown/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/RichContentEditor/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/lib/components/CodeSnippet/ stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 src/taxonomy/core-filter-definitions-by-group.json stays out of src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
🟢 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
🟢 src/scenes/session-recordings/player/sessionRecordingPlayerLogic.ts 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
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/scenes/project-homepage/ai-first/AiFirstHomepage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
🟢 src/scenes/project-homepage/today/TodayReportPage.tsx stays out of src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.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/index.tsx
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
854 B src/scenes/ChunkLoadErrorBoundary.tsx
Largest files eagerly shipped from src/index.tsx + src/scenes/App.tsx + src/scenes/bootApp.ts
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
220.3 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
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
100.5 KiB src/lib/api.ts
92.5 KiB src/products.tsx
69.4 KiB src/lib/lemon-ui/icons/icons.tsx
40.1 KiB src/lib/utils/eventUsageLogic.ts
38.7 KiB ../node_modules/.pnpm/@dnd-kit+core@6.0.8_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@dnd-kit/core/dist/core.esm.js
33.9 KiB ../node_modules/.pnpm/kea@4.0.0-pre.6_patch_hash=139b8d1f1304f9d9da452a9a1244c94ea679dbcb85687d8999563146879fb6f5_react@18.3.1/node_modules/kea/lib/index.cjs.js
29.0 KiB ../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/schemas.js
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 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
153.7 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
110.0 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.5 KiB src/products.tsx
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
Largest files eagerly shipped from src/scenes/dashboard/Dashboard.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 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
181.8 KiB src/queries/validators.js
153.7 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
110.0 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.5 KiB src/products.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx + src/scenes/project-homepage/ProjectHomepage.tsx + src/scenes/project-homepage/today/TodayHome.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 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
153.7 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
110.0 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.5 KiB src/products.tsx
90.6 KiB ../node_modules/.pnpm/@tiptap+core@3.20.6_@tiptap+pm@3.20.6/node_modules/@tiptap/core/dist/index.js
Largest files eagerly shipped from src/scenes/activity/explore/EventsScene.tsx
Size File
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 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
181.8 KiB src/queries/validators.js
153.7 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
110.0 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.5 KiB src/products.tsx
Largest files eagerly shipped from src/scenes/session-recordings/detail/SessionRecordingDetail.tsx
Size File
315.5 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/rrweb.js
306.2 KiB ../node_modules/.pnpm/posthog-js@1.435.5_@types+react@18.3.27_react@18.3.1/node_modules/posthog-js/dist/module.mjs
279.9 KiB src/taxonomy/core-filter-definitions-by-group.json
220.3 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
181.8 KiB src/queries/validators.js
153.7 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
110.0 KiB ../packages/quill/packages/quill/dist/index.js
100.5 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/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.20 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.20 MiB · 19 files 🔺 +186 B (+0.0%) ████░░░░░░ 38.4% of 5.72 MiB
Deferred (lazy) 2.11 MiB · 44 files no change n/a — loads on demand
Loader dist/toolbar.js 1.2 KiB no change █░░░░░░░░░ 6.0% of 19.5 KiB
Largest eagerly-shipped chunks
Size File
834.4 KiB dist/toolbar/toolbar-app-OIIR76UY.css
657.4 KiB dist/toolbar/chunk-chunk-PDXEE7YG.js
259.4 KiB dist/toolbar/chunk-chunk-EXS5VGKQ.js
138.2 KiB dist/toolbar/chunk-chunk-YTISI4G3.js
131.8 KiB dist/toolbar/chunk-chunk-FDH2IBXT.js
75.2 KiB dist/toolbar/toolbar-app-6G7F6XL7.js
69.0 KiB dist/toolbar/chunk-chunk-TSAL54PB.js
35.6 KiB dist/toolbar/chunk-chunk-U65TWWSR.js
21.0 KiB dist/toolbar/chunk-chunk-JYRTCG7P.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 — 🔺 +10.5 KiB (+0.0%)

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

Total: 959.83 MiB · 🔺 +10.5 KiB (+0.0%)

@greptile-apps

greptile-apps Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Retrigger

[Medium risk] Updates lineage canvas UI and responsive behavior.

The PR appears safe to merge; the missing narrow-width visual check is non-blocking.

Reviews (1) · Last reviewed commit: "fix(data-modeling): clarify lineage canv..."

position={props.minimapPosition ?? 'bottom-left'}
nodeStrokeWidth={2}
className="hidden lg:block border rounded shadow-sm"
className="hidden border rounded shadow-sm @min-[48rem]/lineage:block"

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.

P2 Narrow minimap state untested The minimap now appears only when the canvas reaches 48rem, but the existing lineage stories use a 1200px-wide container. Add a fixed-width visual story below the breakpoint so a regression that covers a cramped graph or hides the minimap at the wrong width is caught automatically.

Prompt To Fix With AI
This is a comment left during a code review.
Path: products/data_modeling/frontend/lineage/LineageGraph.tsx
Line: 301

Comment:
**Narrow minimap state untested** The minimap now appears only when the canvas reaches 48rem, but the existing lineage stories use a 1200px-wide container. Add a fixed-width visual story below the breakpoint so a regression that covers a cramped graph or hides the minimap at the wrong width is caught automatically.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@coderabbitai

coderabbitai Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: PostHog/posthog/.coderabbit.yaml

Review profile: QUIET

Plan: Enterprise

Run ID: a1be4d9a-a500-4fa4-87ac-26680733e3dc

📥 Commits

Reviewing files that changed from the base of the PR and between 1d6fc66 and 486d4f0.

📒 Files selected for processing (4)
  • products/data_modeling/frontend/lineage/LineageGraph.tsx
  • products/data_modeling/frontend/lineage/NodeTypeLegend.tsx
  • products/data_modeling/frontend/lineage/modelsLineageLogic.ts
  • products/data_modeling/frontend/nodeDetail/NodeDetailLineage.tsx

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 7 remain after this review.


📝 Walkthrough

Walkthrough

The lineage graph now combines its container class with the optional caller class and uses a 48rem container breakpoint for the minimap. The node-type legend starts collapsed and displays a “Node types” label when collapsed. The node detail full-screen control uses IconExpand45 and the tooltip “Full screen.”

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 486d4

The minimap responds to graph width, the legend starts collapsed with a label, and the full-screen control has the updated icon and tooltip. No actionable merge risk remains.

🚥 Pre-merge checks | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description includes the required Problem, Changes, testing, release status, documentation, and agent context sections. It explains the user-visible changes and lists validation steps. However, th… Clarify the release status for this mixed change using the repository’s supported convention. The description must not state that the entire change is unavailable when unflagged canvas changes are already available.
Full details: Description check

Explanation

The description includes the required Problem, Changes, testing, release status, documentation, and agent context sections. It explains the user-visible changes and lists validation steps. However, the selected release status says the change is fully behind a feature flag, while the description states that only Node Detail dragging is flagged and the other canvas changes are unflagged.

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Comment @coderabbitai help to get the list of available commands.

@posthog

posthog Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

👋 Visual changes detected for this PR.

Review and approve in PostHog Visual Review

If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix.

Install the Visual Review Chrome extension to see visual review results at the top of your pull requests.

@trunk-io

trunk-io Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

Static Badge   Static Badge   Static Badge

View Full Report ↗︎ ⋅ Docs

Base automatically changed from posthog/data-modeling-draggable-lineage-nodes to master October 2, 2026 14:07
@trunk-io

trunk-io Bot commented Oct 2, 2026 •

Copy link
Copy Markdown

✨ Stack submitted to Merge by Jovan Sakovic (@sakce). It will be added to the merge queue once all branch protection rules pass. See more details here.

@sakce sakce changed the title fix(data-modeling): clarify lineage canvas controls fix(data-modeling): align lineage canvas interactions Oct 2, 2026
sakce added 3 commits October 2, 2026 17:17
Generated-By: PostHog Desktop
Task-Id: e3bdd69b-e26b-4d2f-b324-fb57dc5226c2
Generated-By: PostHog Desktop
Task-Id: e3bdd69b-e26b-4d2f-b324-fb57dc5226c2
Generated-By: PostHog Desktop
Task-Id: e3bdd69b-e26b-4d2f-b324-fb57dc5226c2
@sakce
sakce force-pushed the posthog/improve-modeling-lineage-ux branch from 4db8e5c to 9a56793 Compare October 2, 2026 15:17

This branch has not been deployed

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

Labels

skip-inkeep-docs Use this label to skip an Inkeep docs PR in posthog.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant