Releases: zocs/FileInfra
Release list
v0.5.0
项目自本版起由 DufsHub 更名为 FileInfra,应用名、包名与全平台安装产物同步更新。
⚠️ 升级必读:applicationId 由cc.merr.dufshub变更为cc.merr.fileinfra,老版本无法覆盖升级——各平台请先卸载旧版(Windows 在控制面板卸载旧 DufsHub)再安装本版。- 权限预设「允许上传」现默认附带文件夹下载,相关开关与帮助文案同步更新。
- dufs 核心升至 v0.46.0-fix2:归档下载引擎换用 async-deflate-zip v0.2.0,并纳入若干上游修复。
Starting with this release, DufsHub becomes FileInfra — app name, package ids, and installers renamed across all platforms.
⚠️ Before upgrading: the applicationId changed (cc.merr.dufshub→cc.merr.fileinfra); in-place upgrades do not work — uninstall the old app first on every platform.- The "Allow upload" preset now includes folder download; related toggles and help copy updated.
- dufs core bumped to v0.46.0-fix2 (async-deflate-zip v0.2.0 archive engine plus upstream fixes).
完整技术明细见 CHANGELOG · Full details in the CHANGELOG.
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android arm64 | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| iOS arm64 | .zip (app bundle, no codesign) |
🍎 macOS 未签名:解压后执行
xattr -cr FileInfra.app去除隔离属性。
Full Changelog: v0.4.4...v0.5.0
v0.4.4
中文:
- 🐛 桌面端:修复关闭窗口(点右上角 X、Alt+F4 或托盘「退出」)后要等约 30 秒才真正关闭的问题,现在瞬间关闭。
English:
- 🐛 Desktop: fixed the app hanging ~30s before actually closing after you click the window's X (or Alt+F4, or tray Quit) — it now closes instantly.
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android arm64 | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| iOS arm64 | .zip (app bundle, no codesign) |
🍎 macOS 未签名:解压后执行
xattr -cr DufsHub.app去除隔离属性。
Full Changelog: v0.4.3...v0.4.4
v0.4.3
中文:
- ⚡ 大幅减少传输过程中的界面卡顿:活动日志改为批量刷新,二维码不再随统计数字变化反复重绘。
- ⚡ 桌面端:停止服务不再卡住界面(服务在后台收尾)。
- 🐛 桌面端:修复高负载下下载可能被提前截断/重置的问题(Windows 上尤为明显)。
- 🐛 修改权限前的「重启服务」确认框,现在只在最近 15 秒内有传输活动时弹出。
- ⬆️ 内核 dufs 升级到 v0.46.0:带来上游多项修复与改进(认证逻辑修正、HTTP Range 修复、符号链接安全加固、HEAD 请求提速、可自定义 404 页面等)。
English:
- ⚡ Much smoother UI during transfers: activity-log updates are now batched, and the QR code no longer re-renders on every stats tick.
- ⚡ Desktop: stopping the server no longer freezes the UI (shutdown finishes in the background).
- 🐛 Desktop: fixed downloads possibly being cut short / reset under heavy load (most visible on Windows).
- 🐛 The "restart server" confirmation before permission changes now only appears if there was transfer activity in the last 15 seconds.
- ⬆️ Upgraded the dufs core to v0.46.0: brings many upstream fixes and improvements (auth-logic fixes, HTTP Range fix, symlink hardening, faster HEAD requests, customizable 404 page, and more).
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android arm64 | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| iOS arm64 | .zip (app bundle, no codesign) |
🍎 macOS 未签名:解压后执行
xattr -cr DufsHub.app去除隔离属性。
Full Changelog: v0.4.2...v0.4.3
v0.4.2
中文:
- 🔒 增强账号密码安全:修复密码在特定情况下可能被记录到系统日志,并限制了会导致登录认证出错的特殊字符。
- 🐛 提升运行稳定性,避免个别请求出错导致应用 / 服务整体崩溃。
- 🐛 Android 通知栏文案现在跟随应用内的语言设置。
- 🐛 桌面端:通过系统方式(如 Alt+F4)关闭窗口时,现在也会遵循「关闭行为」设置。
- 🐛 桌面端:修复每次启动残留临时文件的问题。
English:
- 🔒 Hardened account/password security: fixed the password possibly being written to system logs, and restricted special characters that could break login.
- 🐛 Improved stability so a single failing request no longer crashes the whole app / server.
- 🐛 The Android notification text now follows the in-app language setting.
- 🐛 Desktop: closing the window via the system (e.g. Alt+F4) now also respects your "close action" setting.
- 🐛 Desktop: fixed leftover temporary files accumulating on each launch.
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android arm64 | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| iOS arm64 | .zip (app bundle, no codesign) |
🍎 macOS 未签名:解压后执行
xattr -cr DufsHub.app去除隔离属性。
Full Changelog: v0.4.1...v0.4.2
v0.4.1
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android arm64 | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| iOS arm64 | .zip (app bundle, no codesign) |
🍎 macOS 未签名:解压后执行
xattr -cr DufsHub.app去除隔离属性。
Full Changelog: v0.4.0...v0.4.1
v0.4.0
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android arm64 | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| iOS arm64 | .zip (app bundle, no codesign) |
🍎 macOS 未签名:解压后执行
xattr -cr DufsHub.app去除隔离属性。
Full Changelog: v0.3.4...v0.4.0
v0.3.4
🤖 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 |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| 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 端 dufs 启动日志把
--auth user:pass@/:rw直接打到 logcat(任何 adb client 或同 user 应用都能读取用户密码) - 🐛 修复应用内"关于"页版本号显示与
pubspec.yaml不一致——改为 runtime 从package_info_plus读,发版不再需要手动同步lib/app.dart::appVersion - 🐛 修复 secure_storage 凭据迁移逻辑:之前每次 load 都会用 SharedPreferences 里的 legacy auth 覆写 secure_storage 里更新过的凭据(用户改密码后下次启动密码被改回去)
- 🐛 修复端口冲突自动 +1 后,用户配置的原始端口被持久化覆盖:现在用户偏好端口和实际运行端口分开记录,下次启动仍尝试原端口
- 🐛 修复 Android 启动服务的 race:之前 Dart 端固定等 500ms 就查询服务状态,但 Kotlin 的 socket probe 最多需要 5s 才完成,导致服务实际跑起来但 UI 报"启动失败"。现改为最多轮询 6s
- ✨ 切换语言立即生效,无需重启 app(之前必须重启才能看到 UI 文案变化)
- 🏗️ NSIS Windows 安装包改为从 CI 命令行注入版本号(
/DAPP_VERSION=...),下次发版不会再因为忘改 .nsi 内的硬编码版本号而上传失败
English:
- 🔒 Fixed Android dufs startup log writing the
--auth user:pass@/:rwargument verbatim to logcat (any adb client or same-uid app could read user credentials) - 🐛 Fixed in-app About page version drifting from
pubspec.yaml— now read at runtime frompackage_info_plus, so releases no longer require manual sync oflib/app.dart::appVersion - 🐛 Fixed secure_storage credential migration: previous load() would re-write the legacy SharedPreferences auth into secure_storage every run, overwriting any newer credential the user had set (effectively reverting password changes on next launch)
- 🐛 Fixed port-conflict auto-bump persisting the bumped port over the user's preferred port: user preference and actual-runtime port are now tracked separately
- 🐛 Fixed an Android start race: Dart used to wait a fixed 500ms before checking service status, but the Kotlin socket probe takes up to 5s — UI would falsely report "start failed" while the service actually came up. Now polls up to 6s
- ✨ Language switch in Settings now takes effect immediately (previously required app restart)
- 🏗️ NSIS Windows installer now reads APP_VERSION from the CI command line (
/DAPP_VERSION=...) instead of a hardcoded.nsiconstant — no more silent missing setup.exe when the .nsi version isn't manually bumped
Full Changelog: v0.3.3...v0.3.4
v0.3.3
🤖 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 analyzejob - 🏗️ 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
NetworkOnMainThreadExceptionbecause 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 analyzejob - 🏗️ 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
v0.3.2
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
🍎 macOS 未签名:
xattr -cr inout.app
Full Changelog: v0.3.1...v0.3.2
v0.3.1
🤖 Automated build & release by GitHub Actions | 此版本由 GitHub Actions 自动化构建并发布
All native binaries (dufs) are compiled from source — F-Droid compatible.
| Platform | Files | Status |
|---|---|---|
| Android | .apk |
✅ |
| Windows x64 | .zip (portable) + .exe (installer) |
✅ |
| macOS ARM64 | .zip (app bundle) |
|
| Linux x64 | .AppImage + .deb + .tar.gz |
✅ |
| Linux ARM64 | .AppImage + .deb + .tar.gz |
✅ |
🍎 macOS 未签名:
xattr -cr inout.app
Full Changelog: v0.3.0...v0.3.1