Add a VERY simple bug filing modal that auto-opens issues here #114
Labels
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/Ponente#114
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Should be easy to understand for non-techies, so something like "Have a problem" or "Give feedback" with a very simple modal for only describing the issue, no complexity.
🤖 On it — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
Added a Report a problem row to the account menu and a one-box dialog behind it, which files what a member writes as an issue on this repository.
The whole design is that the people on this board are not the people who build it. Asked to "file an issue" they would need an account on the forge, a repository and a guess at which parts matter — so the dialog asks for the one thing only they can supply, and
FeedbackServiceattaches everything else: their username, the page they were standing on, the running version, and the language they were reading in. The title is the first line of what they wrote (cut on a word boundary at 72 chars), so reports don't all look alike in the issue list.What it costs them is said before they press Send, in small type under the box: it lands in a list anyone can read, with their name on it. Success keeps the dialog open and says thank you — no issue number, no link to the tracker.
It needs configuring before it appears. Two settings, both required, and off until they are there:
FEEDBACK_REPOSITORY=https://git.grandiras.net/Grandiras/Ponente(the URL as it looks in a browser; the API endpoint is derived from it)FEEDBACK_TOKEN=— a Forgejo access token withwrite:issueon that repositoryAdded to
deploy/.env.example,deploy/.env.dev.example, both compose files and the README table. Unset, the menu row is simply not there — an offer that swallows a report is worse than no offer — andProgram.cslogs one line at startup saying which of the three states it is in, onMailer's rule. A refusal from the forge or a forge that is down is a translated sentence in the dialog and a warning in the log, never an exception on the circuit.Also in the change: both locales, a
Changelog.Unreleasedbullet, a new Reporting a problem section indocs/ui.md(plus the service row indocs/orientation.mdand the stub-forge note indocs/testing.md).Verified —
dotnet buildclean (0 warnings) anddotnet testgreen, 312 passing including 11 newFeedbackServiceTests(endpoint derivation, thetokenauth scheme, the title cut, the body's context, the half-configuration warning, and that a refusal or an unreachable forge is afalserather than a throw). The two screenshots above are the app actually running against Postgres with a stub forge on:8092; that run also confirmed the German copy, that Escape closes without sending, and that the row disappears when the settings are removed. What the stub received:tests/e2e/feedback.spec.jspins the member-visible half; it needs the compose stack (docker-compose.test.ymlnow starts anissuesstub on:8092), which this runner has no container engine for, so it has not been executed — run it locally with the rest of the suite.Branch:
claude/issue-114. No follow-up issues to file.⏱ 16m 46s · 115 turns · tokens: 197.5k in / 59.9k out (+14658.6k cache-read)
📜 Full session transcript
→ Opened PR: #122
@claude-bot The icon looks weird and there is far too much explanatory information in the modal.
🤖 On it — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
Both fixed on the same branch, so PR #122 picks them up.
The icon. It was a speech bubble drawn as a broken-off arc with a detached tail floating below it — at 18px that doesn't read as a bubble, it reads as the icon itself failing to render. It's now a closed circle with an exclamation, same stroke kit as Share, What's new and Install beside it:
The words. Three things were explaining the same dialog. The intro sentence above the box ("Something broken, confusing or missing? Say it in your own words…") said what the title and the placeholder already say, so it's gone entirely — there is now nothing to read before you start typing. The note under the box listed the username, the page and the version; the page and the version are context about the app, not about the member, and spelling them out turned a disclosure into a paragraph nobody finishes. One line survives, because it is the only thing they couldn't work out for themselves: it lands somewhere public, with their name on it.
German got the same cut ("Geht an die Leute, die Ponente bauen, in eine öffentliche Liste, mit deinem Benutzernamen."), and the thank-you shortened to "Thank you — somebody will take a look." Nothing else moved: the service, the config and the tests are untouched.
Verified by running it.
dotnet buildclean anddotnet testgreen (312, unchanged — the locale-parity test covers the removed key in both languages), and the screenshots above are the app against Postgres with the stub forge, where the send path still works end to end — the stub received{"title":"The board is empty after I come back to it, until I reload the page.", "body":"… Reported from Ponente by grandiras.net · version 2.4.0 · page/· language en"}. The German dialog and the thank-you state were checked in the same run.tests/e2e/feedback.spec.jsasserts on classes rather than copy, so it needs no change; it still hasn't been executed here (no container engine for the compose stack).Branch:
claude/issue-114— pushed onto the existing PR #122, no new one opened.⏱ 6m 38s · 46 turns · tokens: 50.8k in / 14.7k out (+2149.3k cache-read)
📜 Full session transcript