@lobehub/lobehub 2.0.0-next.333 → 2.0.0-next.335

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/changelog/v1.json +14 -0
  3. package/docs/development/database-schema.dbml +34 -0
  4. package/locales/ar/common.json +1 -0
  5. package/locales/bg-BG/common.json +1 -0
  6. package/locales/de-DE/common.json +1 -0
  7. package/locales/en-US/common.json +1 -0
  8. package/locales/es-ES/common.json +1 -0
  9. package/locales/fa-IR/common.json +1 -0
  10. package/locales/fr-FR/common.json +1 -0
  11. package/locales/it-IT/common.json +1 -0
  12. package/locales/ja-JP/common.json +1 -0
  13. package/locales/ko-KR/common.json +1 -0
  14. package/locales/nl-NL/common.json +1 -0
  15. package/locales/pl-PL/common.json +1 -0
  16. package/locales/pt-BR/common.json +1 -0
  17. package/locales/ru-RU/common.json +1 -0
  18. package/locales/tr-TR/common.json +1 -0
  19. package/locales/vi-VN/common.json +1 -0
  20. package/locales/zh-CN/common.json +1 -0
  21. package/locales/zh-TW/common.json +1 -0
  22. package/package.json +1 -1
  23. package/packages/const/src/url.ts +6 -0
  24. package/packages/database/migrations/0070_add_user_memory_activities.sql +35 -0
  25. package/packages/database/migrations/meta/0070_snapshot.json +10656 -0
  26. package/packages/database/migrations/meta/_journal.json +8 -1
  27. package/packages/database/src/schemas/userMemories/index.ts +71 -0
  28. package/src/app/[variants]/(mobile)/me/(home)/features/useCategory.tsx +16 -9
  29. package/src/app/[variants]/layout.tsx +0 -4
  30. package/src/features/User/UserPanel/useMenu.tsx +18 -9
  31. package/src/hooks/usePlatform.test.ts +5 -0
  32. package/src/hooks/usePlatform.ts +1 -0
  33. package/src/locales/default/common.ts +1 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.335](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.334...v2.0.0-next.335)
