Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 44 additions & 24 deletions PUBLIC_SOURCE_MANIFEST.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
"schemaVersion": 1,
"license": "GPL-3.0-only",
"historyPolicy": "sanitized-single-snapshot",
"generatedAt": "2026-09-08T09:41:38.424Z",
"fileCount": 860,
"snapshotSha256": "bb885e7c47f174052af805a58622132f2a456bd7384e65bca2b181c4587b8835",
"generatedAt": "2026-09-08T11:10:57.253Z",
"fileCount": 864,
"snapshotSha256": "f0c6f3b4d064c0abc6927915eca02abc2b55be86ce0cb067303f63d5874585b3",
"files": [
{
"path": ".gitattributes",
Expand Down Expand Up @@ -68,8 +68,8 @@
},
{
"path": "README.md",
"bytes": 10303,
"sha256": "81517c9ff67ac33f259a22d0b6ab916c5dad457566295645fc6cdf905ff43588"
"bytes": 10334,
"sha256": "dcca49a0eccd87a12e625b109d39c1a5a3f40268e75d14a491905e939e015bf4"
},
{
"path": "SECURITY.md",
Expand Down Expand Up @@ -1058,8 +1058,8 @@
},
{
"path": "apps/macos/DEVELOPMENT.md",
"bytes": 10614,
"sha256": "4790fa418e904d979e7cb3b5b5159219ef352af220aab29f7cade5ac1e31285a"
"bytes": 12268,
"sha256": "3497d74585b719362926e41117d911907cee4de1b2e26ab1c3928c63bd911b4a"
},
{
"path": "apps/macos/Package.swift",
Expand All @@ -1068,8 +1068,8 @@
},
{
"path": "apps/macos/RELEASE_STATUS.md",
"bytes": 4834,
"sha256": "562ab984f3408c91c87365d87c591303e2b664d37086ca1f12cb2132333322df"
"bytes": 5988,
"sha256": "21e58353cc52efc1aa6991ea579935015d7a2e136600838d5018663a247ef168"
},
{
"path": "apps/macos/REMOTE_CATALOG_SYNC_V1.md",
Expand Down Expand Up @@ -1118,8 +1118,8 @@
},
{
"path": "apps/macos/Sources/MathNotesMac/ContentView.swift",
"bytes": 39851,
"sha256": "172b43384c80fdd2a9c11ffaf70391406a38954e9b564767b0cb7ffe3c002f6d"
"bytes": 40912,
"sha256": "78a08a442df1d59f9e995a1a6e8159d2dbf0d48a467c494c7e32ffcc8a7610a5"
},
{
"path": "apps/macos/Sources/MathNotesMac/KeychainCredentialStore.swift",
Expand Down Expand Up @@ -1376,6 +1376,11 @@
"bytes": 8365,
"sha256": "26bfe64f73905dffbf5acb3a9f01ebf3eea55e6cead2f42c81a6a6aaf3a2ebc8"
},
{
"path": "apps/macos/Sources/MathNotesMac/SharePackagePicker.swift",
"bytes": 4055,
"sha256": "1a7d1d331c05ee49afbf791bc52f9300476bdc1a2f35dea7d2c77072713634b2"
},
{
"path": "apps/macos/Sources/MathNotesMac/SidecarConfiguration.swift",
"bytes": 7344,
Expand All @@ -1388,8 +1393,8 @@
},
{
"path": "apps/macos/Sources/MathNotesMac/SidecarProtocol.swift",
"bytes": 36651,
"sha256": "437334648d6ee8b90af5a30d1a451caa4174476e0e3845a04405450ca69662d7"
"bytes": 36715,
"sha256": "2da2ee2659b3ef265eba6057a1125239eb81b89a0db392d9eff0aad4d397ef6a"
},
{
"path": "apps/macos/Sources/MathNotesMac/SidecarSupervisor.swift",
Expand All @@ -1398,8 +1403,8 @@
},
{
"path": "apps/macos/WINDOWS_SHARE_IMPORT_FOLLOWUP.md",
"bytes": 1629,
"sha256": "74ff624e1892557bec523a25721c8e3e1b931050d775393d52698b7190ef0204"
"bytes": 1785,
"sha256": "18616aa36ec549f79e853d88be51e272c797e4e87bb6d243a85c2167f8a80abf"
},
{
"path": "apps/pwa/index.html",
Expand Down Expand Up @@ -2909,7 +2914,7 @@
{
"path": "deploy/releases/macos-release.json",
"bytes": 140,
"sha256": "3e67a551609bb3bcf4756ff1458da49c37bd4a752fde79f2982fd29409faaf86"
"sha256": "4885b668fee7772417a93acfc488a313a65423f93ee6e4bbe61dff4d85d11af0"
},
{
"path": "deploy/releases/macos-v0.3.4.md",
Expand All @@ -2926,6 +2931,11 @@
"bytes": 4383,
"sha256": "1ad6db93c6b1be1ffaebda34ad6c8e60758f78676110586148f05f9fce611300"
},
{
"path": "deploy/releases/macos-v0.3.7.md",
"bytes": 4730,
"sha256": "33d03aa36bf235f7fadd6771d74ac4dee4b87f89f2d09c7492f8c483155ef117"
},
{
"path": "deploy/releases/v0.3.4-acceptance.md",
"bytes": 9598,
Expand Down Expand Up @@ -3453,13 +3463,13 @@
},
{
"path": "packages/core-server/src/session/sessionSharePackageService.test.ts",
"bytes": 9889,
"sha256": "3dc5be4ea481258b2d59b38cc743c4a55a67a7f1384f952bd17845fb4985ffbb"
"bytes": 12768,
"sha256": "44f1e96a42025e763e101fcd2f5c7f9eb83b08aba39c1a8fc3e652331f648e4a"
},
{
"path": "packages/core-server/src/session/sessionSharePackageService.ts",
"bytes": 10441,
"sha256": "c65d422434bec9f7b2f67436a89ae7d38e07eedbee81cd8a75a35b2692b5e0c9"
"bytes": 10923,
"sha256": "7dc4e5af33d9b3a1b30ae2e2220961423dae0e7f7850b36c0ae43cca176319f3"
},
{
"path": "packages/core-server/src/session/sessionWriteCoordinator.test.ts",
Expand All @@ -3473,8 +3483,18 @@
},
{
"path": "packages/core-server/src/session/sharePackageArchive.ts",
"bytes": 5981,
"sha256": "4349dec21591477a7ade4f753bdea466f9eef367a1ce1e3d777d2dc3d095f59e"
"bytes": 6771,
"sha256": "e131893e553b16f7e1bcf9745f040079d53035cf2035aaaf23857ed9405402bc"
},
{
"path": "packages/core-server/src/session/sharePackageBlocks.test.ts",
"bytes": 2743,
"sha256": "ed98082eb1c796cefd9cc41a7ef03a094818e5d025a9e5f310e5ecac582d1c20"
},
{
"path": "packages/core-server/src/session/sharePackageBlocks.ts",
"bytes": 3628,
"sha256": "63eb2a88d3cba11f34b4169d2e8634494f3a0acfcfc9fd9ef8739c8eacae832d"
},
{
"path": "packages/core-server/src/session/sourceImageIntegration.mac.test.ts",
Expand Down Expand Up @@ -3998,8 +4018,8 @@
},
{
"path": "test_tool/macos_preview_smoke.swift",
"bytes": 46712,
"sha256": "3d14c12524a27a7b062a5fd1863f2c1bd85641842fc3818c5825b871bc6ed0dd"
"bytes": 48182,
"sha256": "8ac5d6ca87bd8ce0c5a081b23a91d1e0e3d5c7e51de7f5c58146b598bf44b3a4"
},
{
"path": "test_tool/macos_remote_acceptance.swift",
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MathNotes 是一个 GPLv3、本地优先的数学笔记项目,包含 Windows

Windows 最新测试构建为 **0.3.4「Mac 目录同步测试版」**:在正文、素材和草稿保护之外,增加远程新建笔记本/笔记、改名、移入废纸篓及恢复,并修复特殊文件名图片和删除后重启的问题。设置中显示构建编号,便于区分旧包。[下载 Windows 目录同步测试包](https://github.com/theincrediblewwz/MathNotes-OpenSource/releases/tag/windows-catalog-sync-20260908) · [目录接口与逐项验收表](deploy/windows-mac-sync/CATALOG_SYNC_V1.md) · [原正文同步说明](deploy/windows-mac-sync/WINDOWS_MAC_SYNC_RESULT.md)。该 Windows 发行版没有重新发布 Android/PWA;真实 Mac 跨机验收仍待完成。

**Mac 原生预览版 0.3.6** 已集成 PWA 0.3.4,面向 Apple silicon、macOS 14+,本机实际验收为 macOS 26。0.3.6 减少阅读滚动引起的源码重绘,并支持 Windows 分享目录/ZIP 导入和含图分享包导出;此前已修复手机后台启动、连续预览,并新增紧凑 UI、笔记管理、固定块、AI 修改、原图内嵌与阅读工具。**跨 Windows 同步尚待真实跨机验证**,本次以独立本机使用为主。[下载 Mac 预览版](https://github.com/theincrediblewwz/MathNotes-OpenSource/releases/tag/macos-v0.3.6) · [Mac 发布说明](deploy/releases/macos-v0.3.6.md) · [接续开发与验收状态](apps/macos/RELEASE_STATUS.md)。
**Mac 原生预览版 0.3.7** 已集成 PWA 0.3.4,面向 Apple silicon、macOS 14+,本机实际验收为 macOS 26。0.3.7 修复分享包文件框交互及 Mac ZIP 中文文件名兼容,并按 Windows 导出标记恢复内容块,支持含图分享包往返;此前已修复手机后台启动、连续预览,并新增紧凑 UI、笔记管理、固定块、AI 修改、原图内嵌与阅读工具。**跨 Windows 同步尚待真实跨机验证**,本次以独立本机使用为主。[下载 Mac 预览版](https://github.com/theincrediblewwz/MathNotes-OpenSource/releases/tag/macos-v0.3.7) · [Mac 发布说明](deploy/releases/macos-v0.3.7.md) · [接续开发与验收状态](apps/macos/RELEASE_STATUS.md)。

[下载最新发行版](https://github.com/theincrediblewwz/MathNotes-OpenSource/releases/latest) · [0.3.4 固定发行页](https://github.com/theincrediblewwz/MathNotes-OpenSource/releases/tag/v0.3.4) · [逐项操作验收表](deploy/releases/v0.3.4-acceptance.md)

Expand All @@ -17,9 +17,9 @@ Windows 最新测试构建为 **0.3.4「Mac 目录同步测试版」**:在正
| Windows | 0.3.4 | 已内置新版 PWA 的便携 ZIP,解压后运行 MathNotes.exe |
| Android | 0.3.4,versionCode 17 | APK,沿用既有测试签名 |
| PWA | 0.3.4 | 独立网页/源码更新 ZIP,附公开集成说明 |
| macOS | 0.3.6 原生预览版 | Apple silicon ZIP,内置 PWA;ad-hoc 签名,未公证 |
| macOS | 0.3.7 原生预览版 | Apple silicon ZIP,内置 PWA;ad-hoc 签名,未公证 |

本版提供 Windows 便携 ZIP、Android APK 和独立 PWA 更新包。Windows 为未签名测试包,Android 沿用既有测试签名;覆盖安装前请备份笔记。Mac 安装包在独立的 macos-v0.3.6 发行页提供,详见其安装说明。
本版提供 Windows 便携 ZIP、Android APK 和独立 PWA 更新包。Windows 为未签名测试包,Android 沿用既有测试签名;覆盖安装前请备份笔记。Mac 安装包在独立的 macos-v0.3.7 发行页提供,详见其安装说明。

0.3.4 修复了块拖动原地放下误报导入、重新识别未实际执行,并补齐已上传素材预览与正文定位、左上角可滚动气泡目录、阅读底栏显隐和画笔内矩形遮盖。各包的版本、SHA-256、验证范围与已知限制以该发行页为准。

Expand Down
12 changes: 11 additions & 1 deletion apps/macos/DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 在 Mac 本地开发 MathNotes

当前发布:macOS 0.3.5,集成 PWA 0.3.4。[功能与延期验收状态](RELEASE_STATUS.md);跨 Windows 真实互联暂缓,日常本机使用无需 Windows 在线。
当前发布:macOS 0.3.7,集成 PWA 0.3.4。[功能与延期验收状态](RELEASE_STATUS.md);跨 Windows 真实互联暂缓,日常本机使用无需 Windows 在线。

从仓库根目录执行下面的命令。本仓库已经包含 Mac 原生界面、共享 Core/协议、PWA、打包脚本和测试,不需要私有仓库,也不需要 Windows 电脑在线。

Expand Down Expand Up @@ -125,3 +125,13 @@ bash test_tool/diagnose_macos_connection.command
Core 测试 `sessionSharePackageService.test.ts` 使用 Windows 同一个 `exportSessionMarkdown(... packageMode: "share")` 准备包,验证目录/ZIP 往返、图片字节、编码文件名、无覆盖导入与损坏包拒绝。`npm run test:macos:preview` 同时检查真实 Swift 客户端导入导出、导入图像渲染,以及源码编辑器无变化更新不触发 NSTextStorage 重排或焦点激活。

导入上限:总 256 MB、4096 个文件/目录、单文件 64 MB、Markdown 8 MB、路径深度 32。资源使用相对 assets 路径;拒绝符号链接、路径穿越、大小写/Unicode 冲突、加密 ZIP 和 CRC 不一致。分享的是合并正文与资源,不迁移原始块 ID、编辑锁、AI 历史或密钥。Windows 源码无需本轮修改;其现有分享导出为目录,Mac ZIP 解压后采用同一目录格式。

## 文件选择与块结构(0.3.7)

分享导入由 Notebooks 的 `onDismiss` 回调启动异步 `NSOpenPanel`,禁止在关闭 SwiftUI sheet 的同一轮用 `runModal()` 嵌套事件循环。文件框挂到根视图持有的实际工作区窗口,不在关闭回调中依赖可能为空或指向其他窗口的 `NSApp.mainWindow/keyWindow`。文件筛选通过扩展名/目录判断,不将 ZIP、folder 和动态 Markdown UTI 混作一个类型过滤。主界面支持拖入 ZIP/分享目录;未保存草稿仍受保护。

`restoreShareBlocks` 使用 Markdown/数学解析器识别顶层导出注释,按原始字符位置切片,保留换行与内容。有效的块 ID 和来源恢复到新 Session;非法/重复 ID 重新编号,文件名始终由程序生成。连续元数据注释是 Windows 合并续接块的格式,缺少内部偏移,因此保留完整组并告知用户。没有元数据时不凭标题猜测原块边界。Mac 分享导出开启块元数据,保证普通块能够往返恢复;导出中不存在的锁定信息无法恢复。

核心回归:`sharePackageBlocks.test.ts` 与 `sessionSharePackageService.test.ts`;原生回归在 `test:macos:preview` 中验证两个 Windows 标记块、原图和 ZIP 再导入结构。人工验收需要实际点击文件框中的文件夹和 ZIP,取消并再次打开;仅通过路径输入框打开不能证明鼠标选择已修复。

ZIP 文件名:兼容未设置 UTF-8 标志的 macOS `ditto` 压缩包,优先有效 Unicode 路径扩展字段,其次严格 UTF-8,失败才回退旧 CP437;解码之后仍执行路径、重复项、大小与 CRC 校验。
10 changes: 9 additions & 1 deletion apps/macos/RELEASE_STATUS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Mac 0.3.6 开发与验收状态
# Mac 0.3.7 开发与验收状态

2026-09-08 发布收尾。Mac 的本机主要功能与 PWA 集成已实现;跨 Windows 的真实互联延期,不阻塞本机版发布。本文件用于从公开仓库恢复开发,不包含私人笔记、设备地址、令牌或本机绝对路径。

Expand All @@ -14,6 +14,14 @@
| PWA 0.3.4 | 单测、构建、浏览器上传/裁剪/成品预览 | 手机相机和后台策略 |
| 跨主机副本与目录同步 | Windows PR #39 Core 跨版本 23 项及 Mac 正式视图 loopback 验收 | **真实 Mac ↔ Windows 尚待验证** |

## 0.3.7 文件选择与块结构

2026-09-08 用户在本机独立验收版确认文件框点选与导入已可正常使用,并授权打包发布。自动化的后台键盘选择与用户的前台手动验收分别记录,不将前者代替后者。

已通过 Core 425 项(另 2 项跳过,含分享导入/块恢复 16 项)、原生合同 99 项、UI 合同 205 项和真实预览回归。独立合成库中,Windows 格式 ZIP 与 macOS `ditto` 实际生成的 ZIP 导入后均显示 3 个独立源码块、原图和公式;这些流程使用键盘选择 ZIP;Mac 包曾因未设置 UTF-8 标志导致中文资源名乱码,修复后已用原失败包复测。

分享包选择器改为等待 Notebooks 完成关闭后异步呈现,使用扩展名/目录筛选,并增加主界面 ZIP/文件夹拖入。Windows 默认导出的顶层块标记可恢复独立块的顺序、ID 与来源;代码/公式/引用中的标记不作为边界。Mac 再导出也保留标记。无标记旧包保留全文;连续标记对应的合并续接块缺少切分位置时保留整组并提示,不能声称恢复不存在的锁定或历史元数据。

## 0.3.6 分享包与滚动稳定性

源码编辑器的无变化更新不再写入 NSTextStorage 字体,不触发源码激活;阅读位置改为停滚 500 ms 后保存,卸载/退出/失去前台时补存。原生回归检查重复更新不改变布局、光标与激活状态,真实字体修改仍能应用;个别设备的间歇闪烁仍需持续观察。
Expand Down
Loading