Skip to content

ENG-1596. ENG-1597, ENG-1598: Display, multi-select, and copy extracted nodes#964

Open
sid597 wants to merge 4 commits intomainfrom
eng-1596-display-extracted-node-as-reviewable-blocks-with-supporting
Open

ENG-1596. ENG-1597, ENG-1598: Display, multi-select, and copy extracted nodes#964
sid597 wants to merge 4 commits intomainfrom
eng-1596-display-extracted-node-as-reviewable-blocks-with-supporting

Conversation

@sid597
Copy link
Copy Markdown
Collaborator

@sid597 sid597 commented Apr 15, 2026

Doing all 3 issues in a single PR because the surface area that these 3 contain is mostly the same. The code is not hard to review and there is no scope creep in it.


Open with Devin

Replaces the skeleton's hardcoded SAMPLE_NODES + fixed EXPANDED_INDICES
with a props-driven MainContent. Accepts ExtractedNode[], derives the
filter tabs from the actual nodes, wires per-row expand/collapse, wires
the type-filter tabs, and renders an empty state when no nodes.
@linear-code
Copy link
Copy Markdown

linear-code bot commented Apr 15, 2026

@supabase
Copy link
Copy Markdown

supabase bot commented Apr 15, 2026

This pull request has been ignored for the connected project zytfjzqyijgagqxrzbmz because there are no changes detected in packages/database/supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@sid597 sid597 marked this pull request as draft April 15, 2026 08:41
devin-ai-integration[bot]

This comment was marked as resolved.

graphite-app[bot]

This comment was marked as resolved.

@sid597 sid597 marked this pull request as ready for review April 15, 2026 10:11
@sid597 sid597 changed the title ENG-1596: Make extract results panel data-driven ENG-1596. ENG-1597, ENG-1598: Display, multi-select, and copy extracted nodes Apr 15, 2026
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

graphite-app[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 1 new potential issue.

View 6 additional findings in Devin Review.

Open in Devin Review

Comment on lines +43 to +45
useEffect(() => {
setSelected(new Set());
}, [nodes]);
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.

🟡 Stale expandedNodes and activeFilter state when nodes prop changes

When the nodes prop changes (e.g., user runs a new extraction), the useEffect at MainContent.tsx:43-45 resets only selected but does not reset expandedNodes or activeFilter. This causes two problems: (1) nodes in the new result set will appear pre-expanded if they share indices with previously expanded nodes from a different extraction, and (2) if activeFilter was set to a node type (e.g., "pattern") that doesn't exist in the new results, the user sees an empty filtered list with no obvious explanation.

Suggested change
useEffect(() => {
setSelected(new Set());
}, [nodes]);
useEffect(() => {
setSelected(new Set());
setExpandedNodes(new Set());
setActiveFilter("all");
}, [nodes]);
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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.

1 participant