feat(coach,admin): finish the self-context and invite surfaces end to end

Invites move into their own admin section with a real ledger: status
badges, expiry, uses, a redemption history of who joined when (new
redemption table, revocation is now soft so history survives), and an
honest one-time link/QR moment. The assistant self-context grows
structured fields for conditions, allergies and focus — encrypted like
the free text — merges age and gender from the profile into one fenced
prompt block, and asks up to three targeted follow-up questions that
surface as tappable chips above the coach composer. A fourth nudge
trigger gently suggests a check-up when the self-context is stale and
the coach is actually in use.
This commit is contained in:
Marc-André Bombeck committed 2026-06-10 16:18:48 +02:00
1 parent 9fe5673251
commit 5b75184649
32 files changed
+2648 -423

No files matched your search

+13 -6
View File
@@ -139,12 +139,19 @@ export function AdminSectionRenderer({
title={t("admin.section.users.title")}
subtitle={t("admin.section.users.subtitle")}
>
<div className="space-y-6">
<UserManagementSection />
{/* v1.15.20 — registration invites live with the accounts
they admit. */}
<InviteTokensSection />
</div>
<UserManagementSection />
</SectionFrame>
);
case "invites":
// v1.16.0 — invites moved out of Users into their own section:
// the full table (status, redemptions, revocation) is a workflow
// of its own and was drowning under the account list.
return (
<SectionFrame
title={t("admin.section.invites.title")}
subtitle={t("admin.section.invites.subtitle")}
>
<InviteTokensSection />
</SectionFrame>
);
case "api-tokens":