|
|
|
|
@ -494,6 +494,34 @@ and the owner Cockpit + Dashboard carry the low-count alert. **Ticket SLA**: an
|
|
|
|
|
`ticket.sla_days` (dated) drives an overdue mark + filter, and a "Bill" action opens New
|
|
|
|
|
Document with the client pre-selected (light ticket→invoice; `/documents/new?client=`).
|
|
|
|
|
|
|
|
|
|
## D29 — Console visual refresh: cockpit dashboard + palettes + Geist (2026-07-19)
|
|
|
|
|
The Dashboard is reworked into a **cockpit**: a flat "Today" hero (date, greeting, the headline
|
|
|
|
|
overdue figure, Everyone↔Mine scope, quick actions), the four KPI stat cards, the reminder queue,
|
|
|
|
|
then a **bento grid** of the day's sections (overdue, due-this-week, renewals, follow-ups, recent
|
|
|
|
|
payments). Low-colour on purpose — ink + neutrals + one accent, red only for real failures
|
|
|
|
|
(`.dash-*` in `apps/hq-web/src/app.css`, wired to the existing `/dashboard` payload; honest data
|
|
|
|
|
only, no invented figures).
|
|
|
|
|
|
|
|
|
|
**Theme gains a third axis — palette (the neutral ground).** Alongside mode (light/dark) and the
|
|
|
|
|
seven accents, `data-palette` selects the greys: **Warm** (the default, unchanged), **Slate**
|
|
|
|
|
(cool), **Graphite** (dark-first), **Zinc** (near-mono). Backward-compatible and config-driven
|
|
|
|
|
(`packages/ui` `theme.ts` + `tokens.css`; `warm` needs no attribute), picked in Settings →
|
|
|
|
|
Appearance beside accent + mode. The UI font is swapped **Inter → Geist Variable + Geist Mono**
|
|
|
|
|
(bundled offline via `@fontsource-variable/geist`). Class names stay stable — restyling stays in
|
|
|
|
|
one place.
|
|
|
|
|
|
|
|
|
|
## D30 — Home hub landing + sidebar reorg + section counts (2026-07-19)
|
|
|
|
|
A **Home hub** card launcher becomes the landing (`/`); the Dashboard moves to `/dashboard`. The
|
|
|
|
|
hub surfaces only the day-to-day sections (Dashboard, Clients, Documents, Reminders, Renewals,
|
|
|
|
|
Pipeline, Tickets, SMS credits, Modules) — each a card with a one-line purpose and a live count —
|
|
|
|
|
everything else stays in the sidebar. The **sidebar is reorganized** from one overloaded "Work"
|
|
|
|
|
group into six intent groups (Overview · Work · Clients & billing · Catalog · Insight · Admin)
|
|
|
|
|
with clearer names (MIS cockpit, SMS credits, APEX import); "New document" is an action, not a nav
|
|
|
|
|
row. **Section count badges** — neutral by default, amber for SMS-low, red for failed sends — sit
|
|
|
|
|
on Reminders / Pipeline / Tickets / Renewals / SMS / Clients / Documents-drafts / Modules, fetched
|
|
|
|
|
best-effort (a slow/failed one never blocks the shell). The Modules page gains a per-module
|
|
|
|
|
**client count** column.
|
|
|
|
|
|
|
|
|
|
## D31 — Credentials stored in the clear (owner decision, 2026-07-19)
|
|
|
|
|
Founder call: "no encryption for anything — those credentials will be used regularly." The
|
|
|
|
|
held-out `HQ_SECRET_KEY` was a daily friction point (the SMS-gateway balance pull needs to
|
|
|
|
|
|