gsxdsm
a9d5b06013
FN-8562: add tags to chat conversations
Enable project-scoped reusable tags for Direct chat sessions.
- Add tag storage, migrations, and scoped assignment APIs.
- Add chat sidebar tag creation, assignment, and filtering controls.
- Document tag behavior and cover schema and chat interactions.
- Establish the session project/id candidate key before creating scoped tag foreign keys.
Files changed:
.changeset/fn-8562-chat-conversation-tags.md | 7 ++
docs/dashboard-guide.md | 4 +
docs/storage.md | 2 +
.../src/__tests__/postgres/schema-applier.test.ts | 8 +-
packages/core/src/async-chat-store.ts | 117 ++++++++++++++++++++-
packages/core/src/chat-store.ts | 32 ++++++
packages/core/src/chat-types.ts | 14 +++
packages/core/src/index.gate.ts | 3 +
packages/core/src/index.ts | 3 +
.../postgres/migrations/0036_chat_session_tags.sql | 64 +++++++++++
packages/core/src/postgres/schema-applier.ts | 16 ++-
packages/core/src/postgres/schema/project.ts | 34 ++++++
packages/dashboard/app/api.ts | 1 +
packages/dashboard/app/api/chat.ts | 18 ++++
packages/dashboard/app/components/ChatView.css | 17 +++
packages/dashboard/app/components/ChatView.tsx | 70 +++++++++++-
.../__tests__/ChatView.core-interactions.test.tsx | 27 +++++
.../dashboard/app/hooks/__tests__/useChat.test.ts | 1 +
packages/dashboard/app/hooks/useChat.ts | 52 ++++++++-
.../dashboard/src/routes/register-chat-routes.ts | 70 ++++++++++++
20 files changed, 550 insertions(+), 10 deletions(-)
Fusion-Task-Id: FN-8562
Fusion-Task-Lineage: 4efe798c-0865-451a-adbd-6b85f9f8b149
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-24 18:09:32 -07:00
..
2026-07-08 23:39:35 -07:00
2026-07-24 18:09:32 -07:00
2026-07-15 10:36:10 -07:00
2026-05-06 21:36:31 -07:00
2026-06-07 18:51:46 -07:00
2026-04-24 19:39:20 -07:00
2026-07-04 10:42:21 -07:00
2026-07-21 23:10:08 -07:00
2026-05-14 13:59:10 -07:00
2026-07-09 19:58:07 -07:00
2026-07-21 18:03:36 -07:00
2026-04-24 19:39:20 -07:00
2026-07-16 14:44:07 -07:00
2026-05-10 19:13:05 -07:00
2026-07-19 13:47:38 -07:00
2026-07-21 23:10:34 -07:00
2026-05-02 13:24:37 -07:00
2026-07-16 03:23:25 -07:00
2026-07-19 13:34:25 -07:00
2026-04-17 16:36:15 -07:00
2026-07-24 11:15:43 -07:00
2026-07-16 17:05:29 -07:00
2026-06-21 19:19:55 -07:00
2026-07-14 08:23:11 -07:00
2026-06-26 02:45:29 -07:00
2026-06-21 13:32:19 -07:00
2026-07-16 16:34:09 -07:00
2026-07-16 16:34:09 -07:00
2026-07-16 13:09:48 -07:00
2026-05-14 15:49:55 -07:00
2026-06-07 20:43:44 -07:00
2026-05-18 00:53:23 -07:00
2026-06-03 13:51:13 -07:00
2026-06-03 13:51:13 -07:00
2026-07-05 11:31:48 -07:00
2026-06-29 18:41:43 -07:00
2026-07-21 13:36:05 -07:00
2026-07-05 16:58:42 -07:00
2026-07-01 11:28:03 -07:00
2026-06-08 23:38:32 -07:00
2026-07-16 01:32:23 -07:00
2026-07-22 18:32:36 -07:00
2026-05-13 06:29:35 -07:00
2026-07-21 12:17:47 -07:00
2026-06-05 13:59:50 -07:00
2026-07-16 21:39:49 -07:00
2026-07-18 11:34:42 -07:00
2026-07-02 11:38:33 -07:00
2026-05-27 21:31:12 -07:00
2026-07-19 11:50:52 -07:00
2026-07-13 19:07:58 -07:00
2026-04-24 19:39:20 -07:00
2026-07-12 10:04:29 -07:00
2026-07-19 15:05:31 -07:00
2026-05-19 03:21:16 -07:00
2026-06-08 22:35:04 -07:00
2026-06-08 22:35:04 -07:00
2026-05-18 16:23:06 -07:00
2026-07-18 15:35:26 -07:00
2026-07-22 19:28:51 -07:00
2026-05-18 08:02:21 -07:00
2026-07-10 11:26:16 -07:00
2026-05-06 11:09:05 -07:00
2026-05-08 12:05:46 -07:00
2026-05-06 06:05:05 -07:00
2026-07-19 12:16:51 -07:00
2026-05-14 00:12:03 -07:00
2026-05-20 14:28:45 -07:00
2026-07-21 18:48:47 -07:00
2026-07-16 16:01:29 -07:00
2026-05-01 13:56:55 -07:00
2026-06-26 00:06:31 -07:00
2026-07-09 19:58:05 -07:00
2026-07-19 18:45:27 -07:00
2026-05-28 22:59:18 -07:00
2026-07-17 23:56:34 -07:00
2026-06-24 08:36:55 -07:00
2026-05-10 05:29:41 -07:00
2026-07-02 19:01:09 -07:00
2026-07-13 19:07:58 -07:00
2026-06-05 00:30:27 -07:00
2026-06-25 21:56:27 -07:00
2026-07-21 18:33:22 -07:00
2026-05-30 22:53:24 -07:00
2026-05-29 08:25:38 -07:00
2026-07-08 23:39:34 -07:00
2026-07-09 21:36:14 -07:00
2026-07-09 19:58:03 -07:00
2026-06-28 16:51:49 -07:00
2026-06-09 12:51:20 -07:00
2026-05-20 14:29:07 -07:00
2026-05-18 09:46:46 -07:00
2026-06-02 18:46:33 -07:00
2026-05-17 15:17:22 -07:00
2026-07-22 18:16:00 -07:00
2026-07-22 17:35:14 -07:00
2026-06-03 17:33:16 -07:00
2026-04-24 19:39:20 -07:00
2026-07-16 20:37:05 -07:00
2026-05-16 20:06:47 -07:00
2026-07-22 15:25:20 -07:00
2026-06-26 11:56:12 -07:00
2026-04-24 19:39:20 -07:00
2026-04-24 19:39:20 -07:00
2026-05-05 06:32:33 -07:00
2026-05-11 17:46:42 -07:00
2026-05-12 09:06:54 -07:00
2026-05-14 17:04:16 -07:00
2026-05-11 06:47:43 -07:00
2026-05-10 19:13:05 -07:00
2026-07-15 02:19:19 -07:00
2026-07-21 23:09:30 -07:00
2026-07-18 08:01:44 -07:00
2026-07-23 14:39:44 -07:00
2026-07-23 13:21:10 -07:00
2026-07-18 19:18:57 -07:00
2026-07-16 19:48:11 -07:00
2026-07-22 08:53:31 -07:00
2026-07-19 15:05:31 -07:00
2026-06-25 03:44:22 -07:00
2026-07-16 19:36:02 -07:00
2026-06-13 02:54:57 -07:00
2026-07-19 11:50:52 -07:00
2026-04-24 19:39:20 -07:00
2026-07-17 09:54:44 -07:00
2026-07-07 22:06:20 -07:00
2026-07-13 19:07:58 -07:00
2026-07-21 00:00:08 -07:00
2026-06-13 23:20:06 -07:00
2026-07-14 08:18:52 -07:00
2026-07-16 18:13:37 -07:00
2026-07-18 11:49:11 -07:00
2026-07-15 02:19:19 -07:00
2026-06-15 20:59:57 -07:00
2026-07-14 20:27:35 -07:00
2026-04-29 07:35:23 -07:00
2026-07-13 19:07:58 -07:00
2026-07-09 19:58:05 -07:00
2026-07-15 21:33:11 -07:00
2026-07-04 13:51:09 -07:00
2026-07-14 22:13:30 -07:00
2026-07-14 22:16:16 -07:00
2026-07-04 21:28:15 -07:00
2026-07-11 22:16:48 -07:00
2026-07-15 12:27:15 -07:00
2026-07-04 12:38:14 -07:00
2026-07-20 17:35:06 -07:00
2026-07-22 15:25:20 -07:00
2026-07-14 22:13:30 -07:00
2026-07-22 15:25:20 -07:00
2026-05-11 06:47:43 -07:00
2026-07-10 07:46:52 -07:00
2026-07-12 11:52:24 -07:00
2026-06-03 17:57:29 -07:00
2026-07-14 22:13:30 -07:00
2026-06-15 19:44:17 -07:00
2026-06-12 13:50:24 -07:00
2026-07-14 22:13:30 -07:00
2026-05-11 21:48:26 -07:00
2026-07-23 11:41:15 -07:00
2026-07-08 23:39:34 -07:00
2026-07-08 23:39:35 -07:00
2026-04-25 15:25:08 -07:00
2026-05-01 12:25:44 -07:00
2026-06-04 22:53:02 -07:00
2026-07-04 21:28:15 -07:00
2026-07-18 16:18:15 -07:00
2026-05-12 17:04:32 -07:00
2026-05-13 06:29:36 -07:00
2026-07-15 20:53:05 -07:00
2026-05-15 12:51:41 -07:00
2026-07-18 13:09:38 -07:00
2026-07-19 11:50:52 -07:00
2026-04-24 19:39:20 -07:00
2026-07-13 19:07:58 -07:00
2026-07-21 23:33:05 -07:00
2026-05-15 12:02:44 -07:00
2026-05-15 22:56:31 -07:00
2026-05-15 12:02:44 -07:00
2026-05-17 00:21:12 -07:00
2026-05-16 21:00:48 -07:00
2026-05-17 06:23:00 -07:00
2026-04-18 12:21:14 -07:00
2026-07-14 20:27:35 -07:00
2026-07-22 23:41:48 -07:00
2026-07-19 18:37:45 -07:00
2026-07-01 09:45:30 -07:00
2026-05-10 19:13:05 -07:00
2026-05-15 22:56:30 -07:00
2026-05-14 04:32:42 -07:00
2026-05-06 09:43:51 -07:00
2026-07-15 13:32:33 -07:00
2026-07-15 10:38:04 -07:00
2026-07-16 20:37:05 -07:00
2026-07-16 20:37:05 -07:00
2026-07-14 22:13:30 -07:00
2026-05-20 14:29:07 -07:00
2026-05-20 14:29:07 -07:00
2026-05-13 06:29:34 -07:00
2026-07-15 12:41:05 -07:00
2026-07-13 19:07:58 -07:00
2026-07-15 02:19:19 -07:00
2026-07-16 05:52:17 -07:00
2026-07-14 22:13:30 -07:00
2026-07-13 19:07:58 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 00:11:06 -07:00
2026-06-05 13:56:05 -07:00
2026-07-19 15:20:39 -07:00
2026-07-19 22:43:13 -07:00
2026-06-21 13:32:19 -07:00
2026-05-20 14:29:07 -07:00
2026-07-15 12:44:30 -07:00
2026-07-13 19:07:58 -07:00
2026-06-28 01:43:08 -07:00
2026-05-11 06:47:43 -07:00
2026-06-18 03:24:57 -07:00
2026-07-09 19:58:04 -07:00
2026-07-09 19:58:08 -07:00
2026-07-18 14:54:54 -07:00
2026-05-17 22:57:15 -07:00
2026-07-19 21:19:56 -07:00
2026-05-18 15:01:20 -07:00
2026-06-01 16:03:05 -07:00
2026-06-19 16:47:34 -07:00
2026-06-04 00:19:57 -07:00
2026-04-29 10:22:18 -07:00
2026-05-01 11:55:56 -07:00
2026-05-04 10:18:38 -07:00
2026-06-03 13:33:38 -07:00
2026-06-18 01:20:03 -07:00
2026-06-17 19:19:05 -07:00
2026-07-20 18:16:58 -07:00
2026-07-21 20:05:39 -07:00
2026-07-21 20:05:39 -07:00
2026-06-07 21:19:10 -07:00
2026-06-04 23:35:32 -07:00
2026-06-27 09:28:31 -07:00
2026-06-08 13:32:58 -07:00
2026-06-08 00:19:50 -07:00
2026-06-27 13:05:50 -07:00
2026-06-29 02:08:08 -07:00
2026-07-01 08:22:04 -07:00
2026-07-22 22:37:51 -07:00
2026-07-10 01:49:15 -07:00
2026-07-19 11:50:52 -07:00
2026-06-29 12:23:20 -07:00
2026-06-29 12:47:21 -07:00
2026-06-03 18:51:27 -07:00
2026-07-01 11:28:03 -07:00
2026-07-23 08:53:06 -07:00
2026-07-09 19:58:05 -07:00
2026-07-10 01:49:15 -07:00
2026-06-03 00:12:13 -07:00
2026-07-16 15:37:42 -07:00
2026-07-16 15:27:03 -07:00
2026-05-16 07:16:05 -07:00
2026-06-13 21:17:20 -07:00