You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Dashboard: the frontend build fails on macOS (case collision), silently, and serve() then fails in StaticFilesComponent #659
On a fresh clone of ui-rework, serve(dashboard=True) (for example examples/01-getting-started/01_declarative_pizza.py with USE_DASHBOARD = True) prints
[Dashboard] Building frontend for production...
[Dashboard] Warning: Production build failed:
[Dashboard] Dashboard may not be available
[Dashboard] Opening browser to http://localhost:8344...
and then crashes with ValueError: StaticFilesComponent: Static Files dir does not exist: .../src/flock/api/static.
Four things go wrong:
The build fails on a case-insensitive file system (the Mac's actual cause, found once the launcher printed the output): components/publish/ holds PickedUpBy.tsx and pickedUpBy.ts; on macOS and Windows ./PickedUpBy resolves to the .ts helper first, and tsc fails with TS1149, TS1192 and TS1261. Linux finds the .tsx.
The build fails on current dependencies.npm run build is tsc && vite build. With the dependencies package.json allows today (@xyflow/react 12.12.0 instead of the locked 12.8.6, which an install gets whenever npm does not keep to package-lock.json), tsc fails in src/components/graph/GraphCanvas.tsx (508, 509): the drag handlers take React.MouseEvent | MouseEvent, and OnNodeDrag now passes MouseEvent | TouchEvent.
The reason is not shown. The launcher prints only the build's stderr, and tsc writes its errors to stdout, so the message after "Production build failed:" is empty.
The failure surfaces as an unrelated error. With no earlier build in src/flock/api/static, the launcher still opens the browser, and the server fails later in StaticFilesComponent with a message that does not mention the build.
Expected behavior
The dashboard builds on macOS and Windows, and with the locked and the current releases of its dependencies.
A failed build prints what the build printed (stdout and stderr).
With no build to serve, serve(dashboard=True) stops before opening the browser, with an error that says the dashboard build failed and where to look.
CI builds the dashboard on macOS and with the newest releases package.json allows as well (next to the locked Linux build it runs today), so a case collision or an upstream release that breaks the build fails the PR instead of a user's first serve().
To reproduce
Clone ui-rework; in src/flock/frontend remove package-lock.json, run npm install --no-package-lock, then npx tsc: two TS2322 errors in GraphCanvas.tsx.
Run the pizza example with USE_DASHBOARD = True on such an install: the empty build message and the ValueError above.
changed the title [-]Dashboard: a failed frontend build is silent, and serve() then fails in StaticFilesComponent[/-][+]Dashboard: the frontend build fails on macOS (case collision), silently, and serve() then fails in StaticFilesComponent[/+]on Oct 13, 2026
Activity
ci: build the dashboard on macOS too (#659)
ci: the latest-dependencies build installs with npm 11 (#659)
fix: the dashboard builds on macOS and Windows: pickedUpBy.ts is reac…
[-]Dashboard: a failed frontend build is silent, and serve() then fails in StaticFilesComponent[/-][+]Dashboard: the frontend build fails on macOS (case collision), silently, and serve() then fails in StaticFilesComponent[/+]docs: changelog names the case collision as the Mac's cause (#659)
Merge pull request #660 from whiteducksoftware/fix/659-dashboard-build
a-ratz commentedon Oct 13, 2026
Fixed by #660 (merged into
ui-rework; reachesmainwith #623).