Discuss Scratch

chipmunkmc
Scratch Team
58 posts

Website development

Yay! Also some thoughts:
Perhaps swfobject should be kept on user pages in case, say, someone writes a userscript relying on it for instance? Just an idea, maybe it's unlikely to be important and just bloat idk
Also, perhaps if no Ruffle URL is specified, Ruffle shouldn't be included in pages similarly to the original site? At least that's what I do with files.chipmunk.land; it would mean things wouldn't just work though.

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

Website development

chipmunkmc wrote:

Perhaps swfobject should be kept on user pages in case, say, someone writes a userscript relying on it for instance? Just an idea, maybe it's unlikely to be important and just bloat idk

I don't see why anyone would write a userscript relying on swfobject on profiles specifically, but it is required, along with scratch_app.js, for the 2013 featured project player (which is implemented in APIClone, but iirc fullscreen is broken)

chipmunkmc wrote:

Also, perhaps if no Ruffle URL is specified, Ruffle shouldn't be included in pages similarly to the original site?

There's a separate flag in settings.py for disabling the import, but I've made it enabled by default since it's required to run Scratch 2.0 on modern web browsers.

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

Website development

I mean someone could try to restore the old project player and depend on those scripts, though to be fair I haven't heard of such a thing and we're quite past the release of Scratch 3.0. Maybe it is just cruft.
Also I forgot about the SCRATCHR2_USE_RUFFLE flag, oops.
Anyway I see you have started to work on cloud variables (which required me to install channels lol), decompiled online Scratch 2.0, and themed it; keep up the good work!

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

Website development

chipmunkmc wrote:

I mean someone could try to restore the old project player and depend on those scripts, though to be fair I haven't heard of such a thing and we're quite past the release of Scratch 3.0. Maybe it is just cruft.

Wdym by "the old project player"? If you mean the featured project player, then, as I have already mentioned, it's already in APIClone.

chipmunkmc wrote:

Also I forgot about the SCRATCHR2_USE_RUFFLE flag, oops.

It's okay. APIClone has become so large and new features and changes come in so quickly that it's really easy to forget things about it </3

chipmunkmc wrote:

Anyway I see you have started to work on cloud variables (which required me to install channels lol), decompiled online Scratch 2.0, and themed it; keep up the good work!

Np! I'm not entirely done theming the editor though, here is what it looks like rn (also included as an attachment, I just forgot about that feature before uploading it to Linx ._.).

Also I've noticed that the post preview is still white except for the quotes, which are black text on a black-ish background. A similar thing can be said about the mobile forums, but those are hidden since the website uses the 2026 page style. Oh and quite a few post toolbar button icons should be inverted (BIUS looks off while the browser/os button is completely hidden).

