Blacksite/docs/editor/evaluations/native-dialog-responsiveness
2026-07-17 23:40:49 -04:00
..
native-open-dialog.png Finish non-blocking native dialog workflows 2026-07-12 18:06:57 -04:00
README.md feat: complete M2 content workspace and inspector 2026-07-17 23:40:49 -04:00

Native Dialog Responsiveness Evaluation

Evidence record — not current product guidance. Use the documentation index for current behavior and architecture.

Date: 2026-07-12 Branch: codex/non-blocking-native-dialogs Implementation commits: d038cf3 and the closing commit for Gitea #52

This record captures live acceptance for the non-blocking native-dialog broker. The permanent workflow contract lives in the native-dialog guide.

Live Editor Evidence

The native KDE portal Open dialog below was launched through the production SceneIoRequest::Open path in a native Wayland debug editor and held open for 12 seconds.

Native KDE Open dialog over the still-rendered Blacksite editor

During the hold, Hyprland continued to report Blacksite as mapped, visible, input-capable, and native Wayland. No application-not-responding client appeared. Cancel closed the picker without changing the active scene, and the editor then stopped cleanly.

Acceptance Results

Area Result Evidence
Frame responsiveness Pass A blocked-dialog regression test advances eight Bevy frames before releasing the worker; live editor remained compositor-responsive during the 12-second picker hold
Shared coverage Pass Every rfd::FileDialog and rfd::MessageDialog construction is inside a NativeDialogBroker::request worker closure
Request exclusivity Pass Focused test rejects a second request while one is pending and permits work after one-shot completion
Cancellation Pass Live Open cancellation preserved the active scene; workflow callbacks retain explicit non-mutating cancel branches
Main-thread application Pass Paths/results cross the broker, while scene, asset, history, registry, project, and collaboration work remains in &mut World completions
Stale initiating state Pass Prefab/export completions reject missing initiating entities; composition validates against current state after selection
Packaged acceptance Deferred Explicitly deferred by project-owner direction; no packaged result is claimed here

Automated Verification

Command/suite Result
cargo fmt --all -- --check Pass
cargo check --workspace --all-targets Pass
cargo clippy --workspace --all-targets -- -D warnings Pass
cargo test --workspace Pass
Focused native-dialog lifecycle and frame-progress tests 2 passed
git diff --check Pass