feat: beta feedback widget — frictionless in-session feedback

Full-stack beta feedback system:

Backend:
- BetaFeedback model with reaction, category, text, page context
- POST /feedback/beta (any auth user), GET /feedback/beta (admin, filtered)
- Alembic migration 065 with indexes on user_id, reaction, created_at

Frontend:
- Persistent "Feedback" tab on right edge of all authenticated pages
- Slide-out panel: quick reaction (👍😐👎), category pills, optional text
- Auto-captures page URL and FlowPilot session ID
- Hidden on mobile (<640px), closes on Escape/outside click
- Shows "Thanks!" confirmation then auto-closes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-23 13:12:06 +00:00
parent 03a1f104d2
commit 73c529d6f3
10 changed files with 467 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import { TopBar } from './TopBar'
import { Sidebar } from './Sidebar'
import { EmailVerificationBanner } from './EmailVerificationBanner'
import { ViewTransitionOutlet } from './ViewTransitionOutlet'
import { FeedbackWidget } from '@/components/common/FeedbackWidget'
import { cn } from '@/lib/utils'
export function AppLayout() {
@@ -171,6 +172,9 @@ export function AppLayout() {
<ViewTransitionOutlet />
</main>
</div>
{/* Beta Feedback Widget — persistent on all authenticated pages */}
<FeedbackWidget />
</>
)
}