FN-8054: add pinned chat conversations
Add durable, scoped pinning for Direct chat conversations.
- Add pinned session persistence, migration coverage, and archive-safe row locking.
- Enforce a three-conversation per-project pin limit through the chat API.
- Add desktop and mobile pin controls, sorting, indicators, and regression tests.
Files changed:
.changeset/fn-8054-pin-conversations.md | 7 ++
docs/dashboard-guide.md | 2 +
.../postgres/satellite-db-injected-stores.test.ts | 13 ++++
packages/core/src/async-chat-store.ts | 27 ++++++++
packages/core/src/chat-store.ts | 63 ++++++++++++++++--
packages/core/src/chat-types.ts | 9 +++
.../core/src/postgres/migrations/0000_initial.sql | 1 +
.../postgres/migrations/0012_chat_session_pins.sql | 8 +++
packages/core/src/postgres/postgres-health.ts | 3 +
packages/core/src/postgres/schema-applier.ts | 30 ++++++++-
packages/core/src/postgres/schema/project.ts | 3 +
packages/dashboard/app/api/legacy.ts | 1 +
packages/dashboard/app/components/ChatView.css | 32 +++++++++-
packages/dashboard/app/components/ChatView.tsx | 74 ++++++++++++++++++++--
.../dashboard/app/hooks/__tests__/useChat.test.ts | 21 ++++++
packages/dashboard/app/hooks/useChat.ts | 72 +++++++++++++++++----
.../dashboard/src/routes/register-chat-routes.ts | 25 +++++++-
17 files changed, 366 insertions(+), 25 deletions(-)
Fusion-Task-Id: FN-8054
Fusion-Task-Lineage: 088cb01c-582b-4f56-a222-214da90ff356
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>