memorph 0.1.12

Convert, import, and export AI coding sessions between Claude Code, Codex, and OpenCode
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
{
  "zh": {
    "shared": "共享",
    "settings": "设置",
    "manage": "会话管理",
    "language": "语种",
    "loading": "正在加载",
    "loadingWorkspace": "加载工作区",
    "scanningSessions": "正在扫描会话",
    "refreshingSessions": "正在刷新会话",
    "latest": "最新",
    "workspace": "工作区",
    "providers": "Agent",
    "search": "搜索",
    "sort": "排序",
    "visible": "展示数量",
    "recentSessions": "最近会话",
    "workspaceView": "当前工作区",
    "workspacePath": "工作区路径",
    "switchWorkspace": "切换工作空间",
    "listOptions": "列表选项",
    "import": "导入",
    "openSettings": "打开设置",
    "openManager": "打开会话管理",
    "all": "全部",
    "recentFirst": "最近活跃",
    "titleAsc": "标题 A-Z",
    "noWorkspace": "当前还没有已记录的工作区。",
    "emptySessions": "当前筛选下没有会话。",
    "view": "查看",
    "switch": "迁移",
    "export": "导出",
    "share": "共享",
    "remove": "删除",
    "rename": "重命名",
    "back": "返回",
    "overview": "概览",
    "messages": "消息",
    "details": "详情",
    "openShared": "查看共享组",
    "sharedGroups": "共享会话",
    "noSharedGroups": "还没有共享会话。",
    "holdings": "持有映射",
    "addHolding": "绑定",
    "syncLatest": "同步最新",
    "syncFromThis": "以此同步",
    "unbind": "解绑",
    "pushSyncTitle": "推送同步",
    "pushSyncHint": "将这个 holding 当前内容覆盖到其他所有订阅方。",
    "unbindHint": "移除后这个会话不会再参与共享同步。",
    "syncComplete": "同步完成",
    "createShared": "创建共享组",
    "settingsTitle": "Web 设置",
    "managerTitle": "会话管理",
    "save": "保存",
    "cancel": "取消",
    "confirm": "确认",
    "backup": "备份",
    "close": "关闭",
    "create": "创建",
    "done": "完成",
    "title": "标题",
    "provider": "Provider",
    "targetProviders": "目标 Provider",
    "outputPrefix": "输出前缀",
    "format": "格式",
    "fileOrId": "文件路径或会话 ID",
    "fileOrIdPlaceholder": "/path/to/file.morph",
    "targetDir": "目标目录",
    "sourceProvider": "来源 Provider",
    "targetProvider": "目标 Provider",
    "target": "目标",
    "source": "来源",
    "sessionId": "会话 ID",
    "backupDir": "备份目录",
    "olderThanDays": "多久未更新",
    "largerThanMb": "空间占用大于",
    "storageUsage": "空间占用",
    "days": "",
    "hours": "小时",
    "minutes": "分钟",
    "weeks": "",
    "months": "",
    "greaterThan": "大于",
    "lessThan": "小于",
    "greaterThanShort": "大于",
    "lessThanShort": "小于",
    "defaultBackupDir": "默认备份路径",
    "defaultBackupDirHint": "会话管理备份时使用这个目录。",
    "logSettings": "日志设置",
    "logSettingsHint": "只记录关键事件和错误,默认按大小轮转。",
    "logMaxSizeMb": "最大 MB",
    "logRetentionDays": "保留天数",
    "unlimited": "不限",
    "cleanConfirm": "确认清理选中的会话?此操作会删除底层 Provider 会话。",
    "backupConfirm": "确认备份选中的会话?",
    "workspaceHistory": "工作区历史",
    "workspaceHistoryHint": "选择后会立即切换并记录到配置。",
    "moveUp": "上移",
    "moveDown": "下移",
    "primary": "主展示",
    "homeButtons": "首页按钮",
    "showView": "显示查看",
    "showSwitch": "显示迁移",
    "showExport": "显示导出",
    "showShare": "显示共享",
    "showDelete": "显示删除",
    "preview": "筛选会话",
    "cleanSelected": "清理选中",
    "backupSelected": "备份选中",
    "selectedWorkspace": "当前工作区",
    "copied": "已更新",
    "deleted": "已删除",
    "success": "成功",
    "exported": "导出完成",
    "imported": "导入完成",
    "switched": "迁移完成",
    "sharedCreated": "共享组已创建",
    "saved": "已保存",
    "refreshed": "已刷新",
    "managerPreview": "筛选结果",
    "noMessages": "这个会话没有消息。",
    "noDetails": "没有更多信息。",
    "showSubagents": "显示 OpenCode subagents",
    "sessionsPerProvider": "每个 Provider 显示数量",
    "sharedTitle": "共享会话",
    "appSubtitle": "现在的 Web 版本完全由独立前端驱动,后续桌面端也复用这一套界面。",
    "workspaces": "工作区",
    "browse": "浏览",
    "folderPickerUnavailable": "当前环境不支持系统文件夹选择器,请直接输入路径。",
    "filters": "筛选",
    "more": "更多",
    "history": "历史",
    "apply": "应用",
    "go": "前往",
    "shown": "当前显示",
    "sessionsStat": "会话",
    "terminalAgents": "终端 Agent",
    "openHome": "主页",
    "deleteConfirm": "确认删除这个会话?",
    "removeSharedConfirm": "确认删除这个共享组?",
    "deleteProviderSessions": "同时删除底层 Provider 会话",
    "noSelection": "请选择至少一项。",
    "managerSummary": "共 {count} 条,会释放/备份 {size}",
    "managerSelectionSummary": "共 {count} 条 · 已选中 {selected} 条 · 预计会释放/备份 {size}",
    "managerUpdatedAt": "最近更新于 {time}",
    "selectAll": "全选",
    "appReady": "新前端已接管 Web 入口。",
    "updatedAt": "更新时间",
    "lastSync": "上次同步",
    "syncFrom": "同步来源",
    "error": "错误",
    "resumeCommand": "恢复命令",
    "createdAt": "创建时间",
    "projectDir": "项目目录",
    "lastActiveAt": "最近活跃",
    "sourcePath": "源路径",
    "size": "大小",
    "targetWorkspaceHint": "可以填当前会话工作区,也可以改成另一个历史工作区。",
    "workspaceFieldHint": "支持直接输入,也可以从历史工作区中选择。",
    "messageCount": "消息数",
    "activeShared": "共享中",
    "errors": "错误",
    "filesAndErrors": "文件与错误",
    "files": "文件",
    "backupDirPlaceholder": "./backups",
    "searchPlaceholder": "会话 ID / 标题 / 路径",
    "emptyCreatesNewHolding": "留空时创建新的投影会话",
    "sessionGroupCount": "{count} 个会话",
    "managerCleaned": "已清理",
    "managerFailed": "失败",
    "managerFreed": "已释放",
    "managerExported": "已导出",
    "notFound": "页面不存在",
    "thinking": "思考",
    "toolUse": "工具调用",
    "toolResult": "工具结果",
    "file": "文件",
    "image": "图片",
    "modalHint": "所有操作都直接走新的 JSON API。",
    "openSession": "打开会话",
    "openDetail": "打开详情",
    "sharedOverview": "在多个 Agent 会话之间同步同一份记忆。",
    "switchHint": "不再使用旧弹窗链路,直接调用迁移接口。",
    "settingsLanguageHint": "切换 Web 界面语言。",
    "settingsSessionsHint": "设置每个终端 Agent 默认显示的会话数量。",
    "settingsSubagentsHint": "显示 OpenCode 子 agent 会话。",
    "settingsHomeButtonsHint": "控制首页显示哪些快捷操作按钮。",
    "settingsProvidersHint": "选择首页常用 Agent。",
    "version": "版本",
    "checkUpdate": "检查更新",
    "managerWorkspaceHint": "支持直接输入,也可以复用已记录的工作区路径。",
    "languageNativeZh": "中文",
    "languageNativeEn": "English",
    "interfaceLanguage": "界面语言",
    "primaryAgents": "主 Agent",
    "writeConfig": "写入配置",
    "allVisible": "全部展示",
    "visibleState": "展示",
    "foldedState": "折叠",
    "enabled": "启用",
    "disabled": "禁用",
    "keyboardShortcuts": "键盘快捷键",
    "navigation": "导航",
    "general": "通用",
    "help": "帮助",
    "shortcutSelectSession": "  ↑ / ↓     选择会话、字段或弹窗项",
    "shortcutSwitchProvider": "  ← / →     切换 Provider、操作或搜索范围",
    "shortcutOpenAction": "  Enter     打开操作、打开选择器或执行动作",
    "shortcutOpenSearch": "  F         打开搜索",
    "shortcutQuit": "  Q         在主表格退出",
    "shortcutClose": "  Esc       关闭弹窗或搜索",
    "shortcutSwitch": "  Switch    在另一个 Agent 中创建会话",
    "shortcutExport": "  Export    写出 JSON 导出文件",
    "shortcutRename": "  Rename    重命名 Provider 会话",
    "shortcutDelete": "  Delete    删除 Provider 会话",
    "shortcutDetails": "  Details   打开独立的会话详情弹窗",
    "shortcutShowHelp": "  ?         显示此帮助",
    "workspaceEmpty": "(未选择工作区)",
    "noDir": "(无目录)",
    "untitled": "(无标题)",
    "empty": "(空)",
    "emptyMessage": "(空消息)",
    "typeLocalWorkspacePath": "输入本地工作区路径。",
    "savedWorkspaces": "已保存的工作区",
    "noSavedWorkspaceMatchesPath": "没有匹配这个路径的已保存工作区。",
    "tuiFooterDialogSelectSave": "↑↓ 选择  Enter 保存  Esc 取消",
    "tuiFooterActionFocus": "↑↓ 聚焦  ←→ 操作  Enter 打开/执行  Esc 关闭",
    "tuiFooterWorkspaceModal": "输入工作区  ↑↓ 建议  Enter 保存  Esc 关闭",
    "tuiFooterClose": "Esc 关闭",
    "tuiFooterSearch": "输入查询  ←→ 范围  ↑↓ 结果  Enter 跳转  Esc 关闭",
    "tuiFooterTopWorkspace": "←→ 顶部控件  Enter 编辑工作区  ↓ 会话  Esc 会话",
    "tuiFooterTopSettings": "←→ 顶部控件  Enter 设置  ↓ 会话  Esc 会话",
    "tuiFooterMain": "←→ Provider  ↑↓ 会话  Enter 操作  F 搜索  Q 退出",
    "editableSettings": "可编辑设置",
    "providerFilter": "Provider 筛选",
    "configPath": "配置",
    "targetAgent": "目标 Agent",
    "pressEnterChooseTargetAgent": "按 Enter 选择要迁移到的 Agent。",
    "pressEnterChooseWorkspace": "按 Enter 选择或编辑目标工作区。",
    "runSwitch": "执行迁移",
    "whatHappens": "将会发生",
    "switchPanelHint": "Memorph 会在选定工作区里为目标 Agent 写入一个新会话。",
    "newTitle": "新标题",
    "typeDirectlyInField": "直接在这个字段中输入。",
    "runRename": "执行重命名",
    "renamePanelHint": "输入新标题,然后移动到 Execute 并按 Enter。",
    "warning": "警告",
    "deletePanelHint": "删除会移除表格中选中的 Provider 会话。此操作无法撤销。",
    "runDelete": "执行删除",
    "exportPanelHint": "导出会将 JSON 文件写到所选本地路径,并自动追加 .json 后缀。",
    "runExport": "执行导出",
    "detailsPanelHint": "打开一个专用会话详情弹窗,展示元数据和可滚动的消息预览。",
    "searchSessions": "搜索会话",
    "sessionDetails": "会话详情",
    "tuiFooterDetailModal": "↑↓ 滚动  Esc 关闭",
    "noAgentAvailableForSwitching": "没有可用于迁移的 Agent。",
    "agents": "Agents",
    "typeEditPathDirectly": "直接输入来编辑路径。",
    "noMatchingSavedWorkspace": "没有匹配的已保存工作区。按 Enter 保存当前输入路径。",
    "suggestions": "建议",
    "tuiFooterWorkspaceDialog": "输入路径  ↑↓ 建议  Enter 保存  Esc 取消",
    "session": "会话",
    "metadata": "元数据",
    "messagePreview": "消息预览",
    "sessionMetadataUnavailable": "会话元数据不可用。",
    "sessionMessagesUnavailable": "会话消息不可用。",
    "thisSessionHasNoMessages": "这个会话没有消息。",
    "showingRange": "显示 {start}-{end} / {total}",
    "result": "结果",
    "enterOrEscClosesResult": "按 Enter 或 Esc 关闭此结果。",
    "type": "输入",
    "query": "查询",
    "scope": "范围",
    "matchesTitle": "匹配",
    "matchesTotal": "共 {count} 条",
    "noMatchingSessions": "没有匹配的会话。",
    "searchWorksInsideShownSessions": "搜索只会在当前表格中显示的会话里进行。",
    "tableAgent": "Agent",
    "active": "活跃",
    "fromLabel": "来源",
    "toLabel": "目标",
    "resume": "恢复",
    "resumeNotAvailable": "",
    "resumeCopied": "恢复命令已复制到剪贴板。",
    "clipboardCopyFailed": "复制到剪贴板失败:{error}",
    "switchFailed": "迁移失败",
    "switchComplete": "迁移完成",
    "exportFailed": "导出失败",
    "exportComplete": "导出完成",
    "renameFailed": "重命名失败",
    "renameComplete": "重命名完成",
    "deleteFailed": "删除失败",
    "deleteComplete": "删除完成",
    "detailsFailed": "详情加载失败",
    "noSessionSelected": "未选择会话。",
    "noTargetAgentSelected": "未选择目标 Agent。",
    "outputPrefixEmpty": "输出前缀不能为空。",
    "titleEmpty": "标题不能为空。",
    "workspaceEmptyError": "工作区不能为空。",
    "settingsSavedPath": "设置已写入 {path}",
    "failedLoadSessions": "加载会话失败:{error}",
    "failedRefreshSessions": "刷新会话失败:{error}",
    "noPlatformClipboard": "未找到可用的系统剪贴板命令",
    "justNow": "刚刚",
    "minutesAgo": "{count} 分钟前",
    "hoursAgo": "{count} 小时前",
    "daysAgo": "{count} 天前",
    "toolCall": "工具调用",
    "toolResultLabel": "工具结果",
    "imageAttachment": "图片附件",
    "tuiFooterActionSelect": "↑↓ 聚焦  ←→ 操作  Enter 下一步  Esc 关闭",
    "tuiFooterChooseTarget": "↑↓ 聚焦  Enter 选择目标  Esc 关闭",
    "tuiFooterChooseWorkspace": "↑↓ 聚焦  Enter 选择工作区  Esc 关闭",
    "tuiFooterTypePathRun": "输入路径  ↑↓ 聚焦  Enter 执行  Esc 关闭",
    "tuiFooterTypeTitleRun": "输入标题  ↑↓ 聚焦  Enter 执行  Esc 关闭",
    "tuiFooterExecute": "↑↓ 聚焦  Enter 执行  Esc 关闭",
    "cliExportedFile": "已导出:{file}",
    "cliImportedSession": "已导入到 {provider}: {session_id}",
    "cliResumeWith": "恢复命令:{command}",
    "cliRemovedSession": "已从 {provider} 移除会话:{session_id}",
    "cliRenamedSession": "已在 {provider} 中重命名会话:{session_id} -> {title}",
    "cliSwitchedSession": "已从 {from} 迁移到 {to}",
    "cliAtLeastOneFilter": "至少需要一个筛选条件:--dir、--session 或 --provider",
    "cliMatchesHeader": "{provider}({count} 条匹配):",
    "cliAndMore": "…… 还有 {count} 条",
    "cliNoSessionsMatchingCriteria": "没有匹配条件的会话。",
    "cliTotalSessionsFound": "共找到 {count} 个会话",
    "cliSharedGroupCreated": "已创建共享组:{id}",
    "cliHoldingAdded": "已绑定 holding:{id} | {provider} | {session_id}",
    "cliHoldingRemoved": "已移除 holding:{id}",
    "cliSharedGroupRemoved": "已删除共享组:{id}",
    "cliSharedGroupRenamed": "已重命名共享组:{id} -> {title}",
    "cliNoSharedGroups": "没有共享组。",
    "cliListGroupHeader": "{id} | {title} | holdings={count} | updated={updated}",
    "cliStatusGroupHeader": "{id} | {title} | created={created} | updated={updated}",
    "cliHoldingListItem": "{id} | {provider} | {session_id} | dir={dir} | sync_from={sync_from} | error={error}",
    "cliHoldingStatusItem": "{id} | {provider} | {session_id} | active_at={active} | sync_at={sync_at} | sync_from={sync_from}",
    "cliHoldingError": "error={error}",
    "cliSyncComplete": "同步完成:source={source} | success={success} | errors={count}",
    "cliPushSyncComplete": "推送同步完成:source={source} | success={success} | errors={count}",
    "cliStartApiServer": "正在启动 memorph API 服务。",
    "cliUseMemorphWeb": "Web UI 请使用 `memorph web`。",
    "cliDetectedInstallSource": "检测到安装来源:{source}",
    "cliRunningCommand": "运行:{command}",
    "cliUpdateComplete": "更新完成。运行 `memorph --version` 或 `memo --version` 验证。",
    "cliDetectInstallSourceHelp": "无法检测 memorph 的安装方式。\n请手动尝试以下命令之一:\n- npm install -g memorph@latest\n- python -m pip install --upgrade memorph\n- pipx upgrade memorph\n- uv tool upgrade memorph\n- cargo install memorph --force",
    "cliStartWebUi": "正在启动 memorph Web UI。",
    "cliRecommendedCommand": "推荐命令:memorph web",
    "cliLegacyCommand": "`memorph serve` 仍然可用,但推荐使用 `memorph web`。",
    "cliNeedApiOnly": "只需要 API?使用 `memorph api`。",
    "cliSessionListHeader": "{provider}({count} 个会话):",
    "cliNoSessionsFound": "没有会话。",
    "cliNoSessionsInWorkspace": "当前工作区没有会话:{workspace}\n使用 --all 查看全部会话。",
    "cliTotalSessionsShown": "共显示 {count} 个会话",
    "unknownProvider": "未知 Provider:{provider}"
  },
  "en": {
    "shared": "Shared",
    "settings": "Settings",
    "manage": "Session Management",
    "language": "Language",
    "loading": "Loading",
    "loadingWorkspace": "Loading Workspace",
    "scanningSessions": "Scanning sessions",
    "refreshingSessions": "Refreshing sessions",
    "latest": "Latest",
    "workspace": "Workspace",
    "providers": "Agents",
    "search": "Search",
    "sort": "Sort",
    "visible": "Visible",
    "recentSessions": "Recent Sessions",
    "workspaceView": "Current Workspace",
    "workspacePath": "Workspace Path",
    "switchWorkspace": "Switch Workspace",
    "listOptions": "List Options",
    "import": "Import",
    "openSettings": "Open Settings",
    "openManager": "Open Session Management",
    "all": "All",
    "recentFirst": "Recent Activity",
    "titleAsc": "Title A-Z",
    "noWorkspace": "No recorded workspace yet.",
    "emptySessions": "No sessions match the current filters.",
    "view": "View",
    "switch": "Switch",
    "export": "Export",
    "share": "Share",
    "remove": "Delete",
    "rename": "Rename",
    "back": "Back",
    "overview": "Overview",
    "messages": "Messages",
    "details": "Details",
    "openShared": "Open Shared Group",
    "sharedGroups": "Shared Sessions",
    "noSharedGroups": "No shared sessions yet.",
    "holdings": "Holdings",
    "addHolding": "Bind",
    "syncLatest": "Sync Latest",
    "syncFromThis": "Sync From Here",
    "unbind": "Unbind",
    "pushSyncTitle": "Push Sync",
    "pushSyncHint": "Overwrite all other subscribers with this holding's current content.",
    "unbindHint": "After removing, this session will no longer participate in shared sync.",
    "syncComplete": "Sync Complete",
    "createShared": "Create Shared Group",
    "settingsTitle": "Web Settings",
    "managerTitle": "Session Management",
    "save": "Save",
    "cancel": "Cancel",
    "confirm": "Confirm",
    "backup": "Backup",
    "close": "Close",
    "create": "Create",
    "done": "Done",
    "title": "Title",
    "provider": "Provider",
    "targetProviders": "Target Providers",
    "outputPrefix": "Output Prefix",
    "format": "Format",
    "fileOrId": "File Path or Session ID",
    "fileOrIdPlaceholder": "/path/to/file.morph",
    "targetDir": "Target Directory",
    "sourceProvider": "Source Provider",
    "targetProvider": "Target Provider",
    "target": "Target",
    "source": "Source",
    "sessionId": "Session ID",
    "backupDir": "Backup Directory",
    "olderThanDays": "Not Updated For",
    "largerThanMb": "Storage Larger Than",
    "storageUsage": "Storage",
    "days": "Days",
    "hours": "Hours",
    "minutes": "Minutes",
    "weeks": "Weeks",
    "months": "Months",
    "greaterThan": "Greater Than",
    "lessThan": "Less Than",
    "greaterThanShort": "Over",
    "lessThanShort": "Under",
    "defaultBackupDir": "Default Backup Path",
    "defaultBackupDirHint": "Session Management uses this directory for backups.",
    "logSettings": "Log Settings",
    "logSettingsHint": "Only key events and errors are logged; size rotation is enabled by default.",
    "logMaxSizeMb": "Max MB",
    "logRetentionDays": "Retention Days",
    "unlimited": "Unlimited",
    "cleanConfirm": "Clean the selected sessions? This deletes the provider sessions.",
    "backupConfirm": "Back up the selected sessions?",
    "workspaceHistory": "Workspace History",
    "workspaceHistoryHint": "Selecting one switches immediately and records it in the config.",
    "moveUp": "Up",
    "moveDown": "Down",
    "primary": "Primary",
    "homeButtons": "Home Buttons",
    "showView": "Show View",
    "showSwitch": "Show Switch",
    "showExport": "Show Export",
    "showShare": "Show Share",
    "showDelete": "Show Delete",
    "preview": "Filter Sessions",
    "cleanSelected": "Clean Selected",
    "backupSelected": "Backup Selected",
    "selectedWorkspace": "Selected Workspace",
    "copied": "Updated",
    "deleted": "Deleted",
    "success": "Success",
    "exported": "Export Complete",
    "imported": "Import Complete",
    "switched": "Switch Complete",
    "sharedCreated": "Shared Group Created",
    "saved": "Saved",
    "refreshed": "Refreshed",
    "managerPreview": "Filter Results",
    "noMessages": "This session has no messages.",
    "noDetails": "No additional details.",
    "showSubagents": "Show OpenCode subagents",
    "sessionsPerProvider": "Sessions per provider",
    "sharedTitle": "Shared Sessions",
    "appSubtitle": "The web UI is now fully driven by a standalone frontend that will also back the desktop shell.",
    "workspaces": "Workspaces",
    "browse": "Browse",
    "folderPickerUnavailable": "The system folder picker is only available in the desktop app. Type the path manually here.",
    "filters": "Filters",
    "more": "More",
    "history": "History",
    "apply": "Apply",
    "go": "Go",
    "shown": "Shown",
    "sessionsStat": "Sessions",
    "terminalAgents": "Terminal Agents",
    "openHome": "Home",
    "deleteConfirm": "Delete this session?",
    "removeSharedConfirm": "Delete this shared group?",
    "deleteProviderSessions": "Also delete provider sessions",
    "noSelection": "Select at least one item.",
    "managerSummary": "{count} items, {size} total",
    "managerSelectionSummary": "{count} total · {selected} selected · {size} estimated",
    "managerUpdatedAt": "Updated {time}",
    "selectAll": "Select all",
    "appReady": "The new frontend now owns the web entry point.",
    "updatedAt": "Updated At",
    "lastSync": "Last Sync",
    "syncFrom": "Sync From",
    "error": "Error",
    "resumeCommand": "Resume Command",
    "createdAt": "Created At",
    "projectDir": "Project Dir",
    "lastActiveAt": "Last Active",
    "sourcePath": "Source Path",
    "size": "Size",
    "targetWorkspaceHint": "Use the current session workspace or change it to another known workspace.",
    "workspaceFieldHint": "You can type directly or reuse a recorded workspace.",
    "messageCount": "Messages",
    "activeShared": "Shared",
    "errors": "Errors",
    "filesAndErrors": "Files / Errors",
    "files": "Files",
    "backupDirPlaceholder": "./backups",
    "searchPlaceholder": "session id / title / path",
    "emptyCreatesNewHolding": "Leave empty to create a new projection",
    "sessionGroupCount": "{count} sessions",
    "managerCleaned": "cleaned",
    "managerFailed": "failed",
    "managerFreed": "freed",
    "managerExported": "exported",
    "notFound": "Not found",
    "thinking": "thinking",
    "toolUse": "tool_use",
    "toolResult": "tool_result",
    "file": "file",
    "image": "image",
    "modalHint": "Every action now goes through the JSON API.",
    "openSession": "Open Session",
    "openDetail": "Open Detail",
    "sharedOverview": "Sync the same memory across multiple agent sessions.",
    "switchHint": "The old server-rendered modal chain is gone; this calls the switch API directly.",
    "settingsLanguageHint": "Switch the Web interface language.",
    "settingsSessionsHint": "Set how many sessions each terminal agent shows by default.",
    "settingsSubagentsHint": "Show OpenCode subagent sessions.",
    "settingsHomeButtonsHint": "Choose which quick action buttons appear on the home page.",
    "settingsProvidersHint": "Choose primary agents for the home view.",
    "version": "Version",
    "checkUpdate": "Check Update",
    "managerWorkspaceHint": "You can type directly or reuse a recorded workspace path.",
    "languageNativeZh": "中文",
    "languageNativeEn": "English",
    "interfaceLanguage": "Interface Language",
    "primaryAgents": "Primary Agents",
    "writeConfig": "Write config",
    "allVisible": "All visible",
    "visibleState": "Visible",
    "foldedState": "Folded",
    "enabled": "Enabled",
    "disabled": "Disabled",
    "keyboardShortcuts": "Keyboard Shortcuts",
    "navigation": "Navigation",
    "general": "General",
    "help": "Help",
    "shortcutSelectSession": "  ↑ / ↓     Select session, field, or popup option",
    "shortcutSwitchProvider": "  ← / →     Switch provider, action, or search scope",
    "shortcutOpenAction": "  Enter     Open actions, open pickers, or run action",
    "shortcutOpenSearch": "  F         Open search",
    "shortcutQuit": "  Q         Quit from the main table",
    "shortcutClose": "  Esc       Close modal or search",
    "shortcutSwitch": "  Switch    Create a session in another agent",
    "shortcutExport": "  Export    Write a JSON export file",
    "shortcutRename": "  Rename    Rename the provider session",
    "shortcutDelete": "  Delete    Delete the provider session",
    "shortcutDetails": "  Details   Open a dedicated session detail popup",
    "shortcutShowHelp": "  ?         Show this help",
    "workspaceEmpty": "(no workspace)",
    "noDir": "(no dir)",
    "untitled": "(untitled)",
    "empty": "(empty)",
    "emptyMessage": "(empty message)",
    "typeLocalWorkspacePath": "Type a local workspace path.",
    "savedWorkspaces": "Saved Workspaces",
    "noSavedWorkspaceMatchesPath": "No saved workspace matches this path.",
    "tuiFooterDialogSelectSave": "↑↓ Select  Enter Save  Esc Cancel",
    "tuiFooterActionFocus": "↑↓ Focus  ←→ Action  Enter Open/Run  Esc Close",
    "tuiFooterWorkspaceModal": "Type Workspace  ↑↓ Suggestions  Enter Save  Esc Close",
    "tuiFooterClose": "Esc Close",
    "tuiFooterSearch": "Type Query  ←→ Scope  ↑↓ Results  Enter Jump  Esc Close",
    "tuiFooterTopWorkspace": "←→ Top Control  Enter Edit Workspace  ↓ Sessions  Esc Sessions",
    "tuiFooterTopSettings": "←→ Top Control  Enter Settings  ↓ Sessions  Esc Sessions",
    "tuiFooterMain": "←→ Provider  ↑↓ Session  Enter Actions  F Search  Q Quit",
    "editableSettings": "Editable Settings",
    "providerFilter": "Provider Filter",
    "configPath": "Config",
    "targetAgent": "Target Agent",
    "pressEnterChooseTargetAgent": "Press Enter to choose the agent to switch into.",
    "pressEnterChooseWorkspace": "Press Enter to choose or edit the target workspace.",
    "runSwitch": "Run Switch",
    "whatHappens": "What Happens",
    "switchPanelHint": "Memorph writes a new session for the selected agent in the chosen workspace.",
    "newTitle": "New Title",
    "typeDirectlyInField": "Type directly in this field.",
    "runRename": "Run Rename",
    "renamePanelHint": "Type the new title, then move to Execute and press Enter.",
    "warning": "Warning",
    "deletePanelHint": "Delete removes the provider session selected in the table. This action cannot be undone.",
    "runDelete": "Run Delete",
    "exportPanelHint": "Export writes a JSON file to the selected local path and appends the .json suffix automatically.",
    "runExport": "Run Export",
    "detailsPanelHint": "Open a dedicated session detail popup with metadata and a scrollable message preview.",
    "searchSessions": "Search Sessions",
    "sessionDetails": "Session Details",
    "tuiFooterDetailModal": "↑↓ Scroll  Esc Close",
    "noAgentAvailableForSwitching": "No agent is available for switching.",
    "agents": "Agents",
    "typeEditPathDirectly": "Type to edit the path directly.",
    "noMatchingSavedWorkspace": "No matching saved workspace. Enter saves the typed path.",
    "suggestions": "Suggestions",
    "tuiFooterWorkspaceDialog": "Type path  ↑↓ Suggestions  Enter Save  Esc Cancel",
    "session": "Session",
    "metadata": "Metadata",
    "messagePreview": "Message Preview",
    "sessionMetadataUnavailable": "Session metadata is unavailable.",
    "sessionMessagesUnavailable": "Session messages are unavailable.",
    "thisSessionHasNoMessages": "This session has no messages.",
    "showingRange": "Showing {start}-{end} of {total}",
    "result": "Result",
    "enterOrEscClosesResult": "Enter or Esc closes this result.",
    "type": "Type",
    "query": "Query",
    "scope": "Scope",
    "matchesTitle": "Matches",
    "matchesTotal": "{count} total",
    "noMatchingSessions": "No matching sessions.",
    "searchWorksInsideShownSessions": "Search works inside the sessions currently shown in the table.",
    "tableAgent": "AI",
    "active": "Active",
    "fromLabel": "From",
    "toLabel": "To",
    "resume": "Resume",
    "resumeNotAvailable": "N/A",
    "resumeCopied": "Resume command copied to clipboard.",
    "clipboardCopyFailed": "Clipboard copy failed: {error}",
    "switchFailed": "Switch failed",
    "switchComplete": "Switch complete",
    "exportFailed": "Export failed",
    "exportComplete": "Export complete",
    "renameFailed": "Rename failed",
    "renameComplete": "Rename complete",
    "deleteFailed": "Delete failed",
    "deleteComplete": "Delete complete",
    "detailsFailed": "Details failed",
    "noSessionSelected": "No session selected.",
    "noTargetAgentSelected": "No target agent selected.",
    "outputPrefixEmpty": "Output prefix cannot be empty.",
    "titleEmpty": "Title cannot be empty.",
    "workspaceEmptyError": "Workspace cannot be empty.",
    "settingsSavedPath": "Settings saved to {path}",
    "failedLoadSessions": "Failed to load sessions: {error}",
    "failedRefreshSessions": "Failed to refresh sessions: {error}",
    "noPlatformClipboard": "No platform clipboard command found",
    "justNow": "just now",
    "minutesAgo": "{count} minutes ago",
    "hoursAgo": "{count} hours ago",
    "daysAgo": "{count} days ago",
    "toolCall": "Tool call",
    "toolResultLabel": "Tool result",
    "imageAttachment": "Image attachment",
    "tuiFooterActionSelect": "↑↓ Focus  ←→ Action  Enter Next  Esc Close",
    "tuiFooterChooseTarget": "↑↓ Focus  Enter Choose Target  Esc Close",
    "tuiFooterChooseWorkspace": "↑↓ Focus  Enter Choose Workspace  Esc Close",
    "tuiFooterTypePathRun": "Type path  ↑↓ Focus  Enter Run  Esc Close",
    "tuiFooterTypeTitleRun": "Type title  ↑↓ Focus  Enter Run  Esc Close",
    "tuiFooterExecute": "↑↓ Focus  Enter Run  Esc Close",
    "cliExportedFile": "Exported: {file}",
    "cliImportedSession": "Imported session into {provider}: {session_id}",
    "cliResumeWith": "Resume with: {command}",
    "cliRemovedSession": "Removed session from {provider}: {session_id}",
    "cliRenamedSession": "Renamed session in {provider}: {session_id} -> {title}",
    "cliSwitchedSession": "Switched from {from} to {to}",
    "cliAtLeastOneFilter": "At least one filter is required: --dir, --session, or --provider",
    "cliMatchesHeader": "{provider} ({count} matches):",
    "cliAndMore": "... and {count} more",
    "cliNoSessionsMatchingCriteria": "No sessions found matching the criteria.",
    "cliTotalSessionsFound": "Total: {count} sessions found",
    "cliSharedGroupCreated": "Shared group created: {id}",
    "cliHoldingAdded": "Holding added: {id} | {provider} | {session_id}",
    "cliHoldingRemoved": "Holding removed: {id}",
    "cliSharedGroupRemoved": "Shared group removed: {id}",
    "cliSharedGroupRenamed": "Shared group renamed: {id} -> {title}",
    "cliNoSharedGroups": "No shared groups.",
    "cliListGroupHeader": "{id} | {title} | holdings={count} | updated={updated}",
    "cliStatusGroupHeader": "{id} | {title} | created={created} | updated={updated}",
    "cliHoldingListItem": "{id} | {provider} | {session_id} | dir={dir} | sync_from={sync_from} | error={error}",
    "cliHoldingStatusItem": "{id} | {provider} | {session_id} | active_at={active} | sync_at={sync_at} | sync_from={sync_from}",
    "cliHoldingError": "error={error}",
    "cliSyncComplete": "Sync complete: source={source} | success={success} | errors={count}",
    "cliPushSyncComplete": "Push sync complete: source={source} | success={success} | errors={count}",
    "cliStartApiServer": "Starting memorph API server.",
    "cliUseMemorphWeb": "Use `memorph web` for the Web UI.",
    "cliDetectedInstallSource": "Detected install source: {source}",
    "cliRunningCommand": "Running: {command}",
    "cliUpdateComplete": "Update complete. Run `memorph --version` or `memo --version` to verify.",
    "cliDetectInstallSourceHelp": "Could not detect how memorph was installed.\nTry one of these commands manually:\n- npm install -g memorph@latest\n- python -m pip install --upgrade memorph\n- pipx upgrade memorph\n- uv tool upgrade memorph\n- cargo install memorph --force",
    "cliStartWebUi": "Starting memorph Web UI.",
    "cliRecommendedCommand": "Recommended command: memorph web",
    "cliLegacyCommand": "`memorph serve` is still supported, but `memorph web` is recommended.",
    "cliNeedApiOnly": "Need API only? Use `memorph api`.",
    "cliSessionListHeader": "{provider} ({count} sessions):",
    "cliNoSessionsFound": "No sessions found.",
    "cliNoSessionsInWorkspace": "No sessions found in current workspace: {workspace}\nUse --all to show all sessions.",
    "cliTotalSessionsShown": "Total: {count} sessions shown",
    "unknownProvider": "Unknown provider: {provider}"
  }
}