From d0453dbcb95b57042c12e214c48c0230e3d296b1 Mon Sep 17 00:00:00 2001 From: oberon Date: Thu, 19 Feb 2026 13:56:08 +0100 Subject: [PATCH] bugfix after crash --- app/routes/__pycache__/api.cpython-314.pyc | Bin 27896 -> 37079 bytes app/routes/api.py | 1 + 2 files changed, 1 insertion(+) diff --git a/app/routes/__pycache__/api.cpython-314.pyc b/app/routes/__pycache__/api.cpython-314.pyc index 366cb64361a8650d0bb0530f47eb6b1186aa6122..e7fd5ee563decc48a410700bb206521e9733782c 100644 GIT binary patch delta 12646 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 delta 5607 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 I)S-_52hQx^$p8QV diff --git a/app/routes/api.py b/app/routes/api.py index 0e1835e..fb2cfaa 100644 --- a/app/routes/api.py +++ b/app/routes/api.py @@ -4,6 +4,7 @@ import time import threading import logging import random +import json from collections import defaultdict, deque import pygame