TiddlyDesktopRS - a new TiddlyWiki Desktop (RS) experience - Alpha / Beta

nodejs version 18.19.1

“Linux Mint traditionally does not support Wayland, as it primarily uses the X11 display server. However, recent updates have improved Wayland compatibility, particularly in the latest version, Linux Mint 22.1, which includes enhancements for better support.” - I think X11 still default, wayland not yet.

If the selected folder is not empty (For a newcomer it’s natural to try and start where all the other wikis live) it fails with "Failed to initialize wiki folder: TiddlyWiki init failed:

e[1;31mError: Wiki folder is not emptye[0m"

If the folder is empty, it is still a bit confusing for me. An instruction might be needed there, if you keep going it presents the editions (one of which is a node-server wiki so a bit more confusion), if you choose ‘empty’ it completes the process (needs a confirmation message here?) but nothing happens for me when open button is clicked. Maybe more info messages, confirmations to let user know what’s happening? Never easy putting yourself in the shoes of a blundering novice but I can lend you some if you like. “The open wiki folder button does two things” - Maybe 2 buttons doing one thing each is simpler for user?

Thanks again, only feeding back, ignore anything off piste.

1 Like

Maybe it’s the portable mode that doesn’t work on Linux, I’ll investigate

The folder wikis are created and do exist but clicking on ‘open’ does not launch the wiki. Contents of the folder wiki looks like this: A ‘myco’ directory containing a ‘tiddlers’ directory and a tiddlywiki.info. The ‘tiddlers’ directory contains only .tid files.

I managed to run tiddlydesktop-rs via a terminal which provided a bit more info at the point of failure, not sure if it helps. Node is there, TiddlyWiki is not found in resources.

[TiddlyDesktop] Linux: Pointer entered window 'main' (mode: Normal)
[TiddlyDesktop] Allocated port 8080 for wiki folder server
[TiddlyDesktop] Spawning wiki folder process: /home/time/Desktop/tiddlydesktop-rs-0.3.53-linux-x86_64/bin/tiddlydesktop-rs --wiki-folder /home/time/Desktop/wiki-rs/myco --port 8080
[TiddlyDesktop] Wiki folder process spawned with PID: 3628
[TiddlyDesktop] Wiki folder mode: "/home/time/Desktop/wiki-rs/myco", port: 8080
Found system Node.js v18.19.1 in PATH
[TiddlyDesktop] Error: TiddlyWiki not found in resources
[TiddlyDesktop] Wiki folder process 3628 exited

Thanks for all the hard work BTC!

Hi @Watt

The next release fixes this!

Simon

It does! Resizing works, the node folders work and the menu has moved around too - you are too quick BTC. I’m going to try it all out tomorrow - thanks very much for fixing it all!

Dashboard

  • opens fine - 1 second black stutter, maybe X11/Mint related, not a problem.
  • Ui - dashboard has white space at top, not a problem.

Import

  • Dashboard Drag&Drop import works. An existing wiki created outside TD-RS dragged onto the D&D area opens immediately (microsecond of black window).

  • If there are plugins in that wiki it tells you to 'save and reload to allow changes to plugins to take effect '. Those buttons don’t seem to do anything - you can close the dialogue but it’s there again everytime you open the wiki.
    If I convert that single file wiki into a folder wiki the plugin message doesn’t appear.

  • Tools → Import button doesn’t work, nothing happens. Other Tools buttons do seem to work.

  • D&D from an outside directory does initiate the green ‘drop now or press escape’ message but nothing happens when dropped. No import, no message.

  • However D&D does work between ‘in-app wikis’ i.e a tiddler dragged from wiki A to wiki B, both opened from within TD-RS, does successfully import.

  • Inconsistently - a tiddler dragged from another ‘out-of-app’ wiki, opened independently in a browser does import into ‘in-app’ wikis.

Convert to folder
I expected this button to convert the singlefile to a folder wiki and then open it immediately. It doesn’t appear in the list until you go back and click on ‘Open wiki folder’. imo it should be added to the wiki list immediately on conversion and open. Failing that maybe a confirmation with button - ‘folder created - open now?’

It’s all positive feedback, thanks BTC, the work on this and the Android version is much appreciated.

1 Like

Tested tiddlydesktop-rs-0.3.59-linux-x86_64.tar.gz on Linux Mint 22.3 - Cinnamon 64-bit X11 display

Everything great except import and export

The tools → import button doesn’t produce any output at all in the terminal, all other tools buttons do and work as expected.

The tools → export button does produce some terminal output, opens the ‘select export format’ dropdown but nothing is exported, the wiki saved message pops up.

Drag & Drop from a directory to a wiki doesn’t work but gave this feedback in terminal;

import via d&d
[TiddlyDesktop] Linux: Pointer entered window 'folder-mynoder-bc3a' (mode: Normal)
[TiddlyDesktop] Linux: drag-leave reading detected_cross_wiki_drag=false for folder-mynoder-bc3a
[TiddlyDesktop] Linux: drag-drop at (295, 307) target=folder-mynoder-bc3a, source_widget=false, source_window=None, detected_cross_wiki=false, is_same_window=false, is_cross_wiki=false, is_external=true
[TiddlyDesktop] Linux: External drop - available targets: ["x-special/gnome-icon-list", "text/uri-list", "UTF8_STRING", "COMPOUND_TEXT", "TEXT", "STRING", "text/plain;charset=utf-8", "text/plain"]
[TiddlyDesktop] Linux: External drop - letting native handling work
[TiddlyDesktop] JS: [drag] tauri://drag-drop received, paths=1, hasCrossWikiData=false
[TiddlyDesktop] JS: [drag] No usable data in tauri://drag-drop
[TiddlyDesktop] JS: [drag] Cleanup
[TiddlyDesktop] JS: onDragDropEvent: type=drop, paths=["/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid"]
[TiddlyDesktop] JS: onDragDropEvent DROP: 1 files
[TiddlyDesktop] JS: onDragDropEvent: stored drop path for 'Grow mushrooms in coffee and cardboard.tid'
[TiddlyDesktop] JS: tauri://drag-drop received on window: folder-mynoder-bc3a, paths: ["/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid"]
[TiddlyDesktop] JS: tauri://drag-drop: IMMEDIATE set __pendingExternalFiles['Grow mushrooms in coffee and cardboard.tid'] = '/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid'
[TiddlyDesktop] JS: [drag] Dispatched synthetic pointerup (mouse) to reset pointer state
[TiddlyDesktop] Linux: Pointer left window 'folder-mynoder-bc3a' (mode: Normal, detail: Virtual)
[TiddlyDesktop] Linux: Pointer left window 'folder-mynoder-bc3a' (mode: Normal, detail: Virtual)
[TiddlyDesktop] Linux: Pointer left window 'folder-mynoder-bc3a' (mode: Normal, detail: Ancestor)
[TiddlyDesktop] Linux: Pointer entered window 'main' (mode: Normal)
[TiddlyDesktop] Linux: Pointer left window 'main' (mode: Normal, detail: Virtual)

Hope that’s useful!

Tested tiddlydesktop-rs-0.3.60-linux-x86_64.tar.gz on Linux Mint 22.3 - Cinnamon 64-bit X11 display

d&d registered

[TiddlyDesktop] JS: [drag] Tauri listen ready for: folder-mynoder-bc3a
[TiddlyDesktop] JS: [drag] Setting up GTK event handlers
[TiddlyDesktop] JS: [drag] GTK event handlers ready
[TiddlyDesktop] JS: onDragDropEvent listener registered successfully

but…

On d&d from a directory attempt
[TiddlyDesktop] Linux: Pointer left window 'folder-mynoder-bc3a' (mode: Normal, detail: Nonlinear)
[TiddlyDesktop] Linux: drag-data-received (preview) type: text/plain;charset=utf-8
[TiddlyDesktop] Linux: Preview check: is_cross_process=true, data_type=text/plain;charset=utf-8, detected_cross_wiki=false, confirmed_external=false
[TiddlyDesktop] Linux: Received non-dominated preview type 'text/plain;charset=utf-8', marking as external drag
[TiddlyDesktop] Linux: drag-data-received (preview) type: text/uri-list
[TiddlyDesktop] Linux: Preview check: is_cross_process=true, data_type=text/uri-list, detected_cross_wiki=false, confirmed_external=true
[TiddlyDesktop] JS: onDragDropEvent: type=enter, paths=["/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid"]
[TiddlyDesktop] JS: onDragDropEvent: stored path for 'Grow mushrooms in coffee and cardboard.tid'
[TiddlyDesktop] JS: tauri://drag-enter on folder-mynoder-bc3a: paths=["/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid"]
[TiddlyDesktop] JS: tauri://drag-enter: populating __pendingExternalFiles with 1 paths
[TiddlyDesktop] JS: tauri://drag-enter: set __pendingExternalFiles['Grow mushrooms in coffee and cardboard.tid'] = '/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid'
[TiddlyDesktop] JS: onDragDropEvent: type=over, paths=[]
[TiddlyDesktop] JS: onDragDropEvent: type=over, paths=[]

(edited out 100+ of these)...

[TiddlyDesktop] JS: onDragDropEvent: type=over, paths=[]
[TiddlyDesktop] JS: onDragDropEvent: type=over, paths=[]
[TiddlyDesktop] Linux: Pointer entered window 'folder-mynoder-bc3a' (mode: Normal)
[TiddlyDesktop] Linux: drag-leave reading detected_cross_wiki_drag=false for folder-mynoder-bc3a
[TiddlyDesktop] Linux: drag-drop at (695, 70) target=folder-mynoder-bc3a, source_widget=false, source_window=None, detected_cross_wiki=false, is_same_window=false, is_cross_wiki=false, is_external=true
[TiddlyDesktop] Linux: External drop - available targets: ["x-special/gnome-icon-list", "text/uri-list", "UTF8_STRING", "COMPOUND_TEXT", "TEXT", "STRING", "text/plain;charset=utf-8", "text/plain"]
[TiddlyDesktop] Linux: External drop - letting native handling work
[TiddlyDesktop] JS: tauri://drag-drop received on window: folder-mynoder-bc3a, paths: ["/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid"]
[TiddlyDesktop] JS: tauri://drag-drop: IMMEDIATE set __pendingExternalFiles['Grow mushrooms in coffee and cardboard.tid'] = '/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid'
[TiddlyDesktop] JS: onDragDropEvent: type=drop, paths=["/home/time/Desktop/wiki-rs/myco/tiddlers/Grow mushrooms in coffee and cardboard.tid"]
[TiddlyDesktop] JS: onDragDropEvent DROP: 1 files
[TiddlyDesktop] JS: onDragDropEvent: stored drop path for 'Grow mushrooms in coffee and cardboard.tid'
[TiddlyDesktop] JS: [drag] tauri://drag-drop received, paths=1, hasCrossWikiData=false
[TiddlyDesktop] JS: [drag] No usable data in tauri://drag-drop
[TiddlyDesktop] JS: [drag] Cleanup
[TiddlyDesktop] JS: [drag] Dispatched synthetic pointerup (mouse) to reset pointer state
[TiddlyDesktop] Linux: Pointer left window 'folder-mynoder-bc3a' (mode: Normal, detail: Virtual)

If I drag the file into the text edit area of an open tid it does paste in the name of the dragged file but not the contents.

Hi @Watt !

Thanks for reporting, I found the issue.
Next release fixes it, both the import button not importing non-binary files and the drag&drop mechanism not doing the same.

Great stuff. Thanks BTC! On a train today but will try it out tonight. @vylt will be interested too I’m sure. Best wishes.

PROVIDE_YOUR_OWN_NODEJS_tiddlydesktop-rs_0.3.62_x64-setup_img_866_20260213

PROVIDE_YOUR_OWN_NODEJS_tiddlydesktop-rs_0.3.62_x64-setup_img_867_20260213

PROVIDE_YOUR_OWN_NODEJS_tiddlydesktop-rs_0.3.62_x64-setup_img_868_20260213

What is the reason? Why it can not have access to folder? I use the same folder as install folder.

Tauri is very specific about granting local filesystem access and today in Windows anything in C:\* that isn’t your user folder is considered a restricted area to a lot of programs

Hi BTC Testing tiddlydesktop-rs-0.3.63-linux-x86_64.tar.gz

Import button not working at all - no terminal message on click, nothing happens.

D&D - Mixed results I’m afraid

Tried D&D on 2 formats;

.txt file does initiate the import process but the import tiddler contains this, not the text.

<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>

Terminal says this;

[TiddlyDesktop] JS: tauri://drag-enter: set __pendingExternalFiles['2watch.tid'] = '/home/time/Desktop/definitive/tid/2watch.tid'
[TiddlyDesktop] JS: onDragDropEvent: type=enter, paths=["/home/time/Desktop/definitive/tid/2watch.tid"]
[TiddlyDesktop] JS: onDragDropEvent: stored path for '2watch.tid'
[TiddlyDesktop] JS: [drag] Dispatched synthetic pointerup (mouse) to reset pointer state
[TiddlyDesktop] JS: importFiles: processing 1 files
[TiddlyDesktop] JS: importFiles: TW-native file '2watch.tid' — reading for deserialization

Deserialization?

I opened the same wiki simultaneously in firefox via 127.0.0.1:8080 and all import/export functions work normally. Syncing to server in TD-RS saves those imports fine. Not sure if that helps or is relevant. Will keep testing, thanks!

Linux Manjaro, downloaded and expanded tar.gz. Running without install (after checking dependencies).

Web links from node.js won’t open in browser. Links from local file do.

Drag and drop into node.js or local file create the same relative canonical path to the image. But on node.js version this displays nothing – probably because the server root is different than the wiki folder location? Or maybe TDRS isn’t serving up images?

Also tried with the TiddlyDesktop external attachments plugin, but that didn’t seem to make any difference. Do we need the TD external attachments plugin?

I could not paste in an image (copied as image from internet, and verified as image data by pasting into gimp) in neither the local file nor the nodejs instance. I would paste, but nothing happened.

Thanks!

Hi @Mark_S - thanks for reporting!

I have to investigate this, thank you!

This will be fixed with the next build.

The TiddlyDesktop “External Attachments” plugin doesn’t work here. We have a runtime-injected plugin on TiddlyDesktopRS that doesn’t get saved into your wikis, which can be used to configure external attachments (Control Panel > Settings > External Attachments)

I will investigate also this issue, thank you!

Thanks,
Simon

Meanwhile, I’ve implemented “Real-time” sync over LAN.
The next build comes with all batteries included, tested only on Linux and Android as of now.
Within 30 minutes it should be available.
The Android build can take longer… v0.0.15 will be the one which is LAN-sync enabled.

Cheers,
Simon

1 Like

As far as I can tell, the only thing that is fixed with this version is that I can now click on a url link inside a local tw file and it will open. It will still not open for a nodejs folder.

Could not get external images to work with nodejs. Do images need to be in a particular place or folder? Does it matter where I launch TDRS ? The paths generated are the same for both local and nodejs imports.

I can paste in image data if I turn off external files.

Using the “kitty” icon to quit kills the TDRS dashboard, but doesn’t kill the associated local file or nodejs windows / processes. They continue to float and function. The process only dies after the windows have been terminated.

I would suggest using either a colour or a bright white for the TDRS window icons. On a dark themed system (and dark is pretty much the standard these days), the current grey icon is almost invisible.

image

Thanks!

Hi @Mark_S , thanks again for reporting!

No, it should work the same for both single-file wikis and “folder” wikis (nodeJS). But there’s a bug for folder wikis which I’m about to resolve.

That’s probably because pasting doesn’t deliver the file path, only the binary data. I’ll make it paste nevertheless, but pasting will not respect the “External attachments” setting then, but always import as embedded.

Ah! That’s an oversight! Yes, basically, if the main “landing page” wiki is closed, the other wiki windows still work. But using the “kitty” icon to quit should kill all open windows, that’s true.

Could you please tell me which icons behave like that? I cannot test on Windows currently.

Thank you!

The ideal behaviour would be if the image would save in a designated local directory. Maybe something for further down the line?

I’m on Linux (Manjaro). It was just the toolbar icon. Let me paste an image that shows more context.

image

Thanks!

Hi BTC Testing tiddlydesktop-rs-0.3.65-linux-x86_64.tar.gz on LinuxMint

Big improvements on import. Thanks a lot for your perseverance with the linux versions. Still some idiosyncrasies regarding file paths and the deserializer I think but seems very close.

Import button - works! Native file select initiated. But deserialization not right.

‘6 ways mushrooms can save the world.tid’ is imported title (including .tid) - but creates a tiddler with this content in the text area;

created: 20210410154101219
modified: 20210410154215398
tags: video
title: 6 ways mushrooms can save the world

(followed by the content as expected. Video embed works)

So those tid fields aren’t being created I think.

Terminal output
[TiddlyDesktop] JS: importFiles: processing 1 files
[TiddlyDesktop] JS: importFiles: TW-native file '6 ways mushrooms can save the world.tid' — reading for deserialization
[TiddlyDesktop] JS: importFiles: dispatching tm-import-tiddlers with 1 tiddlers
syncer-server-filesystem: Dispatching 'save' task: $:/StoryList
[TiddlyDesktop] Linux: Pointer entered window 'folder-mynoder-bc3a' (mode: Normal)
syncer-server-filesystem: Dispatching 'save' task: $:/Import
syncer-server-filesystem: Dispatching 'save' task: 6 ways mushrooms can save the world.tid

Import button - importing a text file creates a tiddler with correct title but no content. The _canonical_uri is saved as …/…/definitive/txt/Ozymandias.txt - changing this to the full path doesn’t produce content either.

Terminal output
[TiddlyDesktop] JS: importFiles: processing 1 files
[TiddlyDesktop] JS: importFiles: external attachment 'Ozymandias.txt' → ../../definitive/txt/Ozymandias.txt
[TiddlyDesktop] JS: importFiles: dispatching tm-import-tiddlers with 1 tiddlers
syncer-server-filesystem: Dispatching 'save' task: $:/StoryList
[TiddlyDesktop] Linux: Pointer entered window 'folder-mynoder-bc3a' (mode: Normal)
syncer-server-filesystem: Dispatching 'save' task: $:/Import
syncer-server-filesystem: Dispatching 'save' task: Ozymandias.txt
[TiddlyDesktop] JS: [drag] pointerdown(mouse) on draggable: A
[TiddlyDesktop] JS: [drag] Set $tw.dragInProgress early (pointerdown)
[TiddlyDesktop] Linux: set_pending_drag_icon called with 2087 bytes, offset (55, 10)
[TiddlyDesktop] JS: [drag] Drag image PNG sent: 110x20
[TiddlyDesktop] JS: [drag] Cleared early $tw.dragInProgress (no drag started)
syncer-server-filesystem: Dispatching 'save' task: $:/StoryList

However importing the same txt file into a single file wiki created in the TD-RS portable bin directory succeeds with content using exactly the same _canonical_uri.

Importing a .png image works first time! With same dot notation _canonical_uri …/…/Blender5/Blender notes/bottlepelegro.png

Terminal output
[TiddlyDesktop] JS: importFiles: processing 1 files
[TiddlyDesktop] JS: importFiles: external attachment 'bottlepelegro.png' → ../../Blender5/Blender notes/bottlepelegro.png
[TiddlyDesktop] JS: importFiles: dispatching tm-import-tiddlers with 1 tiddlers
[TiddlyDesktop] Linux: Pointer entered window 'folder-mynoder-bc3a' (mode: Normal)
syncer-server-filesystem: Dispatching 'save' task: $:/StoryList
syncer-server-filesystem: Dispatching 'save' task: $:/Import
syncer-server-filesystem: Dispatching 'save' task: bottlepelegro.png
[TiddlyDesktop] JS: [drag] pointerdown(mouse) on draggable: A
[TiddlyDesktop] JS: [drag] Set $tw.dragInProgress early (pointerdown)

I hope this is helpful. I’m looking forward to the LAN developments. Is connection only possible via the Android app or can another laptop see the server? Anyway - great work, much appreciated.