Skip to content

Releases: cubsync/CubSync

CubSync 0.3.2

CubSync 0.3.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Oct 09:51
5c95884

中文说明

CubSync 0.3.2 把手机端做到和设计稿同一个结构,并让两端的功能图标不再依赖字体。

下载(同一个版本,任取其一)

  • CubSync-0.3.2.msi — Windows 安装包
  • CubSync-v0.3.2-windows-x64.zip — Windows 绿色包,解压即用
  • CubSync-v0.3.2-debug.apk — 安卓,侧载安装

这一版变好了什么

  • 图标:两端的导航、返回、星标、刷新、抽屉等全部换成矢量图形。之前用的是 ☰、⋮、★ 这类字符,碰上没有这些字形的字体就渲染成方块——移动端的底部导航就这样整排消失过。
  • 手机 · 连接:运行模式收成一张可折叠的卡(卡头直接写当前档,默认收起);传输通道改成按网卡多选,列出的是这台机器真实的网卡和地址;下面就是「启动服务端并等待远端连接」和「浏览文件(双栏)」;再往下是账户与连接状态、最近传输。填地址连接与共享目录放进右上角的 ⋮。
  • 手机 · 同步:配置列表带选中高亮;配置详情里方向、比较、冲突、删除各是一行「选一个」,文件夹对可就地改;「比较并预览差异」直接进预览。
  • 手机 · 差异预览:顶部一排气囊(对数 / 冲突 / 新增 / 更新 / 删除),下面按文件夹对分组,最后是「执行同步」。
  • 手机 · 正在同步:大字百分比、按文件夹对逐条进度与状态、断点续传说明、暂停与取消并保留续传信息。
  • 手机 · 作业:作业与日志两段在同一页,右侧显示进行中数量;点任一条进独立详情屏。
  • 手机 · 设置:外观在前(主题 / 当前生效 / 强调色),浏览与传输九项在后,和设计稿同序。
  • 抽屉:用产品自己的标志做头图。
  • 提示条 4 秒后自动消失,不再一直挡着内容。

注意

  • 安卓是 debug 包,未签名,仅供试用。
  • 协议未加密、未鉴权:只在可信局域网里共享,不要开公网端口。
  • USB-ADB 与多链路仍是如实的占位档位:协议支持多链路,界面先标出来,传输本身仍走局域网。

English

CubSync 0.3.2 brings the phone up to the same structure as the design, and stops both
interfaces depending on a font for their icons.

Downloads (same version, take any)

  • CubSync-0.3.2.msi — installs on Windows
  • CubSync-v0.3.2-windows-x64.zip — Windows, unpack and run
  • CubSync-v0.3.2-debug.apk — Android, sideload

What is better in this one

  • Icons: navigation, back, star, refresh and the drawer are all vector shapes now.
    They used to be characters — ☰, ⋮, ★ — and a font without one of those glyphs drew
    a box. That is how the phone's whole bottom bar once disappeared.
  • Phone · Connect: the run mode folds into a card whose heading says which mode is
    active; the channels are per-card switches over this machine's real interfaces and
    addresses; then the one button that starts sharing, then the accounts, then what was
    transferred recently. Dialling an address and choosing shared folders live behind ⋮.
  • Phone · Sync: the list marks the selected configuration; the configuration's
    direction, comparison, conflict and delete rules are each a row that opens a list; the
    folder pairs edit in place; "compare and preview" goes straight to the diff.
  • Phone · Differences: a row of counts across the top, one group per folder pair, and
    the button that runs it.
  • Phone · Running: a large percentage, per-pair progress and state, the resume note,
    and pause / cancel-and-keep-resume-information.
  • Phone · Jobs: jobs and the log are two halves of one screen, with the number in
    flight on the right; any entry opens its own detail screen.
  • Phone · Settings: appearance first (theme, what is in effect, accent), then the nine
    browsing and transfer preferences, in the design's order.
  • Drawer: the product's own mark heads it.
  • A notice leaves on its own after four seconds instead of sitting over the content.

Notes

  • The Android build is a debug APK, unsigned, for trying out.
  • The protocol is unencrypted and unauthenticated. Share on a trusted network only.
  • USB-ADB and multi-link are honest placeholders: the protocol supports multiple links, the
    interface says so, and transfers still go over the local network.

