Streams 0.2 preview

889 views
Skip to first unread message

Saq Imtiaz

unread,
Jan 8, 2021, 1:14:53 PM1/8/21
to TiddlyWiki

This is a preview of an experimental branch of Streams intended to explore optimizations and new ideas. Not all of these changes will make it to the final released version, depending on user feedback.

Specifically, I am interested in feedback from regular users of Streams who can compare these new changes to the stable released version.
https://saqimtiaz.github.io/sq-tw/temp/streams-0.2-preview.html

If you are new to Streams, I suggest looking at the latest stable release instead:
https://groups.google.com/g/tiddlywiki/c/1jTwdmq8cgI

Performance improvements

There are significant performance improvements. Very large streams now render over 300% faster.

This has involved drastically simplifying the HTML structure of nodes, as well as optimizing the code used for drag and drop and the context menu.

You can compare the rendering time for the tiddler "TiddlyWiki Toolmap" on the old version versus the new one.

Please pay attention to whether drag and drop and the context menu still work as expected.

A lot of tweaks to the core code and custom widgets previously included in Streams have been deprecated as they are now a part of the TiddlyWiki core, making the plugin smaller and lighter to use despite the addition of new features.

Context Menu

The context menu has been extended with indent and unindent options.

UX tweaks

Drag and Drop

The area that can be grabbed to drag a node has been extended.

Drag and drop now works relatively well in Chrome on Android mobile devices.

The modifier keys used to control the behaviour when dragging and dropping a node are customizable

Double click

You can also double click inside the editor as well as in the area to left of it to exit editing

You can now double click the area left of a node as well as on the content of a node to edit.

If using the default editor, you can also turn off double click inside the editor textarea

Swipe on touch devices

There is experimental support for swiping on nodes in touch devices

Two modes are supported

Swipe to indent / unindent

Swipe to trigger a context menu on the node, from which you can indent/unindent, open, delete etc.

There isn't any visual feedback when swiping. Due to the lack of native browser support this will not be implemented and therefore the behaviour to indent/unindent for swipe is likely to be dropped as it can be difficult to undo.

Miscellaneous

The max-width of a node is now customizable.

The indent level of the stream root has been decreased.

Settings Control Panel

There is a new settings control panel for Streams, available both in the Control Panel as well as the plugin tiddler.

CodeMirror integration

If the CodeMirror plugin is installed, there is a configuration option in the Streams settings to choose the editor to use for Streams nodes.

Testing and feedback is needed to make sure this works as expected, both using codemirror as the editor and using the default editor. The areas most likely to be affected are:

- splitting a node by hitting Enter with the text cursor/caret in the middle of some text,

- hitting Enter with the cursor at the beginning of some text,

- or hitting backspace with the cursor at the beginning of a text.

Mohammad Rahmani

unread,
Jan 8, 2021, 2:52:50 PM1/8/21
to tiddl...@googlegroups.com
Hi Saq,

 Stream 2.0 is really amazing! It has tons of features. 
The double click/tap is nice to enter in edit mode on any node!
The search in Settings is a lovely feature, hope to see this into the core.
Integration with CodeMirror is also very useful.
The new breadcrumbs were designed very well. 

For me the double click was not speedy specially for the first double click, but then I experienced a quick response when I double clicked
any node.

I think some very useful subplugins/codes can be derived from Streams, one is the breadcrumbs.

Thank you Saq.




Best wishes
Mohammad


--
You received this message because you are subscribed to the Google Groups "TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tiddlywiki+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/450be3ea-2b1f-4206-89b8-b1230bded881n%40googlegroups.com.

Saq Imtiaz

unread,
Jan 9, 2021, 7:49:48 AM1/9/21
to TiddlyWiki
Hi Mohammad,

Thank you for the kind words and also the enthusiasm. Note that this is still version 0.2, we haven't gotten to 1.0 yet :)

A lot of the smaller tweaks and widgets from Streams 0.1.x were already included in the core for TW 5.1.23.
There are indeed some smaller things that I would prefer to include as separate plugins, but do not do so due to the lack of better dependency management and installation.

I did indeed have the core in mind when experimenting with the search in the Settings.

Speaking of settings, I would personally prefer to have the code which displays the settings UI as a separate plugin, which when added creates a nice configuration UI for plugins that support it.  You may find it of interest how each config tiddler for a setting specifies its own UI:

I am extending this with options for grouping settings together, specifying an order, and making a setting dependent on another setting being enabled.

The next round of improvements in Streams will focus on simplifying the action macros to take advantage of the filter improvements in 5.1.23.

Cheers,
Saq

si

unread,
Jan 9, 2021, 5:07:10 PM1/9/21
to TiddlyWiki
This is great Saq. I've been playing with it mostly on Tiddloid (on a cheap Samsung). I'm amazed by how many great improvements you have made, and now super-excited for the next release. Streams is looking better than most 'conventional' apps.

I have included several quibbles below, but only because it's hopefully more helpful to you than just saying that everything is great. My overall response, however, is overwhelmingly positive.

