Skip to content

Releases: dariondong/APRSLocus

v1.5.8

Choose a tag to compare

@github-actions github-actions released this 30 Aug 15:25

[1.5.8] - 2026-08-30

🐛 修复

  • 台站列表「在地图显示」按钮无反应:按钮空 onPressed 抢占了点击手势导致 focusOnMap 不触发,现点击可直接跳转地图并定位该台站
  • Passcode 错误通知的「去设置」跳转无效:原来只切到设置页首页,现直接打开「连接设置」页(passcode 输入所在位置)

✨ 新增

  • 测试用 CI:新增 ci-test 工作流(手动 / push / PR 触发),自动运行 flutter analyze(忽略已知误报)并构建 Windows / Android 产物,不发版、不推送任何远端

🎨 优化

  • 设置页 UI 统一优化:样式一致性、折叠分区收起后更紧凑、恢复开关的点击区域等(来自上游 PR)

v1.5.7

Choose a tag to compare

@dariondong dariondong released this 30 Aug 14:03

APRSLocus v1.5.7

本次更新主要针对设置界面、台站数据处理、应用性能以及项目元数据进行了优化和改进。

✨ 新功能与改进

  • 优化设置页面 UI 一致性和整体视觉体验
  • 新增设置分区卡片,提供图标与说明文字
  • 支持设置分区的动画展开与折叠
  • 统一设置项的显示样式与交互体验
  • 新增并完善相关界面的多语言文本
  • 改进台站数据相关处理逻辑
  • 优化应用长时间运行时的数据处理与性能表现
  • 对部分内部逻辑进行调整和改进

⚡ 性能优化

  • 优化台站数据的处理方式
  • 改进应用长时间运行时可能出现的性能下降问题
  • 优化部分界面更新和数据刷新逻辑

🛠️ 其他改进

  • 添加 BD3QID 的代码贡献
  • 添加许可证标识
  • 完善项目相关元数据
  • 调整部分项目构建与发布配置

🙏 Contributors

感谢以下贡献者参与 APRSLocus 的开发:

  • BD3QID — 代码贡献
  • xaxovo — 设置页面 UI 优化与改进
  • dariondong — 项目维护、功能开发与整合

📦 下载

请根据你的设备选择对应的安装包进行下载和安装。

v1.5.6

Choose a tag to compare

@github-actions github-actions released this 30 Aug 11:12

[1.5.6] - 2026-08-30

🐛 修复

  • 长时间运行后 UI 卡顿(键盘输入/键盘动画明显掉帧):APRS 运行越久、台站越多越卡,且停止收包后卡顿仍然存在。根因是每秒 tick 对全局 AppState 全量 _notify(),导致 IndexedStack 内全部页面每秒重建并反复重算几百个台站数据,地图 Marker 每秒全量重建;收包越多、运行越久,GC 与主线程压力越大

🎨 优化

  • 渲染与数据隔离:地图可见台站列表 / Marker 缓存按台站数据版本隔离——台站没变化时每秒 tick 不再重建任何 Marker;台站位置/状态/符号真正变化时仍即时刷新
  • 秒级刷新解耦:每秒 tick 改为独立通知器,只刷新信标倒计时、收包速率等秒级 UI,不再重建整个页面树
  • 台站页流式加载:台站列表改为只订阅台站数据流(stationsStream),连接/消息/GPS/设置等无关变化不再触发整页重建
  • 页面子树记忆化:主页重建不再连带重建全部 5 个页面,键盘动画期间不再每帧全量重建
  • 台站统计缓存:在线/移动/静止计数按台站版本惰性计算,避免每次重建全量扫描
  • 台站列表 key 抖动修复:移除每 5 秒整行重播入场动画的问题,「X秒前」改为独立秒级刷新
  • 地图标记渲染:矢量 / 高德 JS 地图按台站版本复用 Marker,不再每秒把全部台站 JSON 全量推给 JS

v1.5.5

Choose a tag to compare

@github-actions github-actions released this 30 Aug 04:23

[1.5.5] - 2026-08-30

✨ 新增

  • 界面缩放选项:显示设置可调节界面文字缩放(85%~130%,滑块+预设快捷),实时预览
  • 重新加载界面按钮:缩放等显示调整后可一键重建整个应用,立即生效

🐛 修复

  • Windows 字体发虚:改用系统字体(Segoe UI / 微软雅黑回退),替换未预装的 Roboto
  • 重新加载不生效:改为重建整个 MaterialApp(含导航栈),确保所有页面刷新

v1.5.4

Choose a tag to compare