CubSync 0.3.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 08:09
7f09050

中文说明

CubSync 0.3.1 把两端界面做到和设计稿一致:字段、档位、说法逐项对齐,两端的文件是同一份。

下载(同一个版本,任取其一)

  • CubSync-0.3.1.msi — Windows 安装包
  • CubSync-v0.3.1-windows-x64.zip — Windows 绿色包,解压即用
  • CubSync-v0.3.1-debug.apk — 安卓,侧载安装

这一版变好了什么

  • 传输页:显示方式、行密度、列数、分栏方向、条目缩放都能调;每栏有自己的排序与作用范围;栏头就是地址,点空白即可改。
  • 同步页:先预览差异再运行;配置详情独立成层。
  • 作业:点开任一条,能看到结果、十三项明细、已传输与已跳过的文件级列表,以及那一次运行的日志。
  • 设置:九项浏览与传输偏好加外观,和设计稿一致。
  • 连接:运行模式、传输通道、账户状态、最近传输,一屏看完。
  • 安卓图标改成白底、标志缩小,和其它应用一个重量。

注意

  • 安卓是 debug 包,未签名,仅供试用。
  • 协议未加密、未鉴权:只在可信局域网里共享,不要开公网端口。
  • USB-ADB 与多链路仍是如实的占位档位:协议支持多链路,界面先标出来。

English

CubSync 0.3.1 brings both interfaces up to the design document: the same fields, the same
step counts, the same words, written once.

Downloads (same version, take any)

  • CubSync-0.3.1.msi — installs on Windows
  • CubSync-v0.3.1-windows-x64.zip — Windows, unpack and run
  • CubSync-v0.3.1-debug.apk — Android, sideload

What is better in this one

  • Transfer: display mode, row density, column count, pane direction and item scale are
    all adjustable; each pane has its own sort and scope; the header is the address, and
    tapping the blank part of it edits it.
  • Sync: preview the differences before running; a configuration opens as its own layer.
  • Jobs: open any run and see its result, thirteen detail rows, the file-level lists of
    what was transferred and skipped, and that run's own log.
  • Settings: the nine browsing and transfer preferences plus the appearance, as designed.
  • Connect: run mode, channels, account state and recent transfers in one screen.
  • The Android icon is white-grounded with a smaller mark, so it weighs the same as its
    neighbours on a home screen.

Notes

  • The Android build is a debug APK, unsigned, for trying out.
  • The protocol is unencrypted and unauthenticated. Share on a trusted network only.
  • USB-ADB and multi-link are honest placeholders: the protocol supports multiple links, the
    interface says so, and transfers still go over the local network.

CubSync 0.3.0

Choose a tag to compare

@huxc573 huxc573 released this 16 Oct 04:03

中文说明

CubSync 0.3.0 是第一个有界面的版本:桌面和安卓都能用。

下载(同一个版本,任取其一)

  • CubSync-0.3.0.msi — Windows 安装包
  • CubSync-v0.3.0-windows-x64.zip — Windows 绿色包,解压即用
  • CubSync-v0.3.0-debug.apk — 安卓,侧载安装

能做什么

  • 传输 —— 两边各一个文件夹栏,选好要送过去的东西,按中间那支箭头。
  • 同步 —— 建立文件夹对和策略,先试运行看差异;断点续传;镜像删除进回收站,不是直接销毁。
  • 作业与日志 —— 每次运行做了什么、跳过了什么、为什么失败。
  • 两端同构 —— 桌面六个入口,手机五个(日志并入作业),说法一致。
  • 局域网直连,不需要账号,不经过任何服务器。

修掉

  • 安卓启动图标显示成一块蓝,看不到标志。
  • 安卓上保存配置会崩溃,写入也可能失败。
  • 双向同步的删除行为与界面上的说法相反。

注意

  • 安卓是 debug 包,未签名,仅供试用。
  • 协议未加密、未鉴权:只在可信局域网里共享,不要开公网端口。

English

CubSync 0.3.0 is the first release with an interface: desktop and Android.

Downloads (same version, take any)

  • CubSync-0.3.0.msi — installs on Windows
  • CubSync-v0.3.0-windows-x64.zip — Windows, unpack and run
  • CubSync-v0.3.0-debug.apk — Android, sideload