Here are my thoughts (mostly relating to the mobile UX):
  • Overall the mobile experience is way smoother. Drag and drop didn't work for me before, now it works reliably. The area to tap in order to drag and drop seems suitably large - I'm not finding that I have to re-tap to find the right spot.
  • It feels like I have to hold down a little longer that I would expect before the node becomes draggable. I know you wouldn't want it to happen too quickly so as not to interfere with scrolling, but to me it just feels too long. It's hard to say for sure without trying it for a longer period, but I think it impacts the UX enough that it would probably prevent me from bothering to use drag&drop at all on mobile.
  • It's hard to judge, but double tapping to enter edit-mode seems to have less of a delay than in the current stable version. It's still got a delay, but I guess this could have something to do with my cheap phone.
  • I have found that whenever I double tap to close edit mode on mobile I end up highlighting some text. In most cases this doesn't actually affect the function, but I do find it mildly stressful.
  • Double tapping to the left of the text to works well, though currently I don't instinctively do this. It also feels like it would be more natural as a single rather than a double tap.
  • Swiping to open the context menu is super-useful. Currently it seems that if a context menu is already open, switching to a context menu on a different node requires two steps: tapping to close the menu, then swiping to open a new one. I think it would be more natural if swiping on a separate node did both of these things at once.
  • I tried the swipe-to-indent setting and found that it worked well, and the lack of visual feedback/ability to undo doesn't strike me as a massive problem. However I would probably not use this feature personally as I feel that the context menu option is more useful.
  • The reduced indent level looks nicer in my opinion. The streams look more like they are part of the tiddler, if that makes any sense.
  • The new control panel is super-sexy. I could easily tell what all the settings did.
  • One thing that bothered me about the current release is that I would occasionally create new nodes from tiddlers that already had titles like "tiddler/timestamp" and end up with lots of tiddlers called "tiddler/timestamp/timestamp/timestamp" etc. With the new control panel I was able to change the title template to my own custom macro that ignores any already existing timestamps when generating new titles. I wonder if this should be the default behaviour? Here is the macro that I used:
    • \define new-streams-title()
      <$vars timestamp=<<now "[UTC]YYYY0MM0DD0hh0mm0ssXXX">> >
      <$list filter="[<stream-root-title>!regexp[^.*/\d{17}$]]">
      {{{ [<currentTiddler>addsuffix[/]addsuffix<timestamp>] }}}
      </$list>
      <$list filter="[<stream-root-title>regexp[^.*/\d{17}$]]">
      {{{ [<currentTiddler>splitbefore[/]addsuffix<timestamp>] }}}
      </$list>
      </$vars>
      \end
  • The last point doesn't relate directly to the new features, but I might as well mention it here. I frequently find myself opening a tiddler and seeing that I have a bunch of nodes left in edit mode, which I have to toggle one at a time. It would be nice I think to have a way either for nodes to be set to read-mode automatically (maybe triggered by opening the tiddler for a node, or closing the streams tiddler), or an option to just set all nodes to read-only in batch.
Ok so now I realise that I have written a whole essay. Sorry. Thanks again for Streams, it's a super-plugin.

Anjar

unread,
Jan 9, 2021, 10:19:32 PM1/9/21
to TiddlyWiki
Thank you, Saq, this is amazing! If you feel for it: Hacker News (https://news.ycombinator.com/) is a great place to get constructive feedback (they have a "Show HN" prefix) - and it would be a nice place to promote TiddlyWiki more too!

Best,
Anders

Michael Wiktowy

unread,
Jan 10, 2021, 12:03:05 AM1/10/21
to TiddlyWiki
Hi Saq,

Nice work and I am glad you continue to improve this as I am finding new uses for it daily.

I know that you specifically mentioned the drag and drop reordering functionality in Mobile Chrome but I can confirm that it doesn't work in Mobile Firefox. However, what does work in Firefox is the pop-up context menu which doesn't seem to work on Mobile Chrome. If there was a "Move" option in there that put the stream in "draggable-mode", Firefox would have full functionality. I have no idea if that is possible though in the context of UI events and javascript or whether it doesn't work in Firefox due to it not having some core functionality.

One issue that I have been trying to find the best way to tackle is the concept of cloning tiddlers with streams. The current cloning will work in one sense in that you can create a clone tiddler, and it will look like the original, but they are kind-of siamese-clones in that they point to the same stream-children and if something is edited in the original stream, the clone stream gets changed too.

My use case for cloning would be to copy the content over to a new set of cloned stream-children pointing to a cloned parent so that I can use it as a baseline structure to edit ... specific examples would be a regular meeting agenda or a daily journal where you want to keep the structure but change some details.

Three ways that I see to implement this is:

1) A Copy-on-write approach where the new clone is tagged in some way such that a new stream-child is created when a change is made to it in the cloned parent ... keeping the unchanged ones linked because ... why not ... built in deduplication.
It should be fairly easy to work out which children are linked from a cloned tiddler as the child prefix won't match the parent in your default naming scheme.

2) An option/button to also clone the stream-children on demand into the new cloned parent if desired. Either a config option that bakes it into the core clone button, a new clone-and-relink button or a right-click option on the stream controls to relink/clone children to a new parent.

