feat: implement structured feedback modal and integrate feedback service#186
feat: implement structured feedback modal and integrate feedback service#186ToxicBiohazard wants to merge 3 commits into
Conversation
- Added a new FeedbackModal to collect structured feedback from users. - Integrated feedback submission to a new feedback service API, with fallbacks to Slack if the service is not configured. - Introduced constants for feedback kinds and platforms to align with the feedback service schema. - Updated configuration to include feedback service URL and API key. - Added tests for feedback modal functionality and feedback service integration.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #186 +/- ##
==========================================
+ Coverage 65.36% 66.28% +0.92%
==========================================
Files 52 54 +2
Lines 3069 3153 +84
==========================================
+ Hits 2006 2090 +84
Misses 1063 1063 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
dimoschi
left a comment
There was a problem hiding this comment.
Solid and well-tested. One thing worth addressing, feedback is silently dropped if the service is configured but down. When is_configured() is true, ingest_discord_feedback swallows every exception (except Exception: logger.exception(...)) and returns None. The user already saw "your feedback has been recorded," but nothing was stored and there's no Slack fallback on failure, only when not configured. The PR title says "fallbacks to Slack if the service is not configured," so this is by design, but the failure mode means a Nexus/service outage = lost feedback with a success message. Consider falling back to Slack on a failed POST (return a bool from ingest_discord_feedback and branch on it), or at minimum don't claim success.
Return a bool from ingest_discord_feedback so the modal can route to Slack on non-202 responses or request errors, avoiding silent feedback loss. Co-authored-by: Cursor <cursoragent@cursor.com>
|
@dimoschi Good catch on the silent drop — addressed in e6f8a47.
Kept the |
Resolve config.py conflict: keep feedback service settings and adopt main's ROOT: Path | None typing. Co-authored-by: Cursor <cursoragent@cursor.com>
Types of changes
What types of changes does your code introduce?
Put an
xin the boxes that apply.Proposed changes
Checklist
Put an
xin the boxes that apply.doc.