There is a new page in the docs where you can download a complete .hex file that can be flashed with the Particle Debugger or any compatible SWD/JTAG programmer to set a device to a known state.
For Gen 3 the hex file includes the bootloader, SoftDevice, UICR bytes, Device OS, and Tinker. For Tracker it includes Tracker Edge instead of Tinker.
For Gen 2 the hex file includes the bootloader, Device OS, and Tinker. This can recover a Gen 2 device in Dim D7.
I created images for 3.0.0-rc.1, 2.0.1, 1.5.2, and 1.4.4. You can upgrade or downgrade with them. Using the openocd that’s included with Particle Workbench and the Particle Debugger it takes about 60 seconds.
https://docs.particle.io/reference/developer-tools/jtag/#restore-binaries
For Gen 3 devices, if you upgrade the Particle Debugger firmware (instructions here), you don’t need Workbench at all. You can drag and drop the .hex file on the DAPLINK volume the debugger creates. It works on Mac, Windows, and Linux. It’s pretty wild.
Don’t have a computer handy? There’s an experimental web page now that works with Chrome and Opera on Android phones that support USB OTG. With the Particle debugger plugged into a OTG cable you can completely restore a Gen 3 device. Also works on Chromebooks. It takes about 3 minutes. (iPhones and iPads don’t support USB OTG so that won’t be possible.)
https://docs.particle.io/device-restore/
Is this too slow for you? Get yourself a Segger J-Link. You can upgrade or downgrade all of the binaries on a Gen 3 nRF52 MCU using nrfjprog in 7 seconds. Yes, 7 seconds to upgrade or downgrade a Gen 3 device by SWD.
What if you wanted to program your own user firmware binary instead of Tinker? There’s now a web-based tool that takes a device restore .hex file and replaces Tinker with your own user firmware binary. This would be great for manufacturing. And it’s entirely browser-based - it rebuilds a new .hex file entirely within your browser and doesn’t send your .bin file anywhere.
https://docs.particle.io/hex-generator/