@agent-native/core 0.114.5 → 0.114.6

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 (76) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/core/CHANGELOG.md +8 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/client/resources/ResourceTree.tsx +11 -5
  5. package/corpus/core/src/client/resources/ResourcesPanel.tsx +141 -18
  6. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +1 -2
  7. package/corpus/templates/clips/changelog/2026-07-20-opening-zoom-meeting-launches-native-app.md +6 -0
  8. package/corpus/templates/clips/desktop/src/app.tsx +7 -11
  9. package/corpus/templates/clips/desktop/src/lib/open-meeting-join-url.ts +22 -0
  10. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +2 -3
  11. package/corpus/templates/clips/shared/meeting-join-url.ts +0 -5
  12. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +9 -1
  13. package/corpus/templates/content/AGENTS.md +4 -1
  14. package/corpus/templates/content/actions/_content-spaces.ts +6 -1
  15. package/corpus/templates/content/actions/_database-row-batch.ts +15 -2
  16. package/corpus/templates/content/actions/_database-utils.ts +83 -15
  17. package/corpus/templates/content/actions/add-database-item.ts +3 -0
  18. package/corpus/templates/content/actions/connect-local-folder-source.ts +2 -1
  19. package/corpus/templates/content/actions/delete-content-database.ts +12 -9
  20. package/corpus/templates/content/actions/delete-database-items.ts +3 -2
  21. package/corpus/templates/content/actions/delete-document.ts +233 -6
  22. package/corpus/templates/content/actions/duplicate-database-item.ts +1 -0
  23. package/corpus/templates/content/actions/get-document.ts +4 -1
  24. package/corpus/templates/content/actions/list-content-databases.ts +1 -0
  25. package/corpus/templates/content/actions/list-documents.ts +1 -0
  26. package/corpus/templates/content/actions/list-trashed-content-databases.ts +8 -2
  27. package/corpus/templates/content/actions/list-trashed-documents.ts +50 -0
  28. package/corpus/templates/content/actions/permanently-delete-document.ts +28 -0
  29. package/corpus/templates/content/actions/pull-document.ts +15 -2
  30. package/corpus/templates/content/actions/restore-content-database.ts +48 -11
  31. package/corpus/templates/content/actions/restore-document.ts +28 -0
  32. package/corpus/templates/content/actions/search-documents.ts +2 -1
  33. package/corpus/templates/content/actions/view-screen.ts +2 -1
  34. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +149 -55
  35. package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +7 -2
  36. package/corpus/templates/content/app/components/editor/database/ListView.tsx +7 -2
  37. package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +3 -0
  38. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +26 -5
  39. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +243 -163
  40. package/corpus/templates/content/app/components/sidebar/WorkspaceSourceMenu.tsx +154 -0
  41. package/corpus/templates/content/app/components/sidebar/select-content-space.ts +11 -0
  42. package/corpus/templates/content/app/hooks/use-content-database.ts +6 -0
  43. package/corpus/templates/content/app/hooks/use-documents.ts +57 -0
  44. package/corpus/templates/content/app/i18n-data.ts +83 -2
  45. package/corpus/templates/content/app/routes/_app.local-files.tsx +8 -1
  46. package/corpus/templates/content/changelog/2026-07-19-pages-now-move-to-a-reversible-trash-and-the-organization-pi.md +6 -0
  47. package/corpus/templates/content/changelog/2026-07-20-trash-actions-now-preserve-independent-archived-pages-enforc.md +6 -0
  48. package/corpus/templates/content/changelog/2026-07-20-workspace-toggles-now-stay-independently-open-or-closed-and-.md +6 -0
  49. package/corpus/templates/content/changelog/2026-07-20-workspaces-can-be-added-from-a-blank-workspace-or-a-connecte.md +6 -0
  50. package/corpus/templates/content/parity/matrix.md +1 -1
  51. package/corpus/templates/content/parity/matrix.ts +3 -0
  52. package/corpus/templates/content/server/db/schema.ts +2 -0
  53. package/corpus/templates/content/server/lib/public-documents.ts +8 -2
  54. package/corpus/templates/content/server/plugins/db.ts +52 -0
  55. package/corpus/templates/content/server/routes/api/document-agent-context.json.get.ts +2 -2
  56. package/corpus/templates/content/shared/api.ts +10 -0
  57. package/corpus/toolkit/CHANGELOG.md +6 -0
  58. package/corpus/toolkit/package.json +1 -1
  59. package/corpus/toolkit/src/ui/progress.tsx +3 -2
  60. package/dist/client/resources/ResourceTree.d.ts +3 -1
  61. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  62. package/dist/client/resources/ResourceTree.js +4 -4
  63. package/dist/client/resources/ResourceTree.js.map +1 -1
  64. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  65. package/dist/client/resources/ResourcesPanel.js +55 -6
  66. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  67. package/dist/collab/routes.d.ts +1 -1
  68. package/dist/collab/struct-routes.d.ts +1 -1
  69. package/dist/notifications/routes.d.ts +1 -1
  70. package/dist/observability/routes.d.ts +5 -5
  71. package/dist/progress/routes.d.ts +1 -1
  72. package/dist/secrets/routes.d.ts +9 -9
  73. package/dist/server/transcribe-voice.d.ts +1 -1
  74. package/package.json +2 -2
  75. package/src/client/resources/ResourceTree.tsx +11 -5
  76. package/src/client/resources/ResourcesPanel.tsx +141 -18