6
+
7
+ <sup>Released on **2026-01-22**</sup>
8
+
9
+ #### ✨ Features
10
+
11
+ - **database**: Added user memory activity.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### What's improved
19
+
20
+ - **database**: Added user memory activity, closes [#11680](https://github.com/lobehub/lobe-chat/issues/11680) ([0160fbd](https://github.com/lobehub/lobe-chat/commit/0160fbd))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
30
+ ## [Version 2.0.0-next.334](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.333...v2.0.0-next.334)
31
+
32
+ <sup>Released on **2026-01-21**</sup>
33
+
34
+ #### ✨ Features
35
+
36
+ - **misc**: Add platform-aware download client menu option.
37
+
38
+ <br/>
39
+
40
+ <details>
41
+ <summary><kbd>Improvements and Fixes</kbd></summary>
42
+
43
+ #### What's improved
44
+
45
+ - **misc**: Add platform-aware download client menu option, closes [#11676](https://github.com/lobehub/lobe-chat/issues/11676) ([55abddc](https://github.com/lobehub/lobe-chat/commit/55abddc))
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ## [Version 2.0.0-next.333](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.332...v2.0.0-next.333)
6
56
 
7
57
  <sup>Released on **2026-01-21**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,18 @@
1
1
  [
2
+ {
3
+ "children": {},
4
+ "date": "2026-01-22",
5
+ "version": "2.0.0-next.335"
6
+ },
7
+ {
8
+ "children": {
9
+ "features": [
10
+ "Add platform-aware download client menu option."
11
+ ]
12
+ },
13
+ "date": "2026-01-21",
14
+ "version": "2.0.0-next.334"
15
+ },
2
16
  {
3
17
  "children": {
4
18
  "features": [
@@ -1235,6 +1235,40 @@ table user_memories {
1235
1235
  }
1236
1236
  }
1237
1237
 
1238
+ table user_memories_activities {
1239
+ id varchar(255) [pk, not null]
1240
+ user_id text
1241
+ user_memory_id varchar(255)
1242
+ metadata jsonb
1243
+ tags text[]
1244
+ type varchar(255) [not null]
1245
+ status varchar(255) [not null, default: 'pending']
1246
+ timezone varchar(255)
1247
+ starts_at "timestamp with time zone"
1248
+ ends_at "timestamp with time zone"
1249
+ associated_objects jsonb
1250
+ associated_subjects jsonb
1251
+ associated_locations jsonb
1252
+ notes text
1253
+ narrative text
1254
+ narrative_vector vector(1024)
1255
+ feedback text
1256
+ feedback_vector vector(1024)
1257
+ captured_at "timestamp with time zone" [not null, default: `now()`]
1258
+ accessed_at "timestamp with time zone" [not null, default: `now()`]
1259
+ created_at "timestamp with time zone" [not null, default: `now()`]
1260
+ updated_at "timestamp with time zone" [not null, default: `now()`]
1261
+
1262
+ indexes {
1263
+ narrative_vector [name: 'user_memories_activities_narrative_vector_index']
1264
+ feedback_vector [name: 'user_memories_activities_feedback_vector_index']
1265
+ type [name: 'user_memories_activities_type_index']
1266
+ user_id [name: 'user_memories_activities_user_id_index']
1267
+ user_memory_id [name: 'user_memories_activities_user_memory_id_index']
1268
+ status [name: 'user_memories_activities_status_index']
1269
+ }
1270
+ }
1271
+
1238
1272
  table user_memories_contexts {
1239
1273
  id varchar(255) [pk, not null]
1240
1274
  user_id text
@@ -179,6 +179,7 @@
179
179
  "delete": "حذف",
180
180
  "document": "دليل المستخدم",
181
181
  "download": "تنزيل",
182
+ "downloadClient": "تنزيل العميل",
182
183
  "duplicate": "تكرار",
183
184
  "edit": "تعديل",
184
185
  "errors.invalidFileFormat": "تنسيق الملف غير صالح",
@@ -179,6 +179,7 @@
179
179
  "delete": "Изтрий",
180
180
  "document": "Ръководство за потребителя",
181
181
  "download": "Изтегли",
182
+ "downloadClient": "Изтегли клиент",
182
183
  "duplicate": "Дублирай",
183
184
  "edit": "Редактирай",
184
185
  "errors.invalidFileFormat": "Невалиден файлов формат",
@@ -179,6 +179,7 @@
179
179
  "delete": "Löschen",
180
180
  "document": "Benutzerhandbuch",
181
181
  "download": "Herunterladen",
182
+ "downloadClient": "Client herunterladen",
182
183
  "duplicate": "Duplizieren",
183
184
  "edit": "Bearbeiten",
184
185
  "errors.invalidFileFormat": "Ungültiges Dateiformat",
@@ -179,6 +179,7 @@
179
179
  "delete": "Delete",
180
180
  "document": "User Manual",
181
181
  "download": "Download",
182
+ "downloadClient": "Download Client",
182
183
  "duplicate": "Duplicate",
183
184
  "edit": "Edit",
184
185
  "errors.invalidFileFormat": "Invalid file format",
@@ -179,6 +179,7 @@
179
179
  "delete": "Eliminar",
180
180
  "document": "Manual de usuario",
181
181
  "download": "Descargar",
182
+ "downloadClient": "Descargar cliente",
182
183
  "duplicate": "Duplicar",
183
184
  "edit": "Editar",
184
185
  "errors.invalidFileFormat": "Formato de archivo no válido",
@@ -179,6 +179,7 @@
179
179
  "delete": "حذف",
180
180
  "document": "راهنمای کاربر",
181
181
  "download": "دانلود",
182
+ "downloadClient": "دانلود کلاینت",
182
183
  "duplicate": "تکراری",
183
184
  "edit": "ویرایش",
184
185
  "errors.invalidFileFormat": "فرمت فایل نامعتبر است",
@@ -179,6 +179,7 @@
179
179
  "delete": "Supprimer",
180
180
  "document": "Manuel utilisateur",
181
181
  "download": "Télécharger",
182
+ "downloadClient": "Télécharger le client",
182
183
  "duplicate": "Dupliquer",
183
184
  "edit": "Modifier",
184
185
  "errors.invalidFileFormat": "Format de fichier invalide",
@@ -179,6 +179,7 @@
179
179
  "delete": "Elimina",
180
180
  "document": "Manuale utente",
181
181
  "download": "Scarica",
182
+ "downloadClient": "Scarica client",
182
183
  "duplicate": "Duplica",
183
184
  "edit": "Modifica",
184
185
  "errors.invalidFileFormat": "Formato file non valido",
@@ -179,6 +179,7 @@
179
179
  "delete": "削除",
180
180
  "document": "ドキュメント",
181
181
  "download": "ダウンロード",
182
+ "downloadClient": "クライアントをダウンロード",
182
183
  "duplicate": "コピーを作成",
183
184
  "edit": "編集",
184
185
  "errors.invalidFileFormat": "ファイルフォーマットエラー",
@@ -179,6 +179,7 @@
179
179
  "delete": "삭제",
180
180
  "document": "사용 설명서",
181
181
  "download": "다운로드",
182
+ "downloadClient": "클라이언트 다운로드",
182
183
  "duplicate": "복사본 만들기",
183
184
  "edit": "편집",
184
185
  "errors.invalidFileFormat": "파일 형식 오류",
@@ -179,6 +179,7 @@
179
179
  "delete": "Verwijderen",
180
180
  "document": "Gebruikershandleiding",
181
181
  "download": "Downloaden",
182
+ "downloadClient": "Client downloaden",
182
183
  "duplicate": "Dupliceren",
183
184
  "edit": "Bewerken",
184
185
  "errors.invalidFileFormat": "Ongeldig bestandsformaat",
@@ -179,6 +179,7 @@
179
179
  "delete": "Usuń",
180
180
  "document": "Instrukcja obsługi",
181
181
  "download": "Pobierz",
182
+ "downloadClient": "Pobierz klienta",
182
183
  "duplicate": "Duplikuj",
183
184
  "edit": "Edytuj",
184
185
  "errors.invalidFileFormat": "Nieprawidłowy format pliku",
@@ -179,6 +179,7 @@
179
179
  "delete": "Excluir",
180
180
  "document": "Manual do Usuário",
181
181
  "download": "Baixar",
182
+ "downloadClient": "Baixar cliente",
182
183
  "duplicate": "Duplicar",
183
184
  "edit": "Editar",
184
185
  "errors.invalidFileFormat": "Formato de arquivo inválido",
@@ -179,6 +179,7 @@
179
179
  "delete": "Удалить",
180
180
  "document": "Руководство пользователя",
181
181
  "download": "Скачать",
182
+ "downloadClient": "Скачать клиент",
182
183
  "duplicate": "Дублировать",
183
184
  "edit": "Редактировать",
184
185
  "errors.invalidFileFormat": "Недопустимый формат файла",
@@ -179,6 +179,7 @@
179
179
  "delete": "Sil",
180
180
  "document": "Kullanıcı Kılavuzu",
181
181
  "download": "İndir",
182
+ "downloadClient": "İstemciyi indir",
182
183
  "duplicate": "Çoğalt",
183
184
  "edit": "Düzenle",
184
185
  "errors.invalidFileFormat": "Geçersiz dosya formatı",
@@ -179,6 +179,7 @@
179
179
  "delete": "Xóa",
180
180
  "document": "Hướng dẫn sử dụng",
181
181
  "download": "Tải xuống",
182
+ "downloadClient": "Tải xuống client",
182
183
  "duplicate": "Nhân bản",
183
184
  "edit": "Chỉnh sửa",
184
185
  "errors.invalidFileFormat": "Định dạng tệp không hợp lệ",
@@ -179,6 +179,7 @@
179
179
  "delete": "删除",
180
180
  "document": "使用文档",
181
181
  "download": "下载",
182
+ "downloadClient": "下载客户端",
182
183
  "duplicate": "创建副本",
183
184
  "edit": "编辑",
184
185
  "errors.invalidFileFormat": "文件格式错误",
@@ -179,6 +179,7 @@
179
179
  "delete": "刪除",
180
180
  "document": "使用說明文件",
181
181
  "download": "下載",
182
+ "downloadClient": "下載客戶端",
182
183
  "duplicate": "建立副本",
183
184
  "edit": "編輯",
184
185
  "errors.invalidFileFormat": "檔案格式錯誤",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/lobehub",
3
- "version": "2.0.0-next.333",
3
+ "version": "2.0.0-next.335",
4
4
  "description": "LobeHub - an open-source,comprehensive AI Agent framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -63,3 +63,9 @@ export const AES_GCM_URL = 'https://datatracker.ietf.org/doc/html/draft-ietf-avt
63
63
  export const BASE_PROVIDER_DOC_URL = 'https://lobehub.com/docs/usage/providers';
64
64
  export const SITEMAP_BASE_URL = isDev ? '/sitemap.xml/' : 'sitemap';
65
65
  export const CHANGELOG_URL = urlJoin(OFFICIAL_SITE, 'changelog/versions');
66
+
67
+ export const DOWNLOAD_URL = {
68
+ android: 'https://play.google.com/store/apps/details?id=com.lobehub.app',
69
+ default: urlJoin(OFFICIAL_SITE, '/download'),
70
+ ios: 'https://testflight.apple.com/join/2ZbjX4Qp',
71
+ } as const;
@@ -0,0 +1,35 @@
1
+ CREATE TABLE IF NOT EXISTS "user_memories_activities" (
2
+ "id" varchar(255) PRIMARY KEY NOT NULL,
3
+ "user_id" text,
4
+ "user_memory_id" varchar(255),
5
+ "metadata" jsonb,
6
+ "tags" text[],
7
+ "type" varchar(255) NOT NULL,
8
+ "status" varchar(255) DEFAULT 'pending' NOT NULL,
9
+ "timezone" varchar(255),
10
+ "starts_at" timestamp with time zone,
11
+ "ends_at" timestamp with time zone,
12
+ "associated_objects" jsonb,
13
+ "associated_subjects" jsonb,
14
+ "associated_locations" jsonb,
15
+ "notes" text,
16
+ "narrative" text,
17
+ "narrative_vector" vector(1024),
18
+ "feedback" text,
19
+ "feedback_vector" vector(1024),
20
+ "captured_at" timestamp with time zone DEFAULT now() NOT NULL,
21
+ "accessed_at" timestamp with time zone DEFAULT now() NOT NULL,
22
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
23
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
24
+ );
25
+ --> statement-breakpoint
26
+ ALTER TABLE "user_memories_activities" DROP CONSTRAINT IF EXISTS "user_memories_activities_user_id_users_id_fk";--> statement-breakpoint
27
+ ALTER TABLE "user_memories_activities" ADD CONSTRAINT "user_memories_activities_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
28
+ ALTER TABLE "user_memories_activities" DROP CONSTRAINT IF EXISTS "user_memories_activities_user_memory_id_user_memories_id_fk";--> statement-breakpoint
29
+ ALTER TABLE "user_memories_activities" ADD CONSTRAINT "user_memories_activities_user_memory_id_user_memories_id_fk" FOREIGN KEY ("user_memory_id") REFERENCES "public"."user_memories"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
30
+ CREATE INDEX IF NOT EXISTS "user_memories_activities_narrative_vector_index" ON "user_memories_activities" USING hnsw ("narrative_vector" vector_cosine_ops);--> statement-breakpoint
31
+ CREATE INDEX IF NOT EXISTS "user_memories_activities_feedback_vector_index" ON "user_memories_activities" USING hnsw ("feedback_vector" vector_cosine_ops);--> statement-breakpoint
32
+ CREATE INDEX IF NOT EXISTS "user_memories_activities_type_index" ON "user_memories_activities" USING btree ("type");--> statement-breakpoint
33
+ CREATE INDEX IF NOT EXISTS "user_memories_activities_user_id_index" ON "user_memories_activities" USING btree ("user_id");--> statement-breakpoint
34
+ CREATE INDEX IF NOT EXISTS "user_memories_activities_user_memory_id_index" ON "user_memories_activities" USING btree ("user_memory_id");--> statement-breakpoint
35
+ CREATE INDEX IF NOT EXISTS "user_memories_activities_status_index" ON "user_memories_activities" USING btree ("status");