Yup, the issue with non-AJAX uploads being removed after a failed validation is an HTML thing. It's a security issue, to prevent malicious forms pre-filling a file input field with (say) '/etc/passwd', or any other sensitive local file, hiding that input on the form, and silently hardvesting your private files. There is no way of working round it, other than using AJAX uploading.
2 - that's a browser thing. It is possible with some modern browsers to upload when the form is submitted with AJAX, but unfortunately it doesn't work on some fairly major browsers (like IE and Safari). I did add some code earlier this year in the form JS submission method that does it, but I've disabled it for the moment, till I figure out a reliable way of knowing if the browser supports it, as otherwise uploaded files just get lost with no trace and no feedback.
3 - yeah, preventing that automatic preview opening is fairly high on my priority list to fix. I'll try and get it done this weekend.
4 - haven't experienced that but then, I don't do much testing on mobile for uploads, as it's not something our clients have needed as of yet. As with most Fabrik features, we put most of our effort into stuff we need, when developing for the clients who pay our bills.
5 - I'll take a look at that when I work on 3
6 - we definitely do have extensive code that should prevent the form being submitted until all uploads are complete. Our form JS has a "submit broker" ...
https://github.com/Fabrik/fabrik/blob/master/media/com_fabrik/js/form.js#L1370
... called during submit. The submit broker then calls 'onsubmit' for all elements, and in the fileupload JS, that checks to see if all files are uploaded:
https://github.com/Fabrik/fabrik/blob/master/plugins/fabrik_element/fileupload/fileupload.js#L763
... and if not, the submit broker will keep trying every 500ms ...
https://github.com/Fabrik/fabrik/blob/master/media/com_fabrik/js/form-submit.js#L58
If that isn't working, it usually means some other error is short circuiting the submission process.
However, it is of course possible that there's a problem with the way the upload element confirms that files are uploaded, so I'll test that. But take a look at the console in your browser's dev tools, see if there are any JS errors being reported during form load or submission.
-- hugh