Usability U01–U16: sichere Abläufe und Bedienkorrekturen #1

Merged
troogs merged 25 commits from docs/usability-analyse into main 2026-11-02 21:47:44 +01:00
5 changed files with 20 additions and 8 deletions
Showing only changes of commit 038fbc0f7d - Show all commits
+8
View File
@@ -121,3 +121,11 @@ Validierung: 60/60 Tests in Debug und Release; Desktop Debug/Release ohne Warnun
Das vorhandene Kassen-Icon bleibt in der Windows-EXE eingebettet und wird als natives Fenstersymbol gesetzt. Die ungenutzte Photino-Registrierung für Windows-Systembenachrichtigungen ist deaktiviert: Sie kann die explizite AppUserModelID überschreiben und Verknüpfungen zum generischen dotnet-Host anlegen. Damit bleibt die eigene Windows-Zuordnung für die Taskleiste erhalten; die in der Anwendung angezeigten Toasts funktionieren unabhängig davon. Bestehende Windows-Verknüpfungen werden nicht verändert.
Release als eigenständige Windows-Einzeldatei veröffentlicht. Das aus der veröffentlichten EXE extrahierte Anwendungssymbol entspricht dem vorhandenen Kassen-Icon; auch das native Testfenster zeigt es in der Titelleiste. Die Taskleistendarstellung wurde nicht separat visuell erfasst. Build und Veröffentlichung ohne Warnungen oder Fehler.
## Zentrierte Symbole, Tabellenkontrast und konkrete Laufmeldungen
Stift und Papierkorb sind in beiden Achsen zentriert; die Symbolschrift verwendet im Button eine Blockbox ohne Baseline-Versatz. Tabellenköpfe verwenden die Text- und Oberflächenfarbe des aktuellen Designs statt der festen Bootstrap-Klasse für helle Tabellen. Die sechs generischen Laufmeldungen benennen nun Sicherung erstellen, Sicherung wiederherstellen, Kontenübersicht als PDF erstellen/speichern, Kontoauszug als PDF erstellen/speichern oder gespeicherte PDF öffnen.
Debug-Tests: 60/60 bestanden. Zusätzliche Browserprüfung mit lokalem Produktions-CSS: Symbole bei 100 und 200 % in beiden Designs innerhalb von 0,6 Pixeln zentriert, Buttons mindestens 44 × 44 Pixel. Kontrast der sichtbaren Tabellenköpfe 17,85:1 (hell) und 12,89:1 (dunkel). Alle 16 bisherigen Offline-Layoutkombinationen bestehen weiterhin; dunkler Tabellenkopf und Symbole zusätzlich visuell geprüft.
Auch die Release-Suite besteht mit 60/60 Tests. Desktop Debug und Release bauen ohne Warnungen oder Fehler; `git diff --check` ist sauber.
@@ -23,7 +23,7 @@
}
<div class="table-responsive entry-list">
<table class="table table-hover table-sm align-middle">
<thead class="table-light">
<thead>
<tr>
<th style="width: 100px;">LfdNr</th>
<th style="width: 120px;">Datum</th>
@@ -258,7 +258,7 @@ public partial class AccountDetail
private async Task HandleExport()
{
if (fileBusy) return;
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
var busyToast = Toasts.Show("Kontoauszug wird als PDF erstellt und gespeichert … Bitte warten.", persistent: true);
fileBusy = true;
fileResult = null;
try
@@ -277,7 +277,7 @@ public partial class AccountDetail
private async Task HandleOpenSavedPdf()
{
if (fileBusy) return;
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
var busyToast = Toasts.Show("Gespeicherte PDF-Datei wird geöffnet … Bitte warten.", persistent: true);
fileBusy = true;
fileResult = null;
try
+4 -4
View File
@@ -101,7 +101,7 @@ public partial class Dashboard
private async Task HandleBackupAsync()
{
if (fileBusy) return;
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
var busyToast = Toasts.Show("Sicherung wird erstellt … Bitte warten.", persistent: true);
fileBusy = true;
fileResult = null;
try
@@ -127,7 +127,7 @@ public partial class Dashboard
private async Task HandleConfirmRestore()
{
if (fileBusy) return;
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
var busyToast = Toasts.Show("Sicherung wird wiederhergestellt … Bitte warten.", persistent: true);
fileBusy = true;
fileResult = null;
try
@@ -144,7 +144,7 @@ public partial class Dashboard
private async Task HandleDashboardExportAsync()
{
if (fileBusy) return;
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
var busyToast = Toasts.Show("Kontenübersicht wird als PDF erstellt und gespeichert … Bitte warten.", persistent: true);
fileBusy = true;
fileResult = null;
try
@@ -180,7 +180,7 @@ public partial class Dashboard
private async Task HandleOpenSavedPdf()
{
if (fileBusy) return;
var busyToast = Toasts.Show("Dateiaktion läuft … Bitte warten.", persistent: true);
var busyToast = Toasts.Show("Gespeicherte PDF-Datei wird geöffnet … Bitte warten.", persistent: true);
fileBusy = true;
fileResult = null;
try
+5 -1
View File
@@ -350,8 +350,9 @@ html[data-ui-theme="light"] .btn-dark {
}
.table thead th {
background-color: var(--color-surface);
border-bottom-color: var(--color-border);
color: var(--color-text-muted);
color: var(--color-text);
font-weight: 600;
font-size: 0.8rem;
text-transform: uppercase;
@@ -643,6 +644,9 @@ body:has(dialog[open]) .toast-stack:not(.modal-toasts) { display: none; }
.entry-actions button { min-height: 44px; min-width: 44px; padding: .6rem; }
.entry-action-buttons { display: flex; gap: .5rem; }
.entry-action-buttons .btn { display: inline-flex; align-items: center; justify-content: center; }
.entry-action-buttons .btn i { margin: 0; line-height: 1; }
.entry-action-buttons .btn i::before { display: block; }
.entry-description { overflow-wrap: anywhere; }
@media (max-width: 900px) {
.entry-list thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }