Max Anzahl Aufgaben anzeigen #16

Closed
opened 2026-08-18 16:12:37 +00:00 by florian.wilde · 3 comments
Owner

Man soll eine Anzahl konfigurieren können, wieviele Aufgaben gleichzeitig in einem Projekt angezeigt werden, sonst wird es unübersichtlich

Angelegt aus Nebula in Nebula.

Man soll eine Anzahl konfigurieren können, wieviele Aufgaben gleichzeitig in einem Projekt angezeigt werden, sonst wird es unübersichtlich _Angelegt aus [Nebula](https://nebula.wilde-ste.de/projects/cms2wvhe9000opb01h8c8ajxn) in Nebula._
florian.wilde added the in-arbeit label 2026-08-18 21:07:29 +00:00
florian.wilde started working 2026-08-18 21:07:37 +00:00
Author
Owner

🤖 Claude Code hat mit der Umsetzung begonnen.

  • Branch: feat/16-max-aufgaben-anzeigen
  • Verstanden als: Das Aufgabenbrett eines Projekts soll je Spalte höchstens eine einstellbare Zahl an Karten zeigen; was darüber hinausgeht, kommt hinter einen Knopf „weitere anzeigen“ und bleibt so erreichbar.
  • Im Chat geklärt, weil beides zu verschiedenen Umsetzungen geführt hätte:
    • Wo eingestellt: in den Admin-Einstellungen, global — wie autoSyncBatchSize und staleAfterDays. Kein Feld am Projekt, keine Migration am Project-Modell.
    • Was begrenzt: je Spalte, nicht nur „Erledigt“, und mit Knopf statt hartem Schnitt. Nichts wird unerreichbar.
  • Geplantes Vorgehen:
    • AppSettings bekommt eine Zahl, 0 schaltet die Begrenzung ab (wie SESSION_IDLE_HOURS)
    • Migration von Hand erzeugen, Zod-Prüfung an der Admin-API mitziehen
    • TaskBoard: nur die Anzeige wird gekappt, nicht der Zustand — die Speicherung beim Umsortieren schickt je Spalte die vollständige Liste, und eine gekürzte Liste würde die verborgenen Aufgaben aus dem Brett löschen. Genau darauf zielt der erste Test
    • Nachsehen statt annehmen: Brett mit einer übervollen Spalte auf 1280 und 375 px, dazu axe-core

Zeiterfassung läuft.

🤖 **Claude Code hat mit der Umsetzung begonnen.** - Branch: `feat/16-max-aufgaben-anzeigen` - Verstanden als: Das Aufgabenbrett eines Projekts soll je Spalte höchstens eine einstellbare Zahl an Karten zeigen; was darüber hinausgeht, kommt hinter einen Knopf „weitere anzeigen“ und bleibt so erreichbar. - Im Chat geklärt, weil beides zu verschiedenen Umsetzungen geführt hätte: - **Wo eingestellt:** in den Admin-Einstellungen, global — wie `autoSyncBatchSize` und `staleAfterDays`. Kein Feld am Projekt, keine Migration am `Project`-Modell. - **Was begrenzt:** je Spalte, nicht nur „Erledigt“, und mit Knopf statt hartem Schnitt. Nichts wird unerreichbar. - Geplantes Vorgehen: - `AppSettings` bekommt eine Zahl, `0` schaltet die Begrenzung ab (wie `SESSION_IDLE_HOURS`) - Migration von Hand erzeugen, Zod-Prüfung an der Admin-API mitziehen - `TaskBoard`: **nur die Anzeige** wird gekappt, nicht der Zustand — die Speicherung beim Umsortieren schickt je Spalte die vollständige Liste, und eine gekürzte Liste würde die verborgenen Aufgaben aus dem Brett löschen. Genau darauf zielt der erste Test - Nachsehen statt annehmen: Brett mit einer übervollen Spalte auf 1280 und 375 px, dazu axe-core Zeiterfassung läuft.
florian.wilde worked for 12 minutes 2026-08-18 21:20:01 +00:00
florian.wilde added zu-testen and removed in-arbeit labels 2026-08-18 21:20:44 +00:00
Author
Owner

✅ Umsetzung abgeschlossen — bereit zum Testen.

Was geändert wurde

  • Admin-Einstellungen → Aufgabenbrett: neue Sektion mit „Karten je Spalte" (ohne Begrenzung, 5, 10, 15, 20, 30, 50). Voreinstellung 15, 0 schaltet ab — dieselbe Lesart wie SESSION_IDLE_HOURS
  • Daneben stehen längste Spalte im Bestand und ob die Einstellung gerade greift. Ohne diese Zahl steht die Grenze im Leeren: 15 sagt nichts, wenn die größte Spalte aus drei Karten besteht
  • Aufgabenbrett: je Spalte höchstens n Karten, darunter „n weitere anzeigen". Entfaltet wird je Spalte einzeln, der Knopf wechselt auf „weniger anzeigen"
  • Der Zähler an der Spaltenüberschrift bleibt der volle Bestand — sonst wäre nicht zu erkennen, dass etwas fehlt
  • Der Fallstrick, auf den der Test zielt: persist() schickt beim Umsortieren je Spalte die vollständige Liste an /tasks/reorder. Eine gekürzte Liste hätte beim ersten Ziehen die verborgenen Aufgaben aus dem Brett gelöscht — lautlos. Gekürzt wird deshalb erst beim Rendern; gegengeprobt am echten PATCH-Rumpf nach einem Ziehen mit der Maus: 40 IDs bei 15 sichtbaren Karten
  • Migration 20260818230000_task_column_limit: eine Spalte an AppSettings

Geänderte Dateien

  • prisma/schema.prisma · prisma/migrations/20260818230000_task_column_limit/migration.sql (neu)
  • src/lib/tasks.ts (spaltenAnzeige) · src/lib/tasks.test.ts (6 Tests angehängt)
  • src/lib/validation.ts · src/app/api/admin/settings/route.ts
  • src/components/admin/AdminManager.tsx · src/app/admin/page.tsx
  • src/components/tasks/TaskBoard.tsx · src/app/projects/[id]/page.tsx
  • FEATURES.md

So testest du es

  1. git switch feat/16-max-aufgaben-anzeigen
  2. npm run docker:db, dann npx prisma migrate deploy — es kommt eine Migration mit
  3. npm run dev
  4. Ein Projekt mit mehr als 15 Aufgaben in einer Spalte öffnen → 15 Karten, darunter „n weitere anzeigen", der Zähler oben nennt weiter alle
  5. Knopf drücken → alles da, Beschriftung wechselt auf „weniger anzeigen"
  6. Die wichtige Probe: bei gekappter Spalte eine Karte umsortieren, Seite neu laden — es müssen weiterhin alle Aufgaben da sein
  7. Admin-Einstellungen → Aufgabenbrett auf „ohne Begrenzung" stellen → Knopf verschwindet, alle Karten stehen wieder da

Geprüft: tsc sauber · 281 Unit-Tests grün (vorher 275) · npm run build durch · angesehen an einem Brett mit 40 / 3 / 0 / 22 Aufgaben gegen eine Wegwerf-Datenbank · axe-core 0 Verstöße in vier Zuständen (Brett 1280 px, Brett 375 px, Brett entfaltet, Admin-Seite), kein seitlicher Überlauf.

Aufgewendete Zeit: 00:12
Pull Request: #17

Nach Freigabe: /issue-freigabe 16

✅ **Umsetzung abgeschlossen — bereit zum Testen.** <!-- claude-status branch: feat/16-max-aufgaben-anzeigen pr: 17 zeit_sekunden: 744 --> **Was geändert wurde** - **Admin-Einstellungen → Aufgabenbrett:** neue Sektion mit „Karten je Spalte" (ohne Begrenzung, 5, 10, 15, 20, 30, 50). Voreinstellung 15, `0` schaltet ab — dieselbe Lesart wie `SESSION_IDLE_HOURS` - Daneben stehen **längste Spalte im Bestand** und ob die Einstellung gerade greift. Ohne diese Zahl steht die Grenze im Leeren: 15 sagt nichts, wenn die größte Spalte aus drei Karten besteht - **Aufgabenbrett:** je Spalte höchstens *n* Karten, darunter „*n* weitere anzeigen". Entfaltet wird je Spalte einzeln, der Knopf wechselt auf „weniger anzeigen" - Der **Zähler an der Spaltenüberschrift bleibt der volle Bestand** — sonst wäre nicht zu erkennen, dass etwas fehlt - **Der Fallstrick, auf den der Test zielt:** `persist()` schickt beim Umsortieren je Spalte die vollständige Liste an `/tasks/reorder`. Eine gekürzte Liste hätte beim ersten Ziehen die verborgenen Aufgaben aus dem Brett gelöscht — lautlos. Gekürzt wird deshalb erst beim Rendern; gegengeprobt am echten `PATCH`-Rumpf nach einem Ziehen mit der Maus: 40 IDs bei 15 sichtbaren Karten - Migration `20260818230000_task_column_limit`: eine Spalte an `AppSettings` **Geänderte Dateien** - `prisma/schema.prisma` · `prisma/migrations/20260818230000_task_column_limit/migration.sql` *(neu)* - `src/lib/tasks.ts` (`spaltenAnzeige`) · `src/lib/tasks.test.ts` (6 Tests angehängt) - `src/lib/validation.ts` · `src/app/api/admin/settings/route.ts` - `src/components/admin/AdminManager.tsx` · `src/app/admin/page.tsx` - `src/components/tasks/TaskBoard.tsx` · `src/app/projects/[id]/page.tsx` - `FEATURES.md` **So testest du es** 1. `git switch feat/16-max-aufgaben-anzeigen` 2. `npm run docker:db`, dann **`npx prisma migrate deploy`** — es kommt eine Migration mit 3. `npm run dev` 4. Ein Projekt mit mehr als 15 Aufgaben in einer Spalte öffnen → 15 Karten, darunter „*n* weitere anzeigen", der Zähler oben nennt weiter alle 5. Knopf drücken → alles da, Beschriftung wechselt auf „weniger anzeigen" 6. **Die wichtige Probe:** bei gekappter Spalte eine Karte umsortieren, Seite neu laden — es müssen weiterhin alle Aufgaben da sein 7. **Admin-Einstellungen → Aufgabenbrett** auf „ohne Begrenzung" stellen → Knopf verschwindet, alle Karten stehen wieder da **Geprüft:** `tsc` sauber · 281 Unit-Tests grün (vorher 275) · `npm run build` durch · angesehen an einem Brett mit 40 / 3 / 0 / 22 Aufgaben gegen eine Wegwerf-Datenbank · axe-core 0 Verstöße in vier Zuständen (Brett 1280 px, Brett 375 px, Brett entfaltet, Admin-Seite), kein seitlicher Überlauf. **Aufgewendete Zeit:** 00:12 **Pull Request:** #17 Nach Freigabe: `/issue-freigabe 16`
Author
Owner

🚀 Freigegeben und nach main übernommen.

  • Merge-Commit: d11dd9c
  • Pull Request: #17 (gemergt)
  • Gesamtaufwand: 00:12

⚠️ Beim Ausrollen läuft eine Migration mit (20260818230000_task_column_limit). scripts/update.sh ruft prisma migrate deploy selbst auf; wer von Hand ausrollt, muss es einmal ausführen.

Issue wird geschlossen.

🚀 **Freigegeben und nach `main` übernommen.** <!-- claude-status merge: d11dd9c4ac71d836a94ae99fbe047f2816272a7a pr: 17 zeit_sekunden: 744 --> - Merge-Commit: `d11dd9c` - Pull Request: #17 (gemergt) - Gesamtaufwand: 00:12 ⚠️ **Beim Ausrollen läuft eine Migration mit** (`20260818230000_task_column_limit`). `scripts/update.sh` ruft `prisma migrate deploy` selbst auf; wer von Hand ausrollt, muss es einmal ausführen. Issue wird geschlossen.
florian.wilde removed the zu-testen label 2026-08-18 21:27:21 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Total Time Spent: 12 minutes
florian.wilde
12 minutes
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: florian.wilde/nebula#16