3) A "destream"  option to convert a stream into a normal unordered list so that you can clone it normally and a corresponding "enstream" option that does the opposite to undo the destream on both copies. I am working on this option ... "destream" is pretty straight-forward (see below). "enstream" is trickier and I am still working out the way to do that. It seems like the less straightforward way but I think that it will have a nice dual purpose to import lists from other sources (like Word or html) into streams. I think some of the new search and replace functionality might make this possible.

This is what I have used to destream:
\define destream()
<$list filter="[<stream-child>get[stream-list]] +[enlist-input[]]" variable="stream-child">
<$list filter="[<stream-child>get[text]]" variable="stream-child-content">

*<div><span title=<<stream-child>>><<stream-child-content>></span>
<<destream>></div>
</$list>
</$list>
\end

<$vars stream-child=<<currentTiddler>>>
<<destream>>
</$vars>

It doesn't handle the block formatting (like !!headings) but I'm working on it.

I might abandon my efforts on 3) and do 2) since that seems more doable (but lacks the import functionality). 1) is more elegant but I haven't worked out how to do that as it might involve tweaking the innards of stream itself which I am lost in as soon as it gets into javascript.

Just food for thought.
/Mike

Mohammad Rahmani

unread,
Jan 10, 2021, 5:32:21 AM1/10/21
to tiddl...@googlegroups.com
Hi Saq,
 Good to hear Stream with that amount of amazing features is just release 0.2, so to get release 1.0 we will have tons of new features :-) :-)



Best wishes
Mohammad


On Sat, Jan 9, 2021 at 4:19 PM Saq Imtiaz <saq.i...@gmail.com> wrote:
Hi Mohammad,

Thank you for the kind words and also the enthusiasm. Note that this is still version 0.2, we haven't gotten to 1.0 yet :)

A lot of the smaller tweaks and widgets from Streams 0.1.x were already included in the core for TW 5.1.23.
There are indeed some smaller things that I would prefer to include as separate plugins, but do not do so due to the lack of better dependency management and installation.

Nico also raised this and I hope TW could manage somehow this dependency in an easy way like on installing new plugins shows a notification with links to dependent plugins. I know it is not possible to have automatic installation of required plugins.


 

I did indeed have the core in mind when experimenting with the search in the Settings.

Speaking of settings, I would personally prefer to have the code which displays the settings UI as a separate plugin, which when added creates a nice configuration UI for plugins that support it.  You may find it of interest how each config tiddler for a setting specifies its own UI:


I love this feature!

 
I am extending this with options for grouping settings together, specifying an order, and making a setting dependent on another setting being enabled.

Very useful indeed!
 

The next round of improvements in Streams will focus on simplifying the action macros to take advantage of the filter improvements in 5.1.23.

Great!

 

Cheers,
Saq


Thank you Saq

 

Saq Imtiaz

unread,
Jan 10, 2021, 9:09:05 AM1/10/21
to TiddlyWiki
Hi @si,

Detailed feedback is greatly appreciated, especially when it is well written and relevant, so thank you for that.

Before I address some of the specific points you have raised I would like to clarify that my intention with work on the mobile UX for Streams is to look for easy and quick gains and make Streams minimally functional on mobile/touch devices. However, this isn't a priority overall as firstly the focus of Streams is on a keyboard based workflow and secondly the overall mobile UX of TiddlyWiki is still rather lacking.

  • It feels like I have to hold down a little longer that I would expect before the node becomes draggable. I know you wouldn't want it to happen too quickly so as not to interfere with scrolling, but to me it just feels too long. It's hard to say for sure without trying it for a longer period, but I think it impacts the UX enough that it would probably prevent me from bothering to use drag&drop at all on mobile.
This is a browser implementation issue. Streams uses the TiddlyWiki core support for drag and drop which is based on the HTML drag and drop API. Frustratingly the implementation is far from consistent across browsers. Therefore currently drag and drop on touch devices only works on Chrome on Android and iOS on iPad (but not iPhone). Similarly the delay to trigger drag handling is dependent on browser implementation. 

The only way to improve this would be to implement custom drag and drop handling from scratch in TiddlyWiki, which honestly wouldn't be the best use of  the limited resources and time that I have to work on this.

  • I have found that whenever I double tap to close edit mode on mobile I end up highlighting some text. In most cases this doesn't actually affect the function, but I do find it mildly stressful.
It is a bit worse than that actually. Some users are accustomed to double tapping a word to select it, which triggers a double click. Therefore this is one of the features that I am least sure that it makes sense to keep. This was something I explored in response to user requests to have a way to exit editing a node on desktop (and mobile) that did not require using a keyboard.

  • Double tapping to the left of the text to works well, though currently I don't instinctively do this. It also feels like it would be more natural as a single rather than a double tap.
The  issue is that the area to the left is very small when the content of a node is a single line and can be hard to tap. Furthermore the chances to accidentally click the bullet and open the tiddler is too high. Due to the combination of these two factors I am of the opinion that events on the area to the left of the node are not a reliable trigger.

