Downsides:
- I only support unzipped epubs
- it’s not been battle-tested on esoteric ebooks
- I’m obviously wasting time reinventing the wheel

Upside:
- it’s simple enough that I know it back to front
- I fully understand the resource usage
- all JS-based logic, so will work even on Windows