What it does

  • Transfer — a folder pane on each side. Select what to send, press the arrow between them.
  • Sync — folder pairs and a policy, a dry run to see the differences first, resume,
    and mirrored deletions that go to a trash folder instead of being destroyed.
  • Jobs and logs — what each run did, what it skipped, and why something failed.
  • The same on both ends — six entries on the desktop, five on the phone, the log
    folded into the job it came from. The same words in both.
  • Direct over the local network. No account, nothing in between.

Fixed

  • The Android launcher icon showed a block of colour instead of the mark.
  • Android: saving a configuration crashed, and writing a file could fail.
  • Two-way sync described its deletion behaviour backwards.

Notes

  • The Android build is a debug APK, unsigned, for trying out.
  • The protocol is unencrypted and unauthenticated. Share on a trusted network only —
    do not expose the port to the internet.

CubSync 0.2.0

Choose a tag to compare

@huxc573 huxc573 released this 15 Oct 19:08
a1832e9

中文

CubSync 0.2.0 让同步变成一件可以保存、可以重复的事。

能做什么

  • 保存的配置:cubsync config new | list | show | add-pair | export | import,以及 cubsync run <配置>。一个文件夹对的两侧各自独立命名,所以一次运行可以同时覆盖本机的一个目录和两台远端设备。
  • 逐对的后端解析:这是多设备配置能表达出来的原因;指向同一台设备的两个文件夹对共用一条会话。
  • 导入不会覆盖:导入一个 id 已被占用的配置时,它会以新的 id 存下来并明确告诉你,而不是悄悄替换掉现有的那个。

变更

  • 命令行输出只用 ASCII:在非 UTF-8 的控制台里,一个破折号比一个长破折号糟得多。

升级
0.1.0 的配置可以继续用;磁盘格式没有变。


CubSync 0.2.0

Configurations, and a command that runs them.

cubsync config new --name "photos and docs" --direction two-way
cubsync config add-pair <id> --left local --left-root ~/photos \
                             --right nas.local:43817 --right-root /srv/photos
cubsync config add-pair <id> --left local --left-root ~/docs \
                             --right phone.local:43817 --right-root /sdcard/Docs \
                             --filter '*.tmp' --name documents
cubsync config show <id>
cubsync run <id>

Added

  • Saved configurations — config new | list | show | add-pair | export | import
    and run. A configuration is a policy plus a list of folder pairs, and each pair
    names its own two machines, so one run can cover a local folder, one peer and
    another peer at once.
  • A backend per endpoint — the engine resolves every endpoint through a
    resolver instead of holding one fixed pair of backends, which is what makes a
    multi-peer configuration expressible. Two pairs pointing at the same peer share
    one session.

Fixed

  • Importing a configuration whose id was already in use silently replaced the
    existing one. It now saves under a new id and says so.
  • CLI output is plain ASCII. An em dash rendered as mojibake in a console with a
    non-UTF-8 code page is worse than a hyphen.

Verified

A configuration created through the CLI, then run against a real peer process:

engine time 6840 ms for 1 GiB     MD5 MATCH
deletion recycled into .cub_trash
second run: 0 copied, 0 B, 0 deleted
export → import keeps the pairs and their order

211 tests.

Known limitations

  • No GUI, and no Android or desktop build; only the JVM target exists.
  • SyncDirection.CUSTOM is not implemented.
  • No scheduling, so nothing runs unattended yet.
  • One data connection per session; multi-channel aggregation is not implemented.
  • The protocol is unencrypted and unauthenticated. Trusted networks only.

CubSync 0.1.0

Choose a tag to compare

@huxc573 huxc573 released this 15 Oct 18:51
016dcd9

中文

CubSync 0.1.0 是第一个能跑通的最小切片:自己的局域网协议、同步引擎、两个后端,以及一个命令行。

