Releases: Helio-RC/Seatflow
Release list
🚀 SeatFlow v1.3.0 发布!
🚀 SeatFlow v1.3.0
发布时间:2026年6月28日
🆕 新增
- 📦 .seatsets 应用数据打包:将全部应用数据(设置、会场、名单、快照、策略配置)打包为单个 .seatsets JSON 归档文件
- 分块 SHA256 完整性校验,防篡改检测
- 三种导入途径:设置页按钮 / 双击 .seatsets 文件(OS 文件关联)/ 首次启动自动发现
- 尽力而为策略:单文件失败不中断整体,返回详细计数
- 类别选择对话框(SeatSetsSelectionWindow),支持导出/导入模式
- 📝 日志系统:Serilog 4 + Microsoft.Extensions.Logging,文件 Sink 输出,支持按模块分级覆盖
- 🛡️ 文件关联:Windows 注册 .seatsets 文件类型,命名管道进程间通信实现单实例文件传递
- 📋 策略数据韧性:无效策略/数据集/会场配置自动清理(ConfigCleanupService)
- 🧪 11 个 SeatSetsServiceTests 单元测试
- 📖 文档:docs/LOGGING.md、docs/SEATSETS_FORMAT.md
🔧 改进
- 项目重命名:A_Pair → SeatFlow(命名空间、文件结构、脚本全面同步)
- 导入校验增强:提前扫描时机、管道传递文件信息、修复 seatsets 工作目录错误
- 引导系统修复:退出死锁修复、引导竞态修复、窗口失焦处理、步骤顺序调整
- 人员管理:"仅更新数据集"功能、脏数据检测与拦截覆盖全部页面
- 发布脚本:自包含/依赖框架输出文件标签改为 full / slim
🎨 UI 改进
- 弹窗主题跟随:所有对话框标题栏随 Light/Dark 主题变色
- 禁用全屏按钮:所有窗口隐藏最大化按钮
- 设计令牌迁移:Typography 排版类新增 bodySmallStrong、hero;全项目 120+ 处硬编码替换为排版/间距令牌
🐛 修复
- SeatSetsImportResult.Failed 计数器跳过块时产生负数
- VenueConfigurationViewModel 离开页面后预览数据残留
- OnboardingService.AnimateCardBounce async void 崩溃风险
- Serilog dispose:true 关闭时潜在竞态条件
- 版本检查脚本 seatsets 类型缺少 Model 类映射
- 导入数据后未自动刷新问题
- 教师视角导出列镜像问题
- 编译时 Warning 清理
下载注意事项
版本选择
每个平台提供两种版本,文件名格式为 Seatflow-{类型}-{平台}:
| 后缀 | 类型 | 体积 | 前提 |
|---|---|---|---|
-full- |
自包含(full) | ~150 MB | 无需安装任何运行时,开箱即用 |
-slim- |
依赖运行时(slim) | ~80 MB | 需安装 .NET 10 运行时 |
文件名示例:
Seatflow-v1.3.0-full-win-x64-unsigned.exe= 自包含版 · Windows 64位 · 无需装 .NET
程序未签名
当前版本尚未进行代码签名,运行时可能遇到以下情况:
- Windows:双击后 SmartScreen 弹出 "Windows 保护了你的电脑" 警告。点击「更多信息」→「仍要运行」即可。
- macOS:首次打开时提示 "无法验证开发者"。前往「系统设置 → 隐私与安全性」→ 点击「仍要打开」。
- Linux:下载后需手动赋予执行权限:
chmod +x Seatflow-v1.3.0-full-linux-x64-unsigned && ./Seatflow-v1.3.0-full-linux-x64-unsigned
后续版本计划申请代码签名证书以消除这些警告。
使用方式
- 将下载的单个可执行文件放入一个空文件夹
- 直接运行即可(程序会在同目录创建
AppData/存放配置和数据)
下载后请校验哈希值
| 文件 | SHA256 |
|---|---|
SeatFlow-v1.3.0-full-linux-x64-unsigned |
fe54dfef7058295c1b607e3d451842afbd7c38cc7a498db12375fec0140c788f |
SeatFlow-v1.3.0-full-osx-arm64-unsigned |
df3895e6546a6958da519bc76f5ecb449728bed52194ca9c546e3c7882fb2006 |
SeatFlow-v1.3.0-full-osx-x64-unsigned |
275c235fc37face332c228b5f046e8888810d265978047b7dc7bcde31f0762cd |
SeatFlow-v1.3.0-full-win-x64-unsigned.exe |
eddf082185cc5c7e871e3cafb437b60ed71741fa4dcda50b308b1c2ac740a7de |
SeatFlow-v1.3.0-slim-linux-x64-unsigned |
fe19f99f79ab8abb6f23b97fd1cb3f4531aaf4b220dbd7c2a005c794672230d6 |
SeatFlow-v1.3.0-slim-osx-arm64-unsigned |
801c58f09a30fddcdb0d6d9b3392382eb52b4c7ae6bee436ca76fce537b243ca |
SeatFlow-v1.3.0-slim-osx-x64-unsigned |
98553d4e06ab0f3e38f554e0b55b82e53e6fe72742752279801dfec80a1c8648 |
SeatFlow-v1.3.0-slim-win-x64-unsigned.exe |
b10595597272e693cf51f4fc8a657277d6b104384c5e52a2407c36e183eb12cb |
完整 Changelog:参见 CHANGELOG.md (https://github.com/Helio-RC/Seatflow/blob/main/CHANGELOG.md)
A_Pair v1.2.1 修复BUG
v1.2.1 BUG修复
2026-06-20
添加
- 版本号管理脚本(scripts/version.py):统一管理 App 版本 / 文件格式版本 / 策略清单版本 / 引导配置版本。支持 show、bump-app、sync 等子命令
修复
- 引导示例数据未清除:引导结束后 ClearPageData 仅清除当前活动页 ViewModel,导致 MemberManagement 中 6 名演示学生、VenueConfiguration 中演示会场残留。修复为通过 DI 容器解析所有页面 ViewModel单例(5 个页面)逐一清除
| 文件 | SHA256 |
|---|---|
A_Pair-v1.2.1-framework-dependent-linux-x64-unsigned |
3d8af20ca04e18e1e3e0f8e315e3edc74f3956318b3527a4281e7b2f34fa85c7 |
A_Pair-v1.2.1-framework-dependent-osx-arm64-unsigned |
69ee8ac23fd1415c9c5e52934d051f5b4cf6f925b0d86bb77dc81208e4fec252 |
A_Pair-v1.2.1-framework-dependent-osx-x64-unsigned |
896cc9473b622459ef0daa3ddd98b1330e4e0e8bbd077811fd1a3b9a37ba3b82 |
A_Pair-v1.2.1-framework-dependent-win-x64-unsigned.exe |
3325f1f5a945138e32570f76ad0543ec9500b1c7d39e49f65b43cdc9f3c442b7 |
A_Pair-v1.2.1-self-contained-linux-x64-unsigned |
4ba02abfa7ef6e559b82f4f4b90d7a5a62047cbed23dff0451f0cc3874e6f3cc |
A_Pair-v1.2.1-self-contained-osx-arm64-unsigned |
fd9fcc9d09dc954bca7e52e569a6d31cedada54d467d7e179f61a52ff2016251 |
A_Pair-v1.2.1-self-contained-osx-x64-unsigned |
e11e746a5b9fc47486083a619e06d2d0ae2d615eea27229e5328c2c79ed92536 |
A_Pair-v1.2.1-self-contained-win-x64-unsigned.exe |
377685b947625daa6b24a53de5ea5adf14ebcfbabeda5402e560b51cc761d498 |
A_Pair v1.2.0 引导系统和拖拽操作
A_Pair v1.2.0
发布日期:2026-06-19
🎯 本次更新亮点
- 交互式引导系统 — 19 步首次启动引导 + 页面引导,新用户零门槛上手
- 拖拽换座 — 座位画布上直接拖放交换,全功能撤销/重做
- 教师/学生视角导出 — Excel/CSV/PDF/PNG 导出支持双视角,按讲台方向翻转标签
✨ 新增功能
引导系统
- 19 步启动引导:首次启动时带领用户完成「成员管理 → 会场配置 → 策略配置 → 排座生成 → 快照历史」全工作流
- 页面引导:首次进入 FreeformManagement、PluginManagement 时自动触发,展示该页面关键操作
- 纯 JSON 驱动:所有阶段、步骤、目标控件在
onboarding_config.json(v3.0) 中声明,零 C# 硬编码 - 纯内存示例数据:引导期间自动注入演示数据(不落盘),引导结束后自动清除(ADR-008)
- 窗口状态同步:最小化/Alt+Tab 时自动收起引导弹窗,恢复后定位到当前步骤
- 引导重启:设置页提供「重新开始引导」入口
拖拽换座
- 画布拖放:座位上直接拖拽到另一座位完成交换,拖到垃圾桶移除学生
- 学生列表拖放:从右侧学生列表拖到座位完成分配
- CanvasZoomPan 兼容:拖放期间通过 NaN 哨兵机制自动跳过画布平移,无冲突
RemoveStudentCommand:可撤销的学生移除命令,完整集成 CommandHistory- 详见
A_Pair.Presentation.Avalonia/docs/DragDrop.md
教师/学生视角导出
LayoutPerspective枚举:StudentView(学生视角,默认)和TeacherView(教师视角,镜像)- 四种导出格式(Excel、CSV、PDF、PNG)全部支持视角选择
- 座位位置标签按视角自动翻转(如「前排」↔「后排」)
插件系统(v1.1 重构)
- 多策略插件包架构(ADR-007):双层清单 —
plugins-manifest.json(包级)+manifest.json(策略级) - 热插拔:
RefreshPackageAsync+SetStrategyEnabledAsync即时生效 .ap-plugin打包格式(兼容旧.apairplugin)- 旧单文件格式已不再支持,需迁移为双层清单
数据持久化容错(v1.2.0 新增修复)
- 策略配置数据在会员删除/会场缩小后自动清理无效行
StrategyConfig重启后从磁盘恢复(不再丢失参数)NoRepeatDeskMate历史提取改为单学生级过滤(同对学生移除不再连带丢失历史)- 详见
docs/StrategyDataResilience.md
工具与文档
- i18n 脚本(
scripts/i18n.py):Python 3,.resx三文件同步 CRUD +Designer.cs自动生成。自动备份到Lang/.backup/ - ADR-006 补充(依赖策略三态、能力声明系统)
- ADR-007(多策略插件包架构)
- ADR-008(引导系统纯内存示例数据注入)
docs/DragDrop.md、docs/ONBOARDING_GUIDE.md、docs/StrategyDataResilience.md
🔄 变更
- 快照改为手动保存:
GenerateSeatingAsync()不再自动保存快照,用户通过 UI 手动触发CreateSnapshotAsync - 引导重构:从硬编码 7 步改为 JSON 驱动 19 步启动引导 + 2 个页面引导
- 页面切换动画:CrossFade → Slide(200ms),引导导航跳过动画直接切换
- SeatingArrangement:画布重构支持拖放 + 创建空布局 + 手动快照 + 策略消息面板折叠
- DeskMate 策略重写:从独立策略改为依赖策略,在 RandomFill 分配循环中执行,三级协调分配
- 策略管道模型:从「后可覆盖」改为「按优先级填空」(Priority 降序,先到先得)
- Priority 语义反转:数值越大越先执行(FixedSeat=100 → FrontRowRotation=50 → RandomFill=1 → Defrag=0)
- MainWindow:侧栏整合到
MainShellViewModel,新增窗口激活/失活事件转发 - Settings:外观/行为分组重构,最大快照数可配置
- VenueConfiguration:
NewVenue()取消飞行中的异步加载消除竞态 - 侧栏宽度:展开 140px / 折叠 64px
- Config 路由:内置策略 →
AppData/StrategyConfig/,插件策略 →Plugins/{pkgId}/{strategyPath}/ JsonSerializerOptions统一:JsonOptions静态池消除重复分配[ObservableProperty]全面转换:C# 13 partial 属性语法- 所有
.axaml视图添加x:Name支持引导系统目标解析
🐛 修复
- 修复侧栏拖动范围越界
- 修复引导 Popup 失焦后仍可见的孤立窗口问题
- 修复引导页面切换时 target 解析失败(先导航后解析 x:Name 顺序修正)
- 修复策略配置页引导中 ToggleSwitch 未被框中的问题
- 修复初次启动时配置文件未创建导致引导不显示
- 修复参数缺失导致的策略配置加载失败
- 修复快照轮转删除逻辑
- 修复控件边框渲染不显示的问题
- 修复无法拖动座位的问题
- 修复
.resx与Designer.cs不一致导致的编译问题 - 修复配置读写路径不一致(插件策略路由到
PluginPackageConfigService) CircularHistory.Add无去重导致快照回滚时历史膨胀- DeskMate 腾挪操作污染
RecentSeatHistory - 所有
Dispose()补充GC.SuppressFinalize(this)(8 处) CancellationToken未转发修复(6 处)
📦 依赖
| 运行时 | 版本 |
|---|---|
| .NET SDK | 10.0 |
| Avalonia UI | 12.0.4 |
| CommunityToolkit.Mvvm | 8.4 |
| FluentIcons.Avalonia | 2.1.325 |
📚 文档
| 文档 | 说明 |
|---|---|
docs/ONBOARDING_GUIDE.md |
引导系统设计文档 |
docs/DragDrop.md |
Avalonia 12 拖放实现模式与 CanvasZoomPan 交互 |
docs/StrategyDataResilience.md |
策略数据持久化与容错分析 |
docs/adr/ |
8 篇架构决策记录 (ADR-001 ~ ADR-008) |
scripts/I18N.md |
i18n 管理脚本文档 |
⬆️ 升级注意事项
- 快照不再自动生成:升级后需手动点击「保存为快照」按钮
- 插件清单格式变更:必须使用
plugins-manifest.json(包级)+manifest.json(策略级)双层格式;旧plugin.manifest.json单文件格式在 v1.1.0 已移除,不再支持 - 插件扩展名变更:推荐使用
.ap-plugin,旧.apairplugin仍受支持 - Priority 语义变更:数值越大 = 越先执行(与 v1.0 相反),升级后请检查策略优先级配置
- DeskMate 策略:已从独立策略改为依赖策略,旧配置自动迁移
下载注意事项
版本选择
每个平台提供两种版本,文件名格式为 A_Pair-{类型}-{平台}:
| 后缀 | 类型 | 体积 | 前提 |
|---|---|---|---|
-sc- |
自包含(Self-Contained) | ~160 MB | 无需安装任何运行时,开箱即用 |
-fd- |
依赖运行时(Framework-Dependent) | ~80 MB | 需安装 .NET 10 运行时 |
文件名示例:
A_Pair-v1.1.0-self-contained-win-x64-unsigned.exe= 自包含版 · Windows 64位 · 无需装 .NET
程序未签名
当前版本尚未进行代码签名,运行时可能遇到以下情况:
- Windows:双击后 SmartScreen 弹出 "Windows 保护了你的电脑" 警告。点击「更多信息」→「仍要运行」即可。
- macOS:首次打开时提示 "无法验证开发者"。前往「系统设置 → 隐私与安全性」→ 点击「仍要打开」。
- Linux:下载后需手动赋予执行权限:
chmod +x A_Pair-sc-linux-x64-unsigned && ./A_Pair-sc-linux-x64-unsigned
后续版本计划申请代码签名证书以消除这些警告。
使用方式
- 将下载的单个可执行文件放入一个空文件夹
- 直接运行即可(程序会在同目录创建
AppData/存放配置和数据)
下载后请校验哈希值
| 文件 | SHA256 |
|---|---|
A_Pair-v1.2.0-framework-dependent-linux-x64-unsigned |
8e5ade6b7c52d3eb538db183e13650c0668785252657ad70e43f0be4ca5a2fca |
A_Pair-v1.2.0-framework-dependent-osx-arm64-unsigned |
8f0ac6c163743ed616d147d9f887ba579140b9eabbf7ec903be214d53903fc8f |
A_Pair-v1.2.0-framework-dependent-osx-x64-unsigned |
fa55d3dcf1b9f548bcf6e952bbd6716d000354b6429ab66ac51c3f467f8d4b90 |
A_Pair-v1.2.0-framework-dependent-win-x64-unsigned.exe |
3473b91b39412c17b8bd6abf029e4d9902b6b7386df766fa204304bd46a5a13b |
A_Pair-v1.2.0-self-contained-linux-x64-unsigned |
3986301ab2da41328ceb48d9568c2ad32b1fb0262f0e4478550d807dca1f7ce2 |
A_Pair-v1.2.0-self-contained-osx-arm64-unsigned |
26bb31d515c4724a09765a39b80f0562b2e4c1a7e2219f9af7ab807bea6d07f4 |
A_Pair-v1.2.0-self-contained-osx-x64-unsigned |
a1ebbc7417dfc45e76bf26e243ae48722bed3962cc4702a737c9343cee27b383 |
A_Pair-v1.2.0-self-contained-win-x64-unsigned.exe |
c4dd4ad73d4a4202eacc712abcd97e7f87182cbcd0a2f125c8903e5bd680df03 |
A_Pair v1.1.0 更多内置策略🎉
A_Pair v1.1.0 Release
概述
v1.1.0 是一次重大架构升级,重新设计了座位分配策略系统,新增插件多策略包支持,并进行了全面的代码质量提升。共 140 个文件变更,49 个提交。
🏗️ 策略管道重构
双轨制架构
策略系统从单一管道模型升级为独立策略 + 依赖策略双轨制:
- 独立策略 (
ISeatingStrategy) — 在外部管道中按 Priority 降序执行,负责通用填充逻辑 - 依赖策略 (
IDependentSeatingStrategy) — 在 RandomFill 的每次随机分配循环内评估,支持 Approve / Reject / Handled 三态响应
新增 3 个策略
| 策略 | 类型 | 功能 |
|---|---|---|
| 性别限制座位 | 依赖 | 座位级性别限制,不匹配时自动重定向到匹配空座 |
| 同桌不重复 | 依赖 | 基于历史快照防止过去同桌再次相邻 |
| 碎片整理 | 独立 | 后置处理,将后排无约束学生前移,减小座位分散度 |
DeskMate 同桌策略重写
从独立策略改为依赖策略,新增三级协调分配:
- 层级 1 — 相邻空座充足 → 直接分配全部组员
- 层级 2 — 空座不足 → 腾挪相邻非固定占座者,释放座位
- 层级 3 — 腾挪后仍不足 → 部分分配 + 警告,不再拆散
🔌 插件系统重写
多策略插件包
从单清单架构升级为双层清单:
Plugins/{packageId}/
├── plugins-manifest.json ← 包级清单
├── strategy_a/
│ ├── manifest.json ← 策略元数据
│ └── strategy.dll
├── strategy_b/
│ ├── manifest.json
│ └── strategy.lua
└── data/
└── enables.json ← 运行时启用状态
新功能
- 包级 + 策略级独立启用/禁用
- 热加载/卸载单个包
- 插件配置通过
PluginPackageConfigService读写 - ZIP 安全防护(条目数/压缩比/路径遍历检查)
🧠 历史感知
两个新的历史加载器使策略支持跨会话记忆:
- 前排轮换历史 — 从快照恢复学生的前排座位历史,惩罚权重跨会话生效
- 同桌不重复历史 — 提取过去快照中的同桌对,防止重复相邻
🖥️ UI 增强
- 策略配置页重构:独立/依赖策略分组展示,竖线层级指示器
- 新增加载中遮罩、参数编辑器、代码块编辑器
- 座位安排页新增加策略消息面板(错误/警告可折叠)和修改历史时间线
- 全面采用 C# 13 partial 属性语法
🔧 代码质量(Review 阶段修复)
| 类别 | 数量 | 要点 |
|---|---|---|
| 正确性 | 6 | CircularHistory 去重、配置读写路径统一、TryAssignSeat 历史参数、await 化保存 |
| 安全 | 2 | ZIP 路径遍历防护(PluginManager + SDK) |
| 性能 | 2 | JsonSerializerOptions 静态池(消除 14 处分配)、GetStrategiesAsync 30s 缓存 |
| 分析器 | 40+ | CA1816 / CA1869 / CA2016 / IDE0059 / IDE0060 / IDE0075 / IDE0350 / MVVMTK0042 |
| 测试 | +1 | 新增 ZIP 路径遍历安全测试 |
📊 统计
| 指标 | 数值 |
|---|---|
| 文件变更 | 140 (+8495 / -2455) |
| 提交数 | 49 |
| 新增策略 | 3(Defrag / GenderRestrictedSeat / NoRepeatDeskMate) |
| 重写策略 | 2(DeskMate / RandomFill) |
| 新增 ADR | ADR-007(多策略插件包) |
| 测试总数 | 335 |
| 测试通过率 | 100% |
| 构建警告 | 0 |
⚠️ 破坏性变更
- 插件清单格式从
plugin.manifest.json改为plugins-manifest.json(旧格式不被识别) IPluginSeatingStrategy新增默认接口实现(Category / Version)ISeatingStrategy.Priority语义反转(高=先执行)DeskMateStrategy从独立策略改为依赖策略(不再在管道中独立运行).apairplugin扩展名改为.ap-plugin
🔄 升级指南
- 如有旧格式插件,需迁移到新的双层清单结构(参见
docs/adr/ADR-007.md) - 如自定义策略依赖 Priority 值,需反转:旧
Priority=10(先执行)→ 新Priority=90(先执行) - 所有 JSON 文件版本号已更新,打开后自动迁移
下载注意事项
版本选择
每个平台提供两种版本,文件名格式为 A_Pair-{类型}-{平台}:
| 后缀 | 类型 | 体积 | 前提 |
|---|---|---|---|
-sc- |
自包含(Self-Contained) | ~100 MB | 无需安装任何运行时,开箱即用 |
-fd- |
依赖运行时(Framework-Dependent) | ~20 MB | 需安装 .NET 10 运行时 |
文件名示例:
A_Pair-v1.1.0-self-contained-win-x64-unsigned.exe= 自包含版 · Windows 64位 · 无需装 .NET
程序未签名
当前版本尚未进行代码签名,运行时可能遇到以下情况:
- Windows:双击后 SmartScreen 弹出 "Windows 保护了你的电脑" 警告。点击「更多信息」→「仍要运行」即可。
- macOS:首次打开时提示 "无法验证开发者"。前往「系统设置 → 隐私与安全性」→ 点击「仍要打开」。
- Linux:下载后需手动赋予执行权限:
chmod +x A_Pair-sc-linux-x64-unsigned && ./A_Pair-sc-linux-x64-unsigned
后续版本计划申请代码签名证书以消除这些警告。
使用方式
- 将下载的单个可执行文件放入一个空文件夹
- 直接运行即可(程序会在同目录创建
AppData/存放配置和数据)
下载后请校验哈希值
| 文件 | SHA256 |
|---|---|
A_Pair-v1.1.0-framework-dependent-linux-x64-unsigned |
c4f710b52f346231274cbff0f3f52d854dd8232a9c672d6e7e6ee908012c4ad6 |
A_Pair-v1.1.0-framework-dependent-osx-arm64-unsigned |
76af34ec5b75f158fd202cd4032498d74b59459333385669d7b7cb5546585cbd |
A_Pair-v1.1.0-framework-dependent-osx-x64-unsigned |
b4273c78378249c82c45479fb5771fc89baf4f3bcaab31630083f0ef61cb2473 |
A_Pair-v1.1.0-framework-dependent-win-x64-unsigned.exe |
8fd8b3616f0247dfae061c027cf7ba2721f13d8eb8aac6af2758f9fd2ea697a2 |
A_Pair-v1.1.0-self-contained-linux-x64-unsigned |
8c856fa53a605ba3d8facca39b1de8d0aa6f8d76a4e32b904c49879834f337b8 |
A_Pair-v1.1.0-self-contained-osx-arm64-unsigned |
d8a3b937a0a80085b24bb6d24a167b938ab228ad3ca2a5b781189d68e99a4405 |
A_Pair-v1.1.0-self-contained-osx-x64-unsigned |
8f5cc8a9621aa5af3fd1832ffab4f138ed088e372f52cad107f13d0737eab2e7 |
A_Pair-v1.1.0-self-contained-win-x64-unsigned.exe |
1afc8d2f529c144ee50b1a7e15bdf6b625a9ee7b9eab0fecacd3e65e0f839eec |
v1.0.0 A_Pair🎉
A_Pair v1.0.0
跨平台桌面座位安排与轮换系统的首个正式版本。
下载说明
每个平台提供两种版本,文件名格式为 A_Pair-{类型}-{平台}:
| 后缀 | 类型 | 体积 | 前提 |
|---|---|---|---|
-sc- |
自包含(Self-Contained) | ~100 MB | 无需安装任何运行时,开箱即用 |
-fd- |
依赖运行时(Framework-Dependent) | ~20 MB | 需安装 .NET 10 运行时 |
文件名示例:
A_Pair-sc-win-x64-unsigned.exe= 自包含版 · Windows 64位 · 无需装 .NET
| 文件 | 适用系统 |
|---|---|
A_Pair-*-win-x64-unsigned.exe |
Windows 10+ 64 位 |
A_Pair-*-linux-x64-unsigned |
Linux x64(Ubuntu 22.04+ / Debian 12+ 等) |
A_Pair-*-osx-x64-unsigned |
macOS Intel(x86_64) |
A_Pair-*-osx-arm64-unsigned |
macOS Apple Silicon(M1/M2/M3/M4) |
SHA256 校验
下载后请核对文件哈希值,确保文件未被篡改或损坏。
| 文件 | SHA256 |
|---|---|
A_Pair-fd-linux-x64-unsigned |
92fe493129f3fc77ab6996c9539a494aa4ff43beb6ffabf13e1bb722c4ae7f14 |
A_Pair-fd-osx-arm64-unsigned |
90a7e91459d7d4b506bd5d475201c54b8b791c92131a616b0a6f9c7a9bc84756 |
A_Pair-fd-osx-x64-unsigned |
d2193615f0fbdd757c12118ab5fc84fc714b5e1c3912f9ba3a6256a1d036740d |
A_Pair-fd-win-x64-unsigned.exe |
46ae3c23f6b515ce787f789d8c009fe85985d2211eedbf5ab8c2e25f1aba1941 |
A_Pair-sc-linux-x64-unsigned |
655063a3e4e039e16b23615ff4a12c1f43ed3449cb5cfa3458af1c529a745d42 |
A_Pair-sc-osx-arm64-unsigned |
5875077231668175fe9092915d0e3abc45c9aae17b006e5466a7c7ee18009001 |
A_Pair-sc-osx-x64-unsigned |
10eb062f68e6cf67cf13629f61ad85583281bdf050837462c12563573673e6a8 |
A_Pair-sc-win-x64-unsigned.exe |
6468dabd84362bb15baaace44afff00cce1c54ea05e6054a8dec045372848187 |
⚠️ 务必校对:若哈希值不匹配,请勿运行,重新下载后再次核对。
重要提示
程序未签名
当前版本尚未进行代码签名,运行时可能遇到以下情况:
- Windows:双击后 SmartScreen 弹出 "Windows 保护了你的电脑" 警告。点击「更多信息」→「仍要运行」即可。
- macOS:首次打开时提示 "无法验证开发者"。前往「系统设置 → 隐私与安全性」→ 点击「仍要打开」。
- Linux:下载后需手动赋予执行权限:
chmod +x A_Pair-sc-linux-x64-unsigned && ./A_Pair-sc-linux-x64-unsigned
后续版本计划申请代码签名证书以消除这些警告。
使用方式
- 将下载的单个可执行文件放入一个空文件夹
- 直接运行即可(程序会在同目录创建
AppData/存放配置和数据)
更新内容
新增
- 网格、环形、自由点三种教室布局的可视化编辑
- 固定座位、前排轮换、随机填充三条内置策略管道
- CSV / Excel / JSON 学生名单导入导出
- PDF / 图片座位表导出
- 快照管理与历史回滚
- 命令模式撤销/重做(拖拽交换座位)
- 中英文双语界面
- 页面可导航性管理(可通过 JSON 配置禁用页面)
已知限制
- 插件管理 UI 尚未完成(功能可用但界面简陋)
- 同桌策略默认隐藏(算法在复杂布局下不稳定)
- 程序未签名,首次运行需手动放行