Discuss Scratch

Heathercat123
Scratcher
23 posts

Website development

chipmunkmc wrote:

Also if you know how to make my scratch-paint properly link with my scratch-gui (and perhaps other scratch-editor package forks), and have all of that link w/ scratch-www, without causing weird NPM issues, please let me know!
Sorry I'm basically asking for free work here, I'm just sort of stuck on that…

I'll see what I can do after I'm done decompiling the 2.0 online editor (even if we decide to implement 3.0 compatibility on the server and not the frontend or something, we still have to change the colors to match the rest of the website and fix hard-coded urls in the embed player, and binary patching is kinda hacky)

Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
Heathercat123
Scratcher
23 posts

Website development

Also, I noticed that the WWW is currently broken. That's my fault, I moved the urls that correspond to hosts on the real Scratch website to a new /hosts path:

In bin/set-env.sh, this:
export API_HOST=/api
export ASSET_HOST=/assets
export BACKPACK_HOST=/backpack
export PROJECT_HOST=/projectshost
export STATIC_HOST=/uploads

becomes the following:
export API_HOST=/hosts/api
export ASSET_HOST=/hosts/assets
export BACKPACK_HOST=/hosts/backpack
export CLOUDDATA_HOST=/hosts/clouddata
export PROJECT_HOST=/hosts/projects
export STATIC_HOST=/hosts/uploads


Also, when Codeberg gets back up, I'll add support for the 2.0 media libraries, which require their assets to be in APIClone's assets directory. As such, to make it work, you should copy every asset from the Scratch 2.0 Offline Editor's /media directory to /files/assets.

Last edited by Heathercat123 (March 4, 2026 20:58:23)


Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
Heathercat123
Scratcher
23 posts

Website development

chipmunkmc wrote:

Also if you know how to make my scratch-paint properly link with my scratch-gui (and perhaps other scratch-editor package forks), and have all of that link w/ scratch-www, without causing weird NPM issues, please let me know!


I managed to link scratch-paint and scratch-editor's scratch-gui using npm install –save ../../../scratch-paint, but when I open the paint editor, it just crashes

Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
chipmunkmc
Scratch Team
35 posts

Website development

Well you see, I've been neglecting to re-compile scratch-www until I get the forks working properly. I mean I could just revert it to vanilla scratch-gui but that's not ideal…

https://max.chipmunk.land/
hi, this is my signature!
Heathercat123
Scratcher
23 posts

Website development

CHIPMUNK I'M A VERIFIED TEACHED AS OF MARCH 2ND (it only took them 5 days ToT)

Attachments:
attachment my classes.png (107.1 KB)


Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
chipmunkmc
Scratch Team
35 posts

Website development

Heathercat123 wrote:

CHIPMUNK I'M A VERIFIED TEACHED AS OF MARCH 2ND (it only took them 5 days ToT)

Yoooo that's epic!!! Also I just realized attachments can only be viewed while logged in :S…

Last edited by chipmunkmc (March 6, 2026 03:30:05)


https://max.chipmunk.land/
hi, this is my signature!
chipmunkmc
Scratch Team
35 posts

Website development

I would like to note that the age shown on my profile's admin panel is inaccurate. Perhaps you can do something like `datetime.datetime.now().date() - datetime.date(1970, 1, 1)`, where the second operand is the birth date?

https://max.chipmunk.land/
hi, this is my signature!
chipmunkmc
Scratch Team
35 posts

Website development

One last thing: I just adjusted the nginx config a bit, will update scratch-gui-tw and scratchschools later.

https://max.chipmunk.land/
hi, this is my signature!
chipmunkmc
Scratch Team
35 posts

Website development

Ok for real this time this is the last thing… Is it just me or do anons get the admin panel HTML?

https://max.chipmunk.land/
hi, this is my signature!
Heathercat123
Scratcher
23 posts

Website development

chipmunkmc wrote:

Ok for real this time this is the last thing… Is it just me or do anons get the admin panel HTML?

I think it's just you, except for the admin panel iframe used for the WWW project and studio pages, I kinda forgot to make these admin-only.

Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
chipmunkmc
Scratch Team
35 posts

Website development

Heathercat123 wrote:

I think it's just you, except for the admin panel iframe used for the WWW project and studio pages, I kinda forgot to make these admin-only.

My bad, I went to https://tw.scr.chipmunk.land/hosts/ after having logged in from another subdomain, forgetting that sessions are shared between them…

