Skip to content

Releases: 100pangci/Noxfold-Sync

Noxfold-Sync v2.1.6.1

Choose a tag to compare

@github-actions github-actions released this 10 Oct 01:47

v2.1.6.1 — Stable release.

Highlights

  • Noxfold-Sync rebrand across the app, store listings, and project materials.
  • Syncthing core v2.1.6 is now bundled.
  • Tablet and large-screen layouts: adaptive content widths, a home navigation rail, side-by-side home/settings lists and detail panes, and a two-pane folder picker. Editor drafts survive window resizing; selection, Back navigation, and pane transitions are more reliable.
  • Group editing: folder/device group suggestions refresh from the live configuration whenever the picker opens.

Sync and data safety

  • SAF bridge reconciliation now combines change hints, incremental scans, and periodic full scans. Verified snapshots and content hashes help prevent stale state or failed operations from deleting or overwriting user data.
  • Bridge copies are staged and verified before replacement; concurrent changes are protected, and failed merge operations remain retryable.
  • Folder creation/removal waits for Syncthing configuration acknowledgement. New-folder ignore rules are applied before syncing starts; marker creation now reports failures and avoids duplicate marker files.
  • Config and ignore-list files are replaced transactionally. Backup import/export validates archives and config before installation; failed imports roll back config, database, and preferences, while failed exports preserve the previous archive.

Responsiveness and size

  • Home folder/device groups lazy-load their rows, reducing work on large lists and avoiding scroll jumps. Routine sync-state updates are isolated from inactive home destinations; event parsing and folder-picker filesystem work are moved off the UI thread.
  • Release APKs use R8/resource shrinking and stripped native symbols: arm64 is about 31 MB → 16 MB; universal is about 65 MB → 50 MB.

Compatibility and internals

  • Minimum Android version is now Android 8.0 (API 26); Android 6 and 7 are no longer supported.
  • REST/model JSON now uses kotlinx.serialization; run-condition events use an in-process Flow bus, and service/event work uses structured coroutines with serialized shutdown handling. Legacy asynchronous query/handler code was removed.

v2.1.6.1 — 正式稳定版。

主要更新

  • 品牌更名为 Noxfold-Sync:应用界面、商店页面和项目资料统一更新。
  • 内置 Syncthing core 升级至 v2.1.6。
  • 平板与大屏适配:内容限宽;主页改用导航栏;主页和设置支持列表/详情并排,文件夹选择器支持双栏。窗口尺寸变化时保留编辑草稿,并改进选中状态、返回导航和面板切换动画。
  • 分组编辑:每次打开文件夹/设备分组选择器时,都会从当前配置刷新建议列表。

同步与数据安全

  • 重做 SAF 桥接协调:结合变更提示、增量扫描和周期性全量扫描;通过已验证快照及必要时的内容哈希,降低陈旧状态或失败操作误删、覆盖用户文件的风险。
  • 桥接复制先暂存、校验再替换;保护并发修改,合并失败的操作会保留以便重试。
  • 新建/删除文件夹前等待 Syncthing 确认配置;新文件夹先应用忽略规则再开始同步;标记文件创建失败会明确提示,并避免重复生成标记文件。
  • config 与忽略列表采用事务式替换。备份导入/导出先校验归档和配置;导入失败回滚配置、数据库和偏好设置,导出失败保留旧备份。

响应速度与安装包

  • 主页文件夹/设备分组按需加载行,减少大列表开销并修复滚动跳动;常规同步状态更新不会让非当前主页页面重复刷新;事件解析和文件夹选择器的文件系统操作移出 UI 线程。
  • Release APK 启用 R8/资源压缩并剥离原生符号:arm64 约从 31 MB 降到 16 MB,universal 约从 65 MB 降到 50 MB。

兼容性与内部改造

  • 最低系统版本提高到 Android 8.0(API 26);不再支持 Android 6 和 7。
  • REST/模型 JSON 改用 kotlinx.serialization;运行条件事件改用进程内 Flow 总线;服务与事件处理改用结构化协程,并串行化关停流程;移除了遗留异步查询/Handler 代码。