I am now wondering if we should just use the context menu for this. Swipe to show the context menu and have an option to exit editing. I intend to make the menu items that come up in the context menu configurable via a control panel so that it does not get overly crowded and users can customize it to their liking.

  • Swiping to open the context menu is super-useful. Currently it seems that if a context menu is already open, switching to a context menu on a different node requires two steps: tapping to close the menu, then swiping to open a new one. I think it would be more natural if swiping on a separate node did both of these things at once.
One of the goals of the changes in this version was to decrease the reliance on custom JavaScript and rely on core features. This is more so possible now as a lot of the tweaks that Streams relied on were introduced into the core for TW 5.1.23 as they are universally useful.

 The problem in this instance is that the context menu uses the core popup feature, which needs a click event to dismiss a popup before we can show another popup. 
I would explore further but I do think it is a very uncommon occurrence when working with Streams to trigger a context menu, and then without choosing a menu item to trigger a different context menu. As such I am not sure that I should dedicate much time to this.

  • I tried the swipe-to-indent setting and found that it worked well, and the lack of visual feedback/ability to undo doesn't strike me as a massive problem. However I would probably not use this feature personally as I feel that the context menu option is more useful.
I am favouring dropping this for two reasons:
a) with swipe to indent enabled there is no means to trigger the context menu, which as you say is more useful.
b) while some accidental unindent operations are as simple as a swipe to undo, others can be almost impossible to undo on mobile depending on the structure of the node tree. As such I feel any swipe to indent/unindent feature should show visual feedback that a swipe is occurring and allow the user to cancel the gesture before it triggers any action. This is of course doable with a different swipe implementation but it would entail complexity (and size of code) that I don't think is justified in Streams. 
  • One thing that bothered me about the current release is that I would occasionally create new nodes from tiddlers that already had titles like "tiddler/timestamp" and end up with lots of tiddlers called "tiddler/timestamp/timestamp/timestamp" etc. With the new control panel I was able to change the title template to my own custom macro that ignores any already existing timestamps when generating new titles. I wonder if this should be the default behaviour? Here is the macro that I used:
    • \define new-streams-title()
      <$vars timestamp=<<now "[UTC]YYYY0MM0DD0hh0mm0ssXXX">> >
      <$list filter="[<stream-root-title>!regexp[^.*/\d{17}$]]">
      {{{ [<currentTiddler>addsuffix[/]addsuffix<timestamp>] }}}
      </$list>
      <$list filter="[<stream-root-title>regexp[^.*/\d{17}$]]">
      {{{ [<currentTiddler>splitbefore[/]addsuffix<timestamp>] }}}
      </$list>
      </$vars>
      \end
There is some documentation here on customizing the title format for new nodes:

This one is similar to what you have implemented:
  • {{{[<stream-root-title>split[/]limit[1]]}}}/<<now "[UTC]YYYY0MM0DD0hh0mm0ssXXX">>
 The problem with establishing better defaults is that user feedback is extremely limited which is particularly frustrating for someone taking a user centered design perspective.
I would love to hear from other regular users of Streams as to their preferences for the title format.

  • The last point doesn't relate directly to the new features, but I might as well mention it here. I frequently find myself opening a tiddler and seeing that I have a bunch of nodes left in edit mode, which I have to toggle one at a time. It would be nice I think to have a way either for nodes to be set to read-mode automatically (maybe triggered by opening the tiddler for a node, or closing the streams tiddler), or an option to just set all nodes to read-only in batch.
Multiple nodes in edit mode in a single tiddler in the story? How can I recreate that? It should not be possible for more than a single node to be in edit mode in a tiddler.

Reloading a wiki does reset all nodes back to view mode on node.js as $:/state tiddlers are not saved. However frustratingly the single file version of TW does save state tiddlers. I may consider using a $:/temp tiddler instead.

Cheers,
Saq

Saq Imtiaz

unread,
Jan 10, 2021, 10:37:18 AM1/10/21
to TiddlyWiki
Hi Anjar,

Streams is a TiddlyWiki plugin meant for others to design a full workflow around, rather than a fully configured and ready to use vertical edition of TiddlyWiki.
As such I don't know that feedback from non-TiddlyWiki users would be particularly useful.

Regards,
Saq

Saq Imtiaz

unread,
Jan 10, 2021, 11:05:03 AM1/10/21
to TiddlyWiki
Hi Mike,

Would love to hear what use you are putting Streams to and what the pain points are. Understanding user workflow is very beneficial to the design and further development of the plugin.
 
I know that you specifically mentioned the drag and drop reordering functionality in Mobile Chrome but I can confirm that it doesn't work in Mobile Firefox. However, what does work in Firefox is the pop-up context menu which doesn't seem to work on Mobile Chrome. If there was a "Move" option in there that put the stream in "draggable-mode", Firefox would have full functionality. I have no idea if that is possible though in the context of UI events and javascript or whether it doesn't work in Firefox due to it not having some core functionality.

The problem with drag and drop on mobile is that in TiddlyWiki we use the HTML Drag and drop API which has very poor browser support on mobile, only Chrome on Android and iOS on iPad support it:

