# 2026-04-17 — Customizable home dashboard and settings placeholder **Timestamp:** 2026-04-17T14:00:00+00:00 ## Summary Replaced the static dashboard page with a per-user customizable home screen. Each user can pin and unpin apps from the available services list. A time-aware greeting shows the user's display name (XSS-safe via React JSX text rendering). The Settings navigation item now routes to a placeholder page. ## Files Added / Modified / Deleted ### Added - `backend/alembic/versions/c7e8f9a0b1d2_add_dashboard_app_ids_to_users.py` — Migration adding `dashboard_app_ids` JSON column to `users` table (default `[]`; non-nullable) - `frontend/src/pages/SettingsPage.tsx` — Placeholder settings page at `/settings` ### Modified - `backend/app/models/user.py` — Added `dashboard_app_ids: Mapped[list]` JSON column - `backend/app/schemas/user.py` — Added `DashboardPrefsOut` and `DashboardPrefsUpdate` schemas; `app_ids` validated as safe slugs (regex, max 50, max 64 chars each) - `backend/app/routers/users.py` — Added `GET /api/users/me/preferences` and `PATCH /api/users/me/preferences` endpoints - `frontend/src/api/client.ts` — Added `DashboardPrefs` interface, `getDashboardPrefs()`, `updateDashboardPrefs()` - `frontend/src/pages/DashboardPage.tsx` — Full rewrite: greeting, pinned app cards grid, customize/edit mode with add/remove toggles, save via TanStack Query mutation - `frontend/src/App.tsx` — Imported `SettingsPage`, registered `/settings` route - `backend/STATUS.md` — Updated Users endpoints table and models table - `frontend/STATUS.md` — Added home dashboard section, added `/settings` to routes table