Skip to content

Dashboard: the frontend build fails on macOS (case collision), silently, and serve() then fails in StaticFilesComponent #659

Closed

Description

@a-ratz

Describe the bug

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. Run the pizza example with USE_DASHBOARD = True on such an install: the empty build message and the ValueError above.

Activity

  1. 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
  2. added 2 commits that reference this issue on Oct 13, 2026
  3. a-ratz commented on Oct 13, 2026

    @a-ratz
    MemberAuthor

    Fixed by #660 (merged into ui-rework; reaches main with #623).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions