-
Notifications
You must be signed in to change notification settings - Fork 7
Release #103
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…ard-page Feature/sample dashboard page
…ard-page Feature/sample dashboard page
…t with search bar
…ard-page feat: add highlight circle for the selected candidate and integrate i…
Feature/sprint2
# Conflicts: # app/dashboard/components/elimination-tree/index.tsx
…dd difficulty/margin for sample file ( not these number is not real)
…ard-page Feature/sample dashboard page
…ard-page Feature/sample dashboard page
…oard-page Feature/sample dashboard page
fix: search records still exist when the text was cleared in search bar; change arrow icons; change the style of fold and unfold button for toc;
chore: delete floatingmenu(useless now)
Feature/yilin2
chore: update versions of @radix-ui/react-checkbox and @radix-ui/reac…
…e page and make search scrollable
# Conflicts: # app/sample/components/sample-selector.tsx
Feature/comments emily
feat: update some comment
…describe-raire-result
chore: delete unused code in prettyprint_assertions_and_pictures and …
…elopers/AuditVisualizer into feature/comment-lwz
Feature/comment lwz
Feature/comment gjm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This release adds a comprehensive dashboard UI for RAIRE assertion explanations and multi-winner elimination visualizations, along with supporting utilities, tour integration, and documentation updates.
- Introduces DescribeRaireResult component to render solver outcomes and user-friendly error messages.
- Implements Dashboard page with assertion table, elimination tree (default and step-by-step), modals, and tour controls.
- Adds deep-clone utility, one-click animation for elimination steps, tour watchers/providers, and updates README.
Reviewed Changes
Copilot reviewed 116 out of 116 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| app/explain-assertions/components/describe-raire-result.tsx | New component to display RAIRE results and errors |
| app/dashboard/page.tsx | Main dashboard layout integrating cards, tables, and tree |
| app/dashboard/components/step-by-step-view/utils.ts | Helper deepCloneTree for tree data cloning |
| app/dashboard/components/step-by-step-view/one-click-animation.tsx | One-click animation component for elimination process |
| app/dashboard/components/step-by-step-view/index.tsx | Wrapper for step-by-step elimination view |
| app/dashboard/components/elimination-tree/step-by-step.tsx | Visual indicator component for step navigation |
| app/dashboard/components/elimination-tree/search-dropdown.tsx | Searchable dropdown for candidate selection |
| app/dashboard/components/elimination-tree/index.tsx | Tabs and locking logic for default vs step-by-step tree |
| app/dashboard/components/elimination-tree/default-candidate-list-bar.tsx | Avatar list and search for default tree view |
| app/dashboard/components/elimination-tree/constants.ts | Defines Candidate type |
| app/dashboard/components/elimination-tree/candidate-list-bar.tsx | Avatar list for step-by-step tree view |
| app/dashboard/components/card.tsx | Reusable Card UI component |
| app/dashboard/components/audit-progress-animation.tsx | Animation showing audit progress |
| app/dashboard/components/assertions-details-modal.tsx | Modal showing paginated assertion details |
| app/dashboard/components/assertion-table.tsx | Table with assertion list and inline audit animation |
| app/dashboard/components/Information-icon-text.tsx | Tooltip-with-icon component for “Need Help?” links |
| app/TourSyncWatcher.tsx | Syncs tour steps to candidate count |
| app/TourStepWatcher.tsx | Triggers side effects on specific tour steps |
| app/ClientTourProvider.tsx | Wraps app in Reactour TourProvider and watchers |
| README.md | Updated project documentation and technology list |
Comments suppressed due to low confidence (3)
app/explain-assertions/components/describe-raire-result.tsx:48
- [nitpick] The message 'Output is wrong format' is grammatically unclear. Consider revising to something like 'Unexpected output format' to guide users more effectively.
<p className="error">Output is wrong format</p>
app/dashboard/page.tsx:33
- Variable
judge_select_new_treeuses snake_case, but the codebase uses camelCase. Rename tojudgeSelectNewTreefor consistency.
const judge_select_new_tree = candidateCount >= 6;
README.md:8
- The team member table header separator line has no column titles. Restore the header row to match markdown table syntax, e.g.,
| Name | Roles |followed by| --- | --- |.
| ----------- | ----------------------------------- |
| } else if (err === "TimeoutCheckingWinner") { | ||
| errorMessage = | ||
| "Timeout checking winner - either your problem is exceptionally difficult, or your timeout is exceedingly small."; | ||
| } else if (err.hasOwnProperty("TimeoutFindingAssertions")) { |
Copilot
AI
Jun 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Checking err.hasOwnProperty assumes err is an object, but earlier branches treat it as a string. Add a type guard before calling hasOwnProperty to avoid runtime errors.
| } else if (err.hasOwnProperty("TimeoutFindingAssertions")) { | |
| } else if (typeof err === "object" && err !== null && err.hasOwnProperty("TimeoutFindingAssertions")) { |
| type CandidateListBarProps = { | ||
| selectedWinnerId: number | null; // ID of the currently selected winner | ||
| handleSelectWinner: (id: number) => void; // Callback function to handle winner selection | ||
| useAvatar: boolean; // Flag to determine if avatars should be used (currently unused in component) |
Copilot
AI
Jun 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The useAvatar prop is declared but never used. Consider removing it or implementing its logic to avoid confusion.
| useAvatar: boolean; // Flag to determine if avatars should be used (currently unused in component) |
| // Helper function to deep clone tree data | ||
| function deepCloneTree(tree: TreeNode | undefined | null): TreeNode | null { | ||
| if (!tree) return null; | ||
| return JSON.parse(JSON.stringify(tree)); |
Copilot
AI
Jun 3, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using JSON.parse(JSON.stringify(...)) for deep cloning can fail on dates, functions, and special object types. Consider using a utility like structuredClone or a library for robust deep cloning.
| return JSON.parse(JSON.stringify(tree)); | |
| return structuredClone(tree); |
…st-feedback Feature/usability test feedback
No description provided.