@@ -0,0 +1,154 @@
1
+ import { useT } from "@agent-native/core/client/i18n";
2
+ import { IconFolder, IconPlus } from "@tabler/icons-react";
3
+ import { useRef, useState, type ReactElement } from "react";
4
+ import { Link } from "react-router";
5
+ import { toast } from "sonner";
6
+
7
+ import { Button } from "@/components/ui/button";
8
+ import {
9
+ Dialog,
10
+ DialogContent,
11
+ DialogDescription,
12
+ DialogFooter,
13
+ DialogHeader,
14
+ DialogTitle,
15
+ } from "@/components/ui/dialog";
16
+ import {
17
+ DropdownMenu,
18
+ DropdownMenuContent,
19
+ DropdownMenuItem,
20
+ DropdownMenuSeparator,
21
+ DropdownMenuTrigger,
22
+ } from "@/components/ui/dropdown-menu";
23
+ import { Input } from "@/components/ui/input";
24
+ import { useCreateContentSpace } from "@/hooks/use-content-spaces";
25
+
26
+ export type CreatedWorkspace = {
27
+ spaceId: string;
28
+ filesDatabaseId: string;
29
+ filesDocumentId: string;
30
+ catalogDatabaseId: string;
31
+ catalogItemId: string;
32
+ catalogDocumentId: string;
33
+ name: string;
34
+ kind: "user";
35
+ };
36
+
37
+ export function WorkspaceSourceMenu({
38
+ children,
39
+ align = "start",
40
+ propertyValues,
41
+ onCreated,
42
+ }: {
43
+ children: ReactElement;
44
+ align?: "start" | "center" | "end";
45
+ propertyValues?: Record<string, unknown>;
46
+ onCreated?: (
47
+ workspace: CreatedWorkspace,
48
+ ) => boolean | void | Promise<boolean | void>;
49
+ }) {
50
+ const t = useT();
51
+ const createContentSpace = useCreateContentSpace();
52
+ const [dialogOpen, setDialogOpen] = useState(false);
53
+ const [name, setName] = useState("");
54
+ const requestIdRef = useRef<string | null>(null);
55
+
56
+ async function createWorkspace() {
57
+ const workspaceName = name.trim();
58
+ if (!workspaceName) return;
59
+ const requestId = requestIdRef.current ?? crypto.randomUUID();
60
+ requestIdRef.current = requestId;
61
+ try {
62
+ const created = await createContentSpace.mutateAsync({
63
+ name: workspaceName,
64
+ requestId,
65
+ propertyValues,
66
+ });
67
+ const accepted = await onCreated?.(created);
68
+ if (accepted === false) return;
69
+ setDialogOpen(false);
70
+ setName("");
71
+ requestIdRef.current = null;
72
+ } catch (error) {
73
+ toast.error(t("sidebar.failedCreateWorkspace"), {
74
+ description: error instanceof Error ? error.message : String(error),
75
+ });
76
+ }
77
+ }
78
+
79
+ return (
80
+ <>
81
+ <DropdownMenu>
82
+ <DropdownMenuTrigger asChild>{children}</DropdownMenuTrigger>
83
+ <DropdownMenuContent align={align} className="w-52">
84
+ <DropdownMenuItem onSelect={() => setDialogOpen(true)}>
85
+ <IconPlus className="me-2 size-4" />
86
+ {t("sidebar.newWorkspace")}
87
+ </DropdownMenuItem>
88
+ <DropdownMenuSeparator />
89
+ <DropdownMenuItem asChild>
90
+ <Link
91
+ to="/local-files"
92
+ state={{ workspacePropertyValues: propertyValues }}
93
+ >
94
+ <IconFolder className="me-2 size-4" />
95
+ {t("sidebar.localFolder")}
96
+ </Link>
97
+ </DropdownMenuItem>
98
+ </DropdownMenuContent>
99
+ </DropdownMenu>
100
+
101
+ <Dialog
102
+ open={dialogOpen}
103
+ onOpenChange={(open) => {
104
+ setDialogOpen(open);
105
+ if (!open && !createContentSpace.isPending) {
106
+ setName("");
107
+ requestIdRef.current = null;
108
+ }
109
+ }}
110
+ >
111
+ <DialogContent className="sm:max-w-sm">
112
+ <form
113
+ className="grid gap-4"
114
+ onSubmit={(event) => {
115
+ event.preventDefault();
116
+ void createWorkspace();
117
+ }}
118
+ >
119
+ <DialogHeader>
120
+ <DialogTitle>{t("sidebar.newWorkspace")}</DialogTitle>
121
+ <DialogDescription>
122
+ {t("sidebar.newWorkspaceDescription")}
123
+ </DialogDescription>
124
+ </DialogHeader>
125
+ <Input
126
+ autoFocus
127
+ aria-label={t("sidebar.workspaceName")}
128
+ placeholder={t("sidebar.workspaceName")}
129
+ value={name}
130
+ maxLength={200}
131
+ onChange={(event) => setName(event.target.value)}
132
+ />
133
+ <DialogFooter>
134
+ <Button
135
+ type="button"
136
+ variant="ghost"
137
+ disabled={createContentSpace.isPending}
138
+ onClick={() => setDialogOpen(false)}
139
+ >
140
+ {t("comments.cancel")}
141
+ </Button>
142
+ <Button
143
+ type="submit"
144
+ disabled={createContentSpace.isPending || !name.trim()}
145
+ >
146
+ {t("sidebar.createWorkspace")}
147
+ </Button>
148
+ </DialogFooter>
149
+ </form>
150
+ </DialogContent>
151
+ </Dialog>
152
+ </>
153
+ );
154
+ }
@@ -104,3 +104,14 @@ export function createContentSpaceSelectionQueue() {
104
104
  return next;
105
105
  };
