Button actions can be subtle, especially when you are depending upon intermediate results *during* the processing of the actions.
Fortunately, there IS a solution to your problem:
You can get the results you want if you split the button processing into two parts:
(1) create the new tiddler, and
(2) set the contents, show the tiddler, and cleanup the temp
Part(1) of the processing is in the body of the $button widget.
Part(2) of the processing is done using the $button widget's "actions" param.
Although Part(1) is not invoked until the button is pressed, it is *parsed* when the $button widget is rendered.
However, because Part(2) is done via a separate "actions" param, it is not even *parsed* until the button is actually pressed.
As a result, Part(1) processing is completed before Part(2) is parsed AND invoked.
This allows Part(2) to use the contents of $:/temp/title that were set during Part (1).
Give this a try: