fix: Build embedded UI from local source by franciscojavierarceo · Pull Request #6526 · feast-dev/feast
What changed
- Backport fix: Build embedded UI from local source #6525 to
v0.64-branch. - Update
make build-uito build the checked-outui/source and copy the generated build intosdk/python/feast/ui/build. - Keep
build-ui-localas an alias for the same build path. - Backport the explicit MCP enablement guard from
masterso mocked config does not accidentally mount MCP routes in unit tests. - Backport the
masterREST route registration test simplification so the test verifies router inclusion directly instead of depending on mockedRestRegistryServerconstruction side effects. - Backport the
masterallowlist comment for the OpenLineage placeholder API key sodetect-secrets --all-filespasses on the release branch.
Why
feast ui packages the embedded React app from sdk/python/feast/ui/build. The previous release build target pulled @feast-dev/feast-ui --latest from npm, but npm's latest published package is still 0.57.0. That stale UI treats registryPath as a monolithic registry blob URL, so with the newer Python server generating /api/v1, it requests GET /api/v1 and receives a 404.
Building the embedded UI from the repo-local ui/ source keeps the frontend bundle aligned with the REST-backed Python UI server for the 0.64 release branch.
The test-only backports are included because v0.64-branch unit tests use a MagicMock config. Without requiring mcp.enabled is True, the mock is truthy and the server mounts MCP routes. After that guard, the route-path assertion still depends on mocked server construction, so this PR also matches master by verifying register_all_routes directly.
The OpenLineage manifest change matches master; it is a placeholder value, not a real secret.
Fixes #6519.
Validation
make -n build-uipython3 -m py_compile sdk/python/tests/unit/api/test_api_rest_registry_server.py sdk/python/feast/api/registry/rest/rest_registry_server.py
I could not run the full UI build locally because yarn is not installed in this shell. I also could not run the targeted Python test locally because uv is not installed in this shell, and I could not run pre-commit locally because pre-commit is not installed in this shell.