Plugin: Omnibus tiddlers

416 views
Skip to first unread message

clutterstack

unread,
Aug 3, 2020, 4:21:39 PM8/3/20
to TiddlyWiki
Hello all,

Following on from my quick adder plugin, I've built a demo of the reason I wanted the quick-adding capability.

I was pretty excited about this, and I guess I still am, although it converges quite a lot toward Streams and NotoWritey. It's called Omni, short for Omnibus, because each one collects tiddler "passengers". Here's what I said in the demo are its basic capabilities:

* Quickly add tiddlers, without needing to think of a title right away (or ever)
* Rearrange tiddlers within and between omnibuses by drag and drop
* Drag and drop to add tiddlers to the omnibus
* Add (existing) tags to tiddlers by drag and drop
* Set indentation levels or styles for tiddlers within the omnibus
* "Fold" and "unfold" tiddler transclusions

I see I Ieft out "edit tiddler text". You can see there's some overlap, although there are some slightly different decisions among Streams, NotoWritey, and Omni.

Demo and some notes are available at

Having used this for a bit, I have come to the conclusion it needs a major reworking under the hood, but there's a lot I will keep. Certainly, the fact that I know Streams is much better-written is due to my having climbed a learning curve writing this -- I can now read and understand Saq's code.

Anyway, although this is not a production-ready plugin, maybe someone will get an idea or snippet from this. The plugin repo is https://github.com/clutterstack/TW5-omni.

I plan to incorporate more ways to manipulate and assemble "omnibuses" into my wiki. My historical problem has been that I can collect a lot into a wiki but it's a bit of a black hole after that.

Cheers, Chris

Saq Imtiaz

unread,
Aug 3, 2020, 5:17:31 PM8/3/20
to TiddlyWiki
Despite the significant similarities, I am very pleased that you're working on this and sharing your progress. The TW community needs more active developers, and the best way to get started and learn is often by means of a passion project.

It is pretty normal to need a rewrite after creating the first proof of concept. Do no let that discourage you. Even Streams is in need over a thorough review and refactoring for efficiency and performance.

Do feel free to ask if you have any questions or difficulties moving forwards.
Cheers,

Saq

TW Tones

unread,
Aug 3, 2020, 7:02:52 PM8/3/20
to TiddlyWiki
Chris,

I can only echo Saq's comments. One of tiddlywiki's key strengths is its diversity. When it comes to productivity using tiddlywiki people often have different preferences and approaches and looking at your solution it definitely has some great approaches.

My initial review is it looks great, and has nice functionality.

I am happy to review and comment further if requested. 

My first comments are at a very high level.
  • Try and allow you solution to be installed in such a way it is somewhat independent, so people can combine your solution with others.
    • This means it can be used more often, as well as people discovering novel ways to make use of it.
  • If you can "expose" macro's and methods to increase utility and hackability it is always helpful.
  • I would avoid asking that any macro be placed in the tiddler like <<everything>>, as this forces the use of the text field when its unnecessary. 
    • Ideally I would suggest having a field such as object-type with a value of omnibus
    • Then a conditional viewTemplate that shows <<everything>> if object-type[omnibus]
    • If you do not want to force a tiddler to be only an omnibus you could look at a simple omnibus= hide/show field
In a tiddler tagged $:/tags/ViewTemplate
<$list filter="[all[current]object-type[omnibus]]" variable=nul>
   <
<everything>>
</$list>

Then one could have a button in the ViewToolbar to make a tiddler an omnibus
  • Set object-type field to omnibus
This would allow the text to have additional content, that displays above the omnibus and the tiddler to serve other functions.

Thanks for your contribution

Regards
TW Tones

clutterstack

unread,
Aug 3, 2020, 8:58:33 PM8/3/20
to TiddlyWiki
@Saq, I'm glad you are not bothered by the similarities. I didn't think you would be, given your track record of sharing on here. I tried in the first instance to incorporate most of the features of my half-baked Vue app to leverage TiddlyWiki in-place (since everything I wrote was intended to feed tiddlers to my wikis in the end), and not to peek too much at Streams etc., because I was curious to know where I would end up. Now I have something that functions fairly well according to my original intentions, but of course I can see ways to make it better, and I've started looking to see where your decisions were similar or different.

Thanks again for the encouragement!

clutterstack

