Even though the $set filter is returning only one title, that title contains spaces. As a result, the value contained in theTaggedTiddler is enclosed in doubled square brackets. Then, in your “diagnostic” output
theTaggedTiddler is <<theTaggedTiddler>><br>
the contents of theTaggedTiddler are being automatically rendered as a link so the doubled square brackets don’t appear.
To see what theTaggedTiddler variable actually contains, use:
theTaggedTiddler is <$text text=<<theTaggedTiddler>>/>
which is rendered as:
theTaggedTiddler is [[A Gentle Guide to TiddlyWiki]]
There are two ways to address this. You can either add a select=0 parameter to the $set widget to return the first result without the doubled-square brackets:
<$set name="theTaggedTiddler" filter="[tag[HelloThere]nth[1]get[title]]" select=0>
or, use a $let widget with a filtered transclusion, which automatically returns only the first result (again, without the doubled-square brackets):
<$let theTaggedTiddler={{{ [tag[HelloThere]nth[1]get[title]] }}}>
Also, note that get[title] is redundant in all of the above filters, as [tag[HelloThere]nth[1]] is already producing a tiddler title as it’s output. In addition, if you use a $let widget, then the nth[1] is also not needed, as $let automatically returns the first result.
Thus, the cleanest syntax to use is:
<$let theTaggedTiddler={{{ [tag[HelloThere]] }}}>
enjoy,
-e