feat: sync loading screens with real backend progress#581
Conversation
🚀 fal.ai Preview Deployment
TestingConnect to this preview deployment by running this on your branch: 🧪 E2E tests will run automatically against this deployment. |
❌ E2E Tests failed
Test ArtifactsCheck the workflow run for screenshots, traces, and failure details. |
944d75a to
37d7f28
Compare
ryanontheinside
left a comment
There was a problem hiding this comment.
As discuss offline with Emran, the cycling loading message is great, but would be even better as purely technical messages that convey what is actually happening (ie "loading model...", "running warmup..."). Since this is the first output users will see from the system it is worth being opinionated about
e739d4f to
dbcc225
Compare
Replace decorative rotating loading messages with real backend substage reporting. Add cloud status text label to header. Backend tracks connection and pipeline loading stages, frontend displays them directly. Signed-off-by: emranemran <[email protected]>
dbcc225 to
ce9adf9
Compare
@ryanontheinside done! |
The cloud button's accessible name changed from "Cloud disconnected" to just "Disconnected" when text labels were added to the button. Use a title-based CSS selector instead of getByRole name matching. Signed-off-by: emranemran <[email protected]>
…age() Co-Authored-By: Claude Opus 4.6 <[email protected]> Signed-off-by: Rafał Leszko <[email protected]>
|
Pushed a small fix. Merging. |

The loading screens previously showed static text ("Loading..." / "Connecting to cloud...") with no indication of what was actually happening. This PR makes the backend report its current substage during cloud connection and pipeline loading, and the frontend displays it in real time.
The backend sets a string variable (
_connect_stageor_loading_stage) before each slow operation. The frontend polls the status endpoint every 1-2 seconds and displays whatever string the backend currently reports. When the operation finishes, the backend clears the variable.Cloud connection loading screen
When connecting to fal cloud, the user sees these messages in sequence:
Backend (
cloud_connection.py): A_connect_stagefield is set at each step inconnect()andstart_webrtc(), and cleared on completion or error. Exposed viaconnect_stageinCloudStatusResponse.Frontend (
useCloudStatus.tsx): The polled status now includesconnect_stage. Passed throughStreamPage→VideoOutputascloudConnectStage.Pipeline loading screen
When loading a heavy ML pipeline (e.g. LongLive, Krea), the user sees:
For lightweight pipelines (passthrough, gray, optical-flow, etc.) and plugin pipelines, the user sees:
Backend (
pipeline_manager.py): A_loading_stagefield is set before calling the pipeline constructor, and astage_callbackfunction is passed into the constructor. Each pipeline callsstage_callback("Loading diffusion model...")etc. before its heavy operations. Exposed vialoading_stageinPipelineStatusResponse.Frontend (
usePipeline.ts): The polled status now includesloading_stage. Passed throughStreamPage→VideoOutputaspipelineLoadingStage.Other changes
Test plan