Skip to content

Promote: staging -> develop - #891

Merged
TaprootFreak merged 2 commits into
developfrom
staging
Aug 4, 2026
Merged

Promote: staging -> develop#891
TaprootFreak merged 2 commits into
developfrom
staging

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Automatic Staging PR

This PR was automatically created after changes were pushed to staging.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge to promote into develop

## Summary

Follow-up to #885: section 79 (insider unlock explainer) inherited the
standard `cols-2` test grid, which squeezes the three-image walkthrough
into a half-width column — the images stack vertically and the card
grows very tall (see the deployed page). Switching the section to the
base `.tests` class (an existing single-column grid) lets the explainer
run full width with its three images side by side, and the
`269-dashboard-insider-unlocked` catalog entry follows below.

One attribute change plus an HTML comment explaining the deliberate
deviation from the otherwise uniform `cols-2` sections.
@TaprootFreak TaprootFreak added the tier3:full Opt-in: run Tier 3 Maestro handbook flows on this PR label Aug 4, 2026
…890)

## Was fehlte

Support-Tickets aus der RealUnit-App konnten keinen Anhang tragen,
während die DFX-App das für beide
Wege längst anbietet. Die API kann es ebenfalls seit Langem:
`CreateSupportIssueBaseDto` erbt `file`
(Base64-Data-URI) und `fileName` von `CreateSupportMessageDto`, und
`createMessageInternal` erlaubt
ausdrücklich eine Nachricht, die **nur** eine Datei trägt. Gefehlt hat
allein die App-Seite.

## Was dieser PR macht

- `DfxSupportService` schickt `file`/`fileName` an `POST
/v1/support/issue` und
`POST /v1/support/issue/{uid}/message` und lässt beide Felder weg, wenn
kein Anhang gewählt ist.
- Das Ticket-Formular bekommt ein Anhang-Feld, das der vorhandenen
Formular-Optik folgt
(Abschnittslabel wie darüber, Radius und Rahmen wie das Nachrichtenfeld)
und den Anhang wieder
  entfernbar macht.
- Die Chat-Eingabe bekommt einen Anhang-Button samt Vorschauzeile. Ein
Bild **ohne** Text zu senden
  ist erlaubt — genau das, was die API zulässt.
- Nachrichten mit Anhang zeigen den Dateinamen; ohne das wäre eine
Nachricht ohne Text eine leere
  Sprechblase.
- Bilder kommen über den vorhandenen `ImagePickerSheet` und
`XFile.toBase64DataUri()`, also denselben
  Weg wie die KYC-Uploads. Keine neue Abhängigkeit.

## Verifikation

Gegen `dev.api.dfx.swiss`, aus der laufenden App im iOS-Simulator:

- Ticket mit Bildanhang → `201`, die Nachricht trägt `fileName`.
- Chat-Nachricht **nur mit Datei, ohne Text** → `201`, `message: null`
plus `fileName`.

Dazu drei Gegenproben direkt an der API, die belegen, dass beide
Implementierungsentscheidungen
tragen: `file` ohne `fileName` → 400, rohes Base64 statt Data-URI → 500,
weder Text noch Datei → 400.

Lokal: `flutter analyze` ohne Befund, volle Suite **4754** grün,
gescopte Zeilen-Coverage **100,0 %**
(6430/6430) gegen einen Floor von 100.

## Bewusst nicht enthalten

- **Empfangene Anhänge werden nicht angezeigt oder heruntergeladen.**
Sichtbar ist nur der Dateiname.
`SupportMessageDto` liefert keine URL; der Download-Endpunkt existiert,
das gehört aber in einen
  eigenen Schritt.
- **Nur Bilder, kein PDF.** `image_picker` deckt Bilder ab; PDF bräuchte
ein zusätzliches Paket.
  Die DFX-App erlaubt PDF, die API auch.
- **Anhang ohne Text** ist im Chat erlaubt, beim Erstellen eines Tickets
weiterhin nicht — dort bleibt
ein Text Pflicht. Die API erlaubt beides; das ist eine
Produktentscheidung, keine technische Grenze.
- Scheitert nach erfolgreichem Senden das Nachladen des Tickets, gilt
das Senden als erfolgreich
(die Nachricht liegt beim Support), die neue Nachricht erscheint aber
erst beim nächsten Laden.
- `FilePickerField` (KYC) und das neue `SupportAttachmentField` teilen
sich Struktur, wurden aber
bewusst nicht zusammengeführt: Die KYC-Seiten sollen ihre Optik
behalten.

## Offen

Golden-Baselines der zwei geänderten Support-Screens werden über
`golden-regenerate.yaml` auf dem
Runner erzeugt; bis dahin ist `Visual Regression` erwartungsgemäß rot.

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@TaprootFreak
TaprootFreak merged commit 8c51dd9 into develop Aug 4, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

tier3:full Opt-in: run Tier 3 Maestro handbook flows on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants