🧩 Fix: custom components theme+ job cancellation bug + add modals + block config view + generator view#45
Conversation
There was a problem hiding this comment.
Pull request overview
This PR implements a comprehensive fix for job cancellation logic to prevent background processing from continuing after cancellation, adds a reusable modal component to replace browser confirm dialogs, fixes theme management to use shadcn as the source of truth, and improves the Generator validation workflow.
- Adds job cancellation checkpoints at 4 critical locations in the pipeline execution flow
- Replaces browser
confirm()calls with a customConfirmModalcomponent using Radix UI - Fixes theme synchronization between shadcn and Primer component libraries
Reviewed changes
Copilot reviewed 25 out of 27 changed files in this pull request and generated 16 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_job_cancellation.py | Comprehensive test suite for job cancellation at various checkpoints |
| lib/workflow.py | Adds cancellation checks before block execution in normal and multiplier pipelines |
| lib/job_processor.py | Critical fix to prevent continuing to next seed after inner loop cancellation |
| frontend/src/components/ui/confirm-modal.tsx | New reusable confirmation dialog component with variants |
| frontend/src/App.tsx | Refactors theme management to use shadcn as source of truth |
| frontend/src/pages/Generator.tsx | Removes auto-revalidation, adds manual verify button, improves UX |
| frontend/src/components/pipeline-editor/BlockConfigPanel.tsx | Fixes Monaco Editor to use controlled value prop with proper sync logic |
| frontend/src/components/ui/sonner.tsx | Updates theme integration to use resolvedTheme |
| pyproject.toml | Adds pytest-timeout dependency for test stability |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
| height="200px" | ||
| defaultLanguage="python" | ||
| defaultValue={value} | ||
| value={value} |
There was a problem hiding this comment.
Changing Monaco Editor from defaultValue to value prop makes it a fully controlled component, which can cause performance issues and cursor jumping during typing. Monaco Editor is designed to use defaultValue for initialization. The sync logic should handle updates by calling editor.setValue() instead of changing the value prop. Consider reverting to defaultValue and using the editor instance API for updates.
Description
Related Issue
Checklist
make formatpassesmake pre-mergepasses