Thanks for reporting @vilc - will be resolved soon!
This is a path resolution error specific to the portable version, I’ll investigate!
Thank you,
Simon
Thanks for reporting @vilc - will be resolved soon!
This is a path resolution error specific to the portable version, I’ll investigate!
Thank you,
Simon
I can’t figure how to enable backups in the portable Windows edition. I have loaded a single file wiki (opens and saves no problem), I’ve changed the default unassigned backup path to the install folder, and I’ve changed the backup limit from null to 50, the backups are enabled, but I can’t see any backup files being created.
Btw, one interesting advantage of your TDRS over the NW TiddlyDesktop is that it seems to support zoom with ctrl + scroll. Simple thing, but quite annoying when it doesn’t work on the standard TD.
Sync can now be done through a so-called “Relay server”.
The server is located in Frankfurt, Germany, because that’s near to where I live, can however be set up to a server of your choice if latency is an issue. You can get the server code from me if you are interested.
How Sync works has changed a bit:
Now, if you want to collaborate with your aunt from Ohio, you can do so easily! 
And @vilc - your reported issues should be solved, can you check?
Thank you all!
Simon
I’d like to set up a testing wiki in a test Room. If anybody is interested to test collaboration on such a wiki, I’ll send the Room credentials in a pm.
Cheers,
Simon
This sounds incredible - I have two windows machines with me at the moment - a work machine that’s pretty locked down, and a personal one. I’m open to help test things - nearby in Zurich.
Hi @stobot ,
you probably cannot install the app on your work machine, even the portable install will be blocked I guess… but if you want to try it our on your personal one, let’s try!
Wait a little bit - like 10 minutes - for the next build. It comes with an updated collab plugin for Codemirror 6 and fixes backups (I accidentally broke them while refactoring).
Simon
Actually the portable one has always installed for me and it looks like it’s working now, but I’ll wait a bit for 0.5.4 
Testing Windows portable v0.5.5:
0.5.6 should fix the backups, it’s available within a few minutes.
@stobot I send you a pm with the room credentials…
The backups work now on the Windows portable, thanks!
Very nitpicky suggestion, launching the application in Windows always brings the window with this size and shape.
I’m guessing you have a huge monitor. For those working off of small laptops, there’s a lot of white space even though you have to scroll quite a bit to get to the new stuff at the bottom.
Few questions on some of the features mentioned here:
BurningTreeC/tiddlydesktop-rs: A Tauri App for TiddlyWiki5
“External Attachments” and “Native PDF Rendering” are both great features, but they don’t seem to work well together. The Native PDF rendering seems to work if you turn off the “External Attachments” but not otherwise.
Automatic Updates: Does this maybe not work with the portable version? I don’t think I’ve ever seen a toolbar linking to Github as described.
Note that given the rapid development pace especially, that you’d probably benefit from having the version number somewhere visible within the app - especially handy for troubleshooting purposes.
I’ll check, need to test on Windows a little bit more. I’m on Linux where it’s working well, but I want Windows to work the same way.
Automatic Updates … did I describe it like that
? The feature was planned, but it’s more of a button that links to the latest release on GitHub. I’ll check if it’s a Windows and / or portable-version issue.
Thank you @stobot !
A little downtime of the Relay server at the moment. Maintenance work.
There’s an upcoming release building right now that will bring it back working!
0.5.13 on Linux Manjaro
I guess because this is a major upgrade, the existing files and folders were gone. I dragged and dropped my test single file wiki. Everything about the same. Still can’t paste binary image data.
BUT, when I attempted to drag and drop, and then subsequently import, my test nodejs instance, it would not open. In the terminal I see:
[TiddlyDesktop] Linux: Pointer entered window 'main' (mode: Normal)
[TiddlyDesktop] Allocated port 8085 for wiki folder server
[TiddlyDesktop] Spawning wiki folder process: /home/mark/Apps/TiddlyDesktopRS/tiddlydesktop-rs-0.5.13-linux-x86_64/bin/tiddlydesktop-rs --wiki-folder /home/mark/temp/tdrs-test/tdrs-nodejs --port 8085
[TiddlyDesktop] Set TIDDLYWIKI_PLUGIN_PATH=/home/mark/Apps/TiddlyDesktopRS/tiddlydesktop-rs-0.5.13-linux-x86_64/bin/plugins
[TiddlyDesktop] Set TIDDLYWIKI_EDITION_PATH=/home/mark/Apps/TiddlyDesktopRS/tiddlydesktop-rs-0.5.13-linux-x86_64/bin/editions
[TiddlyDesktop] Wiki folder process spawned with PID: 3149804
[TiddlyDesktop] Wiki folder mode: "/home/mark/temp/tdrs-test/tdrs-nodejs", port: 8085
Found system Node.js v20.20.0 in PATH
[TiddlyDesktop] Error: TiddlyWiki not found in resources
[TiddlyDesktop] Wiki folder process 3149804 exited
It’s the same nodejs directory from the last time I ran it. Just to be sure, I ran my last 0.3 version and the folder loads fine.
So it seems like something in this version is breaking nodejs.
Thanks!
Hi @Mark_S
I changed how the “portable” install handles the appdata directory. Now everything is contained in your “install directory” with the downside that, if you delete the folder, you delete the app state (connected wikis, joined rooms…).
I don’t know if it’s wanted to have everything in one place or not.
About the nodeJS instance, it finds your nodeJS installation in your PATH but doesn’t find the tiddlywiki.js in the resources bundled with the app. I’ll fix that.
Glad to hear portable is now truly portable, that’s definitely my preference. Portable should (to me) be able to run off of a usb stick and leave no trace.
There are some files that can be preserved during “update” to a newer “portable” install on Linux (Windows portable install does that automatically through the installer).
The files are basically everything within bin/* except the tiddlydesktop-rs executable itself and the portable marker file.
Or the most practical approach: copy the new executable from the new tar.gz over the old one and leave everything else untouched.
LAN Discovery: Every device broadcasts a small UDP beacon on port 45699 every 2 seconds. The beacon contains the device’s name, ID, WebSocket port, and hashed room codes. When a peer’s beacon matches one of your rooms, a direct WebSocket connection is opened.
Relay: For devices not on the same network, both connect to wss://relay.tiddlydesktop-rs.com:8443 (TLS) and join the same room. The relay server forwards encrypted messages between them — it can’t read any of the content.
On connect: Devices exchange a WikiManifest listing which wikis they have. Then they do a full sync — each side sends its known vector clocks, and the other responds with any tiddlers the peer is missing.
Live edits: When you edit a tiddler, a TiddlerChanged message (JSON + vector clock) is sent to all connected peers immediately.
Attachments: Large files are split into 1MB chunks and sent over a low-priority channel, so tiddler changes always take precedence and never get blocked by a large file transfer. Yes, attachments are synced, too, but only from the “attachments” directory beneath your wiki.html or tiddlywiki.info. Arbitrary filesystem paths cannot be synced.
Deletions: Tracked via tombstones (title + clock + timestamp) that persist for 30 days, preventing deleted tiddlers from being resurrected by a stale peer.
Every tiddler has a vector clock — a map of {device_id: counter} that tracks which device made each change. When a remote change arrives:
$:/TiddlyDesktopRS/Conflicts/{title} so nothing is lostReal-time collaborative editing uses Yjs CRDT updates. Devices signal when they start/stop editing a tiddler, and Yjs updates + awareness states are forwarded to all peers.
All sync traffic (LAN and relay) is encrypted with ChaCha20-Poly1305 (the same AEAD cipher used in WireGuard and TLS 1.3). Key derivation chain:
HKDF-SHA256(salt=room_code, ikm=password) — deterministic, so all room members derive the same key from the shared passwordHKDF-SHA256(salt=group_key, ikm=random_nonce) — unique per connection, so compromising one session doesn’t expose othersRoomAuthInit with a room token (HMAC-SHA256 proof derived from the group key). The server validates it before starting the encrypted session. No valid token = connection rejected.UDP beacons broadcast HMAC-SHA256 hashes of room codes (truncated to 8 bytes), not the codes themselves. A passive LAN observer sees opaque hashes and can’t learn which rooms you’re in.
Wiki windows run as separate OS processes and connect to the main app via TCP on localhost:45678. Each app launch generates a 32-byte random token passed to child processes via environment variable. Processes must present this token to register — unauthenticated messages are silently dropped. Max 100 concurrent connections, 30-second handshake timeout to prevent slow-loris attacks.
Room passwords are encrypted at rest using a device key derived from the machine’s hardware fingerprint (e.g., /etc/machine-id on Linux, MachineGuid on Windows) + a random salt, via HKDF-SHA256. The device key is never stored — it’s re-derived at runtime. Even if someone copies your config files to another machine, the passwords can’t be decrypted.
Attachments include a SHA-256 hash. After all chunks are reassembled, the hash is recomputed and verified. Mismatch = transfer rejected. Path validation rejects absolute paths, external URLs, and directory traversal attempts.
That said, theory sounds good, but it was working on Linux and Android only.
I hope that with the new release it starts working on Windows and macOS, too.
Best wishes to all,
Simon