106
106
  }
107
+
108
+ export function createContentSidebarStateWriteQueue<T>(
109
+ write: (snapshot: T) => Promise<unknown>,
110
+ ) {
111
+ let pending: Promise<unknown> = Promise.resolve();
112
+ return (snapshot: T) => {
113
+ const next = pending.catch(() => undefined).then(() => write(snapshot));
114
+ pending = next;
115
+ return next;
116
+ };
117
+ }
@@ -622,6 +622,9 @@ export function useDeleteContentDatabase() {
622
622
  >("delete-content-database", {
623
623
  onSuccess: (data) => {
624
624
  clearDeletedContentDatabaseFromCache(queryClient, data.documentId);
625
+ queryClient.invalidateQueries({
626
+ queryKey: ["action", "list-trashed-documents"],
627
+ });
625
628
  },
626
629
  });
627
630
  }
@@ -650,6 +653,9 @@ export function useRestoreContentDatabase() {
650
653
  queryClient.invalidateQueries({
651
654
  queryKey: ["action", "list-trashed-content-databases"],
652
655
  });
656
+ queryClient.invalidateQueries({
657
+ queryKey: ["action", "list-trashed-documents"],
658
+ });
653
659
  queryClient.invalidateQueries({
654
660
  queryKey: ["action", "list-content-databases"],
655
661
  });
@@ -11,6 +11,7 @@ import type {
11
11
  DocumentUpdateRequest,
12
12
  DocumentUpdateResponse,
13
13
  DocumentMoveRequest,
14
+ ListTrashedDocumentsResponse,
14
15
  DocumentTreeNode,
15
16
  } from "@shared/api";
16
17
  import type { QueryClient } from "@tanstack/react-query";
@@ -534,6 +535,62 @@ export function useDeleteDocument() {
534
535
  queryClient.invalidateQueries({
535
536
  queryKey: ["action", "list-trashed-content-databases"],
536
537
  });
538
+ queryClient.invalidateQueries({
539
+ queryKey: ["action", "list-trashed-documents"],
540
+ });
541
+ },
542
+ });
543
+ }
544
+
545
+ export function useTrashedDocuments() {
546
+ return useActionQuery<ListTrashedDocumentsResponse>(
547
+ "list-trashed-documents",
548
+ {},
549
+ );
550
+ }
551
+
552
+ export function useRestoreDocument() {
553
+ const queryClient = useQueryClient();
554
+ return useActionMutation<
555
+ { success: boolean; restored: number; documentId: string },
556
+ { id: string }
557
+ >("restore-document", {
558
+ onSuccess: () => {
559
+ queryClient.invalidateQueries({
560
+ queryKey: ["action", "list-documents"],
561
+ });
562
+ queryClient.invalidateQueries({
563
+ queryKey: ["action", "get-content-database"],
564
+ });
565
+ queryClient.invalidateQueries({
566
+ queryKey: ["action", "list-trashed-documents"],
567
+ });
568
+ queryClient.invalidateQueries({
569
+ queryKey: ["action", "list-trashed-content-databases"],
570
+ });
571
+ },
572
+ });
573
+ }
574
+
575
+ export function usePermanentlyDeleteDocument() {
576
+ const queryClient = useQueryClient();
577
+ return useActionMutation<
578
+ { success: boolean; deleted: number },
579
+ { id: string }
580
+ >("permanently-delete-document", {
581
+ onSuccess: () => {
582
+ queryClient.invalidateQueries({
583
+ queryKey: ["action", "list-documents"],
584
+ });
585
+ queryClient.invalidateQueries({
586
+ queryKey: ["action", "get-content-database"],
587
+ });
588
+ queryClient.invalidateQueries({
589
+ queryKey: ["action", "list-trashed-documents"],
590
+ });
591
+ queryClient.invalidateQueries({
592
+ queryKey: ["action", "list-trashed-content-databases"],
593
+ });
537
594
  },
538
595
  });
539
596
  }
