Replace Jinja UI with React frontend - #251
Conversation
d315b03 to
0f35f6f
Compare
266a6d8 to
78b1ebe
Compare
Co-authored-by: Cursor <cursoragent@cursor.com>
78b1ebe to
5941d42
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 72 out of 91 changed files in this pull request and generated no new comments.
Suppressed comments (5)
frontend/index.html:1
- The HTML references
/favicon.ico, but this PR addsfrontend/public/favicon.svg. Unless a.icofile is also present/generated elsewhere, browsers will 404 the icon. Either change the link to/favicon.svg(and set an appropriatetype, e.g.image/svg+xml) or add afavicon.icoasset tofrontend/public/.
frontend/src/hooks/useConfigLoad.ts:1 - The non-null assertions (
find(...)!) can crash at runtime if the backing array changes (e.g., async refresh) or an unexpected id is passed. Guard these lookups and handle the 'not found' case by setting an error + returning toidle(or re-opening the conflict state) instead of throwing.
frontend/src/components/FeaturesModal.tsx:1 - This category grouping is recomputed on every render. In this modal, renders can be frequent (search input, toggles), and
featurescan be large. Wrap this reduction inuseMemokeyed onfeaturesto avoid repeated work and reduce UI jank.
frontend/src/components/FeaturesModal.tsx:1 - Using a
divwithrole=\"button\"as a click target that contains another interactive control (TriStateCheckboxrenders abutton) creates nested interactive elements, which is problematic for keyboard and assistive tech. Prefer making the outer container a real<button type=\"button\">for the scroll action (or make it non-interactive and add a dedicated 'jump to category' button), and ensure the checkbox control is not nested inside another button-like element.
frontend/src/featureDeps.ts:1 reducedDependencyEdgescallsreachableWithin(...)inside a nested loop, which can become expensive with many selected features and dependency edges (repeated DFS per candidate edge). Consider memoizingreachableWithin(start)perstartfor the currentidsset, or computing reachability once per node before the inner loop to avoid repeated graph traversals.
5941d42 to
9906aab
Compare
|
The security thing here doesn't look great here... I'd definitely want that one explained first! |
Yes, this one looks real. I will fix this and other points raised by you. This would have exposed custom build server to the world (bypassing apache), which is not catastrophic but not good either. |
9906aab to
3f150a8
Compare
|
@peterbarker Addressed all your points. |
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
3f150a8 to
5f78cf4
Compare
|
README.mnd is trivial. DId you mean to remove latest and use master? New findings, ranked
Where I disagree with Codex. Its highest-severity finding was that the build-complete screen offers the download on SUCCESS before the archive exists. That is wrong. The progress updater |
Should be merged after #249.
Renames the
webpackage tobackend, adds a React (Vite) frontend that talks to the existing API, and updates docker-compose, README, and flake8 so the new layout runs cleanly locally and in CI.Made with Cursor