Skip to content

Releases: Helio-RC/Seatflow

🚀 SeatFlow v1.3.0 发布!

Choose a tag to compare

@Helio-RC Helio-RC released this 28 Jun 08:00

🚀 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

后续版本计划申请代码签名证书以消除这些警告。

使用方式

  1. 将下载的单个可执行文件放入一个空文件夹
  2. 直接运行即可(程序会在同目录创建 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

Choose a tag to compare

@Helio-RC Helio-RC released this 19 Jun 16:42
3f80222

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 引导系统和拖拽操作

Choose a tag to compare

@Helio-RC Helio-RC released this 19 Jun 15:28
3484713

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.mddocs/ONBOARDING_GUIDE.mddocs/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:外观/行为分组重构,最大快照数可配置
  • VenueConfigurationNewVenue() 取消飞行中的异步加载消除竞态
  • 侧栏宽度:展开 140px / 折叠 64px
  • Config 路由:内置策略 → AppData/StrategyConfig/,插件策略 → Plugins/{pkgId}/{strategyPath}/
  • JsonSerializerOptions 统一JsonOptions 静态池消除重复分配
  • [ObservableProperty] 全面转换:C# 13 partial 属性语法
  • 所有 .axaml 视图添加 x:Name 支持引导系统目标解析

🐛 修复

  • 修复侧栏拖动范围越界
  • 修复引导 Popup 失焦后仍可见的孤立窗口问题
  • 修复引导页面切换时 target 解析失败(先导航后解析 x:Name 顺序修正)
  • 修复策略配置页引导中 ToggleSwitch 未被框中的问题
  • 修复初次启动时配置文件未创建导致引导不显示
  • 修复参数缺失导致的策略配置加载失败
  • 修复快照轮转删除逻辑
  • 修复控件边框渲染不显示的问题
  • 修复无法拖动座位的问题
  • 修复 .resxDesigner.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 管理脚本文档

⬆️ 升级注意事项

  1. 快照不再自动生成:升级后需手动点击「保存为快照」按钮
  2. 插件清单格式变更:必须使用 plugins-manifest.json(包级)+ manifest.json(策略级)双层格式;旧 plugin.manifest.json 单文件格式在 v1.1.0 已移除,不再支持
  3. 插件扩展名变更:推荐使用 .ap-plugin,旧 .apairplugin 仍受支持
  4. Priority 语义变更:数值越大 = 越先执行(与 v1.0 相反),升级后请检查策略优先级配置
  5. 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

后续版本计划申请代码签名证书以消除这些警告。

使用方式

  1. 将下载的单个可执行文件放入一个空文件夹
  2. 直接运行即可(程序会在同目录创建 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 更多内置策略🎉

Choose a tag to compare

@Helio-RC Helio-RC released this 14 Jun 07:14
e0f2bb1

A_Pair v1.1.0 Release

概述

v1.1.0 是一次重大架构升级,重新设计了座位分配策略系统,新增插件多策略包支持,并进行了全面的代码质量提升。共 140 个文件变更,49 个提交。


🏗️ 策略管道重构

双轨制架构

策略系统从单一管道模型升级为独立策略 + 依赖策略双轨制:

  • 独立策略 (ISeatingStrategy) — 在外部管道中按 Priority 降序执行,负责通用填充逻辑
  • 依赖策略 (IDependentSeatingStrategy) — 在 RandomFill 的每次随机分配循环内评估,支持 Approve / Reject / Handled 三态响应

新增 3 个策略

策略 类型 功能
性别限制座位 依赖 座位级性别限制,不匹配时自动重定向到匹配空座
同桌不重复 依赖 基于历史快照防止过去同桌再次相邻
碎片整理 独立 后置处理,将后排无约束学生前移,减小座位分散度

DeskMate 同桌策略重写

从独立策略改为依赖策略,新增三级协调分配

  1. 层级 1 — 相邻空座充足 → 直接分配全部组员
  2. 层级 2 — 空座不足 → 腾挪相邻非固定占座者,释放座位
  3. 层级 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

🔄 升级指南

  1. 如有旧格式插件,需迁移到新的双层清单结构(参见 docs/adr/ADR-007.md
  2. 如自定义策略依赖 Priority 值,需反转:旧 Priority=10(先执行)→ 新 Priority=90(先执行)
  3. 所有 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

后续版本计划申请代码签名证书以消除这些警告。

使用方式

  1. 将下载的单个可执行文件放入一个空文件夹
  2. 直接运行即可(程序会在同目录创建 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🎉

Choose a tag to compare

@Helio-RC Helio-RC released this 07 Jun 16:32

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

后续版本计划申请代码签名证书以消除这些警告。

使用方式

  1. 将下载的单个可执行文件放入一个空文件夹
  2. 直接运行即可(程序会在同目录创建 AppData/ 存放配置和数据)

更新内容

新增

  • 网格、环形、自由点三种教室布局的可视化编辑
  • 固定座位、前排轮换、随机填充三条内置策略管道
  • CSV / Excel / JSON 学生名单导入导出
  • PDF / 图片座位表导出
  • 快照管理与历史回滚
  • 命令模式撤销/重做(拖拽交换座位)
  • 中英文双语界面
  • 页面可导航性管理(可通过 JSON 配置禁用页面)

已知限制

  • 插件管理 UI 尚未完成(功能可用但界面简陋)
  • 同桌策略默认隐藏(算法在复杂布局下不稳定)
  • 程序未签名,首次运行需手动放行