+
+
+
Export memories
+
+ Choose a format, then optionally narrow by date or tags.
+
+
+
+
+
+
+
setFormat("json")}
+ className={format === "json" ? "bg-white text-black" : "bg-white/5 text-white"}
+ >
+ JSON
+
+
setFormat("markdown")}
+ className={format === "markdown" ? "bg-white text-black" : "bg-white/5 text-white"}
+ >
+ Markdown
+
+
+
+
+
+ Start date
+ setStartDate(event.target.value)}
+ className="rounded-xl border border-white/8 bg-[#0A0C11] px-3 py-2 text-sm text-white outline-none transition-colors focus:border-[#4BA0FA]/50"
+ />
+
+
+ End date
+ setEndDate(event.target.value)}
+ className="rounded-xl border border-white/8 bg-[#0A0C11] px-3 py-2 text-sm text-white outline-none transition-colors focus:border-[#4BA0FA]/50"
+ />
+
+
+
+
+
+
Filter by tags
+
{activeTagSummary}
+
+
+ {availableTags.length > 0 ? (
+ availableTags.map((tag) => {
+ const isSelected = selectedTags.includes(tag)
+ return (
+
toggleTag(tag)}
+ className={cn(
+ "inline-flex items-center gap-1 rounded-full border px-3 py-1.5 text-xs transition-colors",
+ isSelected
+ ? "border-[#4BA0FA]/50 bg-[#4BA0FA]/10 text-[#8FC2FF]"
+ : "border-white/8 bg-white/3 text-white/65 hover:bg-white/5",
+ )}
+ >
+ {isSelected ? : null}
+ {formatFilterLabel(tag)}
+
+ )
+ })
+ ) : (
+
+ No container tags are available yet.
+
+ )}
+
+
+
+
+
+ Markdown is best for human-readable backups. JSON is best for
+ round-tripping.
+
+
handleExport(format)}
+ disabled={!canExport}
+ className="bg-[#4BA0FA] text-[#00171A]"
+ >
+ {isExporting ? (
+
+ ) : (
+
+ )}
+ {isExporting ? "Exporting..." : "Download export"}
+
+
+
+
+
+
Import memories
+
+ Upload a previously exported JSON archive to restore memories.
+
+
+
+
+
+
+
+
+
+
+
+ Choose backup file
+
+
+ Accepts the JSON export produced by this panel.
+
+
+
+
+
+
+ Import keeps any container tags stored in the archive. If you want to
+ move memories into a different workspace, export the JSON and adjust
+ tags before importing.
+
+
{
+ fileInputRef.current?.click()
+ }}
+ className="mt-5 bg-white/5 text-white"
+ disabled={isImporting}
+ >
+ {isImporting ? (
+
+ ) : (
+
+ )}
+ {isImporting ? "Importing..." : "Import JSON archive"}
+
+