As such it isn't just about triggering the drag, an entire custom drag and drop solution from the ground up would be required or a polyfill for the drag and drop API that works well with TiddlyWiki. Perhaps something like this: https://github.com/timruffles/mobile-drag-drop
 
One issue that I have been trying to find the best way to tackle is the concept of cloning tiddlers with streams. The current cloning will work in one sense in that you can create a clone tiddler, and it will look like the original, but they are kind-of siamese-clones in that they point to the same stream-children and if something is edited in the original stream, the clone stream gets changed too.


Note that you can choose to copy a node when dragging and dropping (DND) into a new root tiddler. It doesn't copy the children. 
It sounds like what you need is the ability to copy by DND into the same root tiddler, along with copying the children.

Would that fit your workflow at all, to copy via DND rather than by using the core clone commands?
 
2) An option/button to also clone the stream-children on demand into the new cloned parent if desired. Either a config option that bakes it into the core clone button, a new clone-and-relink button or a right-click option on the stream controls to relink/clone children to a new parent.

This is doable. Sounds like you just need a custom button that creates a copy of the tiddler being acted upon, plus a copy of the nodes in its tree (recursive macro).
 

3) A "destream"  option to convert a stream into a normal unordered list so that you can clone it normally and a corresponding "enstream" option that does the opposite to undo the destream on both copies. I am working on this option ... "destream" is pretty straight-forward (see below). "enstream" is trickier and I am still working out the way to do that. It seems like the less straightforward way but I think that it will have a nice dual purpose to import lists from other sources (like Word or html) into streams. I think some of the new search and replace functionality might make this possible.


This reminds me of my prototype of using Streams as an editor for wikilists:

That implementation was very JavaScript heavy as I just wanted a quick proof of concept but it could be probably be done with wikitext as well. 

I might abandon my efforts on 3) and do 2) since that seems more doable (but lacks the import functionality). 1) is more elegant but I haven't worked out how to do that as it might involve tweaking the innards of stream itself which I am lost in as soon as it gets into javascript.

There shouldn't be much JavaScript that concerns you when trying to  customize Streams, especially with the 0.2 preview branch the code for which is at:

The custom JavaScript is almost entirely in the form of re-usable widgets and I don't think any of would be involved in the work you are describing.

Regards,
Saq
 


si

unread,
Jan 11, 2021, 2:43:47 PM1/11/21
to TiddlyWiki
Hi Saq,

>>> I am now wondering if we should just use the context menu for this. Swipe to show the context menu and have an option to exit editing. I intend to make the menu items that come up in the context menu configurable via a control panel so that it does not get overly crowded and users can customize it to their liking.

My instinct is that this would be quite cumbersome, but it's hard to know without having tried it.

>>> I would explore further but I do think it is a very uncommon occurrence when working with Streams to trigger a context menu, and then without choosing a menu item to trigger a different context menu. As such I am not sure that I should dedicate much time to this.

The only occasion I can think of where this might happen is if the user accidentally opens the context menu for the wrong node, so yeah it doesn't seem like something worth worrying about.

>>> Multiple nodes in edit mode in a single tiddler in the story? How can I recreate that? It should not be possible for more than a single node to be in edit mode in a tiddler.

Sorry I wrote that incorrectly. I meant that I will often open multiple tiddlers and find that they each have a node in edit mode, but it is always only one node per tiddler.

Saq Imtiaz

unread,
Jan 12, 2021, 10:44:23 AM1/12/21
to TiddlyWiki
@si
 
>>> I am now wondering if we should just use the context menu for this. Swipe to show the context menu and have an option to exit editing. I intend to make the menu items that come up in the context menu configurable via a control panel so that it does not get overly crowded and users can customize it to their liking.

My instinct is that this would be quite cumbersome, but it's hard to know without having tried it.

I guess it also depends on how frequent a use case this is. On mobile you also have the option to hit enter twice to exit editing. I'm amenable to other ideas.

Cheers,
Saq 

si

unread,
Jan 12, 2021, 3:22:29 PM1/12/21
to TiddlyWiki
>>> On mobile you also have the option to hit enter twice to exit editing. I'm amenable to other ideas.

Ahh I did not see that feature, that works pretty well.

arun babu

unread,
Jan 13, 2021, 3:24:28 PM1/13/21
to TiddlyWiki

