Repository navigation
Conversation
Reporting a problem meant opening a GitHub issue, which needs a GitHub account — the issue notes this is exactly what stops users giving feedback. Adds a public form at /feedback/, linked from the footer: report type, description, optional e-mail and an optional attachment. Reports are stored and triaged in the admin rather than e-mailed, so nothing is lost when mail delivery is misconfigured and reports stay searchable. Attachments are restricted to screenshots, PDFs and text logs, capped at 5 MB and stored under a generated name, since both the file and its name come from anonymous visitors. Closes #691 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HXUw7kyELDu8ycGQxtaFbb
Member
Author
|
@pablodiegoss você pode revisar este PR quando tiver um tempo? Generated by Claude Code |
pablodiegoss
requested changes
Oct 27, 2026
pablodiegoss
left a comment
Member
There was a problem hiding this comment.
Looks good and works correctly. I've already made adjustments to the migration number and conflicts from my previous MRs to develop.
However, we cannot have an unauthenticated form that submits files to our servers and creates rows on our databases, we receive an inconceivable amount of bot traffic, this features require at least the turnstile bot protection we have on the sign up form and maybe a honeypot field for extra protection, cannot accept it as is.
This branch has not been deployed
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
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
Reporting a problem meant opening a GitHub issue, which needs a GitHub account — the issue points out that this is precisely what stops people giving feedback.
Adds a public form at
/feedback/, linked from the footer, with the four fields the issue asks for: a bug/feature dropdown, a description, the reporter's e-mail and an attachment.Resolves (Issues)
Closes #691
General tasks performed
Feedbackmodel withkind,description,email,attachmentand ahandledflag for triage.FeedbackForm, thefeedbackview, the/feedback/route, afeedback.jinja2template and the footer link.FeedbackAdmin: filter by kind and handled state, search across description and e-mail,handlededitable inline, and the reporter's content marked read-only so triage cannot rewrite what someone submitted.src/core/tests/test_feedback_form.py— 9 tests.Design decisions worth a look
Stored, not e-mailed. The issue does not say where reports should go. I store them and surface them in the admin, because e-mail silently loses reports whenever SMTP is misconfigured, and because a stored report stays searchable and can carry a triage state. Adding a notification on top is easy later; recovering an e-mail that was never delivered is not.
Attachments are treated as hostile input, since the form is open to anonymous visitors: extensions limited to images, PDF and text logs, size capped at 5 MB, and the file stored under a generated name (
feedback/<uuid>.<ext>) so a filename likeCaptura de tela #1.pngnever reaches storage — the same problem #699 covers for sounds.The form is intentionally anonymous-friendly: no login required and the e-mail is optional, so someone can report a bug without identifying themselves.
Not included
No spam protection. An open form will eventually attract bots, and the right answer (honeypot field, rate limit, or captcha) is a product decision rather than something to slip into this PR — worth its own issue before this is publicised.
Verification: full suite
pytest src/core src/users src/blogpasses — 281 passed.makemigrations --check --dry-runreports no changes, andruff format --diff src/is clean.Have you confirmed the application builds locally without error? See here.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HXUw7kyELDu8ycGQxtaFbb
Generated by Claude Code