--- name: audit-ui-thread-safety description: Prevent UI freezes and ensure a responsive user experience by validating threading rules and migrating blocking calls off the Event Dispatch Thread (EDT). --- # Skill: UI Thread Safety & Responsiveness You are tasked with preventing UI freezes and ensuring a responsive user experience by validating threading rules. ## Objective Prevent UI freezes and ensure a responsive user experience by validating threading rules. ## Workflow Instructions ### 1. Baseline - Run `./gradlew test` and `./gradlew verifyPlugin` to ensure the project is in a good state before refactoring. ### 2. Audit EDT Usage - Search for usages of `runInEdt`, `invokeLater`, and `invokeAndWait`. ### 3. Identify Blocking Calls - Ensure no I/O operations (file access, network calls) or heavy computations occur within these UI blocks. ### 4. Migrate to Background - Refactor heavy tasks to run on background threads using `Task.Backgroundable` or `ReadAction.nonBlocking`. ### 5. Check Modality - Verify that modal dialogs do not block the UI thread unnecessarily. ### 6. Verify - Run `./gradlew testClasses` to ensure safe refactoring. - Run `./gradlew test` and `./gradlew verifyPlugin` to ensure no regressions. - Run the plugin in a sandbox (`./gradlew runIde`) and perform key actions while monitoring for UI freezes. - Suggest manual test steps: Check the code changes made and write test steps for a user to execute that will trigger the code paths that have changed. If needed, add logging statements to verify that the code paths have successfully run. ### 7. Report & Review - Summarize the threading fixes. - **Test Location:** Explicitly state *where* in the IDE the user should go to test the changed functionality (e.g., "Go to Preferences > Languages & Frameworks > Flutter"). - **Action:** Ask the user to review the changes closely to ensure no deadlocks or UI freezes are introduced. - **Do not commit or push.** - Provide a suggested Git commit message (e.g., "Fix UI freeze: Move heavy computation to background task").