Visuelle Prüfung aller Routen gegen mana/docs/DESIGN.md, Bericht in
docs/ui-review-2026-07-26.html. Drei Ursachen erklärten die Hälfte:
1. Die fixierte Pill-Navigation war durchsichtig und lag mit z-index 1000
über allem. Sie verschluckte Klicks (belegt am Modus-Schalter unter
/konto), überdeckte den Modal-Fuß und die Fußzeile.
→ Scrim + Höhe als --bottom-chrome, z-index auf 100, Modal auf 9995.
2. Vier Seiten hatten sich am Theme vorbeigebaut — 44 Hex-Literale.
/changelog war im Dunkelmodus mit ~1,05 : 1 unlesbar.
→ Alles auf hsl(var(--color-*)), plus audit:theme-tokens als Wächter
(zwei dokumentierte Ausnahmen: Reader-Themes, Marker-Pigmente).
3. Kein gemeinsames Seiten-Gerüst — drei Inhaltsbreiten, fünf Titel-
Schemata, Zurück-Link nur auf zwei Seiten.
→ PageShell (Breite, Titel, Untertitel, Dokumenttitel, Zurück-Link,
Avatar-Korridor).
Weiter:
- Zusammenfassung gab den rohen Prompt mit [noop]-Präfix aus → isEmptyOrEcho
fängt Echo-Antworten ab, ehrlicher Fehler statt Interna (8 Tests).
- Lese-Liste zeigte Domains statt Titel → looksUnextracted markiert
Consent-Wall-Reste, Reparaturweg über das HTML-Bookmarklet (7 Tests).
- highlightToWire setzte createdAt: s.userId → deshalb stand die Konto-UUID
als Datum in /markierungen und die Sortierung war wirkungslos.
Zeitstempel kommt jetzt aus der ULID.
- Rohe Status-Enums (UNREAD) → statusLabel() über @mana/shared-i18n.
- Emojis und Textzeichen als Icons → Phosphor aus @mana/shared-icons.
- +error.svelte statt SvelteKits englischem „404 Not Found".
- Ruhende Routen /feed und /recherche leiten auf /lese-liste um.
- Labels über allen Formularfeldern, aria-label an Inline-Feldern.
- 44-px-Trefferflächen, ganze Karte klickbar, globaler Fokusring in
@layer base, EmptyState-Komponente, Aktions-Rangfolge im Reader.
- Lesetypografie: `prose` war wirkungslos (Tailwind-Typography ist gar
nicht installiert) → eigene, token-basierte Lesetypografie.
Offen (im Bericht begründet): Desktop-Breitennutzung, Bild-Nachladen für
Bestandsartikel, Filterleisten am unteren Rand, Varianten-Namen und die
WebDAV-Feldbeschriftungen in @mana/shared-ui.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
36 lines
1.3 KiB
JSON
36 lines
1.3 KiB
JSON
{
|
|
"name": "pageta",
|
|
"version": "0.0.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"description": "Pageta — Standalone-Reader-App des Vereins mana. Kuratierter News-Feed, Save-it-later mit Highlights, RSS-Recherche. Föderiert mit der mana-Plattform.",
|
|
"packageManager": "pnpm@9.15.9",
|
|
"engines": {
|
|
"node": ">=20",
|
|
"pnpm": "^9"
|
|
},
|
|
"scripts": {
|
|
"dev": "turbo run dev",
|
|
"build": "turbo run build",
|
|
"test": "turbo run test",
|
|
"type-check": "turbo run type-check",
|
|
"clean": "turbo run clean",
|
|
"validate-manifest": "tsx node_modules/@mana/shared-share-protocol/scripts/validate-manifest.ts app-manifest.json",
|
|
"format": "prettier --config .prettierrc.json --write \"**/*.{ts,tsx,js,json,md,svelte}\"",
|
|
"format:check": "prettier --config .prettierrc.json --check \"**/*.{ts,tsx,js,json,md,svelte}\"",
|
|
"docker:up": "docker compose -f docker-compose.yml up -d",
|
|
"docker:down": "docker compose -f docker-compose.yml down",
|
|
"audit:theme-tokens": "pnpm --filter @pageta/web audit:theme-tokens",
|
|
"validate": "pnpm run audit:theme-tokens && turbo run type-check test"
|
|
},
|
|
"devDependencies": {
|
|
"@mana/shared-share-protocol": "^0.1.0",
|
|
"@types/bun": "latest",
|
|
"@types/node": "^22.10.2",
|
|
"prettier": "^3.3.3",
|
|
"prettier-plugin-svelte": "^3.3.2",
|
|
"tsx": "^4.20.0",
|
|
"turbo": "^2.3.0",
|
|
"typescript": "^5.9.3"
|
|
}
|
|
}
|