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

Visual evidence

Vani — filled
Vani personalisation page with filled instructions
Vani — empty
Vani personalisation page with only textarea placeholder copy
Vani — over the 3,000-character limit
Vani personalisation page with red counter, disabled Save, and unchanged-version message
Amira — coming soon
Amira personalisation navigation row and coming-soon tile

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.pngWalkthroughbinbin
docs/walkthroughs/assets/story-3095/vani-empty.pngWalkthroughbinbin
docs/walkthroughs/assets/story-3095/vani-filled.pngWalkthroughbinbin
docs/walkthroughs/assets/story-3095/vani-over-limit.pngWalkthroughbinbin
messages/en.jsonConfig+20-0
messages/hi.jsonConfig+20-0
src/app/[locale]/(workspace)/settings/personalisation/amira/page.tsxApp route+33-0
src/app/[locale]/(workspace)/settings/personalisation/vani/page.tsxApp route+51-0
src/app/api/internal/personalisation/[agentKey]/route.test.tsApp route+68-0
src/app/api/internal/personalisation/[agentKey]/route.tsApp route+77-0
src/components/settings/coming-soon-tile.stories.tsxComponent+18-2
src/components/settings/coming-soon-tile.tsxComponent+10-3
src/components/settings/personalisation/vani-personalisation-chrome.tsxComponent+75-0
src/components/settings/personalisation/vani-personalisation-editor.tsxComponent+86-0
src/components/settings/personalisation/vani-personalisation-field.tsxComponent+55-0
src/components/settings/personalisation/vani-personalisation-fixtures.tsComponent+15-0
src/components/settings/personalisation/vani-personalisation-page.stories.tsxComponent+109-0
src/components/settings/personalisation/vani-personalisation-page.test.tsxComponent+239-0
src/components/settings/personalisation/vani-personalisation-page.tsxComponent+52-0
src/components/settings/personalisation/vani-personalisation-types.tsComponent+8-0
src/components/settings/settings-breadcrumb.stories.tsxComponent+13-2
src/components/settings/settings-shell.stories.tsxComponent+28-2
src/components/settings/settings-sidebar.stories.tsxComponent+7-0
src/components/settings/settings-sidebar.tsxComponent+41-2
src/lib/gateway-retry.test.tsLibrary+31-5
src/lib/gateway.tsLibrary+13-6
src/lib/kubb-client.tsLibrary+3-0
src/lib/personalisation/gateway.test.tsLibrary+101-0
src/lib/personalisation/gateway.tsLibrary+59-0
src/lib/personalisation/query.tsLibrary+58-0
src/lib/surface-registry/page-card/catalog.tsLibrary+6-0
src/lib/surface-registry/route-registry.tsLibrary+22-2