Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Synchronous file pickers stall the UI and the control channel

Open
#39 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Active
Tech stack
rust
Domain
desktop, frontend

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

area:ui bug

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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from transit-audio/transit

All issues in transit-audio/transit

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.