Noxfold-Sync v2.1.6.0-rc.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:02

v2.1.6.0-rc.1 — Pre-release for testing; this is not the final stable release.

Highlights

  • Noxfold-Sync rebrand across the app, store listings, and project materials.
  • Syncthing core v2.1.6 is now bundled.
  • Tablet and large-screen layouts: adaptive content widths, a home navigation rail, side-by-side home/settings lists and detail panes, and a two-pane folder picker. Editor drafts survive window resizing; selection, Back navigation, and pane transitions are more reliable.
  • Group editing: folder/device group suggestions refresh from the live configuration whenever the picker opens.

Sync and data safety

  • SAF bridge reconciliation now combines change hints, incremental scans, and periodic full scans. Verified snapshots and content hashes help prevent stale state or failed operations from deleting or overwriting user data.
  • Bridge copies are staged and verified before replacement; concurrent changes are protected, and failed merge operations remain retryable.
  • Folder creation/removal waits for Syncthing configuration acknowledgement. New-folder ignore rules are applied before syncing starts; marker creation now reports failures and avoids duplicate marker files.
  • Config and ignore-list files are replaced transactionally. Backup import/export validates archives and config before installation; failed imports roll back config, database, and preferences, while failed exports preserve the previous archive.

Responsiveness and size

  • Home folder/device groups lazy-load their rows, reducing work on large lists and avoiding scroll jumps. Routine sync-state updates are isolated from inactive home destinations; event parsing and folder-picker filesystem work are moved off the UI thread.
  • Release APKs use R8/resource shrinking and stripped native symbols: arm64 is about 31 MB → 16 MB; universal is about 65 MB → 50 MB.

Compatibility and internals

  • Minimum Android version is now Android 8.0 (API 26); Android 6 and 7 are no longer supported.
  • REST/model JSON now uses kotlinx.serialization; run-condition events use an in-process Flow bus, and service/event work uses structured coroutines with serialized shutdown handling. Legacy asynchronous query/handler code was removed.

v2.1.6.0-rc.1 — 测试预览版,尚非正式稳定版。

主要更新

  • 品牌更名为 Noxfold-Sync:应用界面、商店页面和项目资料统一更新。
  • 内置 Syncthing core 升级至 v2.1.6。
  • 平板与大屏适配:内容限宽;主页改用导航栏;主页和设置支持列表/详情并排,文件夹选择器支持双栏。窗口尺寸变化时保留编辑草稿,并改进选中状态、返回导航和面板切换动画。
  • 分组编辑:每次打开文件夹/设备分组选择器时,都会从当前配置刷新建议列表。

同步与数据安全

  • 重做 SAF 桥接协调:结合变更提示、增量扫描和周期性全量扫描;通过已验证快照及必要时的内容哈希,降低陈旧状态或失败操作误删、覆盖用户文件的风险。
  • 桥接复制先暂存、校验再替换;保护并发修改,合并失败的操作会保留以便重试。
  • 新建/删除文件夹前等待 Syncthing 确认配置;新文件夹先应用忽略规则再开始同步;标记文件创建失败会明确提示,并避免重复生成标记文件。
  • config 与忽略列表采用事务式替换。备份导入/导出先校验归档和配置;导入失败回滚配置、数据库和偏好设置,导出失败保留旧备份。

响应速度与安装包

  • 主页文件夹/设备分组按需加载行,减少大列表开销并修复滚动跳动;常规同步状态更新不会让非当前主页页面重复刷新;事件解析和文件夹选择器的文件系统操作移出 UI 线程。
  • Release APK 启用 R8/资源压缩并剥离原生符号:arm64 约从 31 MB 降到 16 MB,universal 约从 65 MB 降到 50 MB。

兼容性与内部改造

  • 最低系统版本提高到 Android 8.0(API 26);不再支持 Android 6 和 7。
  • REST/模型 JSON 改用 kotlinx.serialization;运行条件事件改用进程内 Flow 总线;服务与事件处理改用结构化协程,并串行化关停流程;移除了遗留异步查询/Handler 代码。

