Changelog
Unreleased
版本唯一来源为根目录 VERSION;外部依赖构建阻断解决并完成宿主回归后再创建正式 tag。
- PTLayout 5.67.1 专项记录:已撤销的全仓 SnapKit → PTLayout 迁移不重新执行;本轮只修复引擎语义、增加运行时 XCTest 和严格门禁,生产模块继续保留
.snp兼容路径。 - 后续变更记录继续写入新的正式版本章节。
- 自定义导航栏内容行改为区分 UIKit 实测与宿主局部回退证据,转场/零尺寸阶段不缓存无效几何;系统垂直导航栏与自定义横向容器按导航栈原子切换所有权。
- 移除对 UIKit 私有
UIBarBackground子视图的清理,背景仅通过公开UINavigationBarAppearance配置;补充navigation.duo-custom-nav-alignment-regressionDemo 和左右/标题对齐回归覆盖。 - 修复 Large Title 展开时缓存 1–2pt 中间内容行的问题:内容行现在按控件所需高度、宿主/安全区和状态排斥区校验,侧边保留区不再切断纵向行;宿主尺寸变化会使紧凑行缓存失效。
- 修复标题和导航按钮在 UIKit 重新挂载期间被压缩 bounds 污染首选尺寸的问题;补充展开/收起/旋转/标题压缩回归测试,并扩展
PTOOLS_NAVIGATION_GEOMETRY_DEBUG=1的高度与缓存诊断字段。
5.69.0 — 2026-10-21
- 完成 2026-10-23 Duo 收尾源码项:AutoScale 的新布局入口使用 owning View 局部 safe area,旧非对称安全区公式保留兼容但改为安全求和;权限 Header 新增按容器宽度测量,PhotoPicker fakeNav 改用 Sheet 实际 pullbar frame、局部布局签名和 compare-before-set inset。
- EyeTracking 新增
PTEyeTrackingCalibrationState、物理尺寸标定与失效降级;未标定时只提供低可信估算,标定失效时不返回精确点位。新增布局和显示几何白名单,明确区分兼容、像素域、诊断和真实布局命中。 - 修正 Duo 审计门禁:焦点项由源码检查动态计算,新增扫描器 self-test、逐命中 allowlist、
duo_audit_metadata.json、测试矩阵模板和--check-committed-snapshot;旧快照只报告STALE SNAPSHOT,不会冒充当前 checkout 证据。 - 完成 2026-10-23 iPhone Duo 全 UIKit 增量审计:修复宿主局部坐标、安全区、Window/Scene 所有权和零尺寸媒体加载路径,保留旧公开几何入口兼容,不再让新增布局依赖主屏幕快照。
- 强化
audit_duo_uikit_coverage.py与validate_duo_adaptive_bars.sh:报告现在绑定源码 revision、输入 manifest、规则版本和文件级 owner/evidence/decision/test 状态,过期或缺少闭环元数据的报告会失败。 - 新增 Duo findings closure 与 test matrix 报告;PTools-Example iOS Simulator Debug 构建通过,Pods 和 Metal 工具链警告继续单独记录,真实 Duo 视觉/折叠/交互验收仍为 pending device。
- 修复
PTNavigationBarManager将自定义导航容器嵌入真实UINavigationBar时的垂直对齐问题:新增 host-local 内容行解析器,让左侧按钮、标题和右侧按钮共享同一条几何真值;不再依赖全局kNavBarHeight或PTUtils.getCurrentVC()推断 Sheet 偏移。 - 收敛 iPhone Duo 合盖/展开后的导航栏恢复:
PTBaseNavControl的 trait、safe-area、布局、尺寸转场和容器入 Window 事件统一进入幂等 reconciliation;系统垂直 Bar 与自定义横向 Bar 切换后会重新挂载当前可见页面的导航项,不再依赖旋转才能恢复。 - 导航渲染切换只清理 PTools 自己创建的 native wrapper,宿主原有
UIBarButtonItem不再被全量置空;增加原生/自定义 owner、状态栏 frame、reserved region、点击区域和 generation 的 DEBUG 去重诊断。 - 内容行 resolver 新增状态栏和 active reserved region 排斥校验;展开竖屏时背景仍可延伸到状态栏,标题、左右按钮和搜索输入共享同一条不碰撞系统顶部区域的内容行。
- 扩充
navigation.duo-custom-nav-alignment-regression的 A1/A2/A4/A5/A6 场景说明、Scene-local 几何摘要和渲染器生命周期纯值测试;真实 Duo 折叠设备的 A1–A9 截图与 20 轮稳定性继续标记为PENDING_DEVICE,不以模拟器构建替代。 - 内容行刷新接入导航栏安装、样式、Push/Pop、Large Title 和
PTBaseNavControl布局生命周期;按几何签名幂等更新,保持背景层的状态栏延伸与内容行布局分离,避免重复约束和布局反馈循环。 - 保留
currentNavBarHeight()、kNavBarHeight和kNavBarHeight_Total的兼容调用方式;kNavBarHeight_Total会优先读取活动场景的实时导航栏底部并在无法解析时回退旧公式,另新增currentNavigationContentHeight(in:)获取已绑定导航栈的实时内容行高度;新增 DEBUG 环境变量PTOOLS_NAVIGATION_GEOMETRY_DEBUG=1用于现场 frame/midY 诊断。 - 新增
currentNavigationTopInset(in:navigationController:),按目标 View 和当前导航栈实时换算导航栏底部;避免新系统页面继续使用kNavBarHeight_Total的全局估算值造成二次偏移。 - 新增导航内容行纯值解析和运行时回归覆盖;UIKit 导航栏能力继续限定在 iOS/iPadOS,CoreGraphics 解析器保持可移植边界。详见 导航栏内容行对齐指南。
- 重构 PhotoPicker 的职责边界:
PTMediaLibView、实例级PTMediaPickerSession、唯一选择状态PTMediaSelectionStore、PhotoKit 相册仓库和提交协调器分别负责展示、状态、相册变更与媒体提交。 - 统一图片/视频选择规则,补齐图片与视频双向混选校验、异步下载期间的 pending 预留、重复点击幂等和编辑后资产替换的选中顺序保持。
- 用结构化并发替代旧的
PTFetchImageOperation提交链路,真正取消 PhotoKit 请求,限制并发数量,并保证提交结果按原选中顺序、完成回调只触发一次。 - 修复 PhotoKit 观察者生命周期、截图刷新、相册切换保留选择和相机新资源刷新;移除固定延迟插入逻辑,临时视频文件改用 UUID 缓存路径并在完成或失败后回收。
- 修复相机拍摄完成后的空结果强制解包、PhotoKit 后台观察者 Actor 边界、相机保存/关闭/回调竞态,以及视频 provider 临时 URL 未被框架持有的问题;保存成功、失败、取消和迟到回调均只结束一次。
- 修复 PhotoPicker Cell 编辑按钮重复绑定、复用状态残留和旧请求串图风险;保留
PTMediaLibManager、PTMediaLibConfig、PTMediaModel、PTResultModel以及旧回调 API 兼容入口。 - 相册列表也通过实例级 Repository 获取和刷新;新增图片族、Live Photo、GIF 过滤、提交终态和取消终态回归测试。
PooToolsPhotoPicker仍是 UIKit/PhotoKit 的 iOS/iPadOS 能力,watchOS、visionOS、macOS 继续由宿主平台边界管理。 - 完成 5.69.0 增补审计:PhotoKit 变更、截图、前台恢复、拍摄保存和编辑替换统一通过 Repository 防抖刷新;相同相册版本不再清空网格,单行插入/删除/内容变更优先使用
PTCollectionView局部更新。 - PhotoPicker 复用未变化的
PTMediaModel,Cell 按实际布局尺寸请求缩略图并取消复用旧请求;普通选中不再自动请求原图,原图只在明确的预览/提交路径按需加载。 - 拍照图片编码和录像临时文件复制移出 UIKit 关键路径,保留 JPEG/PNG 透明度与方向处理、视频临时文件所有权和取消失败清理;新增
OSLog阶段追踪,日志不包含媒体内容或文件名。 - 首次打开相册改为首批有界建模并按批次渐进追加;Session generation 会取消过期批次,关闭或切换相册后不再回写旧页面。
- PhotoKit 刷新先比较首尾边界;同边界的可疑变更才执行一次完整快照 fallback,确认无变化时不重建模型、不提交 Grid;模型指纹已检查的结果会正确更新已建模标记。
- 完成最新审计 H01-H04:选择 Store 通过资源 ID 向 Cell 做单向原子投影,未选项不再显示
0;相册刷新保留已展示的完整模型并生成带 generation 的变更事务;Snapshot/Cell 提交会丢弃过期回调;拍照自动选中按资源 ID 与 reservation exactly-once 收敛。新增选择投影回归测试。 - 多资源新增、删除和重排通过
PTCollectionView.replaceRows保持 Section 身份与滚动锚点;视频限制使用公开可取消的PHAssetResourceManager异步统计,未知大小不会直接放行。 UIImage(ciImage:)保存增加 Core Image 物化 fallback;异步视频复制在失败、取消和 provider 副本失效时清理框架自有半成品,绝不删除 provider 源文件。- 本轮完成源码解析及 PooTools CocoaPods 工作区 Debug/Release 构建门禁;真机连续拍摄、Hangs/Time Profiler、Instruments 和 10,000 资源量级仍需宿主使用真实设备验收,不能以模拟器构建替代性能结论。
- 完成本轮 P01–P04:PhotoKit 变化事务按资源 ID 复用模型,只为新增/变化资源创建模型;拍照后的 Grid 使用已提交 Row 状态驱动局部提交,并对无变化、排队、过期和完成回调做确定性收敛。
- 缩略图请求现在等待有效 Cell 尺寸、复用时先恢复占位图,nil/错误/取消回调不会清空已成功图片;新增
thumbnailRequested、thumbnailResolved、newCaptureVisible等安全诊断事件。 - 完成 P05 实例级
onFeedback:未配置时继续使用原有提示,配置后仅发送类型化事件;保存开始、成功、失败、取消均带同一operationID,不同 Picker 实例互不影响。 - 完成 P06:
PTMediaLibView使用cellInCollectionV2与configureCell单一配置路径,不再同时维护旧 Cell provider;保留PTCollectionView结构/内容更新 API 作为局部更新和安全回退。 - 新增 P01–P06 回归测试、PhotoPicker Demo 的 Default Tips / Custom Feedback 入口和 5.69.0 迁移说明;PhotoKit 真机、10,000 资源量级、Instruments 与独立消费者仍按发布清单单独验收。
5.68.0 — 2026-10-19
- 重构
PTCodeView的显示源与刷新边界:保留本地生成兼容入口,新增外部文本、外部图片、程序化刷新和宿主刷新回调;外部 setter 不再误触发刷新。 - 修复验证码绘制在空尺寸、空数据和长文本下的取模崩溃风险;图片模式复用单一
UIImageView,并补齐点击节流、后台暂停、离窗取消、VoiceOver 刷新操作和三语模块文档。 - 将
PTBannerView的内部列表迁移到PTCollectionView,统一分页、无限循环、逻辑下标和稳定 Diffable 标识,保留原有公开 Banner API。 - 修复自动轮播交互状态:用户开始拖动时立即暂停;有减速时持续暂停;拖动无减速结束或减速结束后才恢复自动轮播。
- Banner 使用可视区域分页并隐藏内部水平、垂直滚动条,避免分页控件和内容区域出现额外滚动提示。
- 修复媒体浏览普通远程图片加载和滑动标题索引同步,补充滚动样式与 Banner 迁移文档及合约测试。
- 继续保持 iOS 17+ / Swift 6+;UIKit 滚动组件的 watchOS、visionOS、macOS 适配边界仍由宿主平台条件编译。
5.67.4 — 2026-10-19
- 新增导航标题几何与尺寸的纯值 Resolver,统一系统导航容器和
PTNavBar的标题可用区域、按钮占用空间、固定宽度、填充宽度和安全降级行为。 - 修复自定义
titleView在安全区域、分屏、旋转、按钮尺寸变化和伪导航栏宿主高度变化后重复布局、旧约束残留和标题被截断的问题。 - 保持现有公开 API、默认值、
PTNavigationBarStyle、大标题转场、原生竖向导航栏和 SnapKit.snp入口不变;补充标题布局单元测试与导航运行时回归覆盖。 - 继续保持 iOS 17+ / Swift 6+;watchOS、visionOS、macOS 仅复用 Foundation/值解析边界,UIKit 导航适配仍由对应宿主条件编译。
5.67.3 — 2026-10-19
- 收敛 SwiftPM 与 CocoaPods 的下载、缓存、权限和传输基础设施边界,补齐独立 target 的公开依赖声明。
- 保留 SnapKit 兼容入口并完善音频/视频缓存与文件传输服务,继续维持 iOS 17+ / Swift 6+ 的构建契约。
5.67.1 — 2026-10-19
- 修复 PTLayout 回滚后仍存在的核心语义问题:自动布局掩码、最终常量、显式句柄归属、remake 事务顺序、首次 update、Safe Area 逐锚点映射和非法属性预校验。
- 批量约束改为统一预检后原子激活;诊断缓存增加容量上限,性能计数只记录实际安装的原生约束。
- 新增 iOS Simulator 运行时 XCTest、F01-F56 执行映射、视觉证据和严格发布门禁;未运行、未通过或缺少截图不会被标记为发布通过。
- 保持生产模块的
.snp兼容路径和 Core 公开边界,不执行全仓机械迁移;watchOS/macOS 继续只评估 Foundation 边界,UIKit PTLayout 由 iOS/tvOS/visionOS 宿主验证。
5.67.0 — 2026-10-18
- 新增独立的
PToolsConstraintLayout原生约束布局产品,使用 UIKit/Foundation,不依赖 SnapKit、ptools或PooToolsLayout。 - 提供 SnapKit 风格的约束、组约束、更新、重建、移除、优先级、Safe Area、键盘和 RTL 适配入口;保留现有
.snp兼容边界,不改变旧公开 API。 - 约束失败统一返回结构化诊断,不在缺少父视图、跨层级引用、孤立布局指南或非法事务时崩溃;批量约束采用预检后原子激活。
- 增加 PTLayout 56 个故障夹具、10 个 Example Demo ID、迁移清单、依赖边界和性能采集报告;验证夹具由 CI 脚本托管,不作为最终测试 target 发布。
- 保持 iOS 17+ / Swift 6+;独立 UIKit 产品的 watchOS 不适用,Foundation/非 UIKit 边界继续保留 visionOS 与 macOS 的条件化评估。
5.66.1 — 2026-10-18
- 修复
PTSearchViewController清空搜索框后把调用方提供的完整结果错误清空的问题;现在点击 clear button 会恢复未筛选数据。 setResults、增删改结果入口统一维护未筛选结果快照,搜索中的结果更新不会覆盖清空后应恢复的数据。
5.66.0 — 2026-10-18
- 新增
PToolsAcknowledgementsCore:Foundation-only 的离线许可证清单模型、读取、查询、筛选、统计、原文、导出、typed error 和 actor Repository。 - 新增可选
PToolsAcknowledgementsUIKit 模块:列表、搜索、分组、详情、复制和分享;UIKit 目标可用时,列表与详情页优先复用PTBaseViewController。 - 新增
pt-acknowledgements构建期生成器,支持 Package.resolved、Podfile.lock、本地 checkout 和手工覆盖,不在 App 运行时联网扫描。 - 新增 Example 可点击 Demo、Core-only 测试/fixture、生成与 strict 验证脚本及三语模块指南。
- 保持 iOS 17+ / Swift 6+;Core 继续为 Foundation-only,并保留 macOS、watchOS、visionOS 的跨平台使用边界。
5.65.8 — 2026-10-18
- 修复
PToolsNetworkModelCore已有 target 未发布为 SwiftPM product 的问题;类型化网络响应契约现在可以被独立消费者直接导入。 - 修复
PToolsFontCatalogCore已有 target 未发布为 SwiftPM product 的问题;字体元数据和目录不再要求调用方依赖完整ptools聚合模块。 - 将两个新增公开 product 纳入消费者 fixture、依赖矩阵和发布门禁,继续保持 iOS 17+ / Swift 6+ 边界。
5.65.7 — 2026-10-17
- 修复
PooToolsBioID独立 SwiftPM target 缺少PooToolsKeyChain直接依赖和显式导入的问题,继续复用唯一的PTBiologyVerifyStatus定义。 - 修复
PooToolsScrollBanner、PooToolsGuide和PooToolsMediaViewer使用 PageControl 公共类型但未显式导入PooToolsPageControl的问题。 - 新增覆盖全部 SwiftPM library products 的实际 iOS Xcode consumer host、Debug/Release 构建矩阵、日志与 xcresult 留存、诊断合并和严格发布门禁。
- 新增 API surface、ownership parity、dependency、macro/resource、历史问题矩阵和 CI workflow;
not_run不再被视为通过,BaboBuy/YD1688 继续标记为外部宿主验证项。
5.65.6 — 2026-10-17
- 修复
PooToolsScrollBanner和PooToolsMediaViewer跨 SwiftPM target 访问 Core 内部GlobalVideoExts导致的独立编译失败;统一改用 Core 公开的URL.pt_isVideoResource视频资源判定入口。 - 将
URL.pt_isVideoResource纳入跨 target 符号审计,避免 CocoaPods 聚合可见性再次掩盖 SwiftPM 直接依赖问题。
5.65.5 — 2026-10-17
- 修复
PooToolsInput/YoshikoTextField独立 SwiftPM target 缺少PToolsUIFoundation显式导入的问题。 - 扩展富文本符号审计,并补齐
PooToolsMediaViewer、PooToolsScrollBanner和PooToolsWhatsNewsKit对PToolsUIFoundation的直接 target 依赖。 - 全模块复查同类 SwiftPM 隐式依赖,确保 CocoaPods 聚合可见性不会掩盖独立 target 的导入错误。
5.65.4 — 2026-10-17
- 修复
PooToolsSmartScreenshot与PooToolsProgressBar独立 SwiftPM target 缺少 Core 聚合 target 显式导入的问题。 - 全量审计并补齐 C7Collector、Hud、Network、Paging、SplitView、Debug、权限及其他可选模块的 SwiftPM 跨 target 导入边界。
- 为 ptools 聚合 target 内直接使用
PToolsCore符号的文件补齐拆分 Core 导入;网络运行时测试显式声明PToolsCore依赖。 - 强化跨 target 符号归属门禁,识别
@testable import,避免 CocoaPods 聚合可见性掩盖 SwiftPM 独立编译问题。
5.65.3 — 2026-10-16
- 修复 SwiftPM 独立编译
PooToolsWhatsNewsKit时访问内部HSL类型导致的cannot find 'HSL' in scope错误。 - 改用 Core 已公开的
lightened(amount:)API,保持按钮高亮背景颜色行为,不扩大内部颜色实现的访问级别。
5.65.2 — 2026-10-16
- 修复 SwiftPM 独立编译
PooToolsBanner时错误依赖UIStackView.removeAllArrangedSubviews()扩展的问题,改用 UIKit 原生移除排列子视图,保持 Banner target 轻量且不依赖聚合模块。 - 为
PooToolsWhatsNewsKit和PooToolsVision增加 SwiftPM 下对已有ptoolstarget 的显式导入,修复独立产品无法解析 Core 扩展和基类符号的问题。 - 修复
PTVision使用不存在的UIColor.random,统一改用 Core 已公开的UIColor.randomColor。
5.65.1 — 2026-10-16
- 修复
PTCollectionView骨架显示时真实 Cell 文案(例如Content row X)透出的问题;显示期间隐藏底层业务内容,隐藏后恢复原有内容和透明度。 - 修复
shimmer-avatar的头像占位路径使用非正方形椭圆的问题,统一按最小边长绘制为真正的圆形。
5.65.0 — 2026-10-15
- 将
PTCollectionView骨架加载统一为独立覆盖层,不伪造 Diffable 数据、不触发业务 Cell 回调,并与 empty/loading/content 状态统一仲裁。 - 新增可配置的骨架布局、内容模板、分区/头尾描述、占位数量策略、RTL、窗口填充和安全尺寸裁剪能力。
- 新增 solid、gradient、pulse、shimmer、none 动画策略,支持 Reduce Motion、延迟显示、最短可见时间、取消和窗口生命周期恢复。
- 新增
PTCollectionSkeletonLabViewControllerDemo、诊断快照、模板注册入口和骨架使用指南;保留原有showSkeleton/hideSkeletonAPI。
5.64.11 — 2026-10-15
- 修复独立
PTHoshiTextField在浮动占位符更新时覆盖原始 placeholder 的问题。 - 增加占位符更新递归保护,并让普通占位符与富文本占位符在编辑状态切换时保持一致。
5.64.10 — 2026-10-15
- 为所有继承
TextFieldEffects的输入框增加统一的activityChangeHandler和只读isActive状态。 - 激活状态统一定义为“当前获得焦点或包含文本”,并覆盖用户编辑、失焦、程序化文本和富文本赋值。
- 回调只在状态真正变化时触发,并使用
@MainActor @Sendable,便于外部安全控制按钮、提示和联动视图。 - 不改变九种输入框样式和独立
PTHoshiTextField的既有行为。
5.64.9 — 2026-10-15
- 修复
YoshikoTextField将activeBorderColor错误复用为激活态占位符文字颜色的问题;边框和占位符颜色现在可以独立配置。 - 新增可选的
activePlaceholderColor、activePlaceholderFont和activePlaceholderAtt,未设置时激活态占位符继续使用共享的placeholderColor、placeholderFont和placeholderAtt,保留现有调用兼容性。 - 修复 Yoshiko 悬浮占位符在字体或富文本高度变化时被输入框裁剪的问题;输入区域会按占位符实际测量高度动态预留空间。
- 审计 Input 模块的相关输入框:其他样式已使用独立占位符颜色入口,
IsaoTextField的旧颜色回退行为保持不变。
5.64.8 — 2026-10-14
- 修复默认
Core/Device被动导入 CoreNFC 的问题;未使用 NFC 的宿主不再因为PTDeviceCapability.nfc检测而携带 NFC 框架。 - 保留
PTDeviceCapability.nfc兼容枚举;需要 NFC 时必须显式接入PooTools/NFCKit,该入口单独声明 CoreNFC 框架。 - 补充 NFC opt-in、App Review Notes、Info.plist 和 entitlement 的使用边界说明。
5.64.6 — 2026-10-14
- 统一 Input TextFieldEffects 与独立
PTHoshiTextField的占位符、富文本、字体、间距和编辑区域配置;保留旧拼写textAndPlceholderSpace作为弃用兼容入口。 - 修复输入框依赖绘制生命周期初始化、重复通知监听、直接调用
layoutSubviews()、程序化赋值动画和首字符水平跳动的问题;多次布局和复用保持幂等。 - 为 Input 的 SwiftPM / CocoaPods 入口补齐
PToolsUIFoundation与SnapKit显式依赖,避免独立 target 编译时依赖聚合模块传递可见性。 - 统一图片加载的点尺寸与像素尺寸边界:PhotoKit、ImageIO、本地文件、Kingfisher 和视频封面都使用实际窗口屏幕比例;图片视图和按钮在布局稳定后再请求,并在请求开始时立即显示占位图。
- 保留图片取消、generation 校验、GIF、iCloud、视频首帧和旧公开 API;补充高分辨率图片加载指南与 Input 样式演示说明。
- 修复
PTRichText内嵌图片在 UILabel 多行布局中的附件基线处理:保留值模型语义,仅对 UIKit 显示副本应用一次偏移,并统一初始渲染、异步媒体回填和交互高亮路径。 - 新增
Rich Text · Attachment Multiline RegressionDemo、真实 UILabel 回归覆盖和多行附件迁移指南,验证 40/64/80/120pt 高度、不同换行方式及换行 Action。
5.64.5 — 2026-10-14
- 完成 SwiftPM 全仓 179 个 target、155 个 product 和源码归属的动态审计,生成依赖图、符号归属、条件编译、资源和消费者矩阵报告。
- 修复 Banner、Segmented、MediaViewer、VideoEditor、MessageKit、Guide、ScrollBanner、SignView、ImageEditor、Input、PageControl、Picker、QRCodeScan、CheckUpdate 等独立 target 对 Core / Category API 的隐式依赖。
- Banner 的子视图清理改用 UIKit 原生实现,避免为两行基础操作引入完整
ptools依赖;其余跨模块 API 通过显式 target 依赖和直接 import 收口。 - 增加 SwiftPM 隔离消费者构建脚本和不伪造通过的发布门禁,保留 CocoaPods / SwiftPM product 名称差异及未执行宿主构建的阻断记录。
5.64.4 — 2026-10-14
- 修复调试诊断文件缺少 UIKit 显式导入的问题,避免 SwiftPM 与独立 Target 下的类型解析失败。
- 补齐 Input、Stepper、Router、SocketKit、Share、DEBUG 及权限相关 Target 的显式模块边界,消除对 CocoaPods 聚合模块传递可见性的依赖。
- 为 SocketKit 显式声明 Network 依赖,为 Share 显式声明 Core 与 SnapKit 依赖,保持 CocoaPods 与 SwiftPM 的依赖图一致。
- 保留原有公开 API 与 5.64.3 调用方式,版本统一为 5.64.4。
5.64.1 — 2026-10-13
- 为
PTRichText的内嵌图片、远程图片和动态图片来源增加baselineOffset配置。 - 图片附件在 Foundation/UIKit 富文本桥接、占位图替换和异步加载后保持同一基线偏移。
- 保留原有
.image、remoteImage、PTRichTextImageConfiguration和PTRichText.image调用方式,未配置时行为不变。 - 增加图片基线偏移回归覆盖;iOS 17+ / Swift 6 API 保持兼容。
5.64.0 — 2026-10-13
- 将
PTCustomerAlertController的 1、2、3+ 按钮路径统一为无分割线的胶囊操作布局,支持长文案、多行标题和按钮区滚动。 - 新增
PTCustomerAlertButtonAppearance与主操作索引配置;保留旧初始化器、按钮颜色、操作样式和原始索引回调。 - iOS 26 在非原生 Alert 玻璃表面支持原生 Glass 按钮;默认避免嵌套玻璃,iOS 17+、降低透明度、高对比度和旧系统均有稳定回退。
- 完善 Dynamic Type、辅助功能、取消/主操作排序、Reduce Transparency 和无障碍点击区域处理。
- 新增 Alert Capsule Lab Demo、胶囊操作指南和布局测量回归覆盖。
5.63.6 — 2026-10-12
- 修复
PTNavBar作为普通 View 使用时,设置左右自定义按钮后按钮容器高度被固定导航栏高度压缩的问题。 - 系统导航栏与
PTNavBar统一复用按钮尺寸快照和 UIStackView 布局入口;尺寸在重新挂载前读取,保留调用方设置的bounds。 - 伪导航栏改为使用宿主 View 的实际高度,避免自定义导航栏内容变矮;保留现有公开 API 和 iOS 17+ / Swift 6 兼容行为。
- 增加伪导航栏自定义按钮尺寸与宿主高度回归覆盖。
5.63.5 — 2026-10-12
- 为
tabSelectedMetail增加tabSelectedMetailStyle样式覆盖,保留原有nil继承行为。 - 设置
tabSelectedMetailStyle: .classic时,选中项只使用tabSelectedMetailColor普通纯色,不再叠加材质或玻璃效果。 - 支持
.material、.glass和全局PTAppBaseConfig.share.tabSelectedMetailStyle配置;保留原有公开初始化方法和默认参数。 - 增加 TabBar 选中背景样式回归覆盖,验证纯色模式与旧版默认模式互不影响。
5.63.4 — 2026-10-12
- 修复
UIView.pt_loadCoreImage开始新图片请求时未立即显示emptyImage的问题。 - 图片、视频首帧、PhotoKit 和远程资源加载期间会先清理旧内容并显示占位图,加载成功后再替换为结果。
- 保持旧的
UIImageView、UIButton和动态Any入口兼容,不改变取消和 generation 校验逻辑。
5.63.3 — 2026-10-12
- 修复
PTCollectionViewHeader 高度同时进入 Boundary Supplementary 和 Section 内边距,导致 Header/Cell 顶部间距重复的问题。 - 统一 Section contentInsets、内容上下间距和 decoration 边距的职责;保留旧
customerLayout,新增感知NSCollectionLayoutEnvironment的 Custom 布局入口。 - 增加 Header/Cell 实际布局测量、嵌套列表和多布局切换 Demo,并补充 iOS 17+ / Swift 6 的间距回归覆盖。
5.63.0 — 2026-10-11
- 完成 iPhone Duo UI 自适应第二轮:Launch Ad、Guide、Collection Header/Index、Share Preview、Badge、3 Tab + Center Action、PhotoPicker、ImageEditor、VideoEditor、MediaViewer、MessageKit、Accessory 和 Paging 共用宿主局部可视区域与 active reserved-region 约束。
- 新增
PTAdaptiveVisibleRegionResolver、10 个 Duo 专项 Demo 登记、PhotoPicker/MediaViewer/MessageKit/Paging 的局部几何回归,以及 Duo 布局静态门禁;旧公开 API 和 iOS 17+ 经典布局保持兼容。 - 5.63.0 仍需官方 iPhone Duo Simulator 或实体设备完成外屏、内屏、hinge、系统 vertical rail 和视觉交互验收;普通 Simulator 只作为编译与可注入几何验证环境。
- 新增 Scene-aware 的
PTAdaptiveBarLayoutContext、纯值类型几何 Resolver 和 MainActor Coordinator,支持非对称 safe area、iOS 27.1+ vertical bar edge 与 active reserved regions。 PTBaseNavControl、PTBaseTabBarViewController和PTNavigationBarManager统一系统/自定义 Bar 的几何所有权;默认 automatic 在系统具备垂直 Bar 能力时交给 UIKit,iOS 17+ 旧横向路径保持兼容。- TabBar 继续保留 Badge、Center Raised、Mini、Lottie、选中状态和原有 Insets 语义;空间不足时保留当前 Tab 并提供 overflow 数据。
- 新增 iPhone Duo Adaptive Bars Demo、12 项可观察场景、DEBUG 几何 overlay、纯几何回归测试和
validate_duo_adaptive_bars.sh门禁。 - 完成
PooTools.podspec/Podfile.lock/ README / ROADMAP 的 5.63.0 版本同步;真实 Duo 硬件折叠和视觉验收仍需设备或官方 Duo Simulator 证据。
5.62.10 — 2026-10-10
- 将 Network 成功响应日志收敛到传输边界,覆盖缓存、普通请求和上传回调,并统一正文截断与隐藏策略。
- TestFlight 沙盒回执不再被误判为生产环境,保持测试环境的可观察日志行为。
5.62.8 — 2026-10-09
- 修复
UIButton使用backgroundGradient时的内容渲染路径:标题和图片保持在渐变背景之上。 - 支持通过
UIView引用调用渐变方法时根据运行时按钮类型选择正确的 backing background 路径。 - 新增
UIButton.backgroundGradient(..., for:),支持.normal、.highlighted、.selected和.disabled等状态分别配置渐变。 - 按钮尺寸或界面样式变化时自动重新生成状态背景,并兼容已有
UIButton.Configuration更新回调。 - 增加 UIButton 渐变内容保留和状态渐变回归测试。
5.62.7 — 2026-10-08
- 修复
PTRichText的 action 标识在 Foundation/UIKit 富文本桥接时丢失的问题。 - 保持
PTTextActionRegistry和UILabel.pt_apply现有用法不变,支持同一段富文本中的多个 action。 - 增加多 action 富文本桥接回归测试。
5.62.5 — 2026-10-07
PTCollectionView内部 Diffable 数据源改为只保存稳定的 Section/Row ID;保留PTSection、PTRows和旧快照别名作为兼容入口。- 新增 ModelStore 更新入口、
PTCollectionCellContext、cellInCollectionV2、configureCell和可见 Cell 原地重配置。 - 内容刷新改为可合并的
reconfigureItems路径,默认不做结构动画;新增reloadItemCell、reloadSectionCells、updateRow、updateRows和updateItemContent。 - Refresh Lab 增加 Ref、Value、External、Store 数据来源模式;补充内容刷新诊断、稳定身份、性能和兼容迁移指南。
- 完整 Xcode 验证结果以当前构建日志和外部 Pods 阻断分类为准;本版本不创建 Git tag,直到发布门禁全部通过。
5.62.3 — 2026-10-07
- 修复
PTTabBarItemView的命中测试:图标、Lottie、标题和其他装饰内容统一回传到 Item 控件,Badge 独立交互区域仍保留原命中结果。 - 同步该版本的 CocoaPods 锁定依赖。
5.62.2 — 2026-10-06
- 修复
tabItemContentInsets只改变外围容器而不改变content.view实际尺寸的问题。 - 新增统一的 Content Size Resolver:支持正 Insets 缩小、有限负 Insets 扩展,并将异常数值和过大扩展安全限制。
- Badge 和 Mini 模式改用同一份实际内容尺寸,避免内容缩放后角标偏移和 Normal ↔ Mini 尺寸跳变。
- 补充十二种 TabBar Insets Demo,直接显示 UIImage、Lottie、Badge、Mini 和 Per-item 场景的实际尺寸。
- 补充 5.62.2 迁移说明、布局引擎回归测试和版本治理;完整 Xcode Simulator 构建仍需外部 Harbeth Metal Toolchain 可用后验证。
5.62.1 — 2026-10-06
- 解耦 TabBar 选中背景与 Item 内容布局,新增
tabSelectedMetailInsets、tabItemContentInsets和tabItemContentOffset。 - 保留
tabSelectedMetailLRSpacing兼容入口并标记弃用;选中背景四边 Insets 不再参与 Icon 尺寸计算。 - 支持每个
PTTabBarItemConfig单独覆盖内容 Insets / Offset,保留旧的 TabBar 容器和安全区参数语义。 - 修复
PTTabBarView内容容器重构后的语言刷新路径,并补充 TabBar Insets 与渐变渲染 Demo、回归测试。 - 修复
UILabel/UIImageView的backgroundGradient内容遮挡:内容型 View 使用按 bounds 栅格化的 backing background,普通容器继续使用 CAGradientLayer。 - 完善圆角、胶囊、动态颜色、边框、Bounds 变化和旧
PTSuperBg清理逻辑;完整 Xcode Simulator 构建仍受外部 Harbeth Metal Toolchain 缺失阻断。
5.62.0 — 2026-10-05
- 新增可选 SQLite 数据库基础设施:actor、预编译参数绑定、事务、迁移、观察、备份/恢复和 Codable 映射。
- 新增认证、离线同步、后台传输、StoreKit 2、可观测性、WKWebView Bridge、MapKit、App Integrity、远程配置和 Realtime 能力。
- 所有新能力保持独立 SwiftPM product 与 CocoaPods subspec,不改变默认 Core 和
PooToolsAll的依赖边界。 - 新增 Demo Catalog、三语模块文档、应用基础设施指南、质量门禁和合约测试入口。
- 继续保留旧
PTModelProtocol、PTIAPManager等兼容入口;完整 Xcode、真机、外部宿主和远程服务回归需在依赖可用后完成。 - 完成 CocoaPods → SwiftPM 对等迁移前置:新增
PooToolsWebKit、PooToolsVideoCache、PooToolsFilterCamera兼容产品;WebKit、视频缓存和 FilterCamera 继续复用现有 PTools 实现。 - 移除 PTools 对
KTVHTTPCache和FlagKit的运行时/安装所有权;旧VideoCache、FilterCamera、WebKit、FlagPod 入口保留为兼容入口,并新增分发对等硬门禁。 PTMediaBrowserCell改为本地缓存优先、远程立即播放,缓存失败不再阻塞视频首播;宿主不再需要 KTVHTTPCache 或 Bonjour/localhost Patch。- CocoaPods / SwiftPM 双构建与真机核心能力仍需宿主环境完成最终证据后,才能将
PTOOLS_SPM_MIGRATION_READY标记为 true。
5.61.0 — 2026-10-04
- 完成 5.x 最终运行时安全、Scene、存储和 Swift 6 并发边界收口:移除 Kakapos 生产依赖,清理
AppWindows!,补齐@unchecked Sendable分类和工作树安全报告。 - HeartRate 改为可恢复的相机/像素处理错误;NetworkSpeedTest 改为显式 endpoint 的 actor 测速器;Ping 增加类型化状态机和
PTPingSession。 - Location 使用
PTLocationSnapshot与旧键迁移;PTFileStorage的文件 I/O 移至 utility 队列并保留 atomic write;UserDefaults 兼容入口移除synchronize()。 - 新增
PTSplitViewController与 Router 自适应桥接,支持双栏/三栏、紧凑 push、regular secondary、Inspector 和状态恢复。 - 完成 SplitView Demo 收口:目录入口改为 root-container,新增 iPhone/iPad 自适应 Category → Component → Detail 流程、compact column、Router
.push、状态保存/恢复、Inspector 运行态和 device-independent 回归门禁。 - 修复泛型 Cell/Header/Footer 出列、UIDocumentPicker 缺少参数和 iOS 18 zoom 转场回调的用户路径崩溃,补齐 Example Demo、指南和 5.61.0 发布门禁。
PooTools-ExampleSimulator Debug 构建通过;真机、真实宿主、真实测速 endpoint、iPad 多窗口视觉和 Instruments 证据仍需集成方完成,当前不创建正式 tag。
5.60.0 — 2026-10-02
- 收口 5.60.0 剩余实施路线:P0 Nested Model / Network 错误语义与真实测试 Gate、P1 Learning Lab 与迁移文档、P2 模块 parity / singleton ownership / deprecated freeze / God File 拆分 / Font Catalog / Network 与 Router 分层、P3 并发例外复审均已落地。
- 新增
PTFont、生成式 Font Catalog、Runtime Discovery、Simulator pending collector 与FontName5.x 兼容转发;新增 Router Legacy Compatibility 分层文件,旧服务与重定向入口保持可用。 PooTools-ExampleSimulator Debug 已通过;Release、SwiftPM Kakapos 解析冲突、CocoaPods lint、真实宿主、真机和 Instruments 仍需环境证据,当前不创建正式5.60.0tag。- 新增
PTNetworkResponseDecoder.ptModel(_:at:decoder:),支持显式$.data、深层对象和数组路径解码;默认.root保持旧行为。 - 新增
Network.requestPTModel(..., modelPath:decoder:),不自动猜测data、result或payload,并保留原始响应载荷和元数据。 - 新增
PTNetworkDecodeError.modelPathNotFound与modelPathTypeMismatch,让响应路径错误可定位。 - 增加普通嵌套 Model、可选嵌套 Model、数组、字典和 Stringified JSON 回归测试、Quick Start、Nested JSON 语义文档及确定性 Example Demo。
- 5.60.0 继续保留 5.x 兼容入口;SwiftPM 与 CocoaPods 的宏能力差异保持明确,不修改第三方依赖。
5.59.0 — 2026-10-01
- 完成 5.x Finalization Governance 2.0:current reports 绑定 HEAD,新增 Concurrency Exceptions v2、API/Module/Dependency freeze 清单和 stale-report 门禁。
- 将 DebugNetwork 收敛为 observer-only:不可变
PTNetworkCaptureRecord、actor Store、UUID/单调序列、正文内存/磁盘预算、exactly-once finalize、URLSessionTaskMetrics 和 Timeline。 - 新增请求/响应/正文类型化快照、重定向链、过滤、默认隐私脱敏、cURL/HAR/Text 导出和 PTools Network 只读适配器。
- 移除 DebugNetwork 的
PTThreadOperator、业务缓存策略和通用 unchecked box;旧 UI 模型保留为兼容投影,localhost 压测改名为PTLoopbackThroughputBenchmark。 - 新增 DebugNetwork 能力矩阵、迁移/隐私/架构文档、合约测试与静态门禁;完整真机和真实宿主回归仍需集成方完成。
5.58.0 — 2026-09-29
- 收口 PTModel 65% → 100% 执行路线中的 Foundation-only 契约:字段恢复 provider、诊断轨迹、数值溢出、Date/URL/Data/浮点策略、alias/path/Flat/lossy/Stringified、unknown enum、lifecycle、extras、polymorphic registry 和 typed persistence。
- 新增字节级
PTJSONFieldScanner、稳定 hash dispatch、任意AsyncSequence<Data>分块数组解码和静态 Schema 直接字段写入;未知字段跳过、取消、资源上限和单项错误索引均有回归覆盖。 - 新增
PToolsModelUIKit、PToolsModelCombine适配产品以及 SmartCodable/KakaJSON 显式 Legacy adapter 产品;网络新入口保持 Data-first 的PTNetworkResponse<Model>,旧 API 继续兼容。 - 增加
Scripts/PTModel/validate_65_to_100.sh和执行状态报告;未完成的 Macro 完整继承语义、内部第三方依赖迁移、差分/fuzz/TSan/真机及多平台发布门禁继续保持未发布状态。 - 新增 Foundation-only 的
PToolsModelCore与PToolsModelSwiftPM 产品,以及PooTools/ModelCore、PooTools/ModelCocoaPods subspec。 - 新增
PTJSONValue/PTJSONNumber,保留数字原始字面量,支持顶层标量、数组、对象、重复键策略和输入深度/大小限制。 - 新增统一
PTModelSource、PTModelDecoder、PTModelEncoder、PTPresence和类型化PTModelContext,提供 JSON、Data、Foundation 容器和 Codable 双向转换入口。 - 完成 77.5 Core Hardening:Missing / Null / Value、nil 策略辅助编码、重复键归一化、Bool/NSNumber 区分、Unicode surrogate pair、字符串/集合/对象键/数字位数限制、类型化路径、别名、字段状态、lossy 集合、空对象策略和独立 coding session。
- 补齐可选根值、字典 key strategy、Set 确定性输出、Data/File ByteSink,以及
PTNetworkResponsePayload/PTNetworkResponseDecoder的.ptModel、.smartCodable、.kakaJSON、.codable适配入口;旧 Network API 和第三方依赖保持兼容。 - 提供
Model.pt.model(from:)、Model.pt.models(from:)、model.pt.jsonData()、jsonString()、dictionary()和jsonArray()一行式兼容体验。 - SmartCodable、SmartCodable/Inherit 和 KakaJSON 继续保留在旧 Core 兼容路径,本版本不删除第三方依赖,也不改变现有
PTBaseModel公开 API。 - 补充模型能力矩阵、Codable 互操作约定、迁移指南、回归测试和可复现基准清单。
- 完成剩余 PTModel 主路径:字段缺失/空值/无效值恢复、诊断 Sink、静态 Schema、宏入口、稳定 key hash、Patch/Diff/Clone/Converter、Schema migration、Extras、JSON Schema 导出、Foundation Date/Data/URL codec、bounded streaming decode/encode 和 JSON skip scanner。
- 新增
PTModelBenchmark与Scripts/PTModel/run_benchmarks.sh,输出真实 encode/decode P50/P95、字节数、models/sec 和 bytes/sec;新增依赖审计脚本,旧 Network 模型通过 MainActor legacy decoder 隔离。 - SwiftPM 的
PToolsModel使用独立 SwiftSyntax 宏 target;CocoaPodsModelCore/Model保持 Foundation-only fallback,不把宏实现带入 CocoaPods target。
5.57.4 — 2026-09-29
- 新增
PTSegmentStyle.itemSeparatorStyle,支持关闭、颜色、线宽、上下内边距、leading/trailing 和 allItems/betweenItems 配置。 - 保留
lineView作为 5.x 兼容入口并标记弃用;Cell 只复用一个分隔线 View 和一组约束,避免重用时残留或累积约束。 - 分隔线不参与宽度测量、平均间距、等宽/自适应布局、Indicator、标题缩放和选择动画;补齐首尾、单项、RTL、动态颜色和非法参数保护。
- 增加分隔线回归测试、Segmented Item Separator Demo、使用指南和 JX 迁移说明。
5.57.3 — 2026-09-29
- 修复
PTSegmentedView的宽度测量:Badge、内边距、normal/selected 字体、selectedScale 和实际图片尺寸现在使用同一套测量契约。 - 修复 Badge Label 内边距、Badge Dot 约束复用、动态角标更新和无障碍值,避免 Cell 复用后约束累积或标题被截断。
- 修复 Indicator 坐标:所有 Item/Content frame 统一转换到 viewport,横向滚动时实时更新,离屏选中项也能保持正确位置。
- 修复 Indicator 自身
widthPolicy/placement被上下文默认值覆盖的问题;Segment 标题条滚动不再伪造页面选择或 transition。 - 增加分段/分页测量、Indicator、手动滚动和稳定 ID 回归测试,并补充 5.57.3 Paging、JX 迁移和 YD 订单场景文档与 Demo。
5.57.2 — 2026-09-29
- 为
PTPageContainer增加稳定 ID 驱动的只读已加载页面查询 API:页面、ViewController、批量控制器和当前控制器查询均不会触发懒加载。 - 保持
loadedPages私有,查询结果遵循 descriptor 顺序和现有PTPageCachePolicy,避免业务依赖可变字典。 - 补齐 JX Paging 迁移、分页使用、生命周期和架构文档,并增加分页缓存、无副作用查询和类型安全查询回归测试。
5.57.1 — 2026-09-29
- 修复 ImageEditor 独立使用时首帧编辑图片未按可视区域居中的问题,统一处理滚动视图安全区和缩放后的内容 inset。
- 新增 ImageEditor 普通/选中工具图标配置入口;默认工具图标统一使用白色
alwaysOriginal渲染,调用方可以覆盖任意工具图标。
5.57.0 — 2026-09-29
- 完成 Form 2.0:
PTFormConfiguration、Section/Field 配置、稳定快照、可见性规则、定义诊断和运行时 mutation。 - 修复
PTFormViewController将多 Section 压成单一"form"Section 的问题,改为通过PTFormCollectionAdapter映射多个真实PTSection。 - 补齐 Section header/footer、外观、间距、自动高度、字段布局、类型化 Picker、跨字段校验、取消与 stale-result 防护。
- 键盘导航改为字段 ID 和实际 Section 位置驱动,跳过隐藏、禁用、只读和不可聚焦字段;保留旧公开构造器兼容。
- 增加 Form 2.0 三语指南、迁移说明、稳定 ID/多 Section/可见性/dirty-reset/大表单回归测试和质量门禁。
- 当前 Xcode Simulator 全量构建仍被外部
SmartCodable宏产物阻断,未修改 Pods 源码或第三方依赖。
5.56.2 — 2026-09-28
- 收口 Form:按字段语义拆分 renderer,复用现有 PTools 输入、Picker、Switch、CheckBox、Slider 和 ActionLayoutButton;补齐键盘导航、主题、无障碍、校验反馈和动态主题刷新。
- 新增
PTControlLoadingCoordinator,由PTBaseButton和保持UIControl继承关系的PTActionLayoutButton组合复用异步 loading 状态机。 - 完善 Documents:增加 PooToolsPDF 适配、PDFKit fallback、单/多文档分享、Scene-aware iPad popover 和 security-scoped 生命周期管理。
- 将 Alert、ActionSheet、Banner、Popover、TabBar、Picker、Form 和 Navigation 的语义反馈统一接入
PTFeedbackCenter,避免重复创建本地反馈生成器。 - 修复 SwiftPM iOS 17 / Swift 6 下 ContentState 宿主与状态渲染兼容问题;新增本版本闭环文档和静态治理门禁。
5.56.1 — 2026-09-28
- 建立
Scripts/Docs/audit_docs.py统一盘点文档、模块、脚本、JSON/YAML 数据资产和测试 target。 - 新增 canonical module/script/data/test registry、三语文档索引、模块使用指南和生成报告,来源对齐
Package.swift与PooTools.podspec。 - 增加 ACTIVE / ARCHIVED / GENERATED / DELETED 生命周期规则、术语表、provenance、测试执行分层和 GitHub Governance workflow。
- 版本事实推进到
5.56.1;不复制历史计划,不修改第三方源码,正式 tag 仍需完成完整宿主与真机验收。
5.36.1 — 2026-09-28
- 收口 P0 平台契约:连通性快照增加 IPv4/IPv6 能力、Keychain 复用既有
PTKeyChain、通知位置触发器和统一通知权限入口。 - 补齐 Scene-aware 路由宿主、后台任务宿主配置、内容状态/网络适配器、稳定表单字段渲染、PDF 专用桥接和生产 Provider 合同。
- 增加 Core 语义反馈钩子、AppIntent/Widget/Live Activity 扩展示例、P0/P1/P2 验证脚本、测试和迁移文档。
- 仍需集成方完成真实 BLE、通知/后台生命周期、音频/触觉、Widget/Live Activity、锁屏隐私和扩展宿主回归;未完成前不创建
5.36.1tag。
5.36.0 — 2026-09-28
- 新增可选
PToolsConfiguration、PToolsFeedback、PToolsAudio、PToolsAppIntents、PToolsWidgetCore和PToolsActivities。 - 配置模块提供环境、typed key、provider、feature flag、snapshot、Storage 缓存和 Debug override;不绑定远程配置厂商。
- 触觉和音频模块使用 UIKit/CoreHaptics/AVFoundation 原生能力,统一语义事件、AVAudioSession、录音、播放、中断、路由、电平和波形。
- App Intents、WidgetCore 和 ActivityKit 使用 extension-safe 边界,接入 RouteCore、DeepLink、App Group、reload debounce、push token、stale/relevance 和诊断。
- SwiftPM、CocoaPods、module parity、质量门禁、P2 合约测试、迁移说明和使用示例同步完成;P2 不进入 Core 默认依赖。
5.35.0 — 2026-09-28
- 新增可选
PToolsTheme、PToolsAccessibility和PToolsContentState,统一主题 token、无障碍契约和页面状态渲染。 - 新增
PToolsForm,提供稳定字段 ID、依赖字段、同步/异步校验、取消与提交状态,并提供 UIKit 表单入口。 - 新增通用
PToolsBluetooth、PToolsDocuments、PToolsSimulationCore和PToolsSimulation,不绑定业务协议或宿主 App 单例。 - SwiftPM、CocoaPods、模块 parity、质量扫描和 P1 能力门禁同步更新;现有 Core 和第三方依赖保持兼容。
5.34.0 — 2026-09-28
- 新增 Connectivity、Storage、RouteCore/DeepLink、Notifications、BackgroundTasks 五组平台基础设施。
- 新增类型化并发边界、存储 namespace/迁移、Scene-aware Router 2.0 和通知路由适配。
- SwiftPM、CocoaPods 和质量门禁同步增加 5.34.0 平台模块契约。
5.33.0 — 2026-09-27
- 移除 SwiftPM、CocoaPods、锁文件和 PooTools 生产源码中的 DeviceKit 依赖。
- 新增无第三方依赖的
PToolsDeviceSwiftPM product 与PooTools/Devicesubspec,支持静态设备目录、模拟器识别、未知设备安全回退和动态能力状态。 - 设备目录改为按平台 JSON 维护、校验并生成 Swift,增加重复 identifier、生成物漂移和 DeviceKit 回归引用门禁。
- Core、LocalConsole 和调试设备信息迁移到
PTDevice;保留历史全局入口以兼容 5.x 调用方。 - 增加 DeviceKit 迁移、架构、使用和目录维护文档;不修改第三方依赖版本和 Pods 源码。
5.32.0 — 2026-09-27
- 移除 CocoaPods 第三方
Instructions依赖,新增原生PooToolsInstructionsSwiftPM product 和PooTools/Instructionssubspec。 - 复用 Overlay 的 Scene、Anchor、定位、生命周期和命中测试能力,提供类型化 Tour、Step、目标等待、镂空遮罩、内容卡片、推进策略和持久化。
- 新增 Instructions 使用审计、架构边界、迁移指南和 CI 移除门禁;Guide、WhatsNewsKit、TipsView 保持各自语义边界。
- CocoaPods lock 已同步到 5.32.0;未修改第三方源码和依赖版本。
5.31.2 — 2026-09-27
- 修复 CocoaPods 示例工程与 PooTools Library 共用
PooToolsModule Identity 的问题,恢复由构建目标自动决定 App 模块名。 - 从
PooTools_Example的 Compile Sources 移除PooToolsSource/**,避免示例 App 与 Pods/PooTools 重复编译同一批库源码。 - 移除示例工程硬编码的
SDKROOT = iphoneos、不必要的 Module Verifier 和错误的 Swift Generated Header 配置,保留 arm64 Simulator 架构。 - 为示例工程直接使用的 Alamofire、CryptoSwift、IQKeyboardToolbarManager、SmartCodable、SnapKit 和 SVGAPlayer 增加显式依赖;YCSymbolTracker 改为可选 Debug 能力。
- 为示例工程直接使用的 HandSign 和 MediaPermission 可选 subspec 增加显式依赖,并补齐公开模块边界上的初始化器与属性访问权限。
- 新增源码归属审计、模块身份守卫以及 CocoaPods Simulator/Device 构建脚本。
- CocoaPods workspace 已完成 Simulator/Device Debug/Release 构建;外部 Pods 警告单独记录,不修改第三方源码。
5.31.1 — 2026-09-27
- 对照旧 JXSegmentedView / JXPagingView 真实用法,补齐 PTools 分段分页的动态数据、稳定 ID、页面生命周期、刷新、回顶、手势协作和安全区偏移能力。
- 修复 Indicator 被 Cell 覆盖、反向分页不产生过渡、页面卸载不发送
didUnload、动态更新重置当前页和 Header 子 View 尺寸不更新等问题。 - 修复无 placeholder 的网络图片分段不会显示、Cell 重用累积图片约束、内部协调器覆盖业务回调等问题。
- 收窄分页手势同时识别范围,只允许外层、当前内层和分页 ScrollView 协作,避免列表 Cell 侧滑操作被无关 Pan 手势抢占。
- 增加旧业务迁移教程、5.31.1 API 说明和官方能力差异记录;不恢复第三方依赖。
5.31.0 — 2026-09-27
- 移除
aheze/Popovers的 SwiftPM/CocoaPods 直接依赖;PopoverKit保留为原生PooTools/Popover的兼容别名。 - 在既有 OverlayCore 1.0 基础上增加 Anchor、自动定位、碰撞修正、箭头、点击外部、拖拽、键盘、安全区和无障碍协作能力。
- 新增 UIKit 原生
PTPopover、PTContextMenu和类型化内容/配置/句柄,支持 UIView、UIViewController、菜单、更新、替换、重定位、分组与多弹层。 PTTipsView增加锚点入口并复用统一定位能力;Alert 继续保持自身语义,同时复用共享 modal 层级。- 增加 Popovers 使用审计、Overlay 重复基建审计、迁移、Popover/Tips/ActionSheet 指南和 CI 移除门禁。
- 已完成 Debug 全量 Xcode 构建;Release、宿主多 Scene、键盘、动态字体、RTL、拖拽和真机视觉回归完成后再创建正式 tag。
5.30.0 — 2026-09-27
- 移除 SwiftPM、CocoaPods、锁文件和交付源码中的 JXSegmentedView / JXPagingView 直接依赖。
- 新增
PTSegmentedView、PTSegmentItem、Indicator 引擎、PTPageContainer、PTPagingView和稳定 ID 的分段/页面同步协调器。 - 增加页面懒加载、生命周期、缓存策略、Header/Pinned Header、嵌套滚动、刷新适配、方向解析和导航手势契约。
- 旧 SegmentControl 模型保留为不依赖第三方的弃用兼容适配器;不提供 JX 类型别名,避免继续泄漏第三方 API。
- 新增 Paging 架构、使用、嵌套滚动、手势、生命周期、迁移和使用审计文档,并增加 JX 依赖移除 CI 门禁。
- 完整宿主项目的视觉、真机、多层 Nested Paging、刷新和性能回归仍需由集成方执行;本版本不创建正式 Git tag。
5.29.0 — 2026-09-27
- 新增
PToolsOverlay,统一 Scene 解析、附着式 Host、Overlay Window、穿透命中测试、Scene Registry、层级、转场和生命周期基础能力。 - 新增
PooToolsBanner,原生吸收通知条的标准、增长、浮动、紧凑、队列、优先级、堆叠、去重、溢出、暂停恢复、原地更新、操作按钮、滑动关闭和无障碍能力。 UIViewController.drop保留为兼容入口;新代码使用showBanner与PTBannerCenter,Core 不再依赖 Banner。- 移除 SwiftPM、CocoaPods 和锁文件中的 NotificationBannerSwift;确认 PTools 没有直接使用 MarqueeLabel 后同步移除该依赖。
- 新增 NotificationBanner 使用审计、迁移指南和依赖移除门禁。
5.28.0 — 2026-09-27
- 移除 GCDWebServer 和 GCDWebUploader 的 CocoaPods 运行时依赖,新增
PToolsHTTPServer与PToolsHTTPFilePortal。 - 使用 Network.framework、
NWListener、NWConnection和 Swift 6 actor 建立原生 HTTP/1.1 服务,支持 Keep-Alive、连接上限、空闲超时、优雅停止、Bonjour 和可选 TLS。 - 新增严格增量解析器,支持 Content-Length、chunked body、trailer、临时文件落盘、Range、ETag、Last-Modified、HEAD、路由参数和中间件。
- 新增类型化 JSON、静态文件、SSE、原生 zlib gzip、CORS、Host、Bearer、限流和文件门户入口;所有公开请求/响应模型保持 Sendable 值类型。
PooTools/InputAll改为依赖HTTPFilePortal;旧PooTools/GCDWebServer名称保留为无第三方依赖的兼容别名。- 示例工程的本地文件分享入口已迁移到
PTHTTPFilePortal,并补充安全审计、迁移、测试矩阵和移除门禁。
Unreleased — 5.27.x
当前开发基线为 5.27.0;版本唯一来源为根目录 VERSION,5.26.0 是上一版开发基线。
5.27.0 — 2026-09-26
- 移除 SocketRocket 的 SwiftPM、CocoaPods、锁文件和生产源码依赖,改用 Foundation
URLSessionWebSocketTask原生传输。 - 新增 actor 隔离的 WebSocket 状态机、代际校验、终止事件去重、FIFO 发送缓冲、指数退避抖动、原生 ping/pong、信任校验和连接指标。
- 将
PTSocketManager保留为兼容门面,旧单例、通知、delegate、socketSet、发送和重连入口继续代理到原生客户端。 - 新增 SocketRocket 使用审计、迁移指南、架构说明、测试矩阵和移除门禁;不创建正式 Git tag,等待完整宿主与真机回归。
5.26.0 — 2026-09-26
- 移除 SwiftDate 的 SwiftPM、CocoaPods、锁文件和生产源码依赖,新增 Foundation-only 的
PToolsDate模块。 - 新增
PTDateContext、PTZonedDate、PTDateParser、显式秒/毫秒时间戳、日历计算、DST、区域设置和边界时间 API。 - 迁移 Core 日期、日历、网络调试、HealthKit、MessageKit 和网络测速入口,消除全局可变
jx_formatter并修复时间戳重复时区偏移。 - 新增 SwiftDate 使用审计、迁移指南、日期架构指南、时区/DST 测试矩阵和 5.26.0 依赖移除质量门禁。
5.25.5 — 2026-09-26
PTRichText新增统一 Rich Media Attachment,图片 source 与PTLoadImageFunction.loadImage(source:)对齐,支持 URL、String、UIImage、Data、AVAsset 等兼容来源。- 新增本地/网络视频封面、自定义 poster、自动缩略图、播放图标、时长标记和统一媒体点击回调;播放器生命周期仍由宿主负责。
- 接入
PTVideoThumbnailService,增加媒体加载取消、generation 防串图、占位/失败图片和有界渲染缓存;UILabel 与 UITextView 保持兼容。 - 保留现有 URL 图片 API,旧入口继续作为兼容包装器;新增使用说明、Example 片段和富媒体回归测试。
5.25.4 — 2026-09-26
- 作为 5.25.5 富文本媒体增强的稳定兼容基线,保留既有
PTRichText与 FoundationAttributedStringAPI。
5.25.0 — 2026-09-23
- 移除
lixiang1994/AttributedString的 SwiftPM、CocoaPods、锁文件和生产源码依赖。 - 新增基于 Foundation
AttributedString的PTRichText,提供 UIKitNSAttributedString桥接、安全 Range 校验、样式合并、插值、Markdown、本地化、正则/数据检测匹配和内容替换能力。 - 增加类型化 Action ID/Registry、点击与长按交互、附件描述与异步加载取消、TextKit View Provider、自适应图像字形保留和 10,000 段性能覆盖。
- Base、Button、Search、ScrollBanner、Stepper、PhotoPicker、MediaViewer、MessageKit 和 WhatsNewsKit 迁移到
PTRichText,点击行为改为显式 UI 回调,避免把闭包写入并发值模型。 -
新增 5.25.0 富文本依赖吸收审计和持续集成门禁;保留历史 API 报告中的旧类型记录,避免篡改历史基线。
- 5.24.0 移除 SafeSFSymbols 的 SwiftPM、CocoaPods 和源码导入依赖,新增
PToolsSymbols类型化符号层、标准化目录、别名/回退解析和安全图片构造入口。 -
5.24.0 将静态 SF Symbol 使用迁移到类型化入口;动态服务端名称保留在明确的解析白名单中,并增加目录生成、差异报告、依赖门禁和迁移文档。
- 5.22.0 从 SwiftPM、CocoaPods、
Package.resolved和Podfile.lock移除旧日志第三方依赖,新增实现路径扫描,确保交付源码不再直接依赖旧后端。 - 5.22.1 删除旧文件日志管理器的独立实现和 UI sink 兼容实现;
PTLogFileManager历史符号保留为仅转发PTLogger的适配器,PTNSLog、PTOSLogger入口和 Debug UI 共用统一日志管线。 - 5.22.2 增加依赖策略、迁移指南、5.22 日志门禁和依赖矩阵复核,完成 API、性能、Debug、Core 与 SwiftPM/CocoaPods parity 收口。
5.23.0 — 2026-09-23
- 移除 SwifterSwift 的源码导入、SwiftPM/CocoaPods 直接依赖和锁文件记录;新增 PTools 自有的 Sequence、Array、Dictionary、Optional、URL、RangeReplaceableCollection 与 UIView 兼容入口。
- 统一安全下标、JSON 序列化、查询参数、视图层级和圆角辅助逻辑,避免强制解包、重复实现和不稳定的随机顺序;新增迁移指南、类别规范、依赖审计和持续门禁。
5.22.2 — 2026-09-22
-
完成日志依赖移除、兼容层收口、依赖策略、迁移文档和发布前质量复核;5.23.0 在此正式基线上继续进行 Category 依赖替换。
- 5.21.0 将 PTools 生产 Swift 内部的直接
DDLog*实现迁移到PTLogger;PTNSLog、PTLogEvent和旧 sink 继续作为兼容包装器保留。 - 5.21.1 新增有界
PTMemoryLogDestination、actor 所有的 Ring Buffer 和多订阅流;LocalConsole 与 PTInstruments Logs 复用同一个内存数据源。 - LocalConsole 增加 category、level 和关键字筛选,UI 更新改为批量刷新,不改变旧调试入口。
- 5.21.2 增加日志隐私脱敏 API、Network 请求/响应头脱敏、背压计数、drop policy、后台 worker、文件导出 API 和内存日志性能测试。
- 新增
PToolsLoggingTests对内存容量、重要等级保留、多订阅者、丢弃策略、采样策略、脱敏和性能路径进行验证。
5.21.2 — 2026-09-22
- 完成日志隐私脱敏、Network 请求/响应头脱敏、背压计数、drop policy、后台 worker、文件导出 API 和内存日志性能测试。
- LocalConsole 与 PTInstruments 接入共享有界内存日志目标,旧公开日志入口进入 5.22.x 收口窗口。
5.20.2 — 2026-09-22
- 增加可选
PTFileLogDestination、单消费者异步缓冲、32 KB flush、warning/error/fault 优先 flush、5 MB/24 小时轮转和 7 天/7 文件/30 MB 保留策略。 - 增加日志脱敏兜底和
PToolsLoggingTests,覆盖等级过滤、分类等级、敏感字段、文件写入和轮转保留边界。
5.20.0 — 2026-09-22
- 完成 CocoaLumberjack 使用面审计,记录 DDLog、文件日志、formatter、运行时等级、包装器和公开 API 泄露结果。
- 新增 SwiftPM
PToolsLoggingproduct/target 与 CocoaPodsPooTools/Loggingsubspec,Core 依赖新的日志契约但保留旧日志实现。 - 新增
PTLogLevel、PTLogCategory、PTLogRecord、PTLogConfiguration、PTLogDestination和PTLogger,为后续 OSLog、文件日志和 Debug 接入提供 Swift 6 值类型边界。 - 5.20.x 不删除 CocoaLumberjack、不迁移
PTNSLog调用、不修改第三方依赖;这些变更保留到后续里程碑并由审计报告跟踪。
5.19.5 — 2026-09-22
- 修复
PTDarkModeScheduleMonitor的系统环境通知回调从后台队列进入@MainActor时触发的 dispatch 队列断言;通知入口先桥接到MainActor,再刷新暗色模式状态。 - 修复
PTCollectionView在外部设置contentInset.top/bottom后底部刷新仍保持隐藏的问题;footer 现在按有效可滚动范围重新计算,并继续保持verticalScrollIndicatorInsets仅影响滚动指示器。
5.19.3 — 2026-09-21
-
修复
PTNavBar设置titleView时覆盖标题容器约束的问题;标题容器现在按整条导航栏居中,并根据较宽的按钮组设置明确可用宽度。 -
修复右侧按钮清空时误隐藏左侧按钮的问题,保证
PTMediaLibAlbumListViewController.navTitle在伪导航栏中保持稳定居中。
5.19.2 — 2026-09-21
-
修复 PhotoPicker
PTMediaLibViewController.selectLibButton的 bounds 重算和导航栏.auto标题约束,避免相册标题或下拉图标显示不全。 -
修复
PTMediaLibAlbumListViewController标题视图未居中问题:使用.auto测量模式、单行截断和稳定的内容优先级,避免标题被左右按钮区域拉伸。 -
清理 Swift 6 并发边界:移除 WebKit 销毁阶段的 MainActor 越界、HealthKit 冗余转换、LAContext/UIImage/CGImage 的不安全 detached 捕获,并用锁保护 Debug 触摸快照。
-
新增并发边界文档和 5.19.2 门禁;保留合法的文件 I/O、纯数据解码、Vision/AVFoundation 系统适配 detached 工作,并明确其快照和所有权边界。
- 新增
VERSION单一版本源,校验 CocoaPods、SwiftPM、Podfile.lock、README、CHANGELOG、ROADMAP 和发布元数据,防止版本漂移。 - 新增 CocoaPods / SwiftPM 包矩阵、直接依赖矩阵、5.18.2 Public API baseline 和 13 个领域测试矩阵。
- 新增 API 删除门禁、命名债务登记和编译宏新旧别名;
drop、POOTOOLS_BIOID、POOTOOLS_ZIPARCHIVE、POOTOOLS_MXMETRICMANAGERKIT作为 canonical 入口。 -
补齐 Package、Dependency、Tests、API 和 Documentation 维护入口;第三方依赖版本和 Pods 源码保持不变。
- 新增可复用的
PTSearchViewController<Item>搜索基类,统一 SearchBar、PTCollectionView、状态机、History、Suggestion、Pagination、Refresh、Empty、Error 和生命周期取消。 - 新增
PooToolsSearchSwiftPM product 与PooTools/SearchCocoaPods subspec;旧SearchBar继续独立可选安装,避免无搜索需求的宿主增加容器依赖。 - 搜索请求使用
PTSearchSnapshot和集中PTSearchTaskCoordinator防止旧请求回写新关键词,支持 Local、Remote、Hybrid 和 Custom 四种模式。 - 搜索展示支持 contentTop、navigationBar、navigationBarExpanded 和 custom;导航栏状态通过
PTSearchPresentationContext保存和恢复,iOS 26 使用原生UIGlassEffect,iOS 17–25 使用材质兼容实现。 - 增加 Search SwiftPM/CocoaPods/源码静态契约门禁;不新增 XCTest target,运行时键盘、Dynamic Type、VoiceOver、RTL、Dark Mode 和多 Scene 回归仍需真实宿主验证。
- 新增
PTDebugHookRegistry,统一 Debug Collector 和 Core runtime hook 的安装、卸载与状态快照,避免重复安装或不可逆地散落管理。 - PTInstruments 增加磁盘、线程、启动、ViewController 生命周期、Task 和 Signpost 采样入口;补齐
.pttrace导入、只读回放、轨迹对比和实时快照。 - Session 改用有界环形缓冲,Dashboard 以固定节奏批量刷新;Debug 未启用时不创建采样任务、DisplayLink 或高频 observer。
- LocalConsole 改用当前 UIWindowScene 的屏幕与安全区计算,初始化失败安全返回,不影响业务窗口;保留多 Scene、关闭、拖动、键盘和旋转兼容路径。
- 保留既有公开 API、第三方依赖版本和 Pods 源码不变;真实设备 30–60 分钟录制、性能中位数和多 Scene 宿主回归仍是发布前条件。
5.19.1 — 2026-09-20
- 发布 PhotoPicker 标题和
selectLibButtonbounds 修复基线;后续5.19.2继续处理 Swift 6 并发边界与文档收口。
5.18.2 — 2026-09-20
- 发布 5.18.2 正式兼容基线;5.19.x 在此版本上继续进行 Package、Dependency、Tests、Docs 和 API 治理。
5.18.1 — 2026-09-20
- 增加可复用 Search 容器、搜索状态机、异步 Provider、历史记录、建议、分页、刷新和多种导航栏展示位置。
- 保留 SearchBar 独立入口,并提供 SwiftPM
PooToolsSearch与 CocoaPodsPooTools/Search。
5.18.0 — 2026-09-20
- 完成 Debug / Instruments 的 5.18.0 稳定基线;新增 Hook Registry、环形录制、
.pttrace导入回放和多 Scene LocalConsole 生命周期治理。 - 5.18.x 的 Search 兼容演进继续记录在后续开发版本中。
5.17.0 — 2026-09-20
- 完成 42 个 UI Components / Utility 模块的逐项结账清单,统一记录依赖、生命周期、测试、示例、文档和 6.0 决策。
- SearchBar 增加可取消防抖、异步搜索取消、加载状态、清空入口、语言刷新和辅助功能状态。
- Loading、HUD 和 TipsView 修复多 Scene 窗口选择、重复展示、空颜色配置、定时器、DisplayLink 和离屏动画生命周期问题。
- WebKit 增加旧导航回调隔离、内容进程终止恢复和外部 scheme 安全处理;Picker、Alert、Scene 和 MainActor canonical contract 纳入质量门禁。
- 保留既有公开 API、第三方依赖版本和 Pods 源码不变;真实宿主与真机 UI/键盘/VoiceOver/Stage Manager 回归继续作为后续验证条件。
5.16.0 — 2026-09-20
- 完成 Permission Core 状态统一:新增
PTPermissionAuthorizationState,保留旧状态 API,并统一 callback exactly-once 完成语义。 - 修复 Location、Bluetooth、Photos、Notification 和 Face ID 的细分状态丢失,补充定位精度、临时全精度、通知 critical alert 和密码回退入口。
- 修复 PhotoKit 授权回调边界,通知授权改为异步刷新;权限重复请求、系统回调重复或缺失时不会重复执行 completion。
- 为 IAP、NFC、Motion、HealthKit、MetricKit 和 GPS 增加可幂等停止/失效的生命周期入口,清理 observer、delegate、query、session 和待处理回调。
- 继续支持 iOS 17+ / Swift 6+、CocoaPods、SwiftPM 和 Xcode 入口;对应正式 tag 为
5.16.0。
5.15.0 — 2026-09-20
- 完成 Media 全家桶第一轮收口:MediaCore 增加
PTMediaAsset、PTMediaType、PTMediaMetadata、PTMediaResource和PTMediaSource值类型契约。 - 增加
PTImageDownsampler与PTImageMemoryBudget,图片和视频封面路径按目标像素解码,避免本地大图先完整读入Data。 - 增加带 Memory/Disk、变体和容量维护的
PTMediaCache,视频封面迁移到统一缓存键,区分原图、缩略图、GIF、Live Photo 和视频帧。 - 视频缓存增加并发下载去重、Range 续传、
.part临时文件和原子提交;MediaViewer Cell 与 VideoEditor 增加统一媒体资源失效入口。 - 保留 ImagePicker、PhotoPicker、MediaViewer、ImageEditor、VideoEditor、LivePhoto、PDF、SVG、QRCode 和 SmartScreenshot 的现有公开入口,继续支持 iOS 17+ / Swift 6+。
5.14.0 — 2026-09-20
- Network 增加统一的
PTNetworkRequest、PTNetworkExecutor、类型化响应、请求上下文和错误分类入口。 - 补齐指数退避、抖动、Retry-After、幂等请求保护、缓存过期/ETag/Last-Modified/304、缓存损坏恢复、请求去重和认证刷新合并。
- SocketKit 增加 actor 隔离的
PTWebSocketClient,支持连接状态、发送队列上限、取消、心跳超时、网络恢复和前后台生命周期。 - Security 增加不暴露第三方类型的
PTSecurity,统一 Keychain、CryptoKit 摘要、HMAC、AES-GCM、P-256 签名和验签入口。 - 保留旧 Network、SocketRocket、DataEncrypt、KeyChain 和 SecuritySuite 公开入口,继续支持 iOS 17+ / Swift 6+。
5.13.0 — 2026-09-20
- 完成 UIFoundation、Navigation、Tabbar 和 Collection 的 5.13.x 治理,统一安全区、Scene、Dynamic Type、辅助功能和减弱动态效果边界。
- 修复多层 push/pop、交互式返回、旋转、分屏和台前调度下导航栏与自定义 Tabbar 状态被旧转场覆盖的问题。
- 增加 Tabbar 局部刷新、本地化刷新和布局失效入口,Lottie 加载增加取消与 generation 保护。
- 增加 CollectionView Diffable 快照串行保护、稳定身份校验和 Cell 异步任务复用清理能力。
- 继续保持 iOS 17+ / Swift 6+ 与 5.x 公开 API 兼容。
5.12.1 — 2026-09-20
- 同步 5.12.x Core / Foundation 稳定基线,修复版本元数据和构建入口一致性问题。
5.12.0 — 2026-09-20
- 收口
PToolsCore的 Foundation-only 边界,新增PTLocked、PTAtomic、取消/生命周期/任务存储、MainActor 调度、缓存、日志和基础错误契约。 - 增加
PTResult与PTJSONValue类型化基础能力,避免动态Any进入 Core 并发边界。 - CocoaPods
Core与 SwiftPMptools统一复用PToolsCore,保留旧入口兼容,不迁移 UIKit、媒体和业务实现。 - 增加 Core 依赖方向与第三方边界检查,避免 Foundation-only Core 引入 UIKit、Network、Media、Debug 或第三方实现。
- 继续保持 iOS 17+ / Swift 6+,并保留 5.x 兼容 API。
所有正式版本均以同名 Git tag 为准。没有 tag 的开发阶段不会在这里伪装成正式发布版本;构建、
性能和迁移事实见 report/,当前计划见 ROADMAP.md。
5.11.17 — 2026-09-20
- 发布 5.11.x 最后一个正式兼容基线;5.12.0 的 Core / Foundation 解耦在此版本之上继续演进。
5.11.14 — 2026-09-17
- 发布当前 5.11.x 版本,完成 Base 导航兼容修复和 CocoaPods 版本基线同步。
- 后续架构收口、依赖 parity 和 6.0 迁移验证继续记录在 Unreleased 与
report/。
5.11.11 — 2026-09-14
- 发布当前 5.11.x 正式基线,包含 Debug Foundation、PTInstruments 和长期文档结构治理。
- 5.11.x 后续的架构收口、依赖 parity 和 6.0 迁移验证继续记录在 Unreleased 与
report/。
5.9.9 — 2026-09-12
- 完成进入 Debug Foundation 前的 API、依赖、并发、生命周期、性能和迁移基线。
- 保留 5.x 公开 API 与兼容包装器,不提前删除 deprecated 入口。
5.9.7 — 2026-09-11
- 完善 Core、Network、Media、Permission、Navigation、Debug 的模块安装说明和迁移配方。
- 建立 Example 页面索引与真实宿主迁移边界说明。
5.9.6 — 2026-09-10
- 建立 Swift 6 并发、依赖供应链、质量门禁和 6.0 迁移基线。
- 统一 canonical API 与旧拼写/动态入口的兼容策略。
5.9.0、5.9.2–5.9.5 — 2026-09-09 至 2026-09-10
- 完成 API Freeze、Concurrency、Quality、Lifecycle、Performance 和 UI Quality 系列治理切片。
- 相关扫描结果保留在
report/baselines/5.9/,不把一次性结果混入长期架构文档。
5.8.9 — 2026-09-09
- 建立 Core / UIFoundation / Permission 分层后的稳定基线。
5.7.0–5.7.9 — 2026-09-02 至 2026-09-09
- 增加
PTListViewController,统一类表格和类集合列表入口。 - 完成 Picker 嵌入、Alert 长按钮布局、Core 基类、圆角和多 Scene 导航相关治理。
5.6.0–5.6.10 — 2026-08-29 至 2026-09-01
- 完成 Core source contract、重复入口、Language、ScreenShot、MessageKit、Button、ImagePicker、 PhotoPicker、ImageEditor、ScrollBanner 和 PageControl 等模块治理。
- 增加 String Catalog、媒体请求取消、稳定 Diffable ID 和统一图片/视频处理入口。
5.0.0–5.5.0 — 2026-08-28 至 2026-08-29
- 完成 5.x Core 基础升级、Swift 6 并发边界、Base/Category 统一以及网络、媒体、路由和调试入口治理。
4.x
4.x 的完整逐版本变更由对应 Git tags 保存。5.x 迁移说明见
docs/migration/MIGRATION_6.md。
Published tags
当前已确认的 5.x 正式 tags:
5.0.0 5.0.1 5.1.0 5.1.1 5.2.0 5.3.0 5.4.0 5.5.0
5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 5.6.7 5.6.8 5.6.9 5.6.10
5.7.0 5.7.1 5.7.2 5.7.3 5.7.4 5.7.5 5.7.6 5.7.7 5.7.8 5.7.9
5.8.9 5.9.0 5.9.2 5.9.3 5.9.4 5.9.5 5.9.6 5.9.7 5.9.9
5.11.11 5.11.12 5.11.13 5.11.14 5.11.16 5.11.17 5.12.1 5.13.0 5.14.0 5.15.0 5.16.0 5.17.0 5.18.0 5.18.2 5.19.1 5.19.2
5.9.1、5.9.8、所有 5.10.x、5.11.0、5.11.1 和 5.11.15 当前没有对应 Git tag,
因此不作为已发布版本列出;5.19.3 当前仍是开发基线。