|
7 | 7 | - [x] chore: add example zip from vitest html artifact |
8 | 8 | - [x] `?url=` param for public URLs (GitHub artifact download requires auth, but pre-signed Azure blob URLs and S3 buckets work) |
9 | 9 | - [x] File picker button (not just drag-and-drop) — mobile/accessibility |
10 | | -- [ ] refactor: rework code |
11 | | - - deduplicate fflate import (script tag on line 6 is dead weight, only the ES module import is needed) |
12 | | - - share constants (CACHE_NAME, PREFIX) between index.html and sw.js instead of duplicating |
13 | | - - move MIME map to sw.js (it's serving the files, not the main thread) |
14 | | - - add try/catch around unzipSync for corrupt/non-zip files |
15 | | - - consider async unzip for large zips (fflate has async `unzip`) |
16 | | - - SW scope may break under subpath hosting |
17 | | -- [ ] "Load another zip" button — currently the drop zone hides permanently after first load, no way to swap without refresh |
| 10 | +- [x] refactor: remove dead fflate script tag, use single ESM import |
| 11 | +- [x] refactor: fix XSS in fetch error display (Preact escapes by default) |
| 12 | +- [x] refactor: parallelize cache.put() with Promise.all |
| 13 | +- [x] refactor: consider async unzip for large zips (fflate has async `unzip`) |
| 14 | +- [x] refactor: add try/catch around unzipSync for corrupt/non-zip files |
| 15 | +- [x] refactor: SW ready blocks event listeners — make non-blocking, show "registering…" status |
| 16 | +- [ ] refactor: share constants (CACHE_NAME, PREFIX) between index.html and sw.js |
| 17 | +- [ ] refactor: extract `<style>` block from index.html to style.css |
| 18 | +- [ ] refactor: subpath hosting — PREFIX is hardcoded to `/zipview/site/`; real fix derives it dynamically from location.pathname (also affects sw.js scope and startsWith check) |
| 19 | +- [x] setup e2e |
| 20 | + |
| 21 | +## Backlog |
| 22 | + |
18 | 23 | - [ ] Persist last zip in IndexedDB so refresh doesn't lose state |
19 | | -- [ ] Multi-zip / tabbed view — drop multiple zips, or auto-detect multiple dirs in one zip |
20 | | -- [ ] Publish as `npx zipview` |
21 | | -- [ ] Self-bootstrapping: embed SW in the static site output itself so the zip is directly openable |
| 24 | +- [ ] Provide CLI / API to package SPA into "index.html + sw.js" bundle |
| 25 | +- [ ] Integrate as Vitest html reporter two files mode |
0 commit comments