Synchronous file pickers stall the UI and the control channel
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
Research direction
Start with crates/ui-studio/src/lib.rs at pick_open and pick_save, then inspect crates/ui-egui/src/lib.rs at pick_folder and follow the other picker call sites for bounce and presets. Read the related UI crate discussion in #14 for context, then trace how picker results reach commands. Done means the UI repaints and the control channel responds while a picker is open, and cancelling leaves state unchanged in tests using a fake picker service.
Written by the indexing model from the issue text.
Description
Why
The pickers are exposed to the UI as Fn(&str) -> Option<String>. A call blocks until the dialog closes, and the contract cannot express a picker that is still pending or one that was cancelled, so the interface and the control channel stall while a dialog is open.
Scope
- Define a request/result lifecycle: a picker request, a pending state, and a result (chosen, cancelled).
- Apply it to open, save, bounce, browser folder and presets pickers.
- The UI keeps drawing while a dialog is open; commands that need the result continue when it arrives.
Done when
- With a picker open, the UI still repaints and the control channel answers.
- Cancel leaves state unchanged, covered by tests with a fake picker service.
References
crates/ui-studio/src/lib.rs(pick_open,pick_save),crates/ui-egui/src/lib.rs(pick_folder)- #14 (UI crates smells)
- Dominant language
- Rust
- Stars
- 8
- Forks
- 1
- Avg merge
- 32m
- Merged PRs (30d)
- 1
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from transit-audio/transit
-
tracking
Difficulty 1/5 Under an hour Newbie friendliness 95/100
transit-audio/transit#228 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
transit-audio/transit#156 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
transit-audio/transit#152 ·
-
area:ui bug
Difficulty 4/5 3-5 days Newbie friendliness 68/100
transit-audio/transit#244 ·
-
area:audio
Difficulty 5/5 Over a week Newbie friendliness 18/100
transit-audio/transit#243 ·
All issues in transit-audio/transit
Similar issues
-
ai_p2 bug comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
ClickHouse/ClickHouse#128306 · 1 comment ·
Maintainers usually reply within 1 day
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
bug triage
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
area:cli bug priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day