Skip to content

v0.3.3

Choose a tag to compare

@github-actions github-actions released this 30 Apr 23:28
· 59 commits to main since this release

🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布

All native binaries (dufs) are compiled from source — F-Droid compatible.

平台支持 / Platforms

Platform Files Status
Android arm64 .apk ✅ 已签名,端到端测试通过(MI 6 / Android 8.0)
Windows x64 .zip (portable) + .exe (installer)
Linux x64 .AppImage + .deb + .tar.gz ✅ 已通过 AppImage 端到端测试
Linux ARM64 .AppImage + .deb + .tar.gz
macOS ARM64 .zip (app bundle) ⚠️ 仅编译测试,未签名、未实机测试
iOS arm64 .zip (app bundle, no codesign) ⚠️ 仅编译测试,未签名、未实机测试

🍎 macOS 未签名:解压后执行 xattr -cr inout.app 去除隔离属性。

更新内容 / Changes

中文:

  • 🐛 修复 Android < 15 设备点击启动后立即报"服务启动失败:dufs did not start listening on port 5000"——NDK r28 默认 16KB 页对齐让旧设备 dynamic linker bind() 异常 + 服务主线程上 Socket.connect()NetworkOnMainThreadException 静默吞掉,两个 bug 叠加把已经在 listen 的 dufs 误报为启动失败
  • 🐛 修复 AppImage 升级后偶发使用旧版本 libdufs 的提取冲突(提取路径加 mtime+pid 唯一化)
  • ✨ 端口冲突自动恢复:5000 被占时先尝试接管同 user 的残留 dufs/inout 进程;接管不了则自动切到 5001+,UI SnackBar 提示
  • ✨ Auth 凭据从 SharedPreferences 迁移到平台 keychain(flutter_secure_storage)
  • ✨ 传输日志条目支持点击复制完整路径
  • 🏗️ 新增 Docker 化本地构建支持(Linux x64 + Android arm64),与 CI 行为对齐
  • 🏗️ CI 加入 libdufs.so 4KB 页对齐 hard guard、Gradle cache、独立 flutter analyze job
  • 🏗️ Flutter 升级到 3.41.5;编译器升级到 NDK r28,但强制 4KB 页对齐保留对 Android 7.0+ 的全部兼容

English:

  • 🐛 Fixed Android < 15 devices reporting "service failed to start: dufs did not start listening on port 5000" right after tapping Start. Two stacked bugs: NDK r28 changed default LOAD-segment alignment to 16KB which the dynamic linker on older Android mishandles, and the new socket-connect probe silently swallowed NetworkOnMainThreadException because it ran on the foreground service's main thread — leaving an actually-listening dufs reported as failed
  • 🐛 Fixed AppImage upgrade occasionally reusing a stale extracted libdufs binary (extraction path now embeds mtime+pid)
  • ✨ Auto port-conflict recovery: when :5000 is busy, app first tries to reclaim a leftover dufs/inout process owned by the same user; otherwise bumps to :5001+ and surfaces a SnackBar notice
  • ✨ Auth credentials moved from SharedPreferences to the platform keychain (flutter_secure_storage)
  • ✨ Tap a transfer-log entry to copy its full path to the clipboard
  • 🏗️ Added Dockerized local builds for Linux x64 and Android arm64 mirroring CI behavior
  • 🏗️ CI gained a hard libdufs.so 4KB page-alignment guard, Gradle cache, and a standalone flutter analyze job
  • 🏗️ Flutter bumped to 3.41.5; toolchain bumped to NDK r28 but forced back to 4KB page alignment so support down to Android 7.0+ is preserved

Full Changelog: v0.3.2...v0.3.3