45 lines
2.5 KiB
Markdown
45 lines
2.5 KiB
Markdown
# Native Dialog Responsiveness Evaluation
|
|
|
|
> **Evidence record — not current product guidance.** Use the [documentation index](../../../README.md) 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](../../native-dialogs.md).
|
|
|
|
## 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.
|
|
|
|

|
|
|
|
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 |
|