Repository navigation
feat(mac): 交付原生采集、本地文件收入与多连接 Peer - #2
Merged
Merged
Conversation
- 使用普通主窗口、系统侧栏工具栏和辅助快捷面板 - 支持想法、明确粘贴、选区及框选截图,五项快捷键独立配置 - 以 SQLite 冻结提交和共享回执恢复保证重试身份,凭据保存在 Keychain - 删除改为原生确认后的直接删除,修正空态布局并接入 Mac 图标
- 删除执行 Peer 发现和委托,使用既有 PostgREST 原子提交。 - 在原生侧验证图片和材料边界,保持待办身份与回执恢复。 - 验证无 Python Peer 时提交与丢响应恢复,更新开发构建为 8。
- 拆分通用 PeerCore、应用 Host 与独立 Capture Swift 分发 - 原子保存图和原图,以共享回执恢复并遵守参与启停 - 删除未发布实现兼容层,补齐 Cida 与依赖许可
- 固定并注明上游选区、几何与冻结帧源码及 BSD-3-Clause 许可 - 冻结画面后支持移动、八点缩放、就近确认和取消,保留材料验证与扩展停用边界 - 增加实际 AppKit 视图离屏、关键交互与原图像素检查,更新 v11 开发包
- 以 ⌘⌥S 和原生工具栏共同控制侧栏,集中连接、扩展与采集设置 - 统一快捷键与菜单可用条件,保留平台命令并修复记录预览及 Web 配置返回路径 - 增加隐藏原生窗口、实际视图渲染与关键命令检查,构建 v12 开发包
- 连接设置返回原草稿,历史待办凭据和 Web 地址编辑不切换当前信息库 - 精简输入区,提供原图与完整材料查看,保留收入状态和记录定位入口 - 验证关键旅程与实际视图,更新签名开发包至 v13
- 独立本地文件扩展直接写入 PostgreSQL,支持六格式提取与原件失效保留 - 主窗口与连接归 Host,移除 Capture 重复连接界面及轮询 - 按需加载正文,跳过无变化写事务,保证本地停用不受凭据错误阻塞 - 验证 58 项检查与签名 universal 0.1.0(build 16)构建
This was referenced Oct 23, 2026
- 保留各连接身份与 Keychain 凭据引用,并恢复上次选择 - 切换时刷新前台目录,冻结待办和已有目录继续绑定原库 - 增加持久化与宿主切换检查,更新 build 17 和使用文档
This was referenced Oct 25, 2026
- 覆盖 Host、PeerCore 与 first-party 扩展并保留协议字段合同
- 迁移格式规则、保留协议字段并使用锁定依赖验证 61 项测试
- 防止格式化包清单触发无关依赖升级
xiaoland
marked this pull request as ready for review
October 25, 2026 09:22
- 记录 UI PR #67 的精确候选提交与独立 ZIP 来源 - 补齐明暗面板及菜单资源映射,保留原生图标适配边界
- 锁定 UI #67 候选资源 product,移除三张本地 PNG 副本 - 显式嵌入资源 bundle,保留原生尺寸、template 与 AppIcon 边界
- 从固定 UI checkout 收集品牌使用说明与来源记录 - 保留其他依赖缺失许可时的失败边界,并加入打包回归检查
xiaoland
force-pushed
the
feat/mac-local-files
branch
from
October 26, 2026 06:31
72fe0da to
91e989c
Compare
- 使用 exact 版本与发行提交锁定 SwiftPM 资源 - 更新正式版本说明并复验应用内独立资源加载
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
目的与范围
交付完整的原生 Mac Peer:用户可以采集选区、粘贴材料、框选截图与想法,将本地目录持续收入 info-base,并保存和切换多个连接。Mac 通过 PostgresNIO 直接使用 PostgreSQL;应用 Host、通用 PeerCore、Capture 与本地文件 first-party 扩展各自负责自己的生命周期和业务。
本 PR 整体承接并取代已关闭的 #1,直接以 main 为基底;包含原生采集实现及后续本地文件、多连接和 Logo 接入。
以普通主窗口、原生设置、全局快捷键和辅助面板承载采集;SwiftUI/AppKit 共用一份草稿,图片支持 Quick Look,截图仅收入明确确认的区域。
Capture 使用 SQLite 保存草稿与冻结待办,凭据保存在 Keychain。图、原图与共享摘要回执在一个数据库事务内保存;恢复复用原 UUID、材料和目标,核对回执后才清理本机材料。
inkcre/local-files经原生 PostgreSQL 保存正文和位置引用,不需要 Python Peer 执行写入。支持 PDF 文字层、DOCX 主文档、Markdown、Org、HTML 和纯文本;FSEvents 变化、重启核对及手动 Source Job 共用对账流程。
文件修改更新原资料;可证明的重命名保持 ID;删除原件保留正文;提取失败和目录不可访问不会清空旧内容。
原件留在磁盘,以
inkcre-peer-file://<peer-id>/<机器绝对路径>引用。目录绑定原信息库,切换连接不改投。Host 拥有主窗口、导航和连接管理;Capture 与本地文件独立启停。删除 Capture 旧连接页及重复轮询,实际提交时办理首次准入。
列表与扫描只读取元数据,选中文件才读取正文;未变化文件跳过写事务;Capture 减少全量读取和无变化刷新。
本机先停用再尝试同步共享意图;后台 Keychain 读取静默失败,避免反复系统授权提示。
本机保存命名连接列表与当前选择,重新打开恢复上次选择;旧单连接保留身份与 Keychain 引用。设置和 Peer 页可添加、编辑并切换连接。
切换立即清空前台目录选择,等待旧刷新收束后读取当前库。Capture 冻结待办和已有目录监视继续使用原目标,不因切换而改投。
验证
2026-10-26 整体承接原 feat(mac): 原生 PostgreSQL Peer 与 Capture first-party 扩展 #1 并对齐 main 后,最终
bash scripts/check.sh通过:许可证打包回归检查 1 项通过;Swift 套件报告 61 tests / 10 suites,3 个真实数据库 opt-in 用例跳过。此前数据库验证的适用范围见下文。最终签名 universal app/DMG 构建通过,包含实际 SwiftPM UI 资源 bundle、品牌来源与使用说明、第三方完整许可;
codesign --verify --strict通过。修复了新增 UI 依赖导致完整打包失败的问题,未知来源或缺失品牌来源文件仍使检查失败。swift test:58 项、9 个 suite 通过,同时启用一次性 PostgreSQL 的 Capture 与本地文件检查。数据库主流程涵盖首次准入、重复提交/重启回执恢复、六格式收入、修改与重命名、失败/删除保留及来源移除。
隐藏 AppKit 窗口跑通选择正文、快速切换、暂停/恢复与重启,实际查看正文、失败保留、空状态和 Host 页面渲染图。仅图片尺寸断言归为渲染冒烟检查。
此前用合成内容完成系统目录选择、打开原件、移除取消/确认的前台验证;精简后没有重新操作前台或重验屏幕录制权限。
bash scripts/build-app.sh:授权 Apple Development 身份签署的 universal 0.1.0(build 17) app/dmg 构建和签名验证通过;本次多连接包未替换已安装应用。多连接增量:Swift 完整套件报告 61 tests(3 个数据库 opt-in 用例跳过);2026-10-25 重跑连接持久化与 Host 界面定向 5 项通过。包含 A/B/A、重载恢复、名称编辑、旧单连接保留及无效选择不覆盖。
已查看多连接设置的隐藏窗口渲染。隔离调度探针确认任务内清理修复了连接切换漏刷新竞态;未将其作为真实多库数据库证据。
本次没有重跑真实多信息库端到端与前台原生鼠标交互;上述原本地文件数据库证据仅适用于未改动部分。
风险与回退
正文不包含 OCR、DOCX 脚注/批注;应用离线期间出现又消失且从未收入的文件无法恢复。原件没有备份或跨 Peer 传输。回退开发应用包会停止本地文件执行能力,已收入图及现有应用数据保留;不执行数据清理。多连接保存后,旧版应用不能直接读取新的连接列表格式;若需回退,应先备份本机 connection.json,再恢复旧格式的活动连接,Keychain 和本机材料不清理。
交付影响
本仓库合并不执行数据库迁移、软件包发布、公证或应用安装。Mac 运行依赖 impl-py#151 的原生参与与 Capture 回执 schema;当前正式数据库尚不能据此合并推断为兼容。本轮不连带合并或部署该数据库候选。
第三方依赖固定版本;Cida、BetterShot、PostgresNIO、SwiftSoup 的完整许可与署名随应用交付。版本仍为 0.1.0,17 仅为构建号。
依赖关系
跨仓配套
多连接用户手册与产品约定 docs#43:补齐 Mac 与其他入口的操作,明确多连接通常推荐给直接与用户交互的 Peer;固定服务一个信息库的 impl-py 服务器可继续使用单一部署配置。切换不改投已绑定的 Capture 待办和目录监视。该文档 PR 已合并并完成生产部署。
Web/浏览器扩展多连接:独立实现,无合并顺序依赖。
共享合同
Python 读取分发
Web 读取分发
Logo 资产 SwiftPM 接入
采集面板与菜单栏标识通过
InKCreLogoAssetsproduct 消费已发布的 InKCre UI 2.6.0,SwiftPM 使用 exact2.6.0约束。应用的Package.resolved锁定发行提交e5858e1092617eb5acf6588460e597fbc43c662a。移除三张本地 PNG 副本,沿用浅色/深色 24pt @2x 与菜单 20pt @2x 的原资源、逻辑尺寸和 template 设置。自组装
.app显式嵌入InKCreUI_InKCreLogoAssets.bundle,运行时只从Contents/Resources定位;缺少资源直接报错。AppIcon SVG、iconset、生成流程和 ICNS 绑定保持原样,由原生消费者维护。swift package -j 2 resolve与swift build -j 2 --target CaptureMac --disable-automatic-resolution通过;锁文件将 UI pin 更新为正式2.6.0和上述发行提交,其他依赖 pin 未变。swift test -j 2 --disable-automatic-resolution --filter 'captureSurfacesRenderOffscreen|iconsetHasTransparentMacMarginsAtEveryScale':两项相关测试通过。.app探针直接编译当前BrandAssets.swift,链接正式版本的资源模块;将应用放在构建目录之外,并临时移走整个.build后执行。实际从.app/Contents/Resources解码了三张 PNG,明暗标识为 24pt/48px,菜单为 20pt/40px 且 template 开启,字节与此前视觉验证一致;随后恢复.build。2.6.0的资源说明、原始来源与使用边界。e13a177的 CI 通过,并重新构建签名 universal app/DMG,codesign --verify --strict与 DMG 校验通过。没有启动 GUI、公证或安装日常应用。