Some thinking an experiments. I miss the TWC For Each Tiddler macro, which the following comes closer to. Such changes could be added to a new widget, as the ;list widget is busy, similar to the list Widget such as "list-report Widget", permitting more than one value to be extracted from inside the filter.
On prerelease we now have a counter variable which allows the following;
<$list filter="[tag[Widgets]sort[title]]" counter=item>
<<item>>. <$link/><br>
</$list>
In the above you can see there are two variables available inside the list, the currentTiddler (or named variable) and now the named counter in this case item.
The thing is we use the title or currentTiddler interchangeably with only one output. We can addprefixes and generate new tiddler titles, extract a field but do not have access to the tiddler title we used to generate it. I was thinking what if we could assign the currentTiddler (result) to a variable in a filter making the currentTiddler available in the list/template.
<$list filter="[tag[Widgets]sort[title]var:varname[]] +[get[caption]else{!!title}]">
<<currentTiddler>> <<varname>><br>
</$list>
OR
<$list filter="[tag[Widgets]sort[title]] :var:description{!!description}] +[get[caption]else{!!title}]">
<<currentTiddler>> - <<description>> <br>
</$list>
In the Above cases for each iteration of the list the currentTiddler would be the caption or title, but varname would contain the original tiddler title, keeping in mind you may not see it if the given tiddler is eliminated from the output.
Basically for each iteration of the first run above the output title will be stored in varname and passed on to the next run.
If this could be done more than once a lot could be extracted from one list.
Using counter
You could actually use the counter (less 1) as the select value in a set statement, to turn the counter into a reference to a tiddler.
<$set name=widget-list filter="[tag[Widgets]sort[title]]">
<$list filter="[enlist<widget-list>]" counter=item>
<<item>>. <$link/> {{!!caption}}
''Use set select with filter=<<widget-list>> here!''<br>
</$list>
</$set>