@@ -3108,24 +3108,33 @@ const enUS = {
3108
3108
  database: "Database",
3109
3109
  databasePermanentlyDeleted: "Database permanently deleted",
3110
3110
  databaseRestored: "Database restored",
3111
+ pagePermanentlyDeleted: "Page permanently deleted",
3112
+ pageRestored: "Page restored",
3111
3113
  deleteDatabaseNamedPermanently: "Delete {{title}} permanently",
3112
3114
  deleteDatabasePermanentlyDescription:
3113
3115
  "This permanently deletes “{{title}}” and its pages. This cannot be undone.",
3114
3116
  deleteDatabasePermanentlyQuestion: "Delete database permanently?",
3117
+ deletePageNamedPermanently: "Delete {{title}} permanently",
3118
+ deletePagePermanentlyDescription:
3119
+ "This permanently deletes “{{title}}” and its sub-pages. This cannot be undone.",
3120
+ deletePagePermanentlyQuestion: "Delete page permanently?",
3115
3121
  deletePermanently: "Delete permanently",
3116
3122
  failedCreateDatabase: "Failed to create database",
3117
3123
  failedCreatePage: "Failed to create page",
3118
3124
  failedCreateWorkspace: "Failed to create workspace",
3119
3125
  failedDeletePage: "Failed to delete page",
3120
3126
  failedPermanentDeleteDatabase: "Failed to permanently delete database",
3127
+ failedPermanentDeletePage: "Failed to permanently delete page",
3121
3128
  failedMovePage: "Failed to move page",
3122
3129
  failedUpdateFavorite: "Could not update favorite",
3123
3130
  removeFromFavorites: "Remove from favorites",
3124
3131
  failedRemoveLocalFiles: "Failed to remove local files",
3125
3132
  failedRestoreDatabase: "Failed to restore database",
3133
+ failedRestorePage: "Failed to restore page",
3134
+ failedSaveSidebarState: "Failed to save sidebar state",
3126
3135
  deletePageDescription:
3127
- "“{{title}}” and all its sub-pages will be permanently deleted. This cannot be undone.",
3128
- deletePageQuestion: "Delete page?",
3136
+ "“{{title}}” and all its sub-pages will move to Trash. You can restore them later.",
3137
+ deletePageQuestion: "Move page to Trash?",
3129
3138
  localFiles: "Local files",
3130
3139
  localFolder: "Local folder",
3131
3140
  files: "Files",
@@ -3192,10 +3201,13 @@ const enUS = {
3192
3201
  removeLocalFilesQuestion: "Remove local files from sidebar?",
3193
3202
  restoreDatabase: "Restore",
3194
3203
  restoreDatabaseNamed: "Restore {{title}}",
3204
+ restorePage: "Restore",
3205
+ restorePageNamed: "Restore {{title}}",
3195
3206
  saving: "Saving...",
3196
3207
  sharedCopies: "Shared copies",
3197
3208
  synced: "Synced",
3198
3209
  trash: "Trash",
3210
+ trashEmpty: "Trash is empty",
3199
3211
  favorites: "Favorites",
3200
3212
  untitled: "Untitled",
3201
3213
  workspaces: "Workspaces",
@@ -3330,6 +3342,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3330
3342
  failedRemoveLocalFiles: "移除本地文件失败",
3331
3343
  failedPermanentDeleteDatabase: "永久删除数据库失败",
3332
3344
  failedRestoreDatabase: "恢复数据库失败",
3345
+ failedSaveSidebarState: "保存侧边栏状态失败",
3333
3346
  localFilesActions: "本地文件操作",
3334
3347
  localFilesRemoved: "本地文件已移除",
3335
3348
  localFilesRemovedDescription: "已移除 {{count}} 个项目",
@@ -3629,6 +3642,8 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3629
3642
  failedPermanentDeleteDatabase:
3630
3643
  "No se pudo eliminar permanentemente la base de datos",
3631
3644
  failedRestoreDatabase: "No se pudo restaurar la base de datos",
3645
+ failedSaveSidebarState:
3646
+ "No se pudo guardar el estado de la barra lateral",
3632
3647
  localFilesActions: "Acciones de archivos locales",
3633
3648
  localFilesRemoved: "Archivos locales quitados",
3634
3649
  localFilesRemovedDescription: "{{count}} elementos quitados",
@@ -3692,6 +3707,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3692
3707
  failedRemoveLocalFiles: "移除本機檔案失敗",
3693
3708
  failedPermanentDeleteDatabase: "永久刪除資料庫失敗",
3694
3709
  failedRestoreDatabase: "還原資料庫失敗",
3710
+ failedSaveSidebarState: "儲存側邊欄狀態失敗",
3695
3711
  localFilesActions: "本機檔案操作",
3696
3712
  localFilesRemoved: "已移除本機檔案",
3697
3713
  localFilesRemovedDescription: "已移除 {{count}} 個項目",
@@ -3725,6 +3741,8 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3725
3741
  failedPermanentDeleteDatabase:
3726
3742
  "Échec de la suppression définitive de la base de données",
3727
3743
  failedRestoreDatabase: "Échec de la restauration de la base de données",
3744
+ failedSaveSidebarState:
3745
+ "Échec de l’enregistrement de l’état de la barre latérale",
3728
3746
  localFilesActions: "Actions des fichiers locaux",
3729
3747
  localFilesRemoved: "Fichiers locaux supprimés",
3730
3748
  localFilesRemovedDescription: "{{count}} éléments supprimés",
@@ -3758,6 +3776,8 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3758
3776
  failedPermanentDeleteDatabase:
3759
3777
  "Datenbank konnte nicht endgültig gelöscht werden",
3760
3778
  failedRestoreDatabase: "Datenbank konnte nicht wiederhergestellt werden",
3779
+ failedSaveSidebarState:
3780
+ "Der Seitenleistenstatus konnte nicht gespeichert werden",
3761
3781
  localFilesActions: "Aktionen für lokale Dateien",
3762
3782
  localFilesRemoved: "Lokale Dateien entfernt",
3763
3783
  localFilesRemovedDescription: "{{count}} Elemente entfernt",
@@ -3790,6 +3810,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3790
3810
  failedRemoveLocalFiles: "ローカルファイルを削除できませんでした",
3791
3811
  failedPermanentDeleteDatabase: "データベースを完全に削除できませんでした",
3792
3812
  failedRestoreDatabase: "データベースを復元できませんでした",
3813
+ failedSaveSidebarState: "サイドバーの状態を保存できませんでした",
3793
3814
  localFilesActions: "ローカルファイルの操作",
3794
3815
  localFilesRemoved: "ローカルファイルを削除しました",
3795
3816
  localFilesRemovedDescription: "{{count}} 件を削除しました",
@@ -3822,6 +3843,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3822
3843
  failedRemoveLocalFiles: "로컬 파일을 제거하지 못했습니다",
3823
3844
  failedPermanentDeleteDatabase: "데이터베이스를 영구 삭제하지 못했습니다",
3824
3845
  failedRestoreDatabase: "데이터베이스를 복원하지 못했습니다",
3846
+ failedSaveSidebarState: "사이드바 상태를 저장하지 못했습니다",
3825
3847
  localFilesActions: "로컬 파일 작업",
3826
3848
  localFilesRemoved: "로컬 파일이 제거되었습니다",
3827
3849
  localFilesRemovedDescription: "{{count}}개 항목 제거됨",
@@ -3855,6 +3877,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3855
3877
  failedPermanentDeleteDatabase:
3856
3878
  "Falha ao excluir banco de dados permanentemente",
3857
3879
  failedRestoreDatabase: "Falha ao restaurar banco de dados",
3880
+ failedSaveSidebarState: "Falha ao salvar o estado da barra lateral",
3858
3881
  localFilesActions: "Ações de arquivos locais",
3859
3882
  localFilesRemoved: "Arquivos locais removidos",
3860
3883
  localFilesRemovedDescription: "{{count}} itens removidos",
@@ -3886,6 +3909,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3886
3909
  failedRemoveLocalFiles: "स्थानीय फ़ाइलें हटाई नहीं जा सकीं",
3887
3910
  failedPermanentDeleteDatabase: "डेटाबेस स्थायी रूप से हटाया नहीं जा सका",
3888
3911
  failedRestoreDatabase: "डेटाबेस बहाल नहीं हो सका",
3912
+ failedSaveSidebarState: "साइडबार की स्थिति सहेजी नहीं जा सकी",
3889
3913
  localFilesActions: "स्थानीय फ़ाइल क्रियाएं",
3890
3914
  localFilesRemoved: "स्थानीय फ़ाइलें हटाई गईं",
3891
3915
  localFilesRemovedDescription: "{{count}} आइटम हटाए गए",
@@ -3926,6 +3950,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
3926
3950
  "هل تريد إزالة الملفات المحلية من الشريط الجانبي؟",
3927
3951
  failedPermanentDeleteDatabase: "فشل حذف قاعدة البيانات نهائيًا",
3928
3952
  failedRestoreDatabase: "فشلت استعادة قاعدة البيانات",
3953
+ failedSaveSidebarState: "فشل حفظ حالة الشريط الجانبي",
3929
3954
  new: "جديد",
3930
3955
  page: "صفحة",
3931
3956
  restoreDatabase: "استعادة",
@@ -8915,6 +8940,7 @@ export const messagesByLocale = {
8915
8940
  },
8916
8941
  sidebar: {
8917
8942
  cannotReorderPages: "无法重新排序页面",
8943
+ deletePagePermanentlyQuestion: "永久删除页面?",
8918
8944
  loadingFiles: "正在加载文件…",
8919
8945
  newDatabase: "新建数据库",
8920
8946
  noWorkspaces: "还没有工作区",
@@ -8922,6 +8948,8 @@ export const messagesByLocale = {
8922
8948
  expand: "展开侧边栏",
8923
8949
  failedCreatePage: "创建页面失败",
8924
8950
  failedDeletePage: "删除页面失败",
8951
+ failedPermanentDeletePage: "永久删除页面失败",
8952
+ failedRestorePage: "恢复页面失败",
8925
8953
  failedMovePage: "移动页面失败",
8926
8954
  localFiles: "本地文件",
8927
8955
  newPage: "新页面",
@@ -8933,11 +8961,14 @@ export const messagesByLocale = {
8933
8961
  noSharedCopiesYet: "还没有共享副本",
8934
8962
  oneAffectedPageReadOnly: "受影响的页面之一是只读的。",
8935
8963
  organization: "组织",
8964
+ pagePermanentlyDeleted: "页面已永久删除",
8965
+ pageRestored: "页面已恢复",
8936
8966
  private: "私有",
8937
8967
  results: "结果",
8938
8968
  search: "搜索",
8939
8969
  searchPages: "搜索页面...",
8940
8970
  sharedCopies: "共享副本",
8971
+ trashEmpty: "回收站为空",
8941
8972
  favorites: "收藏",
8942
8973
  untitled: "无标题",
8943
8974
  },
@@ -9105,6 +9136,7 @@ export const messagesByLocale = {
9105
9136
  },
9106
9137
  sidebar: {
9107
9138
  cannotReorderPages: "No se pueden reordenar las páginas",
9139
+ deletePagePermanentlyQuestion: "¿Eliminar la página permanentemente?",
9108
9140
  loadingFiles: "Cargando archivos…",
9109
9141
  newDatabase: "Nueva base de datos",
9110
9142
  noWorkspaces: "Aún no hay espacios de trabajo",
@@ -9112,6 +9144,9 @@ export const messagesByLocale = {
9112
9144
  expand: "Expandir barra lateral",
9113
9145
  failedCreatePage: "No se pudo crear la página",
9114
9146
  failedDeletePage: "No se pudo eliminar la página",
9147
+ failedPermanentDeletePage:
9148
+ "No se pudo eliminar la página permanentemente",
9149
+ failedRestorePage: "No se pudo restaurar la página",
9115
9150
  failedMovePage: "No se pudo mover la página",
9116
9151
  localFiles: "Archivos locales",
9117
9152
  newPage: "Nueva página",
@@ -9124,11 +9159,14 @@ export const messagesByLocale = {
9124
9159
  oneAffectedPageReadOnly:
9125
9160
  "Una de las páginas afectadas es de solo lectura.",
9126
9161
  organization: "Organización",
9162
+ pagePermanentlyDeleted: "Página eliminada permanentemente",
9163
+ pageRestored: "Página restaurada",
9127
9164
  private: "Privado",
9128
9165
  results: "Resultados",
9129
9166
  search: "Buscar",
9130
9167
  searchPages: "Buscar páginas...",
9131
9168
  sharedCopies: "Copias compartidas",
9169
+ trashEmpty: "La papelera está vacía",
9132
9170
  favorites: "Favoritos",
9133
9171
  untitled: "Sin título",
9134
9172
  },
@@ -9296,6 +9334,7 @@ export const messagesByLocale = {
9296
9334
  },
9297
9335
  sidebar: {
9298
9336
  cannotReorderPages: "Impossible de réordonner les pages",
9337
+ deletePagePermanentlyQuestion: "Supprimer définitivement la page ?",
9299
9338
  loadingFiles: "Chargement des fichiers…",
9300
9339
  newDatabase: "Nouvelle base de données",
9301
9340
  noWorkspaces: "Aucun espace de travail pour le moment",
@@ -9303,6 +9342,9 @@ export const messagesByLocale = {
9303
9342
  expand: "Développer la barre latérale",
9304
9343
  failedCreatePage: "Échec de la création de la page",
9305
9344
  failedDeletePage: "Échec de la suppression de la page",
9345
+ failedPermanentDeletePage:
9346
+ "Échec de la suppression définitive de la page",
9347
+ failedRestorePage: "Échec de la restauration de la page",
9306
9348
  failedMovePage: "Échec du déplacement de la page",
9307
9349
  localFiles: "Fichiers locaux",
9308
9350
  newPage: "Nouvelle page",
@@ -9315,11 +9357,14 @@ export const messagesByLocale = {
9315
9357
  oneAffectedPageReadOnly:
9316
9358
  "L'une des pages concernées est en lecture seule.",
9317
9359
  organization: "Organisation",
9360
+ pagePermanentlyDeleted: "Page supprimée définitivement",
9361
+ pageRestored: "Page restaurée",
9318
9362
  private: "Privé",
9319
9363
  results: "Résultats",
9320
9364
  search: "Rechercher",
9321
9365
  searchPages: "Rechercher des pages...",
9322
9366
  sharedCopies: "Copies partagées",
9367
+ trashEmpty: "La corbeille est vide",
9323
9368
  favorites: "Favoris",
9324
9369
  untitled: "Sans titre",
9325
9370
  },
@@ -9485,6 +9530,7 @@ export const messagesByLocale = {
9485
9530
  },
9486
9531
  sidebar: {
9487
9532
  cannotReorderPages: "Seiten können nicht neu angeordnet werden",
9533
+ deletePagePermanentlyQuestion: "Seite dauerhaft löschen?",
9488
9534
  loadingFiles: "Dateien werden geladen…",
9489
9535
  newDatabase: "Neue Datenbank",
9490
9536
  noWorkspaces: "Noch keine Arbeitsbereiche",
@@ -9492,6 +9538,8 @@ export const messagesByLocale = {
9492
9538
  expand: "Seitenleiste ausklappen",
9493
9539
  failedCreatePage: "Seite konnte nicht erstellt werden",
9494
9540
  failedDeletePage: "Seite konnte nicht gelöscht werden",
9541
+ failedPermanentDeletePage: "Seite konnte nicht dauerhaft gelöscht werden",
9542
+ failedRestorePage: "Seite konnte nicht wiederhergestellt werden",
9495
9543
  failedMovePage: "Seite konnte nicht verschoben werden",
9496
9544
  localFiles: "Lokale Dateien",
9497
9545
  newPage: "Neue Seite",
@@ -9504,11 +9552,14 @@ export const messagesByLocale = {
9504
9552
  oneAffectedPageReadOnly:
9505
9553
  "Eine der betroffenen Seiten ist schreibgeschützt.",
9506
9554
  organization: "Organisation",
9555
+ pagePermanentlyDeleted: "Seite dauerhaft gelöscht",
9556
+ pageRestored: "Seite wiederhergestellt",
9507
9557
  private: "Privat",
9508
9558
  results: "Ergebnisse",
9509
9559
  search: "Suchen",
9510
9560
  searchPages: "Seiten suchen...",
9511
9561
  sharedCopies: "Geteilte Kopien",
9562
+ trashEmpty: "Papierkorb ist leer",
9512
9563
  favorites: "Favoriten",
9513
9564
  untitled: "Ohne Titel",
9514
9565
  },
@@ -9674,6 +9725,7 @@ export const messagesByLocale = {
9674
9725
  },
9675
9726
  sidebar: {
9676
9727
  cannotReorderPages: "ページを並べ替えられません",
9728
+ deletePagePermanentlyQuestion: "ページを完全に削除しますか?",
9677
9729
  loadingFiles: "ファイルを読み込んでいます…",
9678
9730
  newDatabase: "新しいデータベース",
9679
9731
  noWorkspaces: "ワークスペースはまだありません",
@@ -9681,6 +9733,8 @@ export const messagesByLocale = {
9681
9733
  expand: "サイドバーを展開",
9682
9734
  failedCreatePage: "ページを作成できませんでした",
9683
9735
  failedDeletePage: "ページを削除できませんでした",
9736
+ failedPermanentDeletePage: "ページを完全に削除できませんでした",
9737
+ failedRestorePage: "ページを復元できませんでした",
9684
9738
  failedMovePage: "ページを移動できませんでした",
9685
9739
  localFiles: "ローカルファイル",
9686
9740
  newPage: "新しいページ",
@@ -9692,11 +9746,14 @@ export const messagesByLocale = {
9692
9746
  noSharedCopiesYet: "まだ共有コピーはありません",
9693
9747
  oneAffectedPageReadOnly: "影響を受けるページの 1 つは読み取り専用です。",
9694
9748
  organization: "組織",
9749
+ pagePermanentlyDeleted: "ページを完全に削除しました",
9750
+ pageRestored: "ページを復元しました",
9695
9751
  private: "非公開",
9696
9752
  results: "結果",
9697
9753
  search: "検索",
9698
9754
  searchPages: "ページを検索...",
9699
9755
  sharedCopies: "共有コピー",
9756
+ trashEmpty: "ゴミ箱は空です",
9700
9757
  favorites: "お気に入り",
9701
9758
  untitled: "無題",
9702
9759
  },
@@ -9852,6 +9909,7 @@ export const messagesByLocale = {
9852
9909
  },
9853
9910
  sidebar: {
9854
9911
  cannotReorderPages: "페이지 순서를 변경할 수 없습니다",
9912
+ deletePagePermanentlyQuestion: "페이지를 영구적으로 삭제하시겠습니까?",
9855
9913
  loadingFiles: "파일을 불러오는 중…",
9856
9914
  newDatabase: "새 데이터베이스",
9857
9915
  noWorkspaces: "아직 워크스페이스가 없습니다",
@@ -9859,6 +9917,8 @@ export const messagesByLocale = {
9859
9917
  expand: "사이드바 펼치기",
9860
9918
  failedCreatePage: "페이지를 만들지 못했습니다",
9861
9919
  failedDeletePage: "페이지를 삭제하지 못했습니다",
9920
+ failedPermanentDeletePage: "페이지를 영구적으로 삭제하지 못했습니다",
9921
+ failedRestorePage: "페이지를 복원하지 못했습니다",
9862
9922
  failedMovePage: "페이지를 이동하지 못했습니다",
9863
9923
  localFiles: "로컬 파일",
9864
9924
  newPage: "새 페이지",
@@ -9870,11 +9930,14 @@ export const messagesByLocale = {
9870
9930
  noSharedCopiesYet: "아직 공유 사본이 없습니다",
9871
9931
  oneAffectedPageReadOnly: "영향을 받는 페이지 중 하나가 읽기 전용입니다.",
9872
9932
  organization: "조직",
9933
+ pagePermanentlyDeleted: "페이지가 영구적으로 삭제되었습니다",
9934
+ pageRestored: "페이지가 복원되었습니다",
9873
9935
  private: "비공개",
9874
9936
  results: "결과",
9875
9937
  search: "검색",
9876
9938
  searchPages: "페이지 검색...",
9877
9939
  sharedCopies: "공유 사본",
9940
+ trashEmpty: "휴지통이 비어 있습니다",
9878
9941
  favorites: "즐겨찾기",
9879
9942
  untitled: "제목 없음",
9880
9943
  },
@@ -10042,6 +10105,7 @@ export const messagesByLocale = {
10042
10105
  },
10043
10106
  sidebar: {
10044
10107
  cannotReorderPages: "Não é possível reordenar páginas",
10108
+ deletePagePermanentlyQuestion: "Excluir a página permanentemente?",
10045
10109
  loadingFiles: "Carregando arquivos…",
10046
10110
  newDatabase: "Novo banco de dados",
10047
10111
  noWorkspaces: "Ainda não há espaços de trabalho",
@@ -10049,6 +10113,8 @@ export const messagesByLocale = {
10049
10113
  expand: "Expandir barra lateral",
10050
10114
  failedCreatePage: "Falha ao criar página",
10051
10115
  failedDeletePage: "Falha ao excluir página",
10116
+ failedPermanentDeletePage: "Falha ao excluir a página permanentemente",
10117
+ failedRestorePage: "Falha ao restaurar a página",
10052
10118
  failedMovePage: "Falha ao mover página",
10053
10119
  localFiles: "Arquivos locais",
10054
10120
  newPage: "Nova página",
@@ -10060,11 +10126,14 @@ export const messagesByLocale = {
10060
10126
  noSharedCopiesYet: "Ainda não há cópias compartilhadas",
10061
10127
  oneAffectedPageReadOnly: "Uma das páginas afetadas é somente leitura.",
10062
10128
  organization: "Organização",
10129
+ pagePermanentlyDeleted: "Página excluída permanentemente",
10130
+ pageRestored: "Página restaurada",
10063
10131
  private: "Privado",
10064
10132
  results: "Resultados",
10065
10133
  search: "Buscar",
10066
10134
  searchPages: "Buscar páginas...",
10067
10135
  sharedCopies: "Cópias compartilhadas",
10136
+ trashEmpty: "A lixeira está vazia",
10068
10137
  favorites: "Favoritos",
10069
10138
  untitled: "Sem título",
10070
10139
  },
@@ -10218,6 +10287,7 @@ export const messagesByLocale = {
10218
10287
  },
10219
10288
  sidebar: {
10220
10289
  cannotReorderPages: "पेजों को फिर से क्रमबद्ध नहीं किया जा सकता",
10290
+ deletePagePermanentlyQuestion: "पेज को स्थायी रूप से हटाएं?",
10221
10291
  loadingFiles: "फ़ाइलें लोड हो रही हैं…",
10222
10292
  newDatabase: "नया डेटाबेस",
10223
10293
  noWorkspaces: "अभी कोई कार्यस्थान नहीं है",
@@ -10225,6 +10295,8 @@ export const messagesByLocale = {
10225
10295
  expand: "साइडबार फैलाएं",
10226
10296
  failedCreatePage: "पेज नहीं बन सका",
10227
10297
  failedDeletePage: "पेज हटाया नहीं जा सका",
10298
+ failedPermanentDeletePage: "पेज को स्थायी रूप से हटाया नहीं जा सका",
10299
+ failedRestorePage: "पेज पुनर्स्थापित नहीं किया जा सका",
10228
10300
  failedMovePage: "पेज स्थानांतरित नहीं हो सका",
10229
10301
  localFiles: "स्थानीय फ़ाइलें",
10230
10302
  newPage: "नया पेज",
@@ -10236,11 +10308,14 @@ export const messagesByLocale = {
10236
10308
  noSharedCopiesYet: "अभी कोई साझा कॉपी नहीं है",
10237
10309
  oneAffectedPageReadOnly: "प्रभावित पेजों में से एक केवल-पढ़ने योग्य है।",
10238
10310
  organization: "संगठन",
10311
+ pagePermanentlyDeleted: "पेज स्थायी रूप से हटा दिया गया",
10312
+ pageRestored: "पेज पुनर्स्थापित किया गया",
10239
10313
  private: "निजी",
10240
10314
  results: "परिणाम",
10241
10315
  search: "खोजें",
10242
10316
  searchPages: "पेज खोजें...",
10243
10317
  sharedCopies: "साझा कॉपियां",
10318
+ trashEmpty: "ट्रैश खाली है",
10244
10319
  favorites: "पसंदीदा",
10245
10320
  untitled: "शीर्षकहीन",
10246
10321
  },
@@ -10397,6 +10472,7 @@ export const messagesByLocale = {
10397
10472
  },
10398
10473
  sidebar: {
10399
10474
  cannotReorderPages: "تعذرت إعادة ترتيب الصفحات",
10475
+ deletePagePermanentlyQuestion: "هل تريد حذف الصفحة نهائيًا؟",
10400
10476
  loadingFiles: "جارٍ تحميل الملفات…",
10401
10477
  newDatabase: "قاعدة بيانات جديدة",
10402
10478
  noWorkspaces: "لا توجد مساحات عمل بعد",
@@ -10404,6 +10480,8 @@ export const messagesByLocale = {
10404
10480
  expand: "توسيع الشريط الجانبي",
10405
10481
  failedCreatePage: "فشل إنشاء الصفحة",
10406
10482
  failedDeletePage: "فشل حذف الصفحة",
10483
+ failedPermanentDeletePage: "فشل حذف الصفحة نهائيًا",
10484
+ failedRestorePage: "فشل استعادة الصفحة",
10407
10485
  failedMovePage: "فشل نقل الصفحة",
10408
10486
  localFiles: "الملفات المحلية",
10409
10487
  newPage: "صفحة جديدة",
@@ -10415,11 +10493,14 @@ export const messagesByLocale = {
10415
10493
  noSharedCopiesYet: "لا توجد نسخ مشتركة بعد",
10416
10494
  oneAffectedPageReadOnly: "إحدى الصفحات المتأثرة للقراءة فقط.",
10417
10495
  organization: "المؤسسة",
10496
+ pagePermanentlyDeleted: "تم حذف الصفحة نهائيًا",
10497
+ pageRestored: "تمت استعادة الصفحة",
10418
10498
  private: "خاص",
10419
10499
  results: "النتائج",
10420
10500
  search: "بحث",
10421
10501
  searchPages: "البحث في الصفحات...",
10422
10502
  sharedCopies: "النسخ المشتركة",
10503
+ trashEmpty: "سلة المهملات فارغة",
10423
10504
  favorites: "المفضلة",
10424
10505
  untitled: "بدون عنوان",
10425
10506
  },