Attachments:
attachment scratch2dark.png (161.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
58 posts

Website development

Nice work! Perhaps change the cat to #0dd and revert the background though, and perhaps remove sentry or I can do it in a fork.

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

Website development

Also it's funny how IPv6 addresses don't fit in the left part of posts, I guess Scratch Team never bothered to support said protocol on their site lol (imo you should keep it because it's funny)

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

Website development

chipmunkmc wrote:

Nice work! Perhaps change the cat to #0dd and revert the background though, and perhaps remove sentry or I can do it in a fork.

I'll do it when I'll feel like it.

chipmunkmc wrote:

Also it's funny how IPv6 addresses don't fit in the left part of posts, I guess Scratch Team never bothered to support said protocol on their site lol (imo you should keep it because it's funny)

Wait what- can u send a screenshot, I kinda wanna see it (I don't have ipv6 </3)

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

Website development

Heathercat123 wrote:

I'll do it when I'll feel like it.

Alright!

Heathercat123 wrote:

Wait what- can u send a screenshot, I kinda wanna see it (I don't have ipv6 </3)

For some reason I cannot visit the website (that is, while going through the VPS) from my home network. I saw this happen with Parker2991's posts, but wasn't given permission to leak his network address.
I'll try making this post on mobile data via tethering, and screenshotting it if that works out.

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

Website development

Damn it tethering on Android (at least Nougat?) is IPv4 only, how could I forget… sorry, I'll get you a screenshot later (at least tmrw).
Also, have you tried to get IPv6 connectivity through a VPN? It should be possible, as chipmunk.land currently uses Wireguard over IPv4 for everything, and still has IPv6 support, albeit I had to configure it properly on my servers. Other things like proxies probably can do the trick too.

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

Website development

I don't think it's really worth it to go through all of this trouble just to get a screenshot </3

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

Website development

Btw Scratch Addons has dark mode website icons, in case you wanna use them (though do note that it's under the GPL v3, unlike APIClone which is Public Domain!)

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

Website development

Heathercat123 wrote:

Btw Scratch Addons has dark mode website icons, in case you wanna use them (though do note that it's under the GPL v3, unlike APIClone which is Public Domain!)

Alright! (it's late for me so I prolly won't add them now)

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

Website development

(I should prolly sleep already but) a while ago I tried compiling scratch-www after putting the subpackages in subdirs & using npm link, however it failed due to some files being missing; this could be a version issue. Note that `npm start` worked.
Also I posted this on Pleroma earlier.

Attachments:
attachment image.webp (105.1 KB)


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

Website development

I remember wanting to patch scratchr2 (well, apiclone, but this was before there was software for this site) to add <br> newline escaping… should I?
It would be nice to have, though it would mean the site would be less like the original scratch.mit.edu, so I'm not so sure.
Either way I guess we have the ' ' hack (I stole the char from some Shift_JIS art), as well as the forums.
Heathercat123
Scratcher
27 posts

Website development

max_teacher wrote:

I remember wanting to patch scratchr2 (well, apiclone, but this was before there was software for this site) to add <br> newline escaping… should I?


By default? Nah. As an option in Account Settings? Absolutely!




Oh and it seems like someone else is remaking ScratchR2 tooEdit: Oops I think I screwed something up in the BBCode parser while trying to make it pass the built-in tests so now it doesn't like URLs anymore ._. Either way I meant to link to https/github.com/CocoBox84/ScratchR2-remake

Last edited by Heathercat123 (April 14, 2026 20:28:35)


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

Website development

Aaaand the Edit button is gone now. Great.

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

Website development

I'm sure someone already figured it out but the reason why most projects won't load is because assets cannot be fetched. Of course, this is because script you probably mentioned a long time ago, fetch-worker (sourced from scratch-storage), has the wrong hash in its filename.
I tried to `npm run clean` and build scratch-gui and scratch-www (in that order, using `build:dist` for the first) and now it cannot find the JS file at all; perhaps this file is only being included in standalone builds for some reason?
This whole Scratch 3.0 thing is weird and confusing, I'd say.

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

Website development

max_teacher wrote:

I remember wanting to patch scratchr2 (well, apiclone, but this was before there was software for this site) to add <br> newline escaping… should I?
It would be nice to have, though it would mean the site would be less like the original scratch.mit.edu, so I'm not so sure.
Either way I guess we have the ' ' hack (I stole the char from some Shift_JIS art), as well as the forums.

I forgot to say, I meant in comments. Maybe you figured that out but posting just in case.

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

Website development

Also a while ago I changed what log file apiclone's output was sent to, but only changed it for one stream (I forget if it was stdout or stderr), which probably got in the way of reading logs; oof…
About that I found a bunch of interesting errors in the logs:
[2026-04-14 10:08:15 +0000] [3471] [ERROR] Error handling request /privacy_policy
Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/base.py", line 181, in _get_response
    callback, callback_args, callback_kwargs = self.resolve_request(request)
                                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/base.py", line 313, in resolve_request
    resolver_match = resolver.resolve(request.path_info)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/urls/resolvers.py", line 702, in resolve
    raise Resolver404({"tried": tried, "path": new_path})
django.urls.exceptions.Resolver404: {'tried': [[<URLResolver <URLPattern list> (admin:admin) 'admin/'>], [<URLResolver <URLResolver list> (None:None) 'hosts/'>], [<URLResolver <module 'hosts.uploads.urls_get_image' from '/opt/apiclone/hosts/uploads/urls_get_image.py'> (None:None) 'get_image/'>], [<URLResolver <module 'ngapi.urls' from '/opt/apiclone/ngapi/urls.py'> (None:None) 'ngapi/'>], [<URLPattern 'csrf_token/' [name='csrf_token']>], [<URLPattern 'external/blog/api/read/json/'>], [<URLPattern 'news/' [name='news']>], [<URLPattern '403/' [name='403']>], [<URLPattern '404/' [name='404']>], [<URLPattern '429/' [name='429']>], [<URLPattern '429-email/' [name='429-email']>], [<URLPattern '500/' [name='500']>], [<URLPattern 'health/' [name='health']>], [<URLPattern 'mediagallery/dynamic-assets/' [name='dynamic-assets']>], [<URLPattern 'scratch2-studios/<int:pk>/adminpanel/' [name='gallery_adminpanel']>], [<URLPattern 'scratch2/<int:pk>/adminpanel/' [name='project_adminpanel']>], [<URLPattern 'login/' [name='login']>], [<URLPattern 'logout/' [name='logout']>], [<URLPattern 'fragment/account-nav.json' [name='account_nav']>], [<URLPattern 'session/' [name='session']>], [<URLPattern 'favicon.ico'>], [<URLPattern '' [name='homepage']>], [<URLPattern 'jsi18n/' [name='javascript-catalog']>], [<URLResolver <module 'django.conf.urls.i18n' from '/usr/lib/python3.12/site-packages/django/conf/urls/i18n.py'> (None:None) 'i18n/'>], [<URLResolver <module 'internalapi.urls' from '/opt/apiclone/internalapi/urls.py'> (None:None) 'internalapi/'>], [<URLResolver <module 'siteapi.urls' from '/opt/apiclone/siteapi/urls.py'> (None:None) 'site-api/'>], [<URLResolver <module 'galleries.urls' from '/opt/apiclone/galleries/urls.py'> (None:None) 'studios/'>], [<URLResolver <module 'projects.urls' from '/opt/apiclone/projects/urls.py'> (None:None) 'projects/'>], [<URLResolver <module 'userprofiles.urls' from '/opt/apiclone/userprofiles/urls.py'> (None:None) 'users/'>], [<URLResolver <module 'help.urls' from '/opt/apiclone/help/urls.py'> (None:None) 'info/'>], [<URLResolver <module 'help.urls' from '/opt/apiclone/help/urls.py'> (None:None) 'help/'>], [<URLResolver <module 'djangobb_forum.urls' from '/opt/apiclone/djangobb_forum/urls.py'> (djangobb_forum:djangobb) 'discuss/'>], [<URLResolver <module 'scratch_admin.urls' from '/opt/apiclone/scratch_admin/urls.py'> (None:None) 'scratch_admin/'>], [<URLPattern 'contact-us/' [name='contact_us']>], [<URLPattern 'about/' [name='about']>], [<URLPattern 'parents/' [name='parents']>], [<URLPattern 'community_guidelines/' [name='community_guidelines']>], [<URLPattern 'DMCA/' [name='DMCA']>], [<URLPattern 'wonderland/'>], [<URLResolver <module 'notifications.urls' from '/opt/apiclone/notifications/urls.py'> (None:None) 'messages/'>], [<URLResolver <module 'accounts.urls' from '/opt/apiclone/accounts/urls.py'> (None:None) 'accounts/'>], [<URLResolver <module 'educators.urls' from '/opt/apiclone/educators/urls.py'> (None:None) 'educators/'>], [<URLResolver <module 'educators.urls_classes' from '/opt/apiclone/educators/urls_classes.py'> (None:None) 'classes/'>], [<URLPattern 'mystuff/' [name='mystuff']>]], 'path': 'privacy_policy'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 134, in handle
    self.handle_request(listener, req, client, addr)
  File "/usr/lib/python3.12/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/wsgi.py", line 124, in __call__
    response = self.get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/base.py", line 140, in get_response
    response = self._middleware_chain(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/corsheaders/middleware.py", line 56, in __call__
    result = self.get_response(request)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/deprecation.py", line 134, in __call__
    response = response or self.get_response(request)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/apiclone/pagination/middleware.py", line 21, in __call__
    return self.get_response(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/apiclone/accounts/middleware.py", line 17, in __call__
    return self.get_response(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
    response = get_response(request)
               ^^^^^^^^^^^^^^^^^^^^^
  File "/opt/apiclone/accounts/middleware.py", line 41, in __call__
    return self.get_response(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 57, in inner
    response = response_for_exception(request, exc)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 68, in response_for_exception
    response = get_exception_response(
               ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/core/handlers/exception.py", line 165, in get_exception_response
    response = callback(request, exception=exception)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/decorators.py", line 134, in _wrapper_view
    response = view_func(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/views/defaults.py", line 64, in page_not_found
    body = template.render(context, request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 175, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/loader_tags.py", line 157, in render
    return compiled_parent._render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/defaulttags.py", line 321, in render
    return nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/loader_tags.py", line 208, in render
    return template.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 177, in render
    return self._render(context)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 167, in _render
    return self.nodelist.render(context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 966, in render_annotated
    return self.render(context)
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/templatetags/i18n.py", line 90, in render
    output = self.filter_expression.resolve(context)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 715, in resolve
    obj = self.var.resolve(context)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/template/base.py", line 858, in resolve
    return gettext_lazy(msgid)
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/django/utils/functional.py", line 207, in __wrapper__
    @wraps(func)
    
  File "/usr/lib/python3.12/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
    sys.exit(1)
SystemExit: 1
[2026-04-14 10:08:25 +0000] [3471] [INFO] Worker exiting (pid: 3471)
[2026-04-14 06:08:38 -0400] [3441] [ERROR] Worker (pid:3471) was sent SIGKILL! Perhaps out of memory?
[2026-04-14 06:08:41 -0400] [28065] [INFO] Booting worker with pid: 28065
/usr/lib/python3.12/site-packages/django/db/models/fields/__init__.py:1595: RuntimeWarning: DateTimeField Project.datetime_created received a naive datetime (2026-04-14 17:13:24.050951) while time zone support is active.
  warnings.warn(

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

Website development

Also I would like to note that my scratch-gui is newer than what scratch-www expects, I could try backporting my patches to the expected version. Still not sure what causes all of the worker weirdness though.

https://max.chipmunk.land/
hi, this is my signature!

Powered by DjangoBB