I am a heavy streams user. It helps to organize my notes in a structured manner so that I can easily retrieve them when I need a quick reference. I had given an early feedback regarding the current beta version in Reddit and GitHub. So I will  concentrate on what I wish to see in streams in future plus a few late feedback comments about the beta version.

  1. Templates - This is my use case. I am a radiology doctor. So when I take notes about the imaging findings of a certain topic, it usually have specific pattern. I will give an example. Name of the topic will form the title of parent streams tiddler / node. Then there will be headings like Definitions, Pathology, X ray findings, Ultrasound , CT, MRI findings, treatment etc. which will be made into separate child nodes. Sometimes there will be sub headings under some of the headings - for example under MRI findings there may be sub headings like T1W, T2W sequences - these also will be separate child nodes which will be indented under the corresponding heading. These headings or sub headings name will be usually the first sentence or word in the corresponding child nodes. Now I have to manually do it for each topic ( I use text expander extensions of browsers to make it easy for me). I would like this to happen automatically. That is when I create a parent streams tiddler or node with the topic name as title and add a particular tag or field to it, the child nodes should be created automatically with name of each headings or sub headings as the first text in that particular child node. So that I just have to fill in the contents in each node. Is it possible to do like this? I saw the option called template for new node in the streams settings. But I could configure only the parent tiddler with that. Is it possible to configure child nodes along with the parent using this template feature?
  2. As I said in the first point, in many of my streams trees, the first word or sentence in the child nodes will be usually the name of the headings or sub headings. Is there any way to incorporate this first word or sentence of the child nodes into the title of that particular child node in place of the timestamp. For example - <<parent>>/<<first word or sentence of child node>>
  3. Ability to export a single streams tree in any of the available format. Currently I don’t know of a way to select a single parent streams tiddler with its entire child nodes and export them. I know only to use the filter [stream-type[default]] which will select all the streams tiddlers in my wiki. Am I missing something here?
  4. When we use streams, our recents page will be over filled with the child nodes of each streams tree. Is there any way to hide the child nodes within the recents page. Or else create a separate recents page for streams in addition to the default one with only parent nodes as it’s contents.
  5. Option to select either wiki text or markdown format in the config option of streams so that user who need it can make use of.
  6. In the documentation you may suggest to those people who use codemirror editor and editor autolist plug in along with streams to change the conflicting keyboard shortcuts. I think such conflicts can be  easily overcome since everything is customizable.
  7. Codemirror editor add much value when I am dealing with multi line content in child nodes because of keyboard shortcuts. This holds true in desktops and laptops. 
  8. I think codemirror should be disabled in mobile by default since selecting text doesn’t work when codemirror editor is active in mobile. Also because codemirror shortcuts won’t work in mobile. I came across a code by buggyj  for automatic disabling of codemirror in mobile. But this doesn’t disable codemirror editor in streams nodes in the mobile mode. Can that code be modified to disable codemirror in mobile for nodes in the streams tree also.
  9. When the wiki is opened in mobile and the code mirror editor is selected, currently there is no option to disable double click to exit editing. But since I recommend not using codemirror in mobile, it doesn’t matter. But in desktop or laptop it would be a greater addition if the option to double click to exit editing is given while using codemirror editor also.
  10. For a node withlong mutli line text content, when codemirror is selected as editor and we double click to edit the node, the focus of the node in edit mode will shift to the end of that node with caret position also at end of node. But if the default editor is selected, focus of the node in edit mode will remain at the top of the node with the caret position still at the end of the node. I am not saying that I routinely use such long multi line text in a single node of streams tree, but sometimes when I am preparing notes I will first paste the relevant text into a single node before splitting it into separate nodes. This behavior while using codemirror editor is not a big problem bcos I can just use keyboard shortcut to return to the top. 

Saq Imtiaz

unread,
Jan 14, 2021, 7:10:29 AM1/14/21
to TiddlyWiki
@arun Off topic replies make it hard for me to organize and prioritize feedback, and make efficient use of what little time I have to work on Streams. Therefore, I need to do better at asking all of you to help out, by keeping discussions compartmentalized. 

Since most of your post seems unrelated to the changes in the preview, kindly move that feedback to the main Streams thread, and post here just what is relevant to the new features in the preview.

Otherwise at best I would lose time trying to find what is relevant when I work on this, only to end up forgetting any feedback not related to the new features.

Thank you.

arun babu

unread,
Jan 14, 2021, 8:14:41 AM1/14/21
to tiddl...@googlegroups.com
@Saq

Sure. I will post the feature request in the main streams thread. Feedback regarding the current beta version I will post in the GitHub issue since it’s mostly about Codemirror integration.



--
You received this message because you are subscribed to the Google Groups "TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tiddlywiki+...@googlegroups.com.

Saq Imtiaz

unread,
Jan 14, 2021, 8:22:51 AM1/14/21
to TiddlyWiki
Great, thank you @arun.

Michael Arndt

unread,
Jan 15, 2021, 4:45:59 AM1/15/21
to tiddl...@googlegroups.com
Working fine so far, only issue I found: when I disable the CodeMirror plugin I get

Error executing boot module $:/plugins/sq/streams/codemirror-tweak: "Cannot find module named '$:/plugins/tiddlywiki/codemirror/engine.js' required by module '$:/plugins/sq/streams/codemirror-tweak', resolved to $:/plugins/tiddlywiki/codemirror/engine.js"


Michael Arndt

unread,
Jan 15, 2021, 4:48:00 AM1/15/21
to tiddl...@googlegroups.com
Oh, and the CodeMirror option is also available in the settings; but the aforementioned error is shown regardless of the choice 

kebi

unread,
Mar 27, 2021, 12:02:30 PM3/27/21
to TiddlyWiki
Thank you saq for this enhanced version of streams, it is clearly faster than the previous one.
I tried to use the swipe functionalities on a smartphone and they work great!
Maybe the only thing is, when swiping wouldn't it be better if the contextmenu position would remain the same as on the desktop version (under the node dot on the left)?
Thank you,

