"ts-missing" no longer work in 5.3.7 when transclude index of dictionary tiddler

I have dictionary tiddler listing holidays in this format

20250101:New Year Day
20250129:Chinese New Year (Year of Wood Snake)
20250214:Valentine's Day

And then I use this code to check date and pull up holiday

<$transclude tiddler="$:/Holidays" index=<<now YYYY0MM0DD>>><$fill $name="ts-missing">Oridinary Day</$fill></$transclude>

After updating to 5.3.7 it no longer works. I have change it to

<$transclude tiddler="$:/Holidays" index=<<now YYYY0MM0DD>>>Oridinary Day</$transclude>

as describe in Tiddlywiki site “If no slots values are specified within the $transclude widget then the entire content of the widget is used as the missing content.”

I have notice that in my code I use $transclude tiddler instead of $transclude $tiddler as show in https://tiddlywiki.com/#TranscludeWidget. Using $transclude $tiddler will transclude the entire dictionary though.

Everything works as I want now after I remove “ts-missing” bit. I just want to know if my code previously worked because it was a bug that has now been fixed?

Transclude widget has 2 different syntax: original syntax without “$” for parameter names, and modern syntax with a leading “$” in parameter names.
If you switch from original syntax to modern syntax, you must also use $index for the index parameter. This works as expected:

<$transclude
   $tiddler="$:/Holidays"
   $index=<<now YYYY0MM0DD>>>
<$fill $name="ts-missing">Oridinary Day</$fill>
</$transclude>

All this doesn’t explain the change in behavior of v5.3.7 though…

Fred

2 Likes

Thank you. After adding $ to in front of both tiddler and index I can use my old code with “ts-missing” as before.

Was there deprecation of original syntax in preparation for v5.4.0? Or it worked before because it was a bug that got fixed now? Very mysterious! Any way, I will go over my code and make it modern with $ now just in case. Thank you again!

It is very likely, that the legacy syntax may stay for some more time.

There has been a change with the transclude slot-handling. It may be a coincidence, that it stopped to work.


The new syntax was introduced, with v5.3.0 transclusion improvements. See: Legacy vs. Modern Mode section. The new mode has more parameters. All of them starting with $ prefix.

There was a discussion, if we need a completely new widget for the new transclusion mode. But using the $ to switch modes, we could keep the legacy mode in the same transclusion widget. That was a big win for existing code.

But as you experienced, there can be hickups too :confused:

2 Likes