I'm already ensuring processing isn't happening 'foreground' as everything is triggered via setTimeout - and everything belongs to the hidden window and not the user's application (foreground window)
Your comment on webworkers reminded me of something tho
My main processing loop is recursive (as it's DB access is async, it cannot just loop). Although that process is started with setTimeout, it's recursion means it's a long-running single process and it does seem that processes of that sort simply 'lock out' webkit from updating until they're done.
I changed self-referencing call to use setTimeout rathern than call the function directly - so now, each recursion is a separate thread and the old thread dies - even if the timeout 'delay' is 1ms, it's enough to allow webkit to refresh content, so my status message/progress bar updates as I'd like it to!
Downside is that it's probably slower - with a small delay between each step - but better the user see it working a bit longer than see nothing for 10+ seconds...
Thanks for the idea!