Hi @ellipse ... I'm new to these forums, but I ordered an F77 way back in 2017 (received in 2019). Anyway, to my professional-software-developer sensibilities, the firmware situation has always been a
bit of a mess. Don't get me wrong, what you've accomplished with finding overseas manufacturers, communicating with them, quality control, etc, is truly amazing and far beyond my abilities. But, software, firmware ... I have some notes I really hope you consider.
First, the
QMK-layout-files.zip you currently host is
nested (surely that's not intended):
$ unzip -Z QMK-layout-files.zip
Archive: QMK-layout-files.zip
Zip file size: 21286345 bytes, number of entries: 1
-rw-a-- 6.3 fat 21560059 bx defN 25-May-20 21:56 QMK-layout-files.zip
1 file, 21560059 bytes uncompressed, 21286171 bytes compressed: 1.3%
$ mkdir tmp
$ unzip QMK-layout-files.zip -d tmp/
Archive: QMK-layout-files.zip
inflating: tmp/QMK-layout-files.zip
$ unzip -Z tmp/QMK-layout-files.zip
Archive: tmp/QMK-layout-files.zip
Zip file size: 21560059 bytes, number of entries: 767
-rwxa-- 2.0 fat 1801 t- defN 24-Feb-12 17:12 QMK-layout-files/b104 r1 ansi.bat
-rwxa-- 2.0 fat 1808 t- defN 24-Feb-12 17:12 QMK-layout-files/b62 ansi HHKB 2U Backspace.bat
-rwxa-- 2.0 fat 1805 t- defN 24-Feb-12 17:12 QMK-layout-files/b62 ansi HHKB Split Backspace.bat
-rwxa-- 2.0 fat 1801 t- defN 24-Feb-12 17:12 QMK-layout-files/bssk r1 ansi.bat
-rwxa-- 2.0 fat 1804 t- defN 24-Feb-12 17:12 QMK-layout-files/bssk r2 ansi.bat
-rwxa-- 2.0 fat 1803 t- defN 24-Feb-12 17:12 QMK-layout-files/bssk r2 iso.bat
-rw-a-- 2.0 fat 4929 t- defN 23-Nov-07 05:00 QMK-layout-files/build.sh
-rwxa-- 2.0 fat 1804 t- defN 24-Feb-12 17:12 QMK-layout-files/f104 r1 non-shrunk ansi.bat
... lots of files ...
767 files, 38218027 bytes uncompressed, 21387443 bytes compressed: 44.0%
Instead of always updating
/wp-content/uploads/2020/07/QMK-layout-files.zip it really would be better to give each version a different dated name, and have a directory with all dated archives ever released available. This is very rare for commercial software, but very common for well-run open-source software projects. It just makes things less confusing for anyone trying to come in and figure out what's really changed, or confirm whether something used to work, etc.
On that note, you really should have separate manual pages for the firmware stuff (and other sections too). Having a huge rambling firmware section that covers different controllers and different firmware lines and different OSes, in the middle of a truly gigantic single-page manual, with misc links sprinkled throughout, is really not great. The manual is quite verbose, but pretty good, after the first part which spends 12+ paragraphs saying you really need to read the whole damn manual, and up until the firmware section, which is truly a
mess. (BTW you've got some older instructions for the pandrew utility in
Action step 7, bullet 7. Ideally that would just link to a common up-to-date page about the utility.)
More importantly, you should host mirrors of all the source code yourself (or on your own GitHub account, or GitLab, or SourceHut, or Codeberg, or anywhere reliable). This is quite evident since pandrew's git host has been down for a couple months. But even back in 2019 this bothered me (along with the web QMK configurator hosted at some ip address, presumably by some other third party). I think you mentioned back in 2019 that you merged pandrew's wip branch with later QMK and made some more builds and updated the "one zip file" ... you really should have your own git repo and branches to support the keyboards you sell (with tags for every build you ever released, ideally).
Continuing with @NathanA's nice Vial port/fork/whatever ... which is distributed as an archive (7z is fine), and by following the gist to build pandrew-util for linux (linked in the middle of the firmware section of the manual), I figured out that
build.sh constructs a source tree by checking out an old commit from vial-qmk and then applying a bunch of patches. This is what git is actually for! By the way, that build.sh is broken, and thus the gist instructions for compiling the linux pandrew-util are broken, because
http://purdea.ro/qmk_firmware is offline. Luckily I do have all needed commits/branches from pandrew's git host, due to customizing my layout in QMK source back in 2019/2020. Anyway... I suggest using git hosting and git branches, and link to reliable git mirrors from a dedicated firmware page on modelfkeyboards.com ... so my mild OCD doesn't turn me into the crazy guy in front of a corkboard unraveling the tangled web of where all the builds and patches are

FWIW I've mirrored pandrew's branches here:
https://github.com/ploxiln/qmk_firmwareand I've constructed nicer branch of commits version of NathanA's `build.sh` here:
https://github.com/ploxiln/vial-qmk(enough to build pandrew-util with all proper sources, but not quite including the actual final Vial layouts build part, maybe a TODO)
@NathanA while working on that I noticed the old upstream Vial CI found
VIAL_KEYBOARD_UID re-used across
f104_round_1_nonshrunk and
f104_round_1_shrunk, I'm not sure how much that really matters for these 2 boards, or if it's tricky to fix now that some people already flashed these? But here was my guess at a fix:
--- a/keyboards/xwhatsit/brand_new_model_f/f104_round_1_nonshrunk/wcass/config.h
+++ b/keyboards/xwhatsit/brand_new_model_f/f104_round_1_nonshrunk/wcass/config.h
@@ -19,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h"
-#define VIAL_KEYBOARD_UID {0x01, 0x41, 0x46, 0x4D, 0x04, 0x47, 0x09, 0x12}
+#define VIAL_KEYBOARD_UID {0x01, 0x40, 0x46, 0x4D, 0x04, 0x47, 0x09, 0x12}
/* USB Device descriptor parameter */
#define VENDOR_ID 0x1209
#define PRODUCT_ID 0x4704
All that said ... the Vial firmware and local utility is actually quite nice, thanks @NathanA