# Feedback

> The Feedback row of the Account page and the report button of the title bar, reporting a bug, suggesting an improvement or requesting a driver with a capture of the screen, under the station's Ganter account or without one, what is sent, and when it cannot be sent.

The **Feedback** row, under the SUPPORT group of the Account page's index, is a short form
that sends a report to Ganter. The same form opens over any page from the report button in the
title bar, beside Help, whose tooltip names it **Send feedback**, and there it starts with a capture
of the screen you were looking at (see [The report button](#the-report-button)). It is one form in
both places: a report begun in the dialog and closed unsent is the report this row shows, capture
included. It has three kinds, one required line, one optional text and the screen capture. A station
signed in to its Ganter account sends under that account, so Ganter can reply to its e-mail; a
station that is not signed in sends too, without an account, and Ganter then has no address to reply
to (see [Without an account](#without-an-account)). Who may send is a permission of the role,
**Send reports to Ganter**, on in every role until an administrator turns it off (see
[Permissions](users-permissions)).

## When it cannot be sent {#when-it-cannot-be-sent}

| Situation | What the row shows instead of the form | The report button |
| --- | --- | --- |
| The role of the identity on this screen does not hold Send reports to Ganter | "Your role does not send reports to Ganter. An administrator can turn on Send reports to Ganter for it on the Users page." | Not drawn. |
| The page is open in a browser rather than in the station's window, a browser on the same machine included | "A report leaves from the station with a capture of the station's screen, so it is written on the station's own screen. Open Account there to report a bug, suggest an improvement or request a driver." | Greyed, with "Reports are sent from the station's own screen, the one their capture shows." |
| The isolated demo profile, signed in or out, or a station signed in to its Ganter account whose sign-in holds no credential to send under | "This session cannot send reports to Ganter. A demo profile sends none; on any other station, sign in again from the card above." | Greyed, with "This session cannot send reports to Ganter. A demo profile sends none; on any other station, sign in again on the Account page." |

A role that may never send is not shown the button at all, because no press would earn it the
permission; a situation that passes keeps the button where it is, greyed, with the reason as its
tooltip, under the button's name. The published demonstration draws no report button, as it draws
no Account page. A station that is not signed in to a Ganter account is none of these situations: the
form shows and sends (see [Without an account](#without-an-account)). A station signed in sends
under its account or not at all, online or offline: sending while offline tries to renew the
account's token first, and when that fails the send is refused with "The station's Ganter account could not be confirmed for this report. Sign in again on the Account page and send it again." rather than going without the account.

## Without an account {#without-an-account}

A station that is not signed in to a Ganter account sends its reports all the same, with the same
fields and the same capture. Above the fields the form says "This station is not signed in to a Ganter account, so the report goes without an e-mail address and Ganter cannot reply to it. To get a reply, sign in to the station's Ganter account on the Account page." The form asks for no
address of its own. Signing in while a report is being written takes the line away, and the report
then goes under the account.

## The report button {#the-report-button}

The report button stands in the title bar beside Help, on every page: a glyph alone, the size of the
Help key. Its tooltip names it, **Send feedback**, and says on the line under the name what it does,
or why it is greyed; a screen reader announces it as **Send feedback**. A press does two things, in
this order:

1. It captures the window as it is at that moment, through the same capture the agent's
   `ui_screenshot` tool takes. While it is being taken the button is greyed with "Taking the
   screen capture."
2. Only then does it open the form in a dialog over the page, **Report to Ganter**, with the
   capture shown under **Send the screen capture**, ticked.

The form never appears in its own capture, because the picture is taken before the dialog opens.
The dialog holds this row's form, with **Close** beside **Send**; Escape and a click outside it
close it too. Closing it sends nothing and loses nothing: the next press, or this row, shows the
report as it was left, and a new press replaces only the capture. A report the server takes closes
the dialog.

## A report drafted by an agent {#a-report-drafted-by-an-agent}

An AI agent connected to the station through [agent access](agent) can write a report for you with
its `report_draft` tool (see [Reports: draft](agent-tools#reports--draft)): a driver Ganter Lab
does not have, with the make, model and protocol it tried, a defect of the program, or an
improvement you asked for. It opens this form the way the report button does: the window is
captured first, then the dialog opens over the page with Type, Summary and Details filled in and
the capture ticked.
Above the fields the form says "An agent connected to this station wrote this report. Read it and correct anything before you press Send: nothing goes to Ganter until you do." Under the capture it says "The screen as it was when the agent opened this report. It shows everything that was on it; untick the box to send the text alone."

The agent never presses **Send**. You read what it wrote, which can name devices, addresses and
values of the plant, then correct it, untick the capture, close it or send it; the outcome reaches
the action feed as every report's does. The Events console keeps the draft under the Agent area
and, once you send it, a line saying that the report the agent drafted was sent.

| Situation | What the agent is told, and what happens here |
| --- | --- |
| A situation of [When it cannot be sent](#when-it-cannot-be-sent), or a role without Send reports to Ganter | The reason. Nothing opens. |
| The station has no window of its own, because it serves its pages to browsers only | That there is no window to open the form in. Nothing opens. |
| The form is open, or a report is being captured or sent | That the form is busy. Nothing changes. |
| The form holds a report you are writing, in the dialog or on this row | That a report is in progress. Your text is never replaced; an earlier draft of the agent's that you did not change is replaced by the new one. |

## The form {#the-form}

| Field | What it is | Values / default | Effect |
| --- | --- | --- | --- |
| Type | The kind of report. | **Report a bug** (default), **Suggest an improvement**, **Request a driver**. | Changes the hint under Summary and the kind sent. |
| Summary | One line describing the report. | Up to 120 characters; required. | **Send** stays greyed until it holds something other than spaces. |
| Details (optional) | The longer description. | Several lines; no limit set on the field. | Sent trimmed; left out when empty. |
| Send the screen capture | Whether the capture goes with the report. Drawn only while the form holds a capture. | Ticked whenever a capture is taken. | Unticked, the picture stays on the form, dimmed, and the report goes with its text alone. |

The hint under Summary follows the type:

| Type | Hint |
| --- | --- |
| Report a bug | Describe the problem and the steps to reproduce it. |
| Suggest an improvement | Describe the feature or improvement you would like. |
| Request a driver | Tell us which device driver you need. |

Under the box the form says "The screen as it was when you pressed Send feedback. It shows everything
that was on it; untick the box to send the text alone." and shows the picture itself, which is
exactly the file that leaves. What else the form may say about the capture:

| Line | When |
| --- | --- |
| "Reduced to 1920 × 1080 pixels so it fits what the server accepts." | The capture was larger than the server accepts and was reduced (see below); the figures are the size it was reduced to. |
| "The screen could not be captured, so this report goes with its text alone." | The window produced no picture. The form opens all the same. |
| "The screen capture could not be made small enough for the server, so this report goes with its text alone." | Even reduced, the capture would not fit while still being readable. |
| "To send a screen capture with a report, press the report button beside Help in the title bar on the screen you want to show." | On this row, while the form holds no capture: a capture of the Account page would show nothing about the problem. |

### How a large capture is made to fit {#how-a-large-capture-is-made-to-fit}

The server keeps a capture of at most 4 MiB (4,194,304 bytes) of PNG whose image is at most
40 million pixels. The station checks both before the form shows the capture. A capture past
either is reduced: its width and its height are halved, each block of two by two pixels averaged
into one, and it is encoded again, until it fits. A full HD window fits as it is; a 4K screen
showing a busy page may be halved once. A capture that would have to be narrower than 320 pixels
to fit is left out instead, because nobody could read it.

| Command | What it does | Greyed when (situation) | Not drawn when (role) |
| --- | --- | --- | --- |
| Send | Sends the report and reports the outcome in the action feed. | The Summary is empty or holds only spaces; the tooltip reads "Write a summary to send the report." A report is on its way and the server has not answered yet, so a second press cannot send it twice; the tooltip reads "The report is being sent." | Never; the whole form is replaced by the notice above when the station cannot send. |
| Close | In the dialog only: closes it and keeps the report. | Never. | Never. |

On success the feed reads "Thanks! Your "{Type}" was sent." and both text fields clear, unless their text changed while the report was on its way: then it
stays, and the thanks still names the type that was sent. The capture clears with the report it
belonged to, ticked or not. The server keeps at most a few captures a day; past that it keeps the
report without its picture, and the feed says so calmly: "Thanks! Your "{Type}" was sent without its screen capture: the server already holds as many captures as it takes in a day." On failure the feed carries the reason and the text and the capture stay for another try:

| Reason | When |
| --- | --- |
| The station's Ganter account could not be confirmed for this report. Sign in again on the Account page and send it again. | The station is signed in and its account token could not be obtained, or the server refused it. |
| The server refused this report because too many have been sent. Please try again later. | A sending limit on the server was reached. The answer does not say which one, and the limits are not published. |
| The screen capture is larger than the server accepts. Untick it and send the report again. | The server refused the capture's size. The station reduces a capture before it shows it, so this is rare. |
| The server refused the report because it is too long. Shorten the details and send it again. | The report is longer than the server accepts. |
| The server refused the screen capture because it is not a PNG image. Untick it and send the report again. | The server could not read the capture as a picture. |
| The server could not read the report. Send it again, and if it is refused once more, untick the screen capture. | The server could not read what was sent. |
| The server rejected the report ({code}). | Any other server answer. |
| The report could not reach the Ganter server. Check this computer's connection to the internet. | The network stopped the report on its way: no connection, an address that does not resolve, or a connection that broke. |
| The report could not be sent. | A failure with no further detail (a cancelled request, for instance). The journal keeps the cause. |

## What is sent {#what-is-sent}

| Item | Value |
| --- | --- |
| Kind | Bug, Suggestion or DriverRequest, from the Type. |
| Summary | The Summary, trimmed. |
| Detail | The Details, trimmed, or nothing. |
| App version | "Desktop {version}", the same version Settings > About shows. |
| Source | "Desktop/Windows". |
| Occurred at | The moment Send was pressed, in UTC. |
| Screen capture | The picture the form shows, as a PNG, when its box is ticked; nothing otherwise. |
| Identity | Signed in, the station's Ganter account token, so the report is attributed to that account and Ganter can reply to its e-mail. Not signed in, nothing: the report names no account and no address. |

The capture shows everything that was on the window, the plant's names and values included, which
is why you see it before it goes and can untick it, and why the role permission decides who may
send one at all. Ganter keeps it with the report and mails it with the report's notification; it
is deleted with the report, and, for a report sent under an account, when that account is closed.
Nothing else is attached: no log
excerpt, no configuration, no device list, no local user name and no support contact. What you
want Ganter to know goes in the text. A crash is a different kind of report, captured
automatically and sent only with your per-crash consent from the dialog described under
[Crash reports](settings-crash-reports); that one may carry the crash details, may be sent
anonymously, and never carries a screen capture. The Events console can produce a support package,
on the [Console](events-console) tab, if you need to hand over diagnostics alongside a report.

## What the row does not do {#what-the-row-does-not-do}

- It does not queue a report for later. A send that fails is refused at once; the text and the
  capture stay in the form until you send again.
- It does not answer back. Replies, if any, reach the account's e-mail, not the app; a report sent
  without an account gets none.
- It does not ask for an e-mail address. Without an account the report goes with none.
- It does not send from a browser or on the demo profile.
- It does not capture the screen by itself. The capture comes from the report button, of the page
  you were on when you pressed it, and the station keeps no file of it.
- It does not attach diagnostics of any kind, and it does not send the runtime state.
- It does not let an agent send. An agent can open it filled in ([A report drafted by an agent](#a-report-drafted-by-an-agent)), and only your Send sends it.