https://max.chipmunk.land/
hi, this is my signature!
chipmunkmc
Scratch Team
35 posts

Website development

I'm sorry, I think I was wrong about the age thing. I forgot Scratch doesn't use full dates, and it turns out I had the wrong month set on mine anyway… Now I can't update my profile from the admin panel since I have to set a Featured project label though.

https://max.chipmunk.land/
hi, this is my signature!
Heathercat123
Scratcher
23 posts

Website development

chipmunkmc wrote:

I'm sorry, I think I was wrong about the age thing. I forgot Scratch doesn't use full dates, and it turns out I had the wrong month set on mine anyway…

Ah… it's okay

chipmunkmc wrote:

Now I can't update my profile from the admin panel since I have to set a Featured project label though.

Oops, my bad! Lemme fix that rq.

Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
chipmunkmc
Scratch Team
35 posts

Website development

Is it intentional that /ngapi/ is not under /hosts/? I mean it's not part of the current Scratch API nor a subdomain (unsure if this will change), but at the same time it's not part of scratchr2 either.
Also, how should I patch it to fix project pages? Sorry, I'm too lazy to figure it out.

https://max.chipmunk.land/
hi, this is my signature!
Heathercat123
Scratcher
23 posts

Website development

chipmunkmc wrote:

Is it intentional that /ngapi/ is not under /hosts/? I mean it's not part of the current Scratch API nor a subdomain (unsure if this will change), but at the same time it's not part of scratchr2 either.

It's intentional.

chipmunkmc wrote:

Also, how should I patch it to fix project pages? Sorry, I'm too lazy to figure it out.

I kinda forgot sooo here's mine:

Attachments:
attachment index-CePi2HhN.js (276.5 KB)


Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
max_teacher
Scratcher
2 posts

Website development

Thanks! Also I cannot comment from this new account due to this error:
2026-03-07 22:58:55,303 ERROR    Internal Server Error: /site-api/comments/user/chipmunkmc/add/
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
    raise exc_info[1]
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = await get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/asgiref/sync.py", line 489, in thread_handler
    raise exc_info[1]
  File "/usr/lib/python3.12/site-packages/django/core/handlers/base.py", line 253, in _get_response_async
    response = await wrapped_callback(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/asgiref/sync.py", line 439, in __call__
    ret = await asyncio.shield(exec_coro)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/asgiref/current_thread_executor.py", line 40, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/asgiref/sync.py", line 493, in thread_handler
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/apiclone/base_comments/views.py", line 391, in R2PostCommentView
    status, error = BaseComment.is_comment_okay(request.user, reqjson['content'], same_rate_limit)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/apiclone/base_comments/models.py", line 113, in is_comment_okay
    last_comment = last_comment[len(last_comment) - 1]
                   ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/db/models/query.py", line 431, in __getitem__
    raise ValueError("Negative indexing is not supported.")
ValueError: Negative indexing is not supported.

Also I see this in messages:
PLACEHOLDER: max_teacher did a userjoin. 9:59 p.m.
Heathercat123
Scratcher
23 posts

Website development

max_teacher wrote:

Thanks! Also I cannot comment from this new account due to this error: -snip-

Whoops, I accidentally made it check if the QuerySet.exists() function exists instead of calling it, sorry! This should be fixed in the latest commit.

max_teacher wrote:

PLACEHOLDER: max_teacher did a userjoin. 9:59 p.m.

The code for checking if the user is on r2 was really weak on the notifications page, this should be fixed too. (According to scratchr2_translations, Scratch 2.0 had no join notification, which kinda makes sense since the 2.0 registration modal already had a Welcome slide).

Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.
max_teacher
Scratcher
2 posts

Website development

The r2. subdomain became not r2-only due to the context processor changing and me not adapting it, anyway I merged the latest commit(s)!
chipmunkmc
Scratch Team
35 posts

Website development

Unsure if it's my fault, but clicking the comment form without being logged in no longer shows me a modal

https://max.chipmunk.land/
hi, this is my signature!
Heathercat123
Scratcher
23 posts

Website development

chipmunkmc wrote:

Unsure if it's my fault, but clicking the comment form without being logged in no longer shows me a modal


My bad, I accidentally broke it while refactoring the template's code ._. It should be fixed now.

Creator of much of the backend code for this website (the Scratch section, not the rest!) along with contributions from @chipmunkmc.

Powered by DjangoBB