2.2 KiB
2.2 KiB
Task: Frontend feedback submission flow
Goal
Add the global authenticated Feedback button, submission dialog, viewport capture, and annotation flow.
Feature Spec
docs/FEATURES/product-feedback.md
Scope
- Add feature-owned frontend code under
frontend/src/features/feedback/. - Add a small floating Feedback button to the authenticated app shell on every
/app/*page. - Keep the button visible on feedback-related pages too.
- Add a feedback submission dialog with:
- required type:
Bug,Suggestion,Request - required plain-text description
- optional capture flow
- dirty-close warning that discards unsent feedback if confirmed
- required type:
- Capture only the current app viewport when the user explicitly clicks
Capture screen. - Add screenshot annotation support:
- crop
- arrows
- circles or ellipses
- lines
- freehand marks
- text labels
- undo
- clear/reset
- Export annotated screenshots as compressed PNG or JPEG.
- Submit feedback metadata, route context, browser metadata, viewport size, and optional screenshot to the backend.
- If capture fails, show a friendly error and allow text-only submission.
- Use established libraries for capture/annotation rather than custom screenshot infrastructure.
- Add English and French locale strings for the submission flow.
Likely Files
frontend/package.jsonfrontend/src/layouts/**frontend/src/features/feedback/**frontend/src/plugins/api.jsfrontend/src/locales/en.jsonfrontend/src/locales/fr.json
Notes
- Runtime configuration must continue to flow through
frontend/src/config.jsif new configuration is needed. - Keep the flow non-intrusive and app-shell scoped.
- Avoid landing-page or marketing-style UI.
Validation
cd frontend
npm run build
Done When
- Authenticated users see a floating Feedback button on every app page.
- Users can submit required type and description.
- Users can optionally capture and annotate the app viewport.
- Capture failures do not block text-only feedback.
- Dirty dialog close warns before discarding unsent feedback.
- UI strings exist in English and French.
- Frontend build passes.