能做什么

  • 自有协议:24 字节帧走两条 TCP,命令与文件数据分开,大文件传输不会卡住元数据;能力位协商,对端不认识的命令按名字回应而不是让流错位。
  • 同步引擎:双向 / 镜像 / 仅更新;按时间+大小、按内容哈希或只看大小比较;过滤器支持逐对覆盖;快照区分「被删除」与「新文件」;冲突策略可选;一对失败不影响其它对。
  • 断点续传:写入先落到目标旁的 .cubtmp,中断后从已确认的位置继续。提交顺序是数据 → 原子改名 → 时间戳。
  • 删除可恢复:默认策略把文件移进它所属根目录下的 .cub_trash,而不是直接 unlink。
  • 后端 SPI:引擎只认接口,从不认协议。今天是本地文件系统与局域网;WebDAV、SMB、SFTP、FTP 是「加一个」而不是「改一处」。

实测,不是说说
两个 JVM 进程走真实协议在回环上传输 1 GiB:MD5 一致、约 150 MiB/s(含校验)、无暂存残留、二次运行 0 个操作、0 字节。

193 项测试覆盖协议编解码与畸形输入、过滤器语法、比较与计划矩阵、分块乱序、配置编解码、两个后端对真实 socket 与真实文件,以及引擎驱动一个与本地后端不共享任何代码的内存后端。

已知限制

  • 没有界面,也没有安卓或桌面构建。
  • SyncDirection.CUSTOM 未实现;规划阶段直接拒绝,而不是猜。
  • 没有定时,还不能无人值守运行。
  • 一个会话一条数据连接;多链路聚合未实现。
  • 协议未加密、未鉴权:在鉴权设计出来之前,只适用于可信网络。不要把 serve 的端口开到公网上。

升级
没有可升级的来源,这是第一个版本。


CubSync 0.1.0

The first working slice: the protocol the project owns, the synchronisation engine,
two backends and a command line interface.

Nothing here is stable yet — the wire format and the engine's public API can still
change between minor versions. See docs/VERSIONING.md for what that means in
practice.

What works

cubsync serve --root /srv/photos --port 43817 --name nas
cubsync ls nas.local:43817
cubsync push --to nas.local:43817 --remote /srv/photos --from ./photos \
             --direction mirror-to --compare hash --parallel 4
  • Its own LAN protocol — 24-byte frames over two TCP connections, commands on
    one and file payloads on the other, so a large transfer cannot stall the
    metadata. Capability bits are negotiated; a command a peer does not implement is
    answered by name instead of desynchronising the stream.
  • A synchronisation engine — two-way, mirror and update-only directions,
    timestamp/size, content-hash or size-only comparison, filters with per-pair
    overrides, per-pair snapshots so a deletion is told apart from a new file,
    conflict policies, and a failure in one pair does not stop the others.
  • Resume — a write stages into a deterministic .cubtmp file next to the
    target, and the next attempt continues from where it stopped. The commit order is
    data, then atomic rename, then timestamp.
  • Recoverable deletions — the default policy moves a file into .cub_trash
    inside the root it came from rather than unlinking it.
  • A backend SPI — the engine talks to an interface, never to a protocol. Local
    filesystem and LAN today; WebDAV, SMB, SFTP and FTP are additions rather than
    changes.

Measured, not claimed

One gibibyte between two JVM processes over the real protocol, on loopback:

sender   md5=b6fe82679bf3e9ab2127afd0efb5039e
receiver md5=b6fe82679bf3e9ab2127afd0efb5039e
MD5 MATCH
engine time 6819 ms       (~150 MiB/s including the verification pass)
staging leftovers 0
second run: 0 copied, 0 B, 0 deleted

193 tests cover the protocol codec and its malformed inputs, the filter dialect,
the comparison and planning matrices, chunk reordering, configuration codecs, both
backends against real sockets and real files, and the engine driving an in-memory
backend that shares no code with the local one.

Known limitations

  • No GUI, and no Android or desktop build. The engine is platform-neutral and the
    modules are laid out for it, but only the JVM target exists.
  • SyncDirection.CUSTOM is not implemented; planning refuses it rather than
    guessing.
  • No scheduling, so nothing runs unattended yet.
  • One data connection per session: parallel transfers share one TCP stream, and
    multi-channel aggregation is not implemented.
  • The protocol is unencrypted and unauthenticated. It is intended for a trusted
    network until authentication is designed. Do not expose a serve port to the
    internet.

Upgrading

Nothing to upgrade from. This is the first release.