PR: #749: feat(settings): add personalisation pages [Story-3095]
by @pramaan-board-bot[bot]
View PR →
Story-3095
Personalisation is a roster, not a preferences screen
Settings now introduces Vani and Amira as named colleagues. Vani has one free-form instruction field; Amira is honestly marked as coming soon.
What shipped
- A top-level Personalisation group alongside Account and Firm.
- Vani's existing avatar, Matter Expert role, one textarea, a live 3,000-character counter, Save, Cancel, and relative save time.
- An over-limit state that preserves the previous version and disables Save; an empty value remains the same textarea with placeholder copy.
- Amira's navigation row carries a SOON marker and routes to the shared coming-soon composition.
Visual evidence
Live personalisation integration
src/lib/personalisation/gateway.ts is the single
server-side boundary to Story-3094's personalisation store. The page
uses the generated get and save hooks through the app's internal
proxy, while the gateway keeps service credentials and the
counsel-scoped /app/me call on the server.
src/gen was regenerated from the merged backend contract.
Files changed
32 file(s), +1318 / -24 lines
| Path | Role | + | - |
|---|---|---|---|
| docs/walkthroughs/assets/story-3095/amira-coming-soon.png | Walkthrough | bin | bin |
| docs/walkthroughs/assets/story-3095/vani-empty.png | Walkthrough | bin | bin |
| docs/walkthroughs/assets/story-3095/vani-filled.png | Walkthrough | bin | bin |
| docs/walkthroughs/assets/story-3095/vani-over-limit.png | Walkthrough | bin | bin |
| messages/en.json | Config | +20 | -0 |
| messages/hi.json | Config | +20 | -0 |
| src/app/[locale]/(workspace)/settings/personalisation/amira/page.tsx | App route | +33 | -0 |
| src/app/[locale]/(workspace)/settings/personalisation/vani/page.tsx | App route | +51 | -0 |
| src/app/api/internal/personalisation/[agentKey]/route.test.ts | App route | +68 | -0 |
| src/app/api/internal/personalisation/[agentKey]/route.ts | App route | +77 | -0 |
| src/components/settings/coming-soon-tile.stories.tsx | Component | +18 | -2 |
| src/components/settings/coming-soon-tile.tsx | Component | +10 | -3 |
| src/components/settings/personalisation/vani-personalisation-chrome.tsx | Component | +75 | -0 |
| src/components/settings/personalisation/vani-personalisation-editor.tsx | Component | +86 | -0 |
| src/components/settings/personalisation/vani-personalisation-field.tsx | Component | +55 | -0 |
| src/components/settings/personalisation/vani-personalisation-fixtures.ts | Component | +15 | -0 |
| src/components/settings/personalisation/vani-personalisation-page.stories.tsx | Component | +109 | -0 |
| src/components/settings/personalisation/vani-personalisation-page.test.tsx | Component | +239 | -0 |
| src/components/settings/personalisation/vani-personalisation-page.tsx | Component | +52 | -0 |
| src/components/settings/personalisation/vani-personalisation-types.ts | Component | +8 | -0 |
| src/components/settings/settings-breadcrumb.stories.tsx | Component | +13 | -2 |
| src/components/settings/settings-shell.stories.tsx | Component | +28 | -2 |
| src/components/settings/settings-sidebar.stories.tsx | Component | +7 | -0 |
| src/components/settings/settings-sidebar.tsx | Component | +41 | -2 |
| src/lib/gateway-retry.test.ts | Library | +31 | -5 |
| src/lib/gateway.ts | Library | +13 | -6 |
| src/lib/kubb-client.ts | Library | +3 | -0 |
| src/lib/personalisation/gateway.test.ts | Library | +101 | -0 |
| src/lib/personalisation/gateway.ts | Library | +59 | -0 |
| src/lib/personalisation/query.ts | Library | +58 | -0 |
| src/lib/surface-registry/page-card/catalog.ts | Library | +6 | -0 |
| src/lib/surface-registry/route-registry.ts | Library | +22 | -2 |