Discuss Scratch

MyScratchedAccount
Scratcher
1000+ posts

Creating *Unsandboxed* extensions for Scratch 3.0

know0your0true0color wrote:

showierdata9978 wrote:

This got stickyed to O-O
WAIT THIS TOO JRJHRNJUJRNR
I reported it to be stickied

Links:

Give An Internet - - My Profile - My Best Project Of The Week - Am I Online? - on wiki, go to my talk

Scratched//Boy/Him/He////Likes Apples//Coder //
—-
Go to Codin[co
GXI__1
Scratcher
65 posts

Creating *Unsandboxed* extensions for Scratch 3.0

cool

My browser / operating system: Windows NT 10.0, Chrome 102.0.0.0, No Flash version detected

cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

.

Last edited by cuttlfish59 (March 31, 2023 23:00:11)



Sincerely
cuttlfish59
showierdata9978
Scratcher
100+ posts

Creating *Unsandboxed* extensions for Scratch 3.0

cuttlfish59 wrote:

Can somebody tell me step by step how to load unsandboxed addons? I'm not familiar with javascript, so most of this thread doesn't make sense to me.

You might want to look at the unsandboxed extension directory, and turbowarp unsandboxed exts

High School Sophomore

I DO NOT CHECK SCRATCH UNLESS I AM EXTREMELY BOARD.
You can find me in a lot of places under the same username


Error83
Scratcher
52 posts

Creating *Unsandboxed* extensions for Scratch 3.0

If anyone can make a log in log out cloud extension I would have a happy life lmao.

Who is hyped for the NEXUS PROJECT?

I am.
Don't spread hate.
Be kind. Children are watching.
cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

Error83 wrote:

If anyone can make a log in log out cloud extension I would have a happy life lmao.
It wouldn't be hard to make if you had an extension that allowed cloud lists or had a separate server.


Sincerely
cuttlfish59
showierdata9978
Scratcher
100+ posts

Creating *Unsandboxed* extensions for Scratch 3.0

cuttlfish59 wrote:

Error83 wrote:

If anyone can make a log in log out cloud extension I would have a happy life lmao.
It wouldn't be hard to make if you had an extension that allowed cloud lists or had a separate server.

cloudlink be like:

High School Sophomore

I DO NOT CHECK SCRATCH UNLESS I AM EXTREMELY BOARD.
You can find me in a lot of places under the same username


cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

showierdata9978 wrote:

cuttlfish59 wrote:

Error83 wrote:

If anyone can make a log in log out cloud extension I would have a happy life lmao.
It wouldn't be hard to make if you had an extension that allowed cloud lists or had a separate server.

cloudlink be like:
Does Cloudlink have list capability?


Sincerely
cuttlfish59
showierdata9978
Scratcher
100+ posts

Creating *Unsandboxed* extensions for Scratch 3.0

cuttlfish59 wrote:

showierdata9978 wrote:

cuttlfish59 wrote:

Error83 wrote:

If anyone can make a log in log out cloud extension I would have a happy life lmao.
It wouldn't be hard to make if you had an extension that allowed cloud lists or had a separate server.

cloudlink be like:
Does Cloudlink have list capability?
yeah, its json

High School Sophomore

I DO NOT CHECK SCRATCH UNLESS I AM EXTREMELY BOARD.
You can find me in a lot of places under the same username


cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

showierdata9978 wrote:

cuttlfish59 wrote:

showierdata9978 wrote:

cuttlfish59 wrote:

Error83 wrote:

If anyone can make a log in log out cloud extension I would have a happy life lmao.
It wouldn't be hard to make if you had an extension that allowed cloud lists or had a separate server.

cloudlink be like:
Does Cloudlink have list capability?
yeah, its json
WHAT!?! I'll have to start using it more.


Sincerely
cuttlfish59
RadTrentasei
New to Scratch
3 posts

Creating *Unsandboxed* extensions for Scratch 3.0

Hi there,
I am building an extension following the Turbbowarp documentation and I've got some doubts. The extension is working OK with Turbowarp.
How to actually port it to scratch?
I know there is not button to load an unsandboxed extention, so what would be the procedure? I am expecting to clone the Scratch-vm, add the extension in the folder and then what?

I am not yet considering to upload as ‘official’ release. I am targeting for now a custom scratch deployment with the extension.

Thanks

Last edited by RadTrentasei (April 14, 2023 08:59:40)

cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

RadTrentasei wrote:

Hi there,
I am building an extension following the Turbbowarp documentation and I've got some doubts. The extension is working OK with Turbowarp.
How to actually port it to scratch?
I know there is not button to load an unsandboxed extention, so what would be the procedure? I am expecting to clone the Scratch-vm, add the extension in the folder and then what?

I am not yet considering to upload as ‘official’ release. I am targeting for now a custom scratch deployment with the extension.

Thanks

I don't think you can upload unsandboxed extensions to scratch. However, you could possibly use the Turbowarp Packager to generate a file. If that doesn't work, there might be a way to just generate a link to it. Please tell me what works because I am trying to make a project that uses unsandboxed extensions so if we could find a way that would be great.


Sincerely
cuttlfish59
RadTrentasei
New to Scratch
3 posts

Creating *Unsandboxed* extensions for Scratch 3.0

Yes, Scratch does not have the option to load custom extensions. As you have said Turbowarp does and indeed we are working on the development using Turbowarp and following the documentation. As I've said I am able already to load it and works -almost- perfectly. I say almost because if I load it from Safari it does not load it, while from chrome and the desktop app works perfectly. This is a minor problem for me.

I have no problems submitting the extension via Turbowarp repository. The only thing is that it will be a Turbowarp extension, not a Scratch one right?
I am just curious on how to at least test it with Scracth.

I know there is a documentation now, but I could not find a way to create a development environment for Scratch.

EDIT: I've tried the packager but, if I am not wrong, is not doing what I need. I need to export a file with the extension loaded but with still access to the block palette and being able to modify the algorithm. The way the packager works is by returning the ‘outcome’ of the algorithm. I am happy to be wrong here .

Last edited by RadTrentasei (April 18, 2023 15:56:45)

cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

RadTrentasei wrote:

Yes, Scratch does not have the option to load custom extensions. As you have said Turbowarp does and indeed we are working on the development using Turbowarp and following the documentation. As I've said I am able already to load it and works -almost- perfectly. I say almost because if I load it from Safari it does not load it, while from chrome and the desktop app works perfectly. This is a minor problem for me.

I have no problems submitting the extension via Turbowarp repository. The only thing is that it will be a Turbowarp extension, not a Scratch one right?
I am just curious on how to at least test it with Scracth.

I know there is a documentation now, but I could not find a way to create a development environment for Scratch.

EDIT: I've tried the packager but, if I am not wrong, is not doing what I need. I need to export a file with the extension loaded but with still access to the block palette and being able to modify the algorithm. The way the packager works is by returning the ‘outcome’ of the algorithm. I am happy to be wrong here .
I tried to find a link generator and did (I think) but it was blocked by parental controls. You might be able to just put the HTML code from the packager into the instructions and copy-paste into the website using developer tools.

PS. Just wondering, what does your extension do?


Sincerely
cuttlfish59
RadTrentasei
New to Scratch
3 posts

Creating *Unsandboxed* extensions for Scratch 3.0

It's a very simple extension TBH. I work for a networking company and it's been many years that I do volunteering activities with scratch. The idea now is to build an extension that interacts with real (actually virtual) networking devices to start introducing networking concepts to children.

Actually what I am doing is consuming API from an external component that takes of all the stuff that come when accessing network devices. This incredibly simplifies the Scratch extension.

I don't want to go too much OT so I will stop here . Long story short I am looking at ways on how to ‘distribute’ the extension in case the Turbowarp does not accepts the PR.
cuttlfish59
Scratcher
26 posts

Creating *Unsandboxed* extensions for Scratch 3.0

RadTrentasei wrote:

It's a very simple extension TBH. I work for a networking company and it's been many years that I do volunteering activities with scratch. The idea now is to build an extension that interacts with real (actually virtual) networking devices to start introducing networking concepts to children.

Actually what I am doing is consuming API from an external component that takes of all the stuff that come when accessing network devices. This incredibly simplifies the Scratch extension.

I don't want to go too much OT so I will stop here . Long story short I am looking at ways on how to ‘distribute’ the extension in case the Turbowarp does not accepts the PR.
Cool. I wish I knew JavaScript so that I could make unsandboxed extensions.


Sincerely
cuttlfish59
Roblox888i
Scratcher
1000+ posts

Creating *Unsandboxed* extensions for Scratch 3.0

How do i make my own extenstion on a managed chromebook with github blocked.

Below this little line ^ is my signature, you can edit it by going to scratch.mit.edu/discuss/settings/YOURUSERHERE/ also highlight a part and do CNTRL+SHIFT+DOWN to scroll down.



Roblox888i
===========================================================================================================
| Ocular Profile | Scratch Profile | ScratchStats Profile | Github Profile |
=================================
| | Scratch Wiki Profile | |
===========================================================================================================


REST OF SIGNATURE NOT DONE
DIEGODIVINOMAESTRO
Scratcher
500+ posts

Creating *Unsandboxed* extensions for Scratch 3.0

Hello, if anyone wants to make an extension I could be the designer. I'm a designer and I can help you

AzulAlt
Scratcher
13 posts

Creating *Unsandboxed* extensions for Scratch 3.0

showierdata9978 wrote:

About unsandboxed extensions
unsandboxed extensions are scratch extensions that have full access to the scratch VM

benifits to unsandboxed mode

  1. Your extension has access to the scratch VM
  2. Your extension runs faster (usually)
  3. You have access to all browser api's


Some Examples
Everything in Scratch 3.0 *Unsandboxed* Extension Directory


The Guide itself

Precursor
The Creating extensions for Scratch 3.0 thread by NitroCipher is a precursor to this thread, and shows how to make scratch extentons that are sandboxed. but also does into detail on how to set your environment and extension class up


How to load unsandboxed extentions
        // major credit to CST for this (I did modify it some to allow sandboxed if you only want the speed boost (:
	const extensionClass = YourExt;
	if (Scratch) {
		if (Scratch.extensions.unsandboxed) {
			Scratch.extensions.register(new extensionClass(Scratch.vm));
		} else {
                        // comment out if you use VM things
			Scratch.extensions.register(new extensionClass());
                        // throw new Error("YourExt cannot run in sandboxed mode.");
		} 
	} else if (globalThis.vm) {
		// Support loading the extension "the old way"
		// (running the code in something like the browser console
		// or E羊icques' load_plugin URL parameter)
		const extensionInstance = new extensionClass(globalThis.vm);
		const serviceName = globalThis.vm.extensionManager._registerInternalExtension(
			extensionInstance
		);
		globalThis.vm.extensionManager._loadedExtensions.set(
			extensionInstance.getInfo().id, serviceName
		); 
	} else {
		throw new Error("Scratch Not detected"); // no idea if there is anything else i can do here
	};


Scratch VM Docs
There Is currently documentation of the Scratch VM, but it uses jsdoc. The Docs are not helpful. The url is here
Warning: it is on github pages, which is blocked by most schools

another good source of documentation is Turbowarp's type repo . Its helpful because you can load it into your TypeScript aware IDE and see all the vm's types and internals in intelisense.

Browser API Docs

The Most trusted Browser API docs are made by Mozilla. (the company that owns firefox). here are some useful links for making scratch extentions.

  1. https://developer.mozilla.org/en-US/docs/Web/API
  2. https://developer.mozilla.org/en-US/docs/Web/JavaScript
  3. https://developer.mozilla.org/en-US/docs/Web

The name of the web documentation is mdn (mozilla developer network) web docs. it has a github and a website.


FAQ


  1. jaxon_baxon wrote:

    this is incredibly interesting, unsandboxed extensions seem really useful. why haven't i heard of this??

    Because before a few weeks ago, you had to use internal Scratch.extentions.* methods
so we could do blocks like
<sprite [ sprite1 ] is real? :: extension>
add [sprite v] named [ sprite2] :: extension
when something happends :: extension hat
and more other things?

Last edited by AzulAlt (March 24, 2024 17:59:15)


This is AzulSignature (AzulAlt's Signature) i make games. Also Games in other websites like The Random Snake Game!

Someone wrote:

fake quotes!
And also scratchblocks blocks.
when u respond :: sensing hat
make [me v] say [yes] :: looks
when <everyone questions why i said (thing i said :: looks) :: #fff000> :: control{
say [yes]
make [everyone v] say [huh] :: looks
ok its end :: control
game_master81
Scratcher
1 post

Creating *Unsandboxed* extensions for Scratch 3.0

so i think this is good

Powered by DjangoBB