The butlast[] operator is defined in this shadow tiddler:
Here's the javascript code from that tiddler:
exports.butlast = function(source,operator,options) {
var count = $tw.utils.getInt(operator.operand,1),
results = [];
source(function(tiddler,title) {
results.push(title);
});
return results.slice(0,-count);
};
The first line gets the operand value, defaulting to 1.
The next 4 lines copy the entire list of items into a results array
The last line uses the javascript slice() function to remove items from the results array and then return that array
Here's the documentation for the javascript slice() function:
Note the description of the "end" parameter:
Zero-based index before which to end extraction. slice extracts up to but not including end.
Thus, when you used butlast[0], the filter code invokes slice(0,-0),
i.e., "starting from the first item up to but not including the first item"
which results in no items being returned.
enjoy,
-e