Skip to content

gdtools/ttmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

童童思维导图 - TTmap 纯文本思维导图编辑器

童童思维导图 - TTmap 图标

中文 | English

童童思维导图(TTmap:Text To Map),专为 AI 设计的纯文本格式的思维导图,方便 AI 读写。

童童思维导图截图

仓库地址:https://github.com/gdtools/ttmap

TTmap思维导图特点如下:

  1. tab 缩进表示层级,且只有一个根节点,其余行至少一个tab开头

  2. 文本用html标签表示样式

  3. 以明文纯文本保存为.ttmap格式

  4. 可用文本编辑器编辑,也可用ttmap可视化编辑


功能特性

  • 多标签页:可同时打开多份导图,各自独立维护文档树、选中态、撤销栈
  • 最近文件:自动记录最近打开的 10 份文档,无活动文档时在欢迎页快速打开
  • 自动保存:已有路径的文档防抖 300ms 落盘,同时持久化折叠状态
  • 搜索Ctrl+F 打开搜索框,可搜索折叠子树中的节点文字,命中后自动展开祖先并居中
  • 框选多选:左键在空白处拖拽框选,Ctrl+点击增删多选成员,支持多选复制/剪切/删除
  • 拖拽移动:拖节点到另一节点上即可成为其子节点(禁止拖入自身后代)
  • 节点级剪贴板:复制/剪切带 tab 层级的纯文本,与外部文本编辑器互通;粘贴时自动识别 tab / 4 空格 / 2 空格 三种缩进
  • 撤销/重做:统一栈,最大 100 步,结构与文本变更均可回溯
  • 折叠记忆:折叠状态按文件路径存于本地,再次打开自动恢复
  • 输入法友好:选中态承接 IME 合成,候选框跟随选中节点定位
  • 暗色 / 亮色双主题切换
  • 视口裁剪:大导图只渲染可见区域,平移缩放流畅

文件格式 .ttmap

纯文本,UTF-8,Windows 换行(\r\n)。行首 tab 数 = 节点深度,行内容 = 节点文本(可含白名单 HTML 样式壳)。

中心主题
	分支一
		子节点 1
		子节点 2
	分支二

缩进规则

  • 行首 tab 数 = 节点深度;只允许有一个根节点(无缩进),其余行至少一个 tab 开头
  • 「打开文件」时空格缩进视为非法,自动去除并告警;深度跳变过大(比上一层深超过 1 级)会自动钳制
  • 「粘贴」时自动识别缩进风格:以首个缩进行为样本,tab 直接识别;空格则按各行行首空格数的公约数判定单位(2 空格或 4 空格 = 1 层)并折成 tab

HTML 样式壳:节点文本 = 外层标签壳(控制样式)+ 内层纯文本(不含任何 HTML)。内层文本入库前转义,编辑态所见即所得。允许的标签白名单:

标签 作用
b / i / u / s 加粗 / 斜体 / 下划线 / 删除线
mark / code 高亮 / 代码
ol / ul / li 有序 / 无序 / 列表项(列表标记写在子节点上)
span 仅放行 color / background-color / font-size 三条 style,其余属性全部丢弃

非白名单标签整体转义为纯文本显示,杜绝脚本注入。折叠状态独立存于本地数据库,不写入 .ttmap


开发初衷

给女儿演示AI操作思维导图,发现没有合适的工具,所以就让AI写了一个。

快捷键

全局

操作 快捷键
新建标签页 Ctrl+T
关闭当前标签页 Ctrl+W
打开文件 Ctrl+O
保存 Ctrl+S
搜索 Ctrl+F
撤销 / 重做 Ctrl+Z / Ctrl+Y(编辑态由输入框处理)

选中态

操作 快捷键
新增同级节点 Enter
新增下级节点 Ctrl+Enter
降级 / 升级 Tab / Shift+Tab
上移 / 下移(与兄弟交换) Alt+↑ / Alt+↓
删除节点 Delete / Backspace
编辑当前节点 F2 / 空格 / 双击
覆盖式输入 选中节点后直接输入字符
折叠 / 展开当前节点 - / +,或 Ctrl+← / Ctrl+→
方向导航 折叠时先展开)
全选可见节点 Ctrl+A
复制 / 剪切 / 粘贴 Ctrl+C / Ctrl+X / Ctrl+V(粘贴为子节点)
加粗 / 斜体 / 下划线 Ctrl+B / Ctrl+I / Ctrl+U

编辑态

操作 快捷键
确认编辑 Enter(失焦自动提交)
确认并添加子节点 Ctrl+Enter
取消编辑 Esc
提交后降级 / 升级 Tab / Shift+Tab

搜索框

操作 快捷键
下一个 / 上一个 Enter / Shift+Enter
关闭搜索框 Esc

鼠标交互

操作 功能
滚轮 以光标位置为中心缩放(0.15~2.5 倍)
右键 / 中键拖动 平移画布
左键空白处拖动 橡皮筋框选多选
左键单击空白 清空选择
单击节点 选中该节点
Ctrl+单击节点 增删多选成员
双击节点 进入编辑态
拖拽节点到另一节点 成为目标节点的子节点
点击折叠徽章(数字) 折叠 / 展开下级节点

技术栈

  • 前端:Vue 3 + TypeScript + Vite + Pinia
  • 桌面壳:Tauri 2(Rust 后端,负责文件读写 / 折叠状态 / 配置)
  • 渲染:Canvas 2D 文本测量 + 自研 tidy 树布局
  • 安全:HTML 子集白名单 sanitize

目录结构

ttmap/
├── README.md
└── ttmap-app/                 # Tauri 应用工程
    ├── src/                   # 前端 Vue 源码
    │   ├── components/        #   MindMapCanvas / MapNode / Toolbar 等
    │   ├── core/              #   parser(解析/样式壳)/ layout(布局)/ bridge(Tauri 桥)
    │   ├── stores/            #   appStore(Pinia 状态层)
    │   ├── App.vue
    │   └── style.css
    └── src-tauri/             # Rust 后端
        ├── src/lib.rs         #   文件读写 / 折叠状态 / 配置 / 启动文件参数
        ├── icons/             #   程序图标(多尺寸 PNG + ICO)
        ├── tauri.conf.json
        └── Cargo.toml

开发与构建

前置:Node.js 18+、Rust 工具链、Tauri 2 系统依赖(Windows 下需 WebView2 与 Visual Studio C++ 构建工具)。

cd ttmap-app

# 安装前端依赖
npm install

# 开发模式(热更新)
npm run tauri dev

# 类型检查 + 前端构建
npm run build

# 打包为 Windows 安装程序与绿色 exe
npm run tauri build

构建产物位于 ttmap-app/src-tauri/target/release/

  • ttmap-app.exe(绿色可执行文件)
  • bundle/nsis/童童思维导图 - TTmap_<version>_x64-setup.exe(NSIS 安装包,安装时自动关联 .ttmap 文件,双击即可用本程序打开)

程序图标

暗色圆角底 + 琥珀色「T」左旋 90° + 三条分支线与蓝 / 绿 / 红圆点,简约且点题「思维导图」。 图标由矢量绘制脚本统一生成全部尺寸(含 Windows 资源编译器所需的 DIB 格式 ICO),保证各尺寸颜色一致。


许可

MIT

About

童童思维导图 TTmap (Text To Map) - 专为 AI 设计的纯文本思维导图编辑器 / Plain-text mind map editor designed for AI

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages