Wow. I assumed that webapp-zip.js zipped files from the profile directory.  I didn't realize I had to do it twice.

The code works as it is (I guess the unzipped manifest is the one that gets used) but I agree that I should fix this.