@github-actions github-actions released this 30 Aug 03:25

[1.5.4] - 2026-08-30

✨ 新增

  • 更完善的英文界面:主页 / 消息 / 站台 / 数据包 / 地图 / 设置 / OOBE 等页面补齐英文翻译,英文环境下所有界面完整显示

🐛 修复

  • 移除更新签名提示:签名已固定,检查更新页不再提示"签名已更换 · 需卸载重装"
  • GitCode 附件上传优化:每个文件独立获取上传地址,加长超时(APK 30 分钟)并自动重试,失败不阻塞构建
  • GitCode tag 同步:tag 构建自动推送 tag 到 GitCode,Release 关联对应 tag
  • 手动同步工作流:新增 GitHub Actions 手动触发同步发行包到 GitCode

v1.5.3

Choose a tag to compare

@github-actions github-actions released this 30 Aug 02:05

[1.5.3] - 2026-08-29

✨ 新增

  • 连接页重构:连接状态并入服务器卡片,Passcode 未验证时醒目标记 + 提示
  • GitHub Actions 签名一致:CI 使用正式 release keystore 签名,与本地一致,覆盖安装不再报签名冲突
  • GitCode Releases 同步:GitHub Actions 构建的发行包自动推送 GitCode 发行版
  • iOS 构建支持:CI 新增 iOS 编译 job(无签名验证编译)

🐛 修复

  • 英文界面地图类型菜单选项消失:分组过滤改用实际值,标题本地化
  • 群聊被邀请显示 0 成员:创建群时自动加入群主与自己
  • 过滤范围保存体验:输入/预设只改输入框,点"保存并应用"统一生效

🎨 优化

  • 状态标签:在线改为 5 分钟超时离线,去除"紧急"标签,保留移动/静止
  • APRSlocus 分类:同款台站划入与 FMO 同等分类层
  • 去掉屏蔽功能:移除群成员屏蔽操作
  • 键盘卡顿:主页/站台列表搜索加防抖,台站多时不卡

v1.5.2

Choose a tag to compare

@github-actions github-actions released this 29 Aug 10:53

[1.5.2] - 2026-08-29

✨ 新增

  • 地图台站聚合:自绘地图与矢量地图均支持,台站较多时按网格聚合成聚合球(显示数量,点击放大展开),显著降低渲染卡顿
  • 聚合开关按钮:地图控制栏新增聚合开关,可随时开启或关闭台站聚合
  • 自身轨迹显示:地图显示我的位置移动轨迹(蓝色轨迹线,最多 200 点)
  • 过滤半径快捷预设:50/100/200/500/1000/2000 km 一键选择,取消最大值限制
  • Passcode 错误提示:服务器返回 unverified 时,主页显示黄色警告横幅"Passcode 未验证 · 去设置"
  • 服务器连接检测优化:解析 # logresp 验证登录;渐进式重连(8→16→32→60s)
  • iOS 构建支持:GitHub Actions 新增 iOS 编译 job(macos-latest,无签名验证编译)

🐛 修复

  • 安装提示降级:versionCode 改为基于版本号单调递增(1.5.2=10502),彻底解决覆盖安装报降级
  • 群聊被邀请显示 0 成员:创建群时未初始化成员,被邀请群成员列表为空;现自动加入群主与自己
  • 更新提示两个 v:tag 解析统一去掉前导 v,不再显示 vv1.4.9
  • 取消呼号规范识别:移除 WIDE/TCPIP 等呼号格式过滤,全部台站正常显示
  • 测试成员补充:关于页新增 BD3QID
  • 聚合开关不生效:自绘地图聚合未受开关控制,现已统一受 _clusterEnabled 控制

🎨 优化

  • 过滤保存统一:经纬度/半径输入与预设只改输入框,点"保存并应用"统一生效(解决上下矛盾)
  • OOBE 精简:移除呼号页底部提示小字

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 29 Aug 10:01

[1.5.1] - 2026-08-29

✨ 新增

  • 地图台站聚合:自绘地图与矢量地图均支持,台站较多时按网格聚合成聚合球(显示数量,点击放大展开),显著降低渲染卡顿
  • 自身轨迹显示:地图显示我的位置移动轨迹(蓝色轨迹线,最多 200 点)
  • 过滤半径快捷预设:50/100/200/500/1000/2000 km 一键选择,取消最大值限制
  • Passcode 错误提示:服务器返回 unverified 时,主页显示黄色警告横幅"Passcode 未验证 · 去设置"
  • 服务器连接检测优化:解析 # logresp 验证登录;渐进式重连(8→16→32→60s)