Syncthing-Fork v2.1.5.1

Choose a tag to compare

@github-actions github-actions released this 09 Sep 01:30

v2.1.5.1: folder/device grouping on the home screen, a SAF re-authorization card, plus stability fixes for root mode and the SAF bridge.

New

  • Folder / device grouping: pick or create a group in the folder/device editor (dropdown + "new group"); the home screen shows one large collapsible card per group with the collapse state remembered, ungrouped items pinned on top
  • SAF re-authorization card: folders whose storage access is missing show an amber notice row; tapping re-opens the folder picker and re-authorizes in place (path unchanged) — syncing resumes automatically once granted

Fixes

  • Root mode: storage handed back from a root session is now also relabeled via restorecon — fixes the app/core being unable to read their own config and key files in su environments that leave root-daemon SELinux types behind
  • SAF bridge: stale snapshots can no longer wipe forwarded folders
  • Dialog: anonymous usage-report text now sits in a small scrollable block
  • i18n: complete Slovak plural 'many' forms; declare az/be/ckb/gl in the locale list; escape apostrophes in fr/it group strings; folder/device group, SAF-card and Syncthing Camera strings completed across all locales (zh-CN/zh-TW restored)

Notes

  • Build: the prerequisite tools directory is only created when compiling the Go core from source

Known limitations

  • Root mode: verified on a Magisk / HyperOS device (incl. force-stop recovery); KernelSU untested
  • Implicit broadcasts to AppConfigReceiver are blocked by Android 16 / HyperOS — use explicit broadcasts (see wiki)

v2.1.5.1:主页文件夹/设备分组、SAF 重新授权提示卡片,以及 Root 模式与 SAF 桥的稳定性修复。

新增

  • 文件夹 / 设备分组:编辑页为文件夹/设备选择或新建分组(下拉框 + 加号);主页每个分组一张大卡片,点组头折叠/展开且状态记忆,未分组条目置顶
  • SAF 重新授权提示卡片:存储权限失效的文件夹显示琥珀色提示行,点击直接重开文件夹选择器原位重新授权(路径不变),授权后自动恢复同步

修复

  • Root 模式:root 会话归还存储时顺带 restorecon 还原 SELinux 上下文——修复部分 su 环境(root 守护进程策略留下 SELinux 类型转换)下应用/核心读不了自己配置与密钥文件的问题(已验证强杀后冷启动自愈)
  • SAF 桥:陈旧快照不再误清已转发的文件夹
  • 对话框:匿名使用统计说明文字改为小块可滚动区域
  • i18n:补全斯洛伐克语复数 many 形式;语言列表声明 az/be/ckb/gl;修复 fr/it 分组字符串撇号转义;文件夹/设备分组、SAF 卡片与 Syncthing Camera 字符串全语言补齐(zh-CN/zh-TW 已恢复)

说明

  • 构建:仅在从源码编译 Go 核心时才创建工具目录

已知限制

  • Root 模式:已在 Magisk / HyperOS 设备验证(含强杀恢复场景);KernelSU 未测试
  • Android 16/HyperOS 拦截 AppConfigReceiver 隐式广播,请用显式广播(见 wiki)

Syncthing-Fork v2.1.5.0

Choose a tag to compare

@github-actions github-actions released this 08 Sep 09:18

v2.1.5.0: Syncthing core upgraded from v2.1.3 to the stable v2.1.5 release.