kebi

Saq Imtiaz

unread,
Mar 30, 2021, 1:45:07 PM3/30/21
to TiddlyWiki
As an experimental preview version of a plugin, this version of Streams is not for distribution and not intended for anything apart from testing. Amongst other expected changes that will happen before a stable release, there are two different edge case bugs that can lead to data loss in this version of the plugin. 

I had assumed this went without saying when a plugin is described as an experimental preview, but apparently not. Use at your own risk if you must, but please do not distribute to others. 

Saq Imtiaz

unread,
Apr 20, 2021, 11:59:55 AM4/20/21
to TiddlyWiki
Apologies for the delay with getting Streams 0.2 released, the last few months have been hectic.

I've found some time to resolve some of the outstanding issues and hope to get a new stable release of 0.2 out next week.

Any testing on this new interim version would be appreciated, just to help ensure that I haven't accidentally broken anything:

Changes since the last version posted:
  • Improved detection and error handling for whether codemirror is available
  • Removed the indent/unindent swipe behaviour in favour of triggering the context menu
  • Added a plugin priority field so other plugins can override/customize Streams tiddlers. Hopefully this means people will stop distributing modified version of Streams which are a real headache in terms of providing support.
  • Tweaked the CSS for the settings UI to use color palette entries where possible
  • Removed the option to double click to exit editing
  • Introduced the filters get-stream-root and get-stream-nodes to make it easier to work with Streams tiddlers.
For anyone including Streams in editions or otherwise distributing the plugin:
  • Please do not distribute modified versions of the plugin as this leads to my receiving support requests that are impossible to troubleshoot or manage. 
  • If you need to customize the plugin, first look at the documentation to see if there is already a facility for extending or tweaking the plugin that you can use. If in doubt, ask or request a hook. 
  • Otherwise, instead of modifying Streams please distribute Streams with your own plugin that overrides select tiddlers in Streams and implements the customization that you need.
Regards,
Saq


si

unread,
Apr 20, 2021, 2:35:01 PM4/20/21
to TiddlyWiki
Wow Saq thank you - I'm really looking forward to the next release!

One possible bug: I'm finding that the context menu hangs over the left side of the screen. Seeing this in both Brave and Firefox on Windows.

Saq Imtiaz

unread,
Apr 20, 2021, 2:45:40 PM4/20/21
to TiddlyWiki
Thanks @si, that should be fixed though you may need to clear your cache to see the updated version.

Mohammad Rahmani

unread,
Apr 21, 2021, 1:59:23 AM4/21/21
to tiddl...@googlegroups.com
Hi Saq,
 Many thanks for the update! I tested and it is considerably faster than the previous release!
