feat(web): add conversation export as Markdown and JSON (#1002)

* feat(web): add conversation export as Markdown and JSON (#976)

Add the ability to export conversations in Markdown and JSON formats,
accessible from both the chat header and the sidebar context menu.

- Add export utility (formatThreadAsMarkdown, formatThreadAsJSON) with
  support for user/assistant messages, thinking blocks, and tool calls
- Add ExportTrigger component in chat header (appears when messages exist)
- Add Export submenu to sidebar dropdown (fetches full thread state on demand)
- Add i18n translations for en-US and zh-CN

Closes #976

Made-with: Cursor

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update thread creation timestamp to updated_at

---------

Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Ben Ghorbel Mohamed Aziz
2026-03-23 01:21:54 +01:00
committed by GitHub
parent 1c981ead2a
commit 38ace61617
8 changed files with 308 additions and 2 deletions

View File

@@ -43,6 +43,10 @@ export const enUS: Translations = {
save: "Save",
install: "Install",
create: "Create",
export: "Export",
exportAsMarkdown: "Export as Markdown",
exportAsJSON: "Export as JSON",
exportSuccess: "Conversation exported",
},
// Welcome

View File

@@ -32,6 +32,10 @@ export interface Translations {
save: string;
install: string;
create: string;
export: string;
exportAsMarkdown: string;
exportAsJSON: string;
exportSuccess: string;
};
// Welcome

View File

@@ -43,6 +43,10 @@ export const zhCN: Translations = {
save: "保存",
install: "安装",
create: "创建",
export: "导出",
exportAsMarkdown: "导出为 Markdown",
exportAsJSON: "导出为 JSON",
exportSuccess: "对话已导出",
},
// Welcome