- Widget wrappers use flex-1 with a min-w-0 chain so cards stay at their
grid-cell width instead of shrinking to content or overflowing it
- ItemContent gains min-w-0 so nowrap text ellipsizes inside the card
(notifications, campaigns, tickets) rather than clipping at the viewport
- Stretched Service Summary and Mission Briefing top-pack their content;
Mission Briefing header flips between Next Mission and Last Mission
- Drag-and-drop widget arrangement (main two-column zone + sidebar) with
per-widget span resize, persisted to Users.preferences.dashboard.layout
via saveDashboardLayout (migration included)
- New personal widgets: Wallet, Open Negotiations, My Tickets (View all),
Recent Notifications (per-row mark as read)
- Widgets that are empty or not visible to the viewer are omitted so they
never render as empty drag targets
- Registers both pending migrations and regenerates payload types/schema
- Emphasize stat values and keep labels on one line
- Rework the recent events feed into a two-line layout with human-readable type labels and narrative highlighting
- Redesign homepage as authenticated operations dashboard
- Add ProfileSummary, MissionBriefing, RecentEvents, QuickStats components
- Add UpcomingMissions and ActiveCampaigns sidebar widgets
- Redirect /dashboard to / (homepage is now the dashboard)
- Show welcome screen with login link for unauthenticated users