43 Commits
Author SHA1 Message Date
Lu Yifei a7c9e72b1c Merge origin/master and adapt specialized player integration
Integrate Packager 3.14.0, updated audio/render sources, preview isolation and escaping fixes. Adapt continuation temporaries and deserialized layer ordering, preserve frozen extension support, and align CI with master.
2026-11-08 14:28:15 +08:00
Lu Yifei f7da05fc15 feat(protection): rename renderer internals and isolate Target state
Jointly rename the bundled renderer, Drawable and Skin methods and internal fields.
Use private Target state keys with prototype branding and receiver-aware access
adapters, preserving SB3 data loading, serialization, cloning and native objects.

Cover reflection, optional access, clone restart and renderer property mapping.
Run the aggressive CPU gate in CI and lengthen the pen benchmark workload.
2026-11-08 14:08:03 +08:00
Lu Yifei adeaa2bafd feat(protection): add optional aggressive VM property renaming
Expose aggressiveRenaming in the website and Node API with a default-off setting.
Extend the seeded mapping to VM methods, internal fields and core block packages.
Scope thread status separately from external response status and reserve native
platform properties. Add differential and browser coverage for the new mode.
2026-11-08 14:07:19 +08:00
Thomas Weber 15ea088e21 Remove user-visible custom extension control
closes https://github.com/TurboWarp/packager/issues/1079
2026-10-23 22:54:04 -05:00
Thomas Weber f71ee52667 Remove cloud status instead of setting to false
Fixes https://github.com/TurboWarp/packager/issues/1076
2026-10-17 23:46:06 -05:00
Lu Yifei d5ebe6cb47 feat(protection): add program-specialized packager
Build offline specialized players from the matching Scratch VM, with audited linking, pruning and scheduling-property renaming across browser, Node and standalone outputs.
2026-09-25 19:47:33 +08:00
Lu Yifei 5dfdf70e4b feat: add compiled project protection and GitHub Pages deployment
- promote compiled packaging as a primary product feature
- add VM access and configurable JavaScript obfuscation
- support global debug protection and self-defending options
- package compiled artifacts with integrity verification
- update SB3C branding, documentation, and dependency URLs
- fix standalone builds and production service worker caching
- configure GitHub Pages deployment workflow
2026-08-05 20:51:52 +08:00
GarboMuffin 2f0010294f Fix packaging very large projects as HTML files in Chrome (#862)
Actually fixes https://github.com/TurboWarp/packager/issues/528

https://github.com/TurboWarp/packager/pull/861 fixed running large projects
in Chrome, but packaging still used string concatenation so it remained broken.
Now the concatenation part is done using TextEncoder & Uint8Arrays and a
template tag function to keep it readable.

This time I have actually tested it with a 1.0GB sb3.

Breaking Node API change: The data property returned by Packager#package() is
now always a Uint8Array instead of sometimes string and sometimes ArrayBuffer.
2024-05-23 23:47:40 -05:00
GarboMuffin e366607f15 New base85 encoding (#861)
Data is now decoded progressively into a big pre-allocated buffer.
This fixes errors in Chrome when the project gets really big.
Also fixed errors on big endian systems (probably).
Support added to unpackager already.
2024-05-23 17:18:25 -05:00
Muffin 38e657b6f6 Don't try to serialize or deserialize blobs in arrays
We don't have any
2023-08-19 12:12:44 -05:00
GarboMuffin f66199abd1 Simplify options.extensions to be just string[]
Due to serialization bugs, an array of objects is always saved, which will cause the extension list to not be read properly on future visits.
This is backwards incompatible, but really no one should be customizing this anyways.
2023-06-20 18:37:29 -05:00
GarboMuffin ab4cd87358 Parse custom extension URLs stored inside project 2022-11-12 18:09:28 -06:00
Joshpinto6 b53bdd22d5 Export/Import Packager Options (#481) 2022-07-31 16:37:59 -05:00
Thomas Weber 0e370f1218 Add list color option 2022-07-09 17:24:01 -05:00
GarboMuffin 9af69f2e90 Add scaffolding methods to get and set variables and lists (#432) 2022-06-22 16:07:03 -05:00
Thomas Weber bbace127dd Add some tests for getDefaultPackageNameFromFileName 2022-06-19 13:56:58 -05:00
Thomas Weber a2e1f3adcf Improve automatic window title logic
Fixes #436
2022-06-19 13:56:53 -05:00
Thomas Weber e23ad0c54e Remove node-blob dependency 2022-05-29 23:22:28 -05:00
Thomas Weber 5568998f74 Convert stage variables that start with ☁ to cloud variables 2021-12-28 16:04:39 -06:00
Thomas Weber 8179ae1d6f Remove Blob dependency from most of packager 2021-12-12 01:16:24 -06:00
Thomas Weber 4df408eb48 Refactor escapeXML to common 2021-12-11 20:37:46 -06:00
Thomas Weber 439c94e502 Add stageComments to project analysis 2021-11-22 18:24:00 -06:00
Thomas Weber cdda3f48a8 Support project.json being in subdirectory 2021-10-09 16:10:47 -05:00
Thomas Weber e58e6c6e54 Fix tests 2021-09-24 17:29:29 -05:00
Thomas Weber 3d62b9ea00 Don't remove special configuration comments 2021-09-15 18:48:58 -05:00
Thomas Weber dfb449e9f0 sb3 monitors doesn't exist sometimes
Project 5 does not contain monitors
This fixes an error when trying to package that project
2021-09-11 12:25:40 -05:00
Thomas Weber b61ccff165 Convert analysis.stageVariables to a list
We ony looked at the values anyways, so there's no reason for it to be a dict-like object
This fixes tests that used to rely on exact IDs, which are no longer guaranteed to be consistent
2021-09-08 15:47:06 -05:00
Thomas Weber 5518026e4c Fix tests 2021-09-07 16:54:52 -05:00
Thomas Weber 1904ebf830 Make sure invalid projects throw an error as soon as possible 2021-08-28 22:22:52 -05:00
GarboMuffin df9400a697 Separate "p4" from "packager", other refactoring (#138)
* Separate "p4" and "packager"

* Continue p4, packager, common refactoring

* Plist does not need to be a class

* Document what the `common` folder is for

* Fix typo in "uril-utils"

* Move more p4 JS to the p4 folder

* Move everything from packager/lib to just packager

* Fix imports in tests
2021-08-28 17:11:46 -05:00
Thomas Weber 160535a897 Improve downloadProject tests 2021-08-27 00:49:52 -05:00
Thomas Weber 91a065dd5f Remove unnecessary await 2021-08-26 19:32:52 -05:00
Thomas Weber 17ee458a58 Polyfill TextEncoder/Decoder for older versions of Node 2021-08-04 13:53:10 -05:00
Thomas Weber 7a1e0b854e Add base85 test 2021-08-04 13:51:02 -05:00
Thomas Weber 4b5a3ef7df Serialize should handle unexpected arrays 2021-07-10 18:26:18 -05:00
Thomas Weber 9a89b66235 Verify build ID of scaffolding assets
We don't trust GitHub to not cache these wrongly
2021-07-08 11:43:55 -05:00
Thomas Weber 650a2ffeec Clean up tests 2021-07-07 22:21:48 -05:00
Thomas Weber a287c19aba Write download-project tests 2021-07-07 20:46:37 -05:00
Thomas Weber 2134bbdaaf Refactor URL utils, write tests 2021-07-07 18:14:32 -05:00
Thomas Weber 5028d5d4d9 Easier way to load custom extensions 2021-07-01 21:59:08 -05:00
Thomas Weber 4cdda1858f Smarter localStorage serialization 2021-06-24 14:09:05 -05:00
Thomas Weber 3dd5390940 Better local storage merging 2021-06-24 14:08:59 -05:00
Thomas Weber 58fe62d911 Start writing tests 2021-06-24 14:08:58 -05:00