unread,
Aug 3, 2020, 9:14:31 PM8/3/20
to TiddlyWiki
Thanks again TW Tones, for another thoughtful review and encouraging comments.
  • If you can "expose" macro's and methods to increase utility and hackability it is always helpful.
Yes, currently even without changing any code, the source would benefit from refactoring (and documenting).  It's pretty modular (and probably should be more modular), especially where it comes to layouts and exposed "buttons". Not sure if that's exactly what you mean, but there may also be macros that could be used independently.
  • I would avoid asking that any macro be placed in the tiddler like <<everything>>, as this forces the use of the text field when its unnecessary. 
    • Ideally I would suggest having a field such as object-type with a value of omnibus
    • Then a conditional viewTemplate that shows <<everything>> if object-type[omnibus]
    • If you do not want to force a tiddler to be only an omnibus you could look at a simple omnibus= hide/show field
In a tiddler tagged $:/tags/ViewTemplate
<$list filter="[all[current]object-type[omnibus]]" variable=nul>
   <
<everything>>
</$list>

Then one could have a button in the ViewToolbar to make a tiddler an omnibus
  • Set object-type field to omnibus
This would allow the text to have additional content, that displays above the omnibus and the tiddler to serve other functions.

You're reading my mind here (or rather I've seen some of this go by on the Group and I've identified it as interesting but haven't dived in yet). :) Thanks for the rundown.
 
Cheers,
Chris

Saq Imtiaz

unread,
Aug 4, 2020, 3:22:57 AM8/4/20
to TiddlyWiki
@clutterstack Streams is actually written in a rather verbose manner to make it easier to follow the code logic. The intention is for it to serve as a reference implementation for this kind of functionality. This has actually held me back from adding some features that would improve the writing experience, as it would add complexity. So the goal was to get it a version 1.0 and freeze that as the reference implementation and then add more features for later versions.

In my ideal scenario, someone builds on the examples provided by Streams to create something that makes Streams obsolete. ;)

Regarding re-writing and also just debugging complex and lengthy wikitext actions, it can be a bit of a pain when to debug when things don't go as planned.
In such situations you may find this useful:

You can use it to dump all variables as a table to the developer console from actions.
<$action-log/>
or
<$action-log $message="the name of the step being debugged"/>
More examples in that tiddler itself.

Cheers,
Saq

David Gifford

unread,
Aug 4, 2020, 8:40:33 AM8/4/20
to TiddlyWiki
I haven't had the chance to play with this, but I added it to the TiddlyWiki Toolmap here: https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM#z=QWdEBqaQUwlcIQVkU4TWTauS. Looks interesting!

clutterstack

unread,
Aug 4, 2020, 1:16:35 PM8/4/20
to TiddlyWiki
Haha, I noticed a lot of fabulous comments in the code. Yes, a good teaching repository. I learned a lot from searching for definitions and implementations in the TiddlyWiki repo, but Streams has a bunch of things I wanted to do in it (of course). With discipline and time, I would ideally check every one of my macros against Streams to look for better code patterns.

clutterstack

unread,
Aug 4, 2020, 1:17:18 PM8/4/20
to TiddlyWiki
@David Gifford

Hey, I made the big time! ;) Thanks.

David Gifford

unread,
Aug 4, 2020, 4:48:11 PM8/4/20
to TiddlyWiki
LOL

David Gifford

unread,
Oct 29, 2020, 9:58:10 AM10/29/20
to TiddlyWiki
WOW either this plugin has changed a lot, or I completely forgot seeing this in August. I just played with this and I really like it!

David Gifford

unread,
Oct 29, 2020, 10:51:47 AM10/29/20
to TiddlyWiki
Hi clutterstack

Here are my reactions:

