{% extends "base.html" %} {% block title %}Report a bug · Networthy HQ{% endblock %} {% block content %}

Report a bug

A number that looks wrong, a statement that won't parse, a page that breaks on your phone — all of it is useful. The wrong ones are the most useful.

{% if sent %}

Got it — thank you.

{% if delivered %} Your report has been recorded and emailed to the maintainer. {% if user %}A reply would come to {{ user.email }}.{% endif %} {% else %} Your report has been saved on this server. No mail provider is configured here, so it hasn't been emailed anywhere — the operator of this instance can read it. {% endif %}

Back to the app Send another

{% else %} {% if error %}
{{ error }}
{% endif %}
{# Spam defence, both invisible to a person. The token is a signed timestamp, so how long the form was open is knowable without storing anything. The field below is styled off-screen rather than type="hidden" — plenty of bots skip hidden inputs but fill everything they can see in the markup. It is aria-hidden and untabbable, so a screen reader and a keyboard never meet it. No CAPTCHA: every hosted one is a third-party script watching a page this site promises is unwatched. #} {% if user %}

Sent from your account, {{ user.email }}, so a reply can reach you.

{% else %} {% endif %}
{% if support_address %} or email {{ support_address }} {% endif %}
{% endif %} {# The one place in the app that invites free text out of the machine, so it says plainly what goes with it — and, more usefully, what not to put in. #}

What gets sent

Exactly what you type above{% if user %}, plus your account email{% endif %} — nothing else. Not the page you came from, not your holdings, not a single figure from your account. {% if can_email %}The report is stored here and emailed to the maintainer. {% else %}The report is stored on this server; no mail provider is configured, so it isn't emailed anywhere.{% endif %}

Which means: please don't paste amounts, account numbers, or a statement into the box. To describe a parsing bug, the shape is enough — "an equity row with a wrapped name showed no units" says more than the row itself, and keeps your statement where it belongs.

{% endblock %}