Repository navigation
Conversation
A project could carry a file of a part no section owns under the name the scan, reference or image is saved as. Writing it after the session's own files let it win in the archive. Kept files now go in only under names nothing else in the session writes.
A ?open= link read the whole response into memory whatever its size, so a link could fill the tab or hand a huge file to a parser. The stated length is checked first and the body is read in pieces, stopping with an error once it passes 1 GiB.
Images were decoded on the page's thread whatever size their header declared, so a small file could claim billions of pixels and freeze or crash the tab. The PNG or JPEG header is now read first, and an image of more than 200 million pixels is refused with a message saying why.
The detect_edges command waited on a store subscription that only ended when the edge version changed, so a detection that never finished, or whose image was replaced, left the listener on the store. The wait now also ends when the image changes and when the command's signal aborts, removing the listener either way.
The rubber band listened only for pointerup, so a touch or pen gesture the browser cancelled left its listeners and box on the page, and the next release anywhere made a selection. A pointercancel now removes the listeners and the box without selecting.
Every page wrote a checkpoint slot with a copy of its source files, and only an explicit Discard ever removed one, so storage grew with each session and saved work was offered back as recovery. A page now removes its own slot when the project is saved, removes the slot it restored from, and on opening lets go of checkpoints older than 14 days or beyond the newest 10.
58 of 65 tasks
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The app, recovery and 2D view items from #34, rebased on 0.9.3, one commit per item, each with a regression test that fails without it:
Notes:
e2e-recoverynow leaves unsaved work before its final reload.?open=checks Content-Length and streams the body with a 1 GiB cap.Build:
npm run buildpasses.npm test(3107),npm --prefix mcp test(127), the plugin boundary and units checks, andnpm run e2e:ciall pass.