New

  • Syncthing core pinned to stable v2.1.5: bundled core upgraded from v2.1.3 — config format (version 52) and REST API unchanged, no app-side code changes required
  • Core v2.1.4: all outgoing HTTP requests now send a User-Agent header (upstream #10867)
  • Core v2.1.5: build / packaging fixes upstream; no functional changes for the Android app

Notes

  • App UI, SAF bridge and root mode are unchanged since v2.1.3.3

Known limitations

  • Root mode: verified on a single Magisk / HyperOS device; KernelSU untested
  • Implicit broadcasts to AppConfigReceiver are blocked by Android 16 / HyperOS — use explicit broadcasts (see wiki)
  • Dialogs have no predictive-back animation (compose-ui platform gap)

v2.1.5.0:Syncthing 核心由 v2.1.3 升级到稳定版 v2.1.5。

新增

  • Syncthing 核心锁定稳定版 v2.1.5:内置核心由 v2.1.3 升级——配置格式(版本 52)与 REST API 均无变化,无需改动应用代码
  • 核心 v2.1.4:所有外发 HTTP 请求现在都会携带 User-Agent(上游 #10867)
  • 核心 v2.1.5:上游构建 / 打包修复;对 Android 端无功能影响

说明

  • 应用界面、SAF 桥接与 Root 模式自 v2.1.3.3 起无改动

已知限制

  • Root 模式:仅在单台 Magisk/HyperOS 设备验证
  • Android 16/HyperOS 拦截 AppConfigReceiver 隐式广播,请用显式广播(见 wiki)

Syncthing-Fork v2.1.3.3

Choose a tag to compare

@github-actions github-actions released this 07 Sep 06:32

v2.1.3.3: root mode hardening + AMOLED pure-black cards.

New

  • Root mode promoted out of Experimental: moved to the Behavior settings page as a first-class option (with the same confirmation dialog, busy state and auth-failure handling)
  • Add buttons moved to a FAB: add folder / device now lives in the bottom-right FAB (same spot as the folder editor save button), switching with the current tab; status tab shows no FAB; top bar keeps global actions (rescan, settings)
  • AMOLED pure-black theme: cards are now pure black with a faint outline instead of dark-gray blocks; bottom bar pure black with a top hairline to match

Fixed

  • Root mode hardening: shell-quoted write probes, root pre-checks moved off the main thread (cold-start ANR gone), find kills narrowed to this app's sync dirs, zombie waits capped (SIGKILL escalation + give-up), restart race during STARTING retried (up to 30x), env keys validated and quoted
  • Stale root core self-healing after force-stop: loopback TCP connect replaces SELinux-blocked netstat probing, port-owner kill as fallback, automatic restart retry (up to 2x) with a "port busy" notice instead of a cryptic failure
  • Planned shutdowns (e.g. root toggle restarts) no longer misreported as crashes on exit code 137
  • Housekeeping: all remaining researchxxl links (38 languages, Play listings, wiki, workflows) now point at this repo; dead scripts, resources and catalog entries removed

Known limitations

  • Root mode: verified on a single Magisk / HyperOS device; KernelSU untested
  • Implicit broadcasts to AppConfigReceiver are blocked by Android 16 / HyperOS — use explicit broadcasts (see wiki)

新增

  • Root 模式移出"实验性":搬入"行为"设置页成为正式选项(保留确认弹窗、忙碌禁用态与授权失败中止逻辑)
  • 添加按钮移至 FAB:添加文件夹 / 设备改到右下角悬浮按钮(与文件夹编辑保存按钮同位),随当前标签页切换;状态页不显示;顶栏仅保留全局动作(重扫、设置)
  • AMOLED 纯净主题:卡片改为纯黑底 + 淡描边,不再是深灰色块;底栏纯黑 + 顶部细线呼应

修复

  • Root 模式加固:写探测转义、Root 预检移出主线程(冷启动 ANR 消除)、find 击杀收窄到本应用同步目录、僵死等待限时(SIGKILL 升级 + 放弃)、STARTING 态重启竞态重试(上限 30 次)、环境变量 key 校验与转义
  • 强停后残留 Root 核心自愈:回环 TCP 连接探测替代被 SELinux 拦截的 netstat、端口属主击杀兜底、自动重试启动(上限 2 次)并提示"端口被占",不再莫名失败
  • 计划内关停(如 Root 开关切换重启)不再把退出码 137 误报为崩溃
  • 清理:残留 researchxxl 链接(38 种语言、Play 商店描述、wiki、工作流)全部指向本仓库;删除无用脚本、资源与目录项

已知限制

  • Root 模式:仅在单台 Magisk/HyperOS 设备验证
  • Android 16/HyperOS 拦截 AppConfigReceiver 隐式广播,请用显式广播(见 wiki)

Syncthing-Fork v2.1.3.2

Choose a tag to compare

@github-actions github-actions released this 05 Sep 16:27

Syncthing-Fork (Compose Edition) — the full rewrite release.

New

  • Complete UI rewrite: Jetpack Compose + Material 3, single-Activity Navigation 3, folders / devices / status moved to a bottom navigation bar; all legacy View code removed
  • SAF bridge: folders exposed by third-party DocumentsProviders (no real filesystem path, e.g. another app's data root) are bridged into the core and synced like any other folder
  • Root mode (experimental, off by default): run the core as root to sync any directory (e.g. other apps' data); root browse in the built-in folder picker; storage ownership is handed back automatically when root is switched off; su is requested with a confirmation dialog. See the wiki: Run-as-root-on-rooted-devices
  • AMOLED black theme: system / light / dark / AMOLED with instant switching, embedded Web GUI included
  • 38 languages at 100% coverage, key order aligned across all packs

Fixed

  • Deep-link folder acceptance silently degraded to config.xml (web UI desync, duplicate pending folders)
  • Editor drafts lost when covered by sub-pages; editor black screen on fast re-entry
  • Forced kill of the core now reports "crashed (exit code 137)" instead of a fake active state
  • Shutdown ANR: kill + join moved off the main thread
  • Predictive back enabled with tuned transitions; double-back exit guard

Engineering

  • Service layer fully migrated to Kotlin + coroutines / Flow — zero Java in app sources; Dagger removed (manual DI), Volley/guava replaced by OkHttp
  • 183 Robolectric unit tests; CI builds, signs and publishes releases

Known limitations

  • Root mode is experimental: verified on a single Magisk / HyperOS device; KernelSU untested
  • Implicit broadcasts to AppConfigReceiver are blocked by Android 16 / HyperOS — use explicit broadcasts (see wiki)
  • Dialogs have no predictive-back animation (compose-ui platform gap)

新增

  • 界面全面重写:Jetpack Compose + Material 3,单 Activity + Navigation 3,文件夹 / 设备 / 状态迁移到底部导航
  • SAF 桥接:第三方 DocumentsProvider 的虚拟目录(如其他应用数据根)可直接同步
  • Root 模式(实验性,默认关闭):核心以 root 运行可同步任意目录;选择器支持 Root 浏览;关闭时自动交还文件所有权;开启时弹窗确认并请求 su 授权
  • AMOLED 纯黑主题、38 种语言 100% 覆盖

修复

  • 深链接受文件夹静默降级写 config.xml(webui 不同步、重复待确认)
  • 编辑页被覆盖后草稿丢失、快速进出黑屏
  • 核心被强杀现报"已崩溃(退出代码 137)",不再假活跃
  • 关停 ANR 修复;预测性返回开启并调优、双击返回防误退

已知限制

  • Root 模式为实验性:仅在单台 Magisk/HyperOS 设备验证
  • Android 16/HyperOS 拦截 AppConfigReceiver 隐式广播,请用显式广播(见 wiki)

Syncthing-Fork v2.1.3.1

Choose a tag to compare

@github-actions github-actions released this 02 Sep 13:50

⚠️⚠️Note: Please do not accept files twice via the notification bar, as this may cause a crash. This issue will be fixed in the next version.⚠️⚠️

Features

  • enhancement(HomeScreen): move folders / devices / status tabs to an MD3 bottom navigation bar

Other

  • change(applicationId): package renamed to com.github.ywpc05.syncthingfork so it can be installed alongside the original Syncthing-Fork

Syncthing-Fork v2.1.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 08:01

Features

  • enhancement(HomeScreen): move folders / devices / status tabs to an MD3 bottom navigation bar

Other

  • change(applicationId): package renamed to com.github.ywpc05.syncthingfork so it can be installed alongside the original Syncthing-Fork