🐛 修复

  • 群聊被邀请显示 0 成员:创建群时未初始化成员,被邀请群成员列表为空;现自动加入群主与自己
  • 更新提示两个 v:tag 解析统一去掉前导 v,不再显示 vv1.4.9
  • 取消呼号规范识别:移除 WIDE/TCPIP 等呼号格式过滤,全部台站正常显示
  • 测试成员补充:关于页新增 BD3QID

🎨 优化

  • 过滤保存统一:经纬度/半径输入与预设只改输入框,点"保存并应用"统一生效(解决上下矛盾)

v1.4.9

Choose a tag to compare

@github-actions github-actions released this 29 Aug 04:03

"## [1.4.9] - 2026-08-29\n\n> \u26a0\ufe0f \u91cd\u8981\uff1a\u672c\u6b21\u66f4\u6362\u4e86 Android \u7b7e\u540d\uff08\u6b63\u5f0f release keystore\uff09\n>\n> \u7531\u4e8e\u7b7e\u540d\u5bc6\u94a5\u66f4\u6362\uff0c**\u8001\u7248\u672c\u7528\u6237\u65e0\u6cd5\u76f4\u63a5\u8986\u76d6\u5347\u7ea7**\uff0c\u9700\u5148\u5378\u8f7d\u65e7\u7248 APRSlocus \u518d\u5b89\u88c5\u65b0\u7248\uff08\u4f1a\u6e05\u7a7a\u672c\u5730\u6570\u636e\uff09\u3002\n> \u81ea 1.4.9 \u8d77\u7b7e\u540d\u56fa\u5b9a\uff0c\u4ee5\u540e\u53ef\u6b63\u5e38\u8986\u76d6\u5347\u7ea7\u3002\n>\n> \u5907\u4efd\u63d0\u793a\uff1a\u5378\u8f7d\u524d\u5efa\u8bae\u8bb0\u5f55\u6211\u7684\u547c\u53f7 / \u53f0\u7ad9\u5907\u6ce8 / \u81ea\u5b9a\u4e49\u4e3b\u9898\u7b49\u8bbe\u7f6e\u3002\n\n### \u2728 \u65b0\u589e\n- GitHub Actions \u81ea\u52a8\u53d1\u7248\uff1a\u6253 tag \u81ea\u52a8\u6784\u5efa Windows \u5b89\u88c5\u5305 + Android APK\uff0c\u5e76\u53d1\u5e03 GitHub Release\uff08\u5907\u6ce8\u81ea\u52a8\u4ece CHANGELOG \u63d0\u53d6\uff09\n- Android release \u7b7e\u540d\uff1a\u914d\u7f6e keystore \u6b63\u5f0f\u7b7e\u540d\uff0c\u8986\u76d6\u5b89\u88c5\u7b7e\u540d\u4e00\u81f4\n- \u672c\u5730\u4e00\u952e\u6253\u5305\uff1atool/build_all.ps1 \u81ea\u52a8\u540c\u6b65\u7248\u672c + \u6784\u5efa APK/\u5b89\u88c5\u5305 + Inno Setup \u6253\u5305\n- \u66f4\u65b0\u6e20\u9053\u5207\u6362\uff1a\u68c0\u67e5\u66f4\u65b0\u9875\u652f\u6301\u5728 GitCode / GitHub \u4e4b\u95f4\u5207\u6362\u66f4\u65b0\u6e90\n- GitHub \u66f4\u65b0\u652f\u6301\uff1a\u4ece GitHub Releases \u62c9\u53d6\u7248\u672c\u5e76\u4e0b\u8f7d\u5b89\u88c5\u5305\n- GPL-3.0 \u5f00\u6e90\u534f\u8bae\uff1a\u6dfb\u52a0 LICENSE\u3001README \u5fbd\u7ae0\u3001\u5173\u4e8e\u9875\u8bb8\u53ef\u8bc1\u58f0\u660e\n- \u591a\u8bed\u8a00\u652f\u6301\uff1a\u5b8c\u6574\u56fd\u9645\u5316\u6846\u67b6\uff08flutter_localizations\uff09\uff0c\u652f\u6301\u4e2d\u6587/English/\u8ddf\u968f\u7cfb\u7edf\n- \u8bed\u8a00\u9009\u62e9\u5668\uff1a\u663e\u793a\u8bbe\u7f6e \u2192 \u901a\u7528\u65b0\u589e\u8bed\u8a00\u5207\u6362\uff1bOOBE \u5411\u5bfc\u9996\u6b65\u53ef\u9009\u8bed\u8a00\n- \u63a5\u6536\u547c\u53f7\u7b5b\u9009\uff08\u6309\u56fd\u5bb6/\u5730\u533a\uff09\uff1aOOBE \u65b0\u589e\u7b5b\u9009\u6b65\u9aa4\uff08\u9ed8\u8ba4\u4e2d\u56fd\uff09\uff0c\u8bbe\u7f6e\u9875\u53ef\u591a\u9009\u56fd\u5bb6\u6279\u91cf\u63a5\u6536\u53f0\u7ad9\n- \u672c\u5730\u53f0\u7ad9\u8fc7\u6ee4\uff1a\u4e0d\u518d\u4f9d\u8d56 APRS-IS \u670d\u52a1\u5668 b/ \u8fc7\u6ee4\uff0c\u5168\u90e8\u672c\u5730\u6309\u56fd\u5bb6\u524d\u7f00\u8fc7\u6ee4\n- \u300c\u5176\u4ed6\u53f0\u7ad9\u300d\u5f00\u5173\uff1a\u63a5\u6536\u4e2d\u7ee7/\u6c14\u8c61/FMO/APRSlocus \u7b49\u7279\u6b8a\u7c7b\u578b\u53f0\u7ad9\n- \u547c\u53f7\u683c\u5f0f\u6821\u9a8c\uff1a\u8fc7\u6ee4 WIDE/TCPIP/T2 \u8282\u70b9\u7b49\u975e\u53f0\u7ad9\u6807\u8bc6\u4e0e\u4e0d\u89c4\u8303\u547c\u53f7\n- \u91cd\u65b0\u8fd0\u884c\u8bbe\u7f6e\u5411\u5bfc\uff1a\u9ad8\u7ea7\u8bbe\u7f6e \u2192 \u5f00\u53d1\u8005\u6a21\u5f0f\u65b0\u589e\u5165\u53e3\n- \u8f6c\u53d1\u8def\u5f84\u53ef\u89c6\u5316\uff1a\u7ad9\u53f0\u8be6\u60c5\u72ec\u7acb\u533a\u5757\uff0c\u7bad\u5934\u4e32\u8054\u5404\u8df3\u6bb5\uff0c\u4e2d\u7ee7\u53f0\u53ef\u70b9\u51fb\u8df3\u8f6c\n- \u5173\u4e8e\u9875 Hero \u5c01\u9762\uff1alogobg \u80cc\u666f\u5706\u89d2\u5361\u7247 + \u67d4\u548c\u906e\u7f69 + \u4e2d\u592e Logo\n- \u8d5e\u52a9\u4e0e\u9e23\u8c22\u72ec\u7acb\u9875\u9762\uff1aSoftCard \u7b80\u6d01\u98ce\u683c + \u5fae\u4fe1\u8d5e\u8d4f\u7801\u96c6\u6210\n\n### \ud83d\udc1b \u4fee\u590d\n- CI \u6784\u5efa\u5931\u8d25\uff1aGitHub Actions \u4e0a\u963f\u91cc\u4e91 maven \u955c\u50cf\u8fd4\u56de 502\uff1b\u6539\u4e3a CI \u81ea\u52a8\u4f7f\u7528\u5b98\u65b9\u4ed3\u5e93\uff0c\u672c\u5730\u7ee7\u7eed\u7528\u955c\u50cf\u52a0\u901f\n- kotlin \u7248\u672c\u5bf9\u9f50\uff1akotlin \u63d2\u4ef6\u7248\u672c\u5bf9\u9f50\u5230 2.2.21\uff0c\u5339\u914d Flutter \u5de5\u5177\u94fe\n- OOBE \u547c\u53f7\u8f93\u5165\u65e0\u6548\uff1a\u589e\u52a0\u8bed\u8a00\u6b65\u9aa4\u540e switch case \u9519\u4f4d\u5bfc\u81f4\u547c\u53f7\u672a\u6b63\u786e\u6821\u9a8c/\u4fdd\u5b58\uff0c\u5df2\u5bf9\u9f50\u6b65\u9aa4\u7f16\u53f7\u5e76\u589e\u52a0\u547c\u53f7\u683c\u5f0f\u6821\u9a8c\n- \u53f0\u7ad9\u591a\u65f6\u5361\u987f\uff1astationAllowed \u7ebf\u6027\u67e5\u627e O(n\u00b2) \u2192 \u6539\u4e3a\u4f20\u5bf9\u8c61 + \u5339\u914d\u7f13\u5b58 O(n)\uff1btile \u52a8\u753b\u6309\u7a33\u5b9a key \u53ea\u64ad\u4e00\u6b21\uff1b\u901a\u77e5\u8282\u6d41\u63d0\u5347\u81f3 250ms\n- INSTALL_FAILED_UPDATE_INCOMPATIBLE\uff1a\u914d\u7f6e\u6b63\u5f0f release \u7b7e\u540d\u89e3\u51b3\n- \u91cd\u542f\u540e\u76ae\u80a4\u4e0d\u751f\u6548\uff1a_loadPrefs \u5b8c\u6210\u540e\u7acb\u5373\u5e94\u7528\u4fdd\u5b58\u7684\u4e3b\u9898\uff08\u6df1\u8272/\u81ea\u5b9a\u4e49\u8272\uff09\n- \u6df1\u8272\u6a21\u5f0f\u8def\u7531\u8fc7\u6e21\u95ea\u767d\uff1aMaterialApp \u8865\u5168 canvasColor/surface\uff0cSplashPage \u6539\u56fa\u5b9a\u6df1\u8272\u80cc\u666f\n- \u53f0\u7ad9\u5217\u8868\u4e0d\u6309\u7b5b\u9009\u8fc7\u6ee4\uff1a\u5386\u53f2\u7f13\u5b58\u53f0\u7ad9\u4ecd\u663e\u793a\uff0c\u6539\u4e3a\u672c\u5730\u5b9e\u65f6\u8fc7\u6ee4\n- \u7279\u6b8a\u53f0\u7ad9\u88ab\u8bef\u6740/\u65e0\u6cd5\u5f52\u7c7b\u53f0\u7ad9\u8bef\u663e\uff1a\u4e2d\u7ee7/\u6c14\u8c61/FMO \u53f0\u7ad9\u4fdd\u7559\uff0c\u666e\u901a\u5916\u56fd\u53f0\u7ad9\u9690\u85cf\n- \u7a7a\u56fd\u5bb6\u5217\u8868\u8bef\u653e\u884c\u5168\u90e8\u53f0\u7ad9\uff1a\u6539\u4e3a\u7a7a\u5217\u8868\u65f6\u4e0d\u5339\u914d\u4efb\u4f55\u56fd\u5bb6\uff0c\u4e25\u683c\u6309\u52fe\u9009\u663e\u793a\n- T2CS \u7b49\u4e2d\u7ee7\u8282\u70b9\u88ab\u5f53\u4f5c\u53f0\u7ad9\uff1aT2 \u7cfb\u5217/IGate \u786e\u8ba4\u7b26\u4e0d\u518d\u53ef\u70b9\u51fb\n- \u9996\u9875\u4e0a\u62a5\u5012\u8ba1\u65f6\u4e0d\u66f4\u65b0\uff1a\u6bcf\u79d2 tick \u89e6\u53d1\u91cd\u5efa\uff0c\u4e0b\u6b21\u4e0a\u62a5\u79d2\u7ea7\u5b9e\u65f6\u5237\u65b0\n- \u9ed1\u591c\u6a21\u5f0f\u4e0d\u751f\u6548\uff1aC \u989c\u8272\u6539\u4e3a\u8fd0\u884c\u65f6\u53ef\u53d8\uff0c\u6df1\u6d45\u8272\u5207\u6362\u5373\u65f6\u5237\u65b0\n- CI \u6784\u5efa\u5931\u8d25\uff1async_version.py \u5728 GitHub Actions \u4e0a android/local.properties \u4e0d\u5b58\u5728\u65f6\u62a5\u9519\uff0c\u6539\u4e3a\u5b58\u5728\u624d\u66f4\u65b0\n\n### \ud83c\udfa8 \u4f18\u5316\n- \u8f6c\u53d1\u8def\u5f84\u5c55\u793a\uff1a\u72ec\u7acb\u533a\u5757 + \u7bad\u5934\u4e32\u8054\uff0c\u4e2d\u7ee7\u6a59\u8272 chip\u3001\u534f\u8bae\u6807\u8bc6\u7070\u8272\uff0c\u89c6\u89c9\u534f\u8c03\n- \u8fde\u63a5\u8bbe\u7f6e\u91cd\u6784\uff1a\u62c6\u5206\u4e3a\u63a5\u6536\u8303\u56f4\u8fc7\u6ee4 + \u63a5\u6536\u547c\u53f7\u7b5b\u9009\u4e24\u4e2a\u72ec\u7acb\u5361\u7247\n"