Skip to content

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blindsight

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/  文档读取与原子保存

尚未实现

  • 图片导入与可视区域 NSImageView overlay
  • 文件系统变更监听与外部修改冲突处理
  • security-scoped bookmark 的跨启动持久化
  • 基于 swift-markdown 的空闲全量校正
  • WKWebView PDF 导出
  • 表格、任务列表、脚注、数学公式、HTML block、Mermaid 和复杂嵌套列表

这些能力应保持在输入热路径之外逐步加入。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages