What shipped, and when.
Naoya is new — this changelog starts on the day the project did. Every entry below is a real milestone from the project’s own history, not backfilled copy. As new versions ship, they are added here with the date they actually happened.
Project scaffold: a Manifest V3 extension, four pure packages
Naoya starts as a monorepo: a Manifest V3 extension shell and four framework-free packages — capture, stitching, export and core domain logic — kept independent of Chrome's APIs so they can be tested without a browser.
The capture engine, proven end to end in a real Chrome
The core loop ships: scroll the page, capture each viewport, stitch the tiles into one image. An end-to-end suite runs the whole path in a real Chrome and checks the result against the page's own document height, catching the off-by-one that produces a missing or a duplicated tile.
Hostile pages, export formats, history and preferences
Fixed and sticky headers are hidden for the duration of a capture so they appear exactly once. Lazy-loaded images are forced to load before the shutter fires. Pages taller than the browser's canvas limit degrade to a multi-page PDF instead of crashing the tab. Captures export as PNG, JPEG or PDF, persist locally, and are browsable, re-exportable and deletable from a history view. Each failure mode has its own fixture page in the e2e suite, run in a real Chrome: bg-attachment-fixed, fixed-clipped, fixed-fullscreen, fixed-offset and fixed-top for sticky and fixed positioning, lazy-images for deferred loading, growing-page, shrinking-page and endless-page for a document height that changes mid-capture, inner-scroll and smooth-scroll for scroll containers other than the window, animations for running CSS animations, restore-completeness for putting the page back exactly as it was, and restricted-url for pages the extension cannot inject into at all.