I reported these as bugs, but thought I'd post them here as well. Please correct me if I'm wrong:
a) In "installApp I", step 3, the comma operator on the 2nd and 3rd lines is unnecessary and confusing,
scope.buttonText = "Install",
scope.installed = false,
They should be semicolons:
scope.buttonText = "Install";
scope.installed = false;
b) The main.css defines ".btn-downloaded" but not ".btn-active"; perhaps the latter was intended?
Even if I tweak the .css, the behavior is not quite right, perhaps because element.toggleClass() toggles the install-app element, not the button element. What's the point of that?