Skip to content

Bundle simplex-chat v7.0.0, adopt ExVer numbering (7.0.0:0) - #12

Merged
MattDHill merged 1 commit into
Start9-Community:masterfrom
lundog:update-simplex
Aug 7, 2026
Merged

Bundle simplex-chat v7.0.0, adopt ExVer numbering (7.0.0:0)#12
MattDHill merged 1 commit into
Start9-Community:masterfrom
lundog:update-simplex

Conversation

@lundog

@lundog lundog commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Bumps the image to lundog/simplex-websocket-bridge:7.0.0 (simplex-chat v6.5.6 → v7.0.0), fixes the one thing the bump broke, and brings the version scheme and version graph in line with the packaging guide.

Relay switching fix

v7.0.0 added a roles field to every entry in the userServers structure. applyProtocol round-trips the structure it reads, so rows it mutates carried the new field through — but rows it constructs for a newly added custom server did not, and the SET failed to parse:

Bot refused server configuration: {"type":"chatCmdError","chatError":{"type":"error",
"errorType":{"type":"commandError","message":"Failed reading: empty"}}}

Constructed rows now include roles: {}, matching what every row the client returns carries; effective roles live on the operator (smpRoles/xftpRoles).

Versioning: 0.3.0:5 → 7.0.0:0

ExVer's upstream component is the upstream project's version, and the packaging guide's consistency checklist requires it to match the image tag. This package had been using 0.x as a wrapper-maturity number while the image said 6.5.x, so the two never agreed.

Renumbering makes the version state which client is bundled, and future wrapper-only changes roll the downstream revision (7.0.0:1, :2). The jump is monotonic, so existing installs still see it as an update, and openclaw-startos's >=0.3.0:0 dependency range is unaffected. The release notes explain the jump so it doesn't read as a different package.

Happy to revert this half if you'd rather keep wrapper-versioning — it's independent of the image bump.

Version graph: other: []

Dropped versions/v0_2_0.ts. Per the guide, a version earns a node only when it has its own migration to run in sequence; v0_2_0's up was empty, so it bought no behavior and cost a file that had to be kept compiling. Empty other also yields the widest canMigrateFrom.

Downgrades

down stays IMPOSSIBLE. simplex-chat migrates its database in place on first 7.0.0 start, and 6.5.6 will not start against a migrated database — verified, not inferred. simplex-chat leaves simplex_v1_*.db.bak snapshots beside the live files, but restoring them discards everything since the upgrade and relies on an upstream convention this package doesn't control, so it stays documented rather than automated. (The guide is also explicit that migrations aren't for data the upstream service migrates itself.)

Docs

  • README: updates are one-way when simplex-chat migrates; back up first; what the .db.bak files are and what restoring them costs.
  • README: a consumer keeps a stale mount after this package is uninstalled and reinstalled — the volume directory is replaced and the consumer's mount stays pinned to the old inode, so file exchange looks silently empty while the bridge writes normally. Restarting the consumer fixes it; a normal update is unaffected. Found while testing, after an uninstall/reinstall cycle left OpenClaw seeing an empty files dir.

Testing

On StartOS 0.4.0, against the 7.0.0 image:

  • Create Invitation — connected a contact using the returned link
  • View Address / Reset Address
  • Configure Client — including a switch to a self-hosted SimpleX Server and back (the path this PR fixes)
  • File exchange — send and receive through OpenClaw
  • tsc --noEmit clean, prettier clean, ncc build succeeds

Bumps the image to lundog/simplex-websocket-bridge:7.0.0 (simplex-chat v6.5.6 ->
v7.0.0), fixes the one thing the bump broke, and brings the version scheme and
version graph in line with the packaging guide.

Relay switching: v7.0.0 added a `roles` field to every entry in the userServers
structure. `applyProtocol` round-trips the structure it reads, so rows it mutates
carried the new field through — but rows it *constructs* for a newly added custom
server did not, and the SET failed to parse ("Failed reading: empty"). Constructed
rows now include `roles: {}`, matching what every row the client returns carries;
effective roles live on the operator (`smpRoles`/`xftpRoles`).

Versioning: 0.3.0:5 -> 7.0.0:0. ExVer's upstream component is the upstream
project's version, and the guide's consistency checklist requires it to match the
image tag — this package had been using 0.x as a wrapper-maturity number while the
image said 6.5.x. Renumbering now makes the version state which client is bundled,
and future wrapper-only changes roll the downstream revision (7.0.0:1, :2). The
jump is monotonic, so existing installs still see it as an update, and openclaw's
`>=0.3.0:0` dependency range is unaffected. The release notes explain the jump so
it doesn't read as a different package.

Version graph: dropped versions/v0_2_0.ts and set `other: []`. A version earns a
node only when it has its own migration to run in sequence; v0_2_0's `up` was
empty, so it bought nothing and cost a file that had to be kept compiling. Empty
`other` also yields the widest canMigrateFrom, and git history of current.ts is
the record of past release notes.

`down` stays IMPOSSIBLE: simplex-chat migrates its database in place on first
7.0.0 start and 6.5.6 will not start against a migrated database (verified). Its
`.db.bak` snapshots make a manual recovery possible but would silently discard
everything since the upgrade, so that stays documented rather than automated.

Docs:
- README: updates are one-way when simplex-chat migrates; back up first; what the
  .db.bak files are and what restoring them costs.
- README: a consumer keeps a stale mount after this package is uninstalled and
  reinstalled (the volume directory is replaced and the old inode stays pinned),
  so consuming services need a restart. A normal update is unaffected.

Verified on StartOS 0.4.0: create invitation, view address,
reset address, configure client including a self-hosted relay switch, and file
exchange send/receive through OpenClaw.
@MattDHill
MattDHill merged commit 64c40b5 into Start9-Community:master Aug 7, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants