feat(habits): CRUD UI für Habits-Source (#486) #487

Merged
pm-bot merged 2 commits from feat/habits-ui into main 2026-06-16 07:54:18 +02:00
Collaborator

Phase 4 von Day-Planner Epic #360 abschließen.

Was sich ändert

Backend für Habits-Source (Tabelle, Service, Controller, Spawner-Cron) ist seit ein paar Sprints fertig — User konnten Habits aber nur per API-Direktcall anlegen. rc27 schließt die UI-Lücke (analog rc25 Calendar Settings).

Stack

  • shared-types/habit.ts: habitSchema + create/update Request-Schemas
  • api-client/habits.ts: HabitsResource (list/create/update/delete) + 5 Tests (incl. Schema-Drift-Guard)
  • feature-day-planner/habits-settings-screen.tsx: Tamagui-Screen, list + add-form (Titel, recurrenceDays, anchorDate), Delete-Button pro Row
  • 3 Hooks: useHabits, useCreateHabit, useDeleteHabit
  • Web: /einstellungen/habits + Sidebar-Eintrag „Routinen"
  • Mobile: app/einstellungen/habits.tsx + Drawer-Index-Eintrag

Tests

  • api-client: 21/21
  • feature-day-planner typecheck: OK
  • web typecheck: OK / 70/70 tests
  • mobile typecheck: OK / 198/198 tests
  • API: 464/464 (unverändert)

Out-of-Scope (v1 UI)

  • Inline-Edit von Habits (nur Create + Delete)
  • RRULE-UI (nur recurrenceDays als simple Tageszahl)
  • Streak-Anzeige
  • Empty-State-CTA auf /heute

Closes #486.

Phase 4 von Day-Planner Epic #360 abschließen. ## Was sich ändert Backend für Habits-Source (Tabelle, Service, Controller, Spawner-Cron) ist seit ein paar Sprints fertig — User konnten Habits aber nur per API-Direktcall anlegen. rc27 schließt die UI-Lücke (analog rc25 Calendar Settings). ## Stack - `shared-types/habit.ts`: habitSchema + create/update Request-Schemas - `api-client/habits.ts`: HabitsResource (list/create/update/delete) + 5 Tests (incl. Schema-Drift-Guard) - `feature-day-planner/habits-settings-screen.tsx`: Tamagui-Screen, list + add-form (Titel, recurrenceDays, anchorDate), Delete-Button pro Row - 3 Hooks: `useHabits`, `useCreateHabit`, `useDeleteHabit` - Web: `/einstellungen/habits` + Sidebar-Eintrag „Routinen" - Mobile: `app/einstellungen/habits.tsx` + Drawer-Index-Eintrag ## Tests - api-client: 21/21 - feature-day-planner typecheck: OK - web typecheck: OK / 70/70 tests - mobile typecheck: OK / 198/198 tests - API: 464/464 (unverändert) ## Out-of-Scope (v1 UI) - Inline-Edit von Habits (nur Create + Delete) - RRULE-UI (nur recurrenceDays als simple Tageszahl) - Streak-Anzeige - Empty-State-CTA auf /heute Closes #486.
Backend (habits-Tabelle, HabitsService/-Controller, HabitCandidateWriter,
HabitSpawnerCron) ist schon länger live. Diese Änderung schließt die UI-Lücke:

- shared-types: habit.ts (habitSchema, create/update/Request-Schemas)
- api-client: HabitsResource + 5 Tests (incl. Schema-Drift-Guard)
- feature-day-planner: HabitsSettingsScreen (Tamagui cross-platform) + 3 Hooks
  (useHabits, useCreateHabit, useDeleteHabit)
- Web: /einstellungen/habits + Sidebar-Eintrag „Routinen"
- Mobile: app/einstellungen/habits.tsx + Drawer-Einstellungen-Eintrag

Out-of-scope für v1 UI: Inline-Edit, RRULE-UI, Streak-Anzeige.

Schließt Phase 4 (Habit-Source) von Day-Planner Epic #360.
chore(release): v0.6.6-rc27
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
46d2aae3ea
pm-bot merged commit a1fcd807b0 into main 2026-06-16 07:54:18 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!487
No description provided.