π¨ Palette: Make installation status text selectable - #265
dieterolson wants to merge 1 commit into
Conversation
This allows users to easily copy paths, dependency statuses, or error messages from the installation status panel, improving the troubleshooting experience. Also adds keyboard interaction flags for accessibility. Co-authored-by: dieterolson <198168927+dieterolson@users.noreply.github.com>
|
π Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a π emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
βΉοΈ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with π while any review is running, comments if it has suggestions, and reacts with π once all reviews finish with no findings. |
There was a problem hiding this comment.
π‘ Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 95c493efd9
βΉοΈ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with π.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| lbl.setTextInteractionFlags( | ||
| Qt.TextInteractionFlag.TextSelectableByMouse | ||
| | Qt.TextInteractionFlag.TextSelectableByKeyboard | ||
| ) |
There was a problem hiding this comment.
Add the required canonical handoff update
This implementation commit adds user-visible behavior, but its changed-file set does not update docs/development/HANDOFF.md, which remains absent from the commit. That leaves no durable record of the objective, validation results, compatibility constraints, or continuation state required for implementation commits.
AGENTS.md reference: AGENTS.md:L267-L274
Useful? React with πΒ / π.
| lbl.setTextInteractionFlags( | ||
| Qt.TextInteractionFlag.TextSelectableByMouse | ||
| | Qt.TextInteractionFlag.TextSelectableByKeyboard | ||
| ) |
There was a problem hiding this comment.
Track the new feature in the development log
This introduces a new live UX feature without modifying docs/development/DEVELOPMENT_LOG.md; the existing log contains no entry for the selectable setup-status labels. Consequently, this work is orphaned from its governing issue, branch, verification state, and next step.
AGENTS.md reference: AGENTS.md:L336-L341
Useful? React with πΒ / π.
| ### UX Updates | ||
|
|
||
| - Added `Qt.TextInteractionFlag.TextSelectableByMouse | Qt.TextInteractionFlag.TextSelectableByKeyboard` to the installation status labels in `src/bitnet_launcher/gui/setup_dialog.py` so users can easily select and copy paths, dependency statuses, or error messages. |
There was a problem hiding this comment.
Record the SPEC change as a keyed changelog row
The commit appends another free-form UX Updates section rather than the required single changelog row keyed by a PR or governing issue. Without the | YYYY-MM-DD | #<PR or issue> | summary | form, this change loses the collision-safe attribution required for concurrent contributions.
AGENTS.md reference: AGENTS.md:L382-L389
Useful? React with πΒ / π.
| ## 2026-09-15 - Selectable Status Labels | ||
|
|
||
| **Learning:** Informational status labels (like paths, dependency statuses, or error messages in setup dialogs) are often unselectable by default in PyQt6, forcing users to manually transcribe paths or error messages if they need to copy them. | ||
| **Action:** When creating status elements containing information a user might need to copy, always make them selectable by applying with both mouse and keyboard flags (e.g., ). |
There was a problem hiding this comment.
Remove the duplicated malformed palette entry
This first Selectable Status Labels entry is immediately repeated by a corrected version, while its action text has lost the QLabel and setTextInteractionFlags identifiers and leaves an empty example. Keeping both adds contradictory-looking, unusable guidance to the agent palette instead of the single requested learning.
AGENTS.md reference: AGENTS.md:L106-L111
Useful? React with πΒ / π.
| lbl.setTextInteractionFlags( | ||
| Qt.TextInteractionFlag.TextSelectableByMouse | ||
| | Qt.TextInteractionFlag.TextSelectableByKeyboard | ||
| ) |
There was a problem hiding this comment.
Make keyboard-selectable labels reachable by keyboard
When TextSelectableByKeyboard is set on a QLabel, Qt automatically gives it ClickFocus, which does not put it in the Tab focus chain. Because these labels have no shortcut or other programmatic focus path, a keyboard-only user still cannot reach them to select or copy their text; explicitly assign an appropriate Tab/Strong focus policy when enabling keyboard selection.
Useful? React with πΒ / π.
π¨ Palette: Make installation status text selectable
What:
Added
Qt.TextInteractionFlag.TextSelectableByMouseandQt.TextInteractionFlag.TextSelectableByKeyboardto the_lbl_root,_lbl_llama,_lbl_models,_lbl_deps, and_lbl_setup_envstatus labels inSetupDialog.Why:
Informational labels showing paths and environment statuses in setup dialogs are often useful to copy when troubleshooting issues. Previously, these were unselectable.
Accessibility:
Added keyboard-selectable text interaction flags so keyboard users can also interact with and copy the text.
PR created automatically by Jules for task 7750603979353054202 started by @dieterolson