Repository navigation
Show technical error details - #106
Merged
Merged
Conversation
The web app has had a "Show technical error details" setting for a while. Android had nothing: every failure read as a canned sentence chosen by status code, and the server's own `detail` was not merely unused but actively thrown away, since toUserMessage read the error body only to sniff for Cloudflare and then discarded it. There was no path by which a server message reached a user. Settings, About gains the switch, off by default. On, an HTTP failure reads "[404] Field not found" and anything else names the exception behind it, which is the part a bug report was missing: four causes collapse into one sentence in the friendly register. About rather than a category of its own, which is where web keeps it. That screen is already the one somebody opens to copy a version, a commit and a server address into a report, and this changes what a report can say. Not the Debug Menu despite the name fitting: that row is behind BuildConfig.DEBUG, and the people who need this are on release builds. Three things worth saying about the shape: The preference is kept on the device as well as in the account's client settings. The account copy is what syncs between Android devices, but it arrives with the first successful load, and the failures this setting exists to explain are exactly the ones where that load does not happen. A preference you have to fetch is off precisely when somebody is trying to find out why nothing is loading. Verified by toggling it with the backend stopped. Reading `detail` now peeks the body instead of consuming it. An error body is a one-shot stream and `string()` closes it, which is why the sharing flows read it defensively and warned about toUserMessage racing them. Two readers on one exception is now the normal case rather than something to avoid. The client id is the platform, so turning this on in a browser does not turn it on here. A status code in a toast is least wanted on a phone, and the two clients disagreeing about that is the intent rather than a gap. Also fixes an inconsistency this surfaced. The sharing classifier, which tells step-up from bad credentials from publishing-is-off, carried a second table of per-status wordings for everything else, so the same status could read two ways depending on which call failed, and the new setting did nothing on any screen that routed through it (custom fields among them). Unclassified failures now go through the same formatter, keeping the server's prose where that is the useful part. The classified states keep their own wording: they are states with their own UI, and a status code in front of the step-up sheet's "incorrect password" would read as a fault rather than a prompt. Checked on device against a real instance: off and on for a network failure with the backend stopped, a 422 whose list-shaped detail correctly falls back to the summary rather than dumping JSON, and a 404 on a field deleted out from under the screen, which showed a bare "Field not found" before the classifier change and "[404] Field not found" after.
SiteRelEnby
force-pushed
the
feat/technical-error-details
branch
from
October 23, 2026 23:48
c3582cf to
3f164de
Compare
SiteRelEnby
enabled auto-merge
October 23, 2026 23:50
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.
Brings across the web app's "Show technical error details" setting. Android had no equivalent, and the gap was wider than a missing checkbox: the server's
detailwas not merely unused but actively discarded, becausetoUserMessageread the error body only to sniff for Cloudflare and then threw it away. There was no path by which a server message reached a user, on any screen.Settings, About gains the switch, off by default. On, an HTTP failure reads
[404] Field not found; off, it readsNot foundas before.