The installer used to offer exactly one firmware: whatever main last built. Then a release shipped a defect that made the two 2.8-inch boards untouchable, and the only thing anyone could install was the broken one.
A page that can only install the newest build has no way back from a bad release, which is precisely the moment somebody needs one.
So it grew a version selector. Four things about it are load-bearing.
The bytes are copied, never rebuilt. What is served for an old version is what was published as that version, so an old version cannot quietly become a new build of old source, and a tag that no longer compiles today is still installable.
They are copied rather than linked because of CORS. The obvious implementation points the manifest at the release asset URLs. That does not work: the asset host sends no Access-Control-Allow-Origin header at either hop, so the browser's fetch is blocked after the board is connected and the flash has already begun. Serving the bytes from the page's own origin removes the question.
The version list belongs to the board, not the page. A board added in a later release has no earlier build, and switching to it falls back to latest rather than leaving a stale manifest armed.
A release missing any of its four parts is skipped entirely rather than half-published, because a partial image fails after the erase has started.
Ankush Pandit
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.