Blindsight 是一个仅面向 macOS 的原生 Markdown 编辑器原型。它保留磁盘中的 Markdown 源码,并在同一个编辑界面中实时施加排版样式。
原始 Markdown 永远不变;AppKit 只负责让它在输入过程中看起来像已经渲染过。
- 平台: macOS 14+
- 语言: Swift 6
- UI: AppKit
- 编辑器:
NSTextView+ TextKit 2 - 目录:
NSOutlineView,按展开操作懒加载下一层 - 实时样式: 自定义增量
MarkdownStyler - 文件 I/O: Swift actor;保存时保留 UTF-8/UTF-16、BOM 与主导换行格式
SwiftUI、Tauri、编辑/预览双模式和插件系统不在架构中。
- 打开用户选择的工作区目录
- 懒加载文件目录并打开 Markdown/纯文本文件
- 编辑与
Command-S保存 - 切换脏文档时提供保存、放弃和取消
- 实时样式:H1–H6、粗体、斜体、行内代码、围栏代码块、引用、列表、链接、本地图片语法和分隔线
- Markdown 标记符保留并淡化,不改变字符内容
- 普通输入只重排受影响 block;围栏结构改变时执行全量校正
Command-,打开全局排版与布局设置,修改后实时应用并跨启动保存- JSON Theme 同时定义浅色与深色外观,可从设置中重新载入和选择
Theme 文件的安装方式、完整格式和字段说明见 docs/THEMES.md。
仓库中的 SampleWorkspace 可用于手动试用。
默认使用隔离脚本构建和验证;它不会安装、启动或激活 Blindsight:
./scripts/build-and-verify.sh需要检查界面时,使用离屏 UI capture:
./scripts/capture-ui.sh settings
./scripts/capture-ui.sh editor完整测试流程和隔离保证见 docs/TESTING.md。
只有在明确需要替换 /Applications/Blindsight.app 时才运行:
./scripts/build-and-deploy.sh部署脚本会退出正在运行的 Blindsight;未保存的编辑内容可能丢失。
也可以直接用 Xcode beta 打开 Blindsight.xcodeproj 进行人工开发。
Sources/Blindsight/
├── App/ 应用生命周期、菜单、窗口和分栏
├── Appearance/ 全局排版设置、Theme 模型、加载与持久化
├── Editor/ TextKit 2 会话、NSTextView 和文档切换
├── Markdown/ block/inline 扫描与显示属性
├── Settings/ 原生 AppKit 设置窗口
├── Workspace/ 文件树、节点和懒加载服务
└── Infrastructure/ 文档读取与原子保存
- 图片导入与可视区域
NSImageViewoverlay - 文件系统变更监听与外部修改冲突处理
- security-scoped bookmark 的跨启动持久化
- 基于
swift-markdown的空闲全量校正 - WKWebView PDF 导出
- 表格、任务列表、脚注、数学公式、HTML block、Mermaid 和复杂嵌套列表
这些能力应保持在输入热路径之外逐步加入。