1. That export tab is a stroke of genius! Time saver for exporting multiple-but-not-all tiddlers.
2. That drag tags tab is also a stroke of genius. I don't use tags that much, but that is a great idea.
3. It took me a while to figure out that effectively, the Another one bites the dust is the text field editor and the Title is the title editor. I am so used to seeing title on top and text below. And since they are headers, that reinforced my idea that the top was the tiddler title, which made me wonder what the title field was for. Not saying you should change anything, just letting you know of my confusion. Or perhaps replace Another one bites the dust with Text or something that identifies what it is for.
4. Not a fan of having an omnibus tag for omnibus tiddlers, since that might be confusing to viewers if I publish a file online, but I tend to hide the tags field in view mode anyway, so it won't affect me.
5. Amazing that it all comes toghether so well, expand/collapse individually or collectively, change editing options or show clean, drag to rearrange, add new in the place where you want it. Also the interface is not overly invasive/cluttered, and you can hide various elements as needed. Great, great job.
6. Could the three editing options icons be in the sidebar rather than at the top of the tiddler? I say this because for publishing a file online, whether as static html or as the TiddlyWiki file, those icons are still visible in the text and will confuse viewers for whom I just want them to focus on the final content produced. I realize you have it set up so each subtiddler has the icons for multilevel fine tuned controls, but for content creators who want to use it to produce content, the icons are a problem.

clutterstack

unread,
Oct 29, 2020, 3:32:58 PM10/29/20
to TiddlyWiki
Hi David,

Wow, I'd better have a look at how this plugin has changed since August. Thanks so much for your thoughtful feedback!

...It hasn't changed on github, but locally the Omnibus plugin has had a lot of work under the hood; maybe not as much superficially. As often happens, I had intended to update the public version frequently, but life has kept me busy and my own modifications rarely seem quite ready to share and document. "Another one bites the dust" was never meant to stay up. Heh. It's still there in my local wikis.

I prefer the title input field beneath the text, because if I'm adding within an omnibus I usually don't want to bother with a title -- and if I do, often the title comes to me only after I've written its contents. But the input fields should certainly identify themselves clearly. This layout is specified in my "Quick" plugin,

The current (my local) version has a tiddler tagged "$:/tags/ViewTemplate" to display the Omnibus stuff after the body on tiddlers tagged "omnibus", and I have not repaired the effect that has on folding of the whole tiddler (i.e. it doesn't fold). That's on my list of things to fix, but it's after a lot of other issues that get in the way of my using my wikis. There's a snowplow effect of annoyances that don't stop the plugin from functioning that I've really ignored -- as with the "omnibus" tag, which just hasn't bothered me enough to clean up...yet.

Incidentally, nearer the start of this odyssey I really wasn't sure to what extent I wanted to use tags vs. custom fields, in general. Did I want to use several categories of tags, and have some hidden? Did I want lots of custom fields? I've become much more comfortable with the idea of adding fields to tiddlers.

As for putting the omnibus-mode icons in the sidebar, certainly that must be doable. I do sometimes have more than one omni open, in different modes (one may be under intensive construction, another could be just for reading, and another a todo list). On my current wikis, only the top omnibus shows the mode-selection icons and sub-omnis follow its setting, so it's less cluttered. I can see the desirability of cleaning the interface for publishing read-only omnis. Maybe a view-mode toolbar button to toggle the mode icons? Then it could be per-tiddler.

Cheers,
Chris

David Gifford

unread,
Oct 29, 2020, 3:56:02 PM10/29/20
to TiddlyWiki
Thanks Chris! Look forward to seeing how this develops.

clutterstack

unread,
Nov 27, 2020, 3:02:19 PM11/27/20
to TiddlyWiki
In case anyone's interested, I have some updated versions of my plugins going at https://clutterstack.github.io/can-tw/workshop/.

It's a never-ending evolution, breaking and fixing and tweaking, but I thought I'd share an imperfect public wiki. The latest version of Omni addresses some of David Gifford's notes: hiding of the toolbar that changes modes, and more sensible placeholder text. I also fixed whole-tiddler folding for omnibuses, which I had broken and then neglected for a long time.

Cheers,
Chris

Mohammad

unread,
Nov 27, 2020, 11:47:04 PM11/27/20
to TiddlyWiki
Good progress! Nice tools!

I see new theme and palette in your new release. It would be great to announce them and lets interested user download them separately.

Thank you for sharing Chris!

--Mohammad

clutterstack

unread,
Nov 28, 2020, 3:33:10 PM11/28/20
to TiddlyWiki
Thanks, Mohammad!

I am not sure that my proto-theme is something that would be useful in its current state, but I do appreciate the importance of sharing visual options for TiddlyWiki. I admire your work on that front!

I'll have a look to understand a bit more what's involved in a usable theme.

Best,
Chris
Reply all
Reply to author
Forward
0 new messages