Compatibility with color palettes is great!
The Setting panel is lovely! (While I would like to have official Settings tab work for all plugins but seems it only available if CodeMirror is installed! To clear my suggestion, I mean when a plugin has Settings, it can be appeared under official TW Settings tab See https://github.com/Jermolene/TiddlyWiki5/issues/5520)


Best wishes
Mohammad


--
You received this message because you are subscribed to the Google Groups "TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tiddlywiki+...@googlegroups.com.

Frédéric Demers

unread,
Apr 21, 2021, 8:20:13 AM4/21/21
to TiddlyWiki
I am a big fan user of Streams also; any advice on how to enable double-click edit also on the root tiddler's text?

I have tried the https://danielorodriguez.com/TW5-2click2edit/ plugin, but it interferes and "overrides" the Streams node-edit feature. That said, I have a work-around now that works (only) double-clicking the root tiddler's title or subtitle, but I have had more challenges enabling the feature on the root tiddler's text because the ViewTemplate in play seems to carry-down through the Streams nodes....

cheers,


Michael Wiktowy

unread,
Apr 22, 2021, 10:08:47 AM4/22/21
to TiddlyWiki
Thank you for your hard work, Saq. I am getting a lot of use out of streams.

I played around with get-steam-root on your site. As I understand it, the use of the relink plugin is recommended/necessary for doing stream-root tiddler renames and having everything work since the built-in rename doesn't seem to keep all the connections. Is that the case? The main functionality of streams works through a standard rename (with the renaming of all tags and list fields) but get-stream-root breaks because the "parent" fields don't get updated and returns the input node rather than the last valid parent found. For instance, given this example stream,

Parent
|node
||subnode
|||sub-sub-node

[[sub-sub-node]get-stream-root[]] will return "sub-sub-node" if "Parent" doesn't exist (because of deletion or rename). I would have expected it to go as far as it could and return "node" but maybe just returning itself is more useful from a diagnostic point of view.

I'm also playing around with the consequences and handling of cloning the stream-root to reuse streams for agendas/daily logs. get-stream-root doesn't detect that extra root (likely outside the scope of your intent) but there are other ways to detect if something isn't the original root ... I just need to figure out the new conditional/comparison filters to compare <currentTiddler> with <stream-list>field:parent.

/Mike

Saq Imtiaz

unread,
Apr 22, 2021, 5:17:40 PM4/22/21
to TiddlyWiki
Hi Mike,

Relink is indeed a necessary dependency for Streams to handle renaming of tiddlers. I wish there was a way to make it mandatory to have installed, if not installed automatically with Streams.

The get-stream-root[] filter is completely broken. Thank you for making me realize that. I wrote that in about 5 minutes at the end of a long day before posting this version.. I really shouldn't have. I am surprised it works at all! So as to not make the same mistake twice, I'll wait until tomorrow to push a new version.

One thought, what makes more sense: 

[[mytiddler]get-stream-root[]] or [get-stream-root[mytiddler]] ?
Note that with the suffix includeall, you can get all the intermediate tiddlers as well, starting with the root and ending with the tiddler you started at.. e.g.: [[mytiddler]get-stream-root:includeall[]]

This form makes me wonder if [get-stream-root[mytiddler]] is the way to go, so that the filter can only ever have one input title.

Regarding cloning a root tiddler, it will break some of the keyboard and drag and drop behaviour as well. If the desire is to be able to create a node structure easily for things you do frequently, the code and approach I posted for Arun above is probably the way to go rather than cloning tiddlers. If I am misunderstanding the use case, please do elaborate.

Regards,
Saq

Saq Imtiaz

unread,
Apr 23, 2021, 5:17:22 AM4/23/21
to TiddlyWiki
I've pushed an update with a rewritten version of the get-stream-root[] tiddler
Please let me know if that performs more so according to expectations.

In general, Streams expects the respective fields to have been updated when tiddlers are deleted or renamed.

Michael Wiktowy

unread,
Apr 24, 2021, 10:43:21 AM4/24/21
to TiddlyWiki
Hi Saq,

I checked out the new get-stream-root and it seems to deal with a missing parent tiddler correctly now. I am fine with installing relink ... it is a great plugin on its own and I'm not sure why I don't have in installed in all my tiddlywikis.

The specific use cases that I have for cloning parent nodes are Daily logs, Action item logs and Agendas. But thinking more about it, it almost seems like those need something like sub-streams where you could have a common linked stream structure with tiddler-specific sub-streams. I don't think the complexity is worth the gain. I think just a clone-stream button that will copy the existing structure to a new tiddler would be sufficient. That is something I could likely hack together given enough time ... dealing with title lists is not my forté but maybe I can reuse some of the results of my previous struggles.

The other automation that I want to figure out is how to best import unordered lists via copy and paste from other sources into streams as I am always bringing in lists from other places. Copying bulleted lists from LibreOffice and MSOffice products seems to copy the bullet characters so those could likely be cues to break a part the list in the proper way. I am not sure what copying a list from a webpage would do ... maybe they come with the <ul/li> tags.
  • Item one

  • item two

    • sub-item of two

      • sub-sub-item of two

  • item three

Copying from LibreOffice Writer gives the above and I think that matches what Word and Outlook give. I have no idea how to trigger that parsing action on pasting the text but maybe a keyboard shortcut or bullet dropdown option is doable.

/Mike

Saq Imtiaz

unread,
Apr 24, 2021, 10:56:37 AM4/24/21
to TiddlyWiki
@Mike if you can post a file with an example of a node structure you want to clone, I can help you figure a solution for it.

For pasting in lists for other places, try saving the node with alt+enter. By default it splits on \n\n though that is configurable in the settings.
This works for copying and pasting from a webpage in a web browser, though it doesn't respect hierarchy so is suitable for flat lists only.
 I have no idea about Word and it's I'll, haven't used them in about ten years.

I posted a proof of concept a while back for using Streams as an editor for lists in wikitext. There might be ideas useful to you in there as well.

Saq Imtiaz

unread,
Apr 24, 2021, 10:58:30 AM4/24/21
to TiddlyWiki
 Apologies for the typos, I'm on my phone this evening.

Jeronimo Minino

unread,
Jan 30, 2022, 12:44:02 AM1/30/22
to TiddlyWiki
Hi, Saq thank you very much for Streams.
Streams is really useful, and I am one who desires "... to be able to create a node structure easily for things I do frequently".
You mentioned in your post to Mike that  for this purpose:

   "... the code and approach I posted for Arun above is probably the way to go rather than cloning tiddlers."

If possible, could you please point me to where is the post which contains that mentioned approach?  I have sought repeatedly, but I don't seem to be able to find it.
Kind regards
Jero

arun babu

unread,
Jan 30, 2022, 2:06:29 AM1/30/22
to TiddlyWiki
Jero,

This might be what you are asking for.

Jeronimo Minino

unread,
Jan 30, 2022, 10:57:20 AM1/30/22
to TiddlyWiki
My question has been solved. The code to create a node structure is linked here: https://groups.google.com/g/tiddlywiki/c/1jTwdmq8cgI/m/0ca1Gb0yDgAJ . (Thank you very much, Arunn.)

Jeronimo Minino

unread,
Jan 30, 2022, 10:58:35 AM1/30/22
to TiddlyWiki
Thank you very much for the llink, Arunn.
Reply all
Reply to author
Forward
0 new messages