-
-
Notifications
You must be signed in to change notification settings - Fork 653
[ENHANCEMENT] Implement In-App Feedback System with Auto Log Collection - Issue #2023 #4278
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
skanda890
wants to merge
21
commits into
marticliment:main
from
skanda890:feature/issue-2023-feedback-system
Closed
[ENHANCEMENT] Implement In-App Feedback System with Auto Log Collection - Issue #2023 #4278
skanda890
wants to merge
21
commits into
marticliment:main
from
skanda890:feature/issue-2023-feedback-system
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#1) * feat: Add auto-dismiss functionality to failure dialogs with configurable timeout - Add auto-dismiss timer (default 10 seconds, configurable) - Display countdown timer with visual feedback - Pause timer on hover for user convenience - Add 'Keep Open' button to cancel auto-dismiss - Add settings toggle to enable/disable feature - Maintain user choice persistence Closes #2097 * feat: Add settings UI for auto-dismiss configuration and unit tests - Add settings page for auto-dismiss configuration - Add timeout slider (3-60 seconds) - Add enable/disable toggle - Create comprehensive unit tests - Add localization strings - Add documentation Related to #2097 * refactor: Simplify auto-dismiss logic by removing state flags and branching - Remove _autoDismissCancelled and _isHovered flags - Model cancelled state as null timer - Model hover as pause/resume timer instead of flag checks - Combine configuration methods into single GetAutoDismissTimeout() - Remove CloseButton_Click indirection - Use Math.Clamp for timeout validation - Reduce branching in timer tick handler This simplification maintains all functionality while: - Reducing state complexity - Making code easier to reason about - Eliminating redundant checks - Following cleaner patterns * test: Update unit tests to match simplified implementation - Update tests to verify timer-based state management - Remove tests for deleted state flags - Add tests for null timer representing cancelled state - Verify pause/resume behavior through timer state - Ensure all tests align with refactored code * docs: Update documentation to reflect simplified implementation - Document timer-based state management approach - Explain null timer = cancelled state pattern - Clarify pause/resume instead of flag checks - Update code examples with simplified logic - Add notes on complexity reduction benefits * improve: Add accessibility, error handling, and UX enhancements - Add IDisposable implementation for proper timer cleanup - Add null-safety for timer operations - Add accessibility labels for screen readers - Improve InfoBar with progress indicator visual - Add error boundary for robust operation - Extract magic numbers to named constants - Add XML documentation for public API - Improve button creation with helper method - Add keyboard shortcut hint (Esc to close) - Better separation of concerns * test: Add tests for improvements and update documentation - Add disposal pattern tests - Add error handling tests - Add accessibility verification tests - Update documentation with new features - Document IDisposable implementation - Add performance notes - Update changelog with improvements * docs: Add comprehensive improvement summary and PR template - Document all improvements made - Create detailed PR summary - Add before/after comparisons - Include metrics and benefits - Provide review checklist * fix: Correct mock return type and default timeout test - Fix GetRetryOptions mock to return List<MenuFlyoutItemBase> instead of List<object> - Add missing using statement for MenuFlyoutItemBase - Fix default timeout test to actually test unset scenario - Remove timeout setting from TestInitialize to avoid false positives - Add explicit Settings.Set calls only where needed These fixes ensure tests actually verify what they claim to test. * refactor: Simplify auto-dismiss lifecycle and throttle accessibility announcements - Remove _disposed flag entirely, use timer nullability as single source of truth - Consolidate InfoBar updates into single UpdateAutoDismissUi method - Make StopAutoDismiss the only place that tears down the timer - Simplify IDisposable to just call StopAutoDismiss - Throttle screen reader announcements to avoid noisy per-second updates - Announce only at 5-second intervals and during final 5 seconds - Track last announced value to prevent redundant announcements - Remove SetupAutoDismissUI and UpdateAutoDismissDisplay split - Centralize all InfoBar state management This reduces complexity while maintaining all functionality and improving accessibility. * docs: Update documentation for simplified logic and accessibility throttling - Document removal of _disposed flag - Explain single UpdateAutoDismissUi method - Document accessibility announcement throttling strategy - Add notes on 5-second interval announcements - Update architecture diagrams - Add throttling benefits explanation
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
Co-authored-by: codeant-ai[bot] <151821869+codeant-ai[bot]@users.noreply.github.com>
- Fix live region setting ordering in UpdateAutoDismissUi - Remove Task.Run from UI thread operations in FeedbackDialog - Remove unused HttpClient and body parameter from GitHubIssueHelper - Simplify async flow with EnsureGeneratedBodyAsync helper - Update documentation to fix markdown linting issues
Owner
|
@skanda890, please abstain from generating AI PRs. |
Contributor
Author
|
Sorry |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
π Description
Implements the in-app feedback/issue reporting system requested in #2023, inspired by Windows Dev Home's feedback feature.
β¨ Features
β Auto-fill system information:
β Auto-fill logs:
β User-friendly workflow:
β Privacy-focused:
π Files Added
Core Implementation
src/UniGetUI/Services/FeedbackService.cs- System info & log collection (singleton)src/UniGetUI/Services/GitHubIssueHelper.cs- GitHub integrationsrc/UniGetUI/Pages/Dialogs/FeedbackDialog.xaml- WinUI 3 dialog UIsrc/UniGetUI/Pages/Dialogs/FeedbackDialog.xaml.cs- Dialog logicTests
src/UniGetUI.Tests/Services/FeedbackServiceTests.cs- 18 test casessrc/UniGetUI.Tests/Services/GitHubIssueHelperTests.cs- 8 test casessrc/UniGetUI.Tests/UniGetUI.Tests.csproj- Test project configurationDocumentation
docs/FEEDBACK_FEATURE.md- Complete implementation guideπ§ Integration Required
To activate this feature, maintainer needs to add menu items:
1. Settings Page - "Report an Issue" button
2. Help Menu - "Send Feedback" menu item
Complete integration instructions are in
docs/FEEDBACK_FEATURE.md.π― Benefits
π§ͺ Test Coverage
26 unit tests covering:
Run tests:
dotnet test src/UniGetUI.Tests/UniGetUI.Tests.csprojπΈ Example Output
Generated Issue Body:
π Privacy & Security
β Code Quality
All code quality issues have been resolved:
π Architecture
π Future Enhancements (Not in this PR)
π Checklist
π Closes
#2023
π¬ Notes
Ready for review! @marticliment
Branch:
skanda890:feature/issue-2023-feedback-systemCommits: 8 commits with clean history