From 0368d8dedcf2a4f3ef5dac9707632ecbc49e6661 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 6 May 2026 13:46:40 +0000 Subject: [PATCH 001/119] fix(deps): update dependency pydantic-core to v2.46.4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index eb49aff..e0dd270 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ dependencies = [ "psycopg2-binary==2.9.12", "pycparser==3.0", "pydantic==2.13.3", - "pydantic-core==2.46.3", + "pydantic-core==2.46.4", "pydantic-settings==2.14.0", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", From 8a846c0880b08d5998b004eb0d20ef8909a63f3e Mon Sep 17 00:00:00 2001 From: KittenTM Date: Thu, 7 May 2026 09:33:14 +0200 Subject: [PATCH 002/119] migration(feat): add repo .md files --- code_of_conduct.md | 40 ++++++++++++++++++++++++++++++++++++++++ security.md | 3 +++ support.md | 3 +++ 3 files changed, 46 insertions(+) create mode 100644 code_of_conduct.md create mode 100644 security.md create mode 100644 support.md diff --git a/code_of_conduct.md b/code_of_conduct.md new file mode 100644 index 0000000..b9b2b84 --- /dev/null +++ b/code_of_conduct.md @@ -0,0 +1,40 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] + +[homepage]: https://contributor-covenant.org +[version]: https://contributor-covenant.org/version/1/4/ diff --git a/security.md b/security.md new file mode 100644 index 0000000..9634fba --- /dev/null +++ b/security.md @@ -0,0 +1,3 @@ +# Security Policy + +Report security vulnerabilities through the security tab on this repo. Only vulnerabilities on the latest commit of any branch will be considered. diff --git a/support.md b/support.md new file mode 100644 index 0000000..7cfc89e --- /dev/null +++ b/support.md @@ -0,0 +1,3 @@ +# Support + +For support, join [our discord](https://discord.gg/splatfestival). From 01063d489a3bd07d89c6ed4288ecec752ba4658d Mon Sep 17 00:00:00 2001 From: KittenTM Date: Thu, 7 May 2026 09:34:33 +0200 Subject: [PATCH 003/119] ci: change debian ver --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 601ca4b..a2c2034 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -7,7 +7,7 @@ on: jobs: docker: - runs-on: debian-bookworm + runs-on: debian-trixie steps: - name: checkout uses: actions/checkout@v6 From 91b77c034e123aecb6fdee3e0906c280a644adba Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 7 May 2026 07:50:46 +0000 Subject: [PATCH 004/119] chore(deps): update dependency discord.js to v14.26.4 --- judd/package-lock.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index f8f456a..eda5e6f 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -631,9 +631,9 @@ ] }, "node_modules/discord.js": { - "version": "14.26.3", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.26.3.tgz", - "integrity": "sha512-XEKtYn28YFsiJ5l4fLRyikdbo6RD5oFyqfVHQlvXz2104JhH/E8slN28dbky05w3DCrJcNVWvhVvcJCTSl/KIg==", + "version": "14.26.4", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.26.4.tgz", + "integrity": "sha512-4oBp8tc6Kf8IDBwAHhbsMaAqx1b5fob9SNasZT7V6yyyUydoO5i5fGuX7TmvRtR+q/WgKRnRViRoAWnG7fNyvA==", "license": "Apache-2.0", "dependencies": { "@discordjs/builders": "^1.14.1", @@ -1403,7 +1403,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", From cc27b1166f58a81ac85fb1d5dda9fbf352a0b6d5 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 7 May 2026 07:50:55 +0000 Subject: [PATCH 005/119] chore(deps): update dependency axios to v1.16.0 --- judd/package-lock.json | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index f8f456a..6ea7b19 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -349,12 +349,12 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.2.tgz", - "integrity": "sha512-wLrXxPtcrPTsNlJmKjkPnNPK2Ihe0hn0wGSaTEiHRPxwjvJwT3hKmXF4dpqxmPO9SoNb2FsYXj/xEo0gHN+D5A==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", + "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", + "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } @@ -1403,7 +1403,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", From 27c93f6f5b179edcdb191c393e894b59be8bfe0a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 7 May 2026 08:05:59 +0000 Subject: [PATCH 006/119] chore(deps): update dependency express-rate-limit to v8.5.1 --- judd/package-lock.json | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index f8f456a..59e4152 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -797,12 +797,12 @@ } }, "node_modules/express-rate-limit": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.2.tgz", - "integrity": "sha512-77VmFeJkO0/rvimEDuUC5H30oqUC4EyOhyGccfqoLebB0oiEYfM7nwPrsDsBL1gsTpwfzX8SFy2MT3TDyRq+bg==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz", + "integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==", "license": "MIT", "dependencies": { - "ip-address": "10.1.0" + "ip-address": "^10.2.0" }, "engines": { "node": ">= 16" @@ -1144,9 +1144,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", "license": "MIT", "engines": { "node": ">= 12" @@ -1403,7 +1403,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", From b0c4af716a5338029b110ac59db5e6cc27c3cd77 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 7 May 2026 08:06:07 +0000 Subject: [PATCH 007/119] chore(deps): update dependency joi to v18.2.1 --- judd/package-lock.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index f8f456a..163660f 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1168,9 +1168,9 @@ "license": "MIT" }, "node_modules/joi": { - "version": "18.1.2", - "resolved": "https://registry.npmjs.org/joi/-/joi-18.1.2.tgz", - "integrity": "sha512-rF5MAmps5esSlhCA+N1b6IYHDw9j/btzGaqfgie522jS02Ju/HXBxamlXVlKEHAxoMKQL77HWI8jlqWsFuekZA==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.2.1.tgz", + "integrity": "sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ==", "license": "BSD-3-Clause", "dependencies": { "@hapi/address": "^5.1.1", @@ -1403,7 +1403,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", From e265b4e5cd2f2409b732bfa6a01bdfb549eb1566 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 7 May 2026 16:35:38 +0000 Subject: [PATCH 008/119] fix(deps): update dependency urllib3 to v2.7.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index eb49aff..d1c1c41 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ dependencies = [ "typing-extensions==4.15.0", "typing-inspection==0.4.2", "tzdata==2026.2", - "urllib3==2.6.3", + "urllib3==2.7.0", "uvicorn==0.46.0", "jinja2==3.1.6", ] From 581c9502614d3eac994e191251f15f8062cf7845 Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 8 May 2026 00:19:12 +0200 Subject: [PATCH 009/119] ci: use multiple deb vers (if possible) --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index a2c2034..fcbdaed 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -7,7 +7,7 @@ on: jobs: docker: - runs-on: debian-trixie + runs-on: [debian-trixie, debian-bookworm] steps: - name: checkout uses: actions/checkout@v6 From 57122382975adb4470a3e6d87d0b3384ec9f2d80 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 27 Apr 2026 12:25:10 +0000 Subject: [PATCH 010/119] fix(deps): update dependency greenlet to v3.5.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d1c1c41..7b37af2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "cryptography==46.0.7", "fastapi==0.136.1", "fastapi-cache2==0.2.2", - "greenlet==3.4.0", + "greenlet==3.5.0", "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", From cc30baa5f04a3a350f8c30be263bf8ebff1a133e Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 4 May 2026 23:50:12 +0000 Subject: [PATCH 011/119] fix(deps): update dependency cryptography to v48 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7b37af2..358d934 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "charset-normalizer==3.4.7", "click==8.3.3", "colorama==0.4.6", - "cryptography==46.0.7", + "cryptography==48.0.0", "fastapi==0.136.1", "fastapi-cache2==0.2.2", "greenlet==3.5.0", From 0e082c65d2db575f88a55fa557ea59e93327f180 Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 8 May 2026 00:46:36 +0200 Subject: [PATCH 012/119] i cant read --- .forgejo/workflows/build.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index fcbdaed..a13ffb3 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -7,10 +7,12 @@ on: jobs: docker: - runs-on: [debian-trixie, debian-bookworm] - steps: - - name: checkout - uses: actions/checkout@v6 + strategy: + fail-fast: false + matrix: + os: [debian-trixie, debian-bookworm] + + runs-on: ${{ matrix.os }} - name: install docker??? run: | From 683057221c48a860c2b192ff48effd3c668140eb Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 8 May 2026 00:51:50 +0200 Subject: [PATCH 013/119] i forgot steps :broken_heart: --- .forgejo/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index a13ffb3..6f0626c 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -14,6 +14,7 @@ jobs: runs-on: ${{ matrix.os }} + steps: - name: install docker??? run: | apt update && apt install wget cmake -y && \ From 66d4bc07714a1737eba885f9d4405e84168b8712 Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 8 May 2026 00:55:42 +0200 Subject: [PATCH 014/119] actually checkout code --- .forgejo/workflows/build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 6f0626c..6cf2337 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -14,7 +14,10 @@ jobs: runs-on: ${{ matrix.os }} - steps: + steps: + - name: Checkout + uses: actions/checkout@v6 + - name: install docker??? run: | apt update && apt install wget cmake -y && \ From d80bf323ac9cc717e860784de226d6cd86fe800e Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 8 May 2026 05:32:47 +0200 Subject: [PATCH 015/119] ci: use variables so CI will pass on both mirrors --- .forgejo/workflows/build.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 6cf2337..6d85c91 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -7,14 +7,8 @@ on: jobs: docker: - strategy: - fail-fast: false - matrix: - os: [debian-trixie, debian-bookworm] - - runs-on: ${{ matrix.os }} - - steps: + runs-on: ${{ vars.RUNNER_LABEL }} + steps: - name: Checkout uses: actions/checkout@v6 From 02a14ce4578f079d075fbe6817d4348793cd29dc Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 8 May 2026 05:53:46 +0200 Subject: [PATCH 016/119] chore: update badges --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1996705..475a43c 100644 --- a/README.md +++ b/README.md @@ -12,12 +12,14 @@ # SplatNet -[![Commits](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgit.crafterpika.cc%2Fapi%2Fv1%2Frepos%2Fkittentm%2Fsplatnet-backend%2Fcommits&query=%24.length&label=commits&style=for-the-badge&color=blue)](https://git.crafterpika.cc/kittentm/splatnet-backend/commits/branch/main) +![Last Commit](https://img.shields.io/gitea/last-commit/kittentm/splatnet-backend?gitea_url=https://git.crafterpika.cc&style=for-the-badge&color=blue) [![Build Status](https://git.crafterpika.cc/kittentm/splatnet-backend/badges/workflows/build.yml/badge.svg?style=for-the-badge)](https://git.crafterpika.cc/kittentm/splatnet-backend/actions) -[![Languages](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgit.crafterpika.cc%2Fapi%2Fv1%2Frepos%2Fkittentm%2Fsplatnet-backend%2Flanguages&query=%24.*~&label=language&style=for-the-badge&color=yellow)](https://git.crafterpika.cc/kittentm/splatnet-backend) +[![Languages](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fgit.crafterpika.cc%2Fapi%2Fv1%2Frepos%2Fkittentm%2Fsplatnet-backend%2Flanguages&query=%24.*~&label=language&style=for-the-badge&color=blue)](https://git.crafterpika.cc/kittentm/splatnet-backend) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg?style=for-the-badge&logo=gnu&logoColor=white)](https://git.crafterpika.cc/kittentm/splatnet-backend/src/branch/main/LICENSE) +![L1 Service Status](https://img.shields.io/website?url=https%3A%2F%2Fsplatnet.spbr.net%2F&up_message=online&down_message=offline&style=for-the-badge&up_color=blue&down_color=red&label=Production+Instance) +![T1 Service Status](https://img.shields.io/website?url=https%3A%2F%2Fsplatoon.cubexmine.dev%2F&up_message=online&down_message=offline&style=for-the-badge&up_color=blue&down_color=red&label=Testing+Instance) -This is the backend for the [SplatNet](https://git.crafterpika.cc/kittentm/splatnet) Revival frontend. It is a combination of Python & JS. +This is the backend for the [SplatNet](https://git.crafterpika.cc/kittentm/splatnet) Revival frontend. From 15ed13086f86224f9cde92e742445efa9748670e Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 8 May 2026 14:02:34 +0000 Subject: [PATCH 017/119] fix(deps): update dependency pydantic-settings to v2.14.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 358d934..5cc784e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "pycparser==3.0", "pydantic==2.13.3", "pydantic-core==2.46.3", - "pydantic-settings==2.14.0", + "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", "python-multipart==0.0.27", From a30f3eca46a7e8076b69ba4606869613f61698ba Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 6 May 2026 13:46:34 +0000 Subject: [PATCH 018/119] fix(deps): update dependency pydantic to v2.13.4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5cc784e..8c0c0f6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ dependencies = [ "pendulum==3.2.0", "psycopg2-binary==2.9.12", "pycparser==3.0", - "pydantic==2.13.3", + "pydantic==2.13.4", "pydantic-core==2.46.3", "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", From e105f4e0fa388048191fb3043694f1bf6611facc Mon Sep 17 00:00:00 2001 From: kittentm Date: Sat, 9 May 2026 06:45:10 +0200 Subject: [PATCH 019/119] fix(deps): update dependency pydantic-core to v2.46.4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8c0c0f6..84352f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ dependencies = [ "psycopg2-binary==2.9.12", "pycparser==3.0", "pydantic==2.13.4", - "pydantic-core==2.46.3", + "pydantic-core==2.46.4", "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", From 7e626a15034df6e4c20e39bbaa6151702a55e63a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 10 May 2026 11:20:30 +0000 Subject: [PATCH 020/119] fix(deps): update dependency python-multipart to v0.0.28 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 84352f4..0f592d2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", - "python-multipart==0.0.27", + "python-multipart==0.0.28", "pyyaml==6.0.3", "requests==2.33.1", "requests-oauthlib==2.0.0", From 2da6d219796fa5e9f0d421be21fde07813d3026b Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 10 May 2026 21:03:52 +0000 Subject: [PATCH 021/119] fix(deps): update dependency idna to v3.14 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0f592d2..0d2555e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", - "idna==3.13", + "idna==3.14", "oauthlib==3.3.1", "oead==1.2.9.post4", "pendulum==3.2.0", From c287dc0d84b4e6437e95f8bf8058691e73192106 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 11 May 2026 19:34:49 +0000 Subject: [PATCH 022/119] fix(deps): update dependency requests to v2.34.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0d2555e..70c7675 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dependencies = [ "python-dotenv==1.2.2", "python-multipart==0.0.28", "pyyaml==6.0.3", - "requests==2.33.1", + "requests==2.34.0", "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.49", From 57df5ce4ccc65b9a276467620ba84839532fb9e8 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Tue, 12 May 2026 22:52:10 +0000 Subject: [PATCH 023/119] fix(deps): update dependency idna to v3.15 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 70c7675..f2215ed 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", - "idna==3.14", + "idna==3.15", "oauthlib==3.3.1", "oead==1.2.9.post4", "pendulum==3.2.0", From 2adf1f58a0d0dcf6f39444863f679807add6c708 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 13 May 2026 16:34:34 +0000 Subject: [PATCH 024/119] chore(deps): update dependency axios to v1.16.1 --- judd/package-lock.json | 78 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 9c2f8d6..8a1e3af 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -336,6 +336,41 @@ "url": "https://opencollective.com/express" } }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/append-field": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", @@ -349,13 +384,14 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", - "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", + "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", + "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, @@ -1112,6 +1148,42 @@ "url": "https://opencollective.com/express" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/iconv-lite": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", From 731e95feb5ae0827cc9b36dc088a6c8cf6130c34 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 13 May 2026 19:37:05 +0000 Subject: [PATCH 025/119] fix(deps): update dependency requests to v2.34.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f2215ed..9a328ce 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dependencies = [ "python-dotenv==1.2.2", "python-multipart==0.0.28", "pyyaml==6.0.3", - "requests==2.34.0", + "requests==2.34.1", "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.49", From c6efe237ed67af7ca835195707ed50749f315111 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 14 May 2026 10:32:02 +0000 Subject: [PATCH 026/119] chore(deps): update dependency express-rate-limit to v8.5.2 --- judd/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 8a1e3af..8ce35b0 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -833,9 +833,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz", - "integrity": "sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz", + "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==", "license": "MIT", "dependencies": { "ip-address": "^10.2.0" From 0fda25d76c028756d0eb308afb19186d541eb2b5 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 14 May 2026 18:35:37 +0000 Subject: [PATCH 027/119] fix(deps): update dependency uvicorn to v0.47.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9a328ce..ea08fd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ "typing-inspection==0.4.2", "tzdata==2026.2", "urllib3==2.7.0", - "uvicorn==0.46.0", + "uvicorn==0.47.0", "jinja2==3.1.6", ] From 17a70cac804f620920f2ba6fc317edebe3c28f50 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 14 May 2026 19:49:56 +0000 Subject: [PATCH 028/119] fix(deps): update dependency requests to v2.34.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ea08fd3..b81d38d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,7 @@ dependencies = [ "python-dotenv==1.2.2", "python-multipart==0.0.28", "pyyaml==6.0.3", - "requests==2.34.1", + "requests==2.34.2", "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.49", From 8caf832ba980c0bf6cd326188bd1ef325ad0c047 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 17 May 2026 01:01:39 +0000 Subject: [PATCH 029/119] fix(deps): update dependency click to v8.4.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b81d38d..71f3081 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "certifi==2026.4.22", "cffi==2.0.0", "charset-normalizer==3.4.7", - "click==8.3.3", + "click==8.4.0", "colorama==0.4.6", "cryptography==48.0.0", "fastapi==0.136.1", From 33a8f8c3152bdba986e813fd4108dfad072d85f4 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 17 May 2026 17:46:46 +0000 Subject: [PATCH 030/119] fix(deps): update dependency python-multipart to v0.0.29 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b81d38d..5a8dbc3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", - "python-multipart==0.0.28", + "python-multipart==0.0.29", "pyyaml==6.0.3", "requests==2.34.2", "requests-oauthlib==2.0.0", From 903318754a5bbf52c75cdfbcbbbc97023e1905c0 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 18 May 2026 12:02:09 +0000 Subject: [PATCH 031/119] chore(deps): update dependency pg to v8.21.0 --- judd/package-lock.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 8ce35b0..d023ed4 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1471,14 +1471,14 @@ } }, "node_modules/pg": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", - "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", + "version": "8.21.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.21.0.tgz", + "integrity": "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.12.0", - "pg-pool": "^3.13.0", - "pg-protocol": "^1.13.0", + "pg-connection-string": "^2.13.0", + "pg-pool": "^3.14.0", + "pg-protocol": "^1.14.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -1486,7 +1486,7 @@ "node": ">= 16.0.0" }, "optionalDependencies": { - "pg-cloudflare": "^1.3.0" + "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" @@ -1498,16 +1498,16 @@ } }, "node_modules/pg-cloudflare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.3.0.tgz", - "integrity": "sha512-6lswVVSztmHiRtD6I8hw4qP/nDm1EJbKMRhf3HCYaqud7frGysPv7FYJ5noZQdhQtN2xJnimfMtvQq21pdbzyQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.0.tgz", + "integrity": "sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==", "license": "MIT", "optional": true }, "node_modules/pg-connection-string": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", - "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.13.0.tgz", + "integrity": "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==", "license": "MIT" }, "node_modules/pg-hstore": { @@ -1532,18 +1532,18 @@ } }, "node_modules/pg-pool": { - "version": "3.13.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", - "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz", + "integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", - "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.14.0.tgz", + "integrity": "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==", "license": "MIT" }, "node_modules/pg-types": { From e80add0c06e9ed3ab7ae434c678e21be603733e6 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 20 May 2026 17:02:59 +0000 Subject: [PATCH 032/119] fix(deps): update dependency greenlet to v3.5.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3b23e30..03fc262 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "cryptography==48.0.0", "fastapi==0.136.1", "fastapi-cache2==0.2.2", - "greenlet==3.5.0", + "greenlet==3.5.1", "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", From 658c2ea0067d0f834bf18fca054a1ed23c0f4ca4 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 20 May 2026 17:03:10 +0000 Subject: [PATCH 033/119] fix(deps): update dependency certifi to v2026.5.20 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3b23e30..80749e3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "anyio==4.13.0", "argon2-cffi==25.1.0", "argon2-cffi-bindings==25.1.0", - "certifi==2026.4.22", + "certifi==2026.5.20", "cffi==2.0.0", "charset-normalizer==3.4.7", "click==8.4.0", From 0b435e97be0d55fef893a57a5b99176564766e47 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 21 May 2026 22:02:30 +0000 Subject: [PATCH 034/119] fix(deps): update dependency starlette to v1.0.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d5bf9e2..aed59b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.49", - "starlette==1.0.0", + "starlette==1.0.1", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From 6890e59809f55c627e73e28d04af3cd2713cc941 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 22 May 2026 00:32:03 +0000 Subject: [PATCH 035/119] fix(deps): update dependency idna to v3.16 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index aed59b7..187a55a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", - "idna==3.15", + "idna==3.16", "oauthlib==3.3.1", "oead==1.2.9.post4", "pendulum==3.2.0", From 69cbe960d76e017ee07d8121f748687887752306 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 22 May 2026 04:31:43 +0000 Subject: [PATCH 036/119] fix(deps): update dependency click to v8.4.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 187a55a..910649a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "certifi==2026.5.20", "cffi==2.0.0", "charset-normalizer==3.4.7", - "click==8.4.0", + "click==8.4.1", "colorama==0.4.6", "cryptography==48.0.0", "fastapi==0.136.1", From 0f027550e66968426873732e0cda9eab5474993c Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sat, 23 May 2026 17:10:06 +0000 Subject: [PATCH 037/119] fix(deps): update dependency starlette to v1.1.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 910649a..fd0eb90 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.49", - "starlette==1.0.1", + "starlette==1.1.0", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From 953754b537d625d02b8cf6e5207233eabcc3af1a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sat, 23 May 2026 18:55:47 +0000 Subject: [PATCH 038/119] fix(deps): update dependency fastapi to v0.136.3 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fd0eb90..436901c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ dependencies = [ "click==8.4.1", "colorama==0.4.6", "cryptography==48.0.0", - "fastapi==0.136.1", + "fastapi==0.136.3", "fastapi-cache2==0.2.2", "greenlet==3.5.1", "h11==0.16.0", From 54c01fdc544649a5d1e467af1e110a3a012419b9 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 24 May 2026 12:36:02 +0000 Subject: [PATCH 039/119] fix(deps): update dependency uvicorn to v0.48.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 436901c..eadc706 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ "typing-inspection==0.4.2", "tzdata==2026.2", "urllib3==2.7.0", - "uvicorn==0.47.0", + "uvicorn==0.48.0", "jinja2==3.1.6", ] From 4d7b3f9baece6d3832200214644e26869f91ec3d Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 24 May 2026 19:43:54 +0000 Subject: [PATCH 040/119] fix(deps): update dependency sqlalchemy to v2.0.50 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index eadc706..4257ab6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ dependencies = [ "requests==2.34.2", "requests-oauthlib==2.0.0", "six==1.17.0", - "sqlalchemy==2.0.49", + "sqlalchemy==2.0.50", "starlette==1.1.0", "tweepy==4.16.0", "typing-extensions==4.15.0", From 049d33ea474c633145b0a7251ceb50b2ad7cbd60 Mon Sep 17 00:00:00 2001 From: KittenTM Date: Mon, 25 May 2026 21:40:48 +0200 Subject: [PATCH 041/119] feat: check whether fest exists & to skip ranking reset --- main.py | 81 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/main.py b/main.py index b707506..7f31651 100644 --- a/main.py +++ b/main.py @@ -16,9 +16,10 @@ from services.boss_retrieval import process_boss_file from routes import Ranking from routes import twitter_link from contextlib import asynccontextmanager -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from sqlalchemy import delete from config import BASE_DIR +import yaml import asyncio import subprocess import signal @@ -31,6 +32,7 @@ JUDD_SERVER_JS = os.path.join(JUDD_CWD, "server.js") JUDD_CMD = ["node", JUDD_SERVER_JS] judd_process = None +skip_upcoming_reset = False async def boss_worker_loop(): print("background worker started") @@ -43,30 +45,79 @@ async def boss_worker_loop(): await asyncio.sleep(3600) async def weekly_rank_reset_loop(): + global skip_upcoming_reset print("weekly_rank_reset worker started") - while True: - now = datetime.now() - days_ahead = 6 - now.weekday() + + FES_BOSS_PATH = os.path.join(BASE_DIR, "fes_boss.yaml") + + def get_next_sunday_reset_time_utc(): + now_utc = datetime.now(timezone.utc) + days_ahead = 6 - now_utc.weekday() if days_ahead <= 0: days_ahead += 7 + next_sunday_utc = now_utc + timedelta(days=days_ahead) + return next_sunday_utc.replace(hour=0, minute=0, second=0, microsecond=0) + + async def check_splatfest_schedule_loop(): + global skip_upcoming_reset + while True: + try: + target_reset_utc = get_next_sunday_reset_time_utc() + print(f"checking if a splatfest will be active at: {target_reset_utc.isoformat()}") + + if os.path.exists(FES_BOSS_PATH): + with open(FES_BOSS_PATH, "r", encoding="utf-8") as f: + fes_data = yaml.safe_load(f) + + if fes_data and "Time" in fes_data: + start_time = datetime.fromisoformat(fes_data["Time"]["Start"]) + end_time = datetime.fromisoformat(fes_data["Time"]["End"]) + + start_time_utc = start_time.astimezone(timezone.utc) + end_time_utc = end_time.astimezone(timezone.utc) + + print(f"detected splatfest schedule: {start_time_utc.isoformat()} to {end_time_utc.isoformat()}") + + if start_time_utc <= target_reset_utc <= end_time_utc: + skip_upcoming_reset = True + print("Splatfest detected in reset window") + else: + skip_upcoming_reset = False + print("No splatfest active in reset window, yay!!!") + else: + print("could not find yaml, defaulted to no fest") + skip_upcoming_reset = False + + except Exception as e: + print(f"failed to check fest schedule: {e}") - next_sunday = now + timedelta(days=days_ahead) - next_run = next_sunday.replace(hour=0, minute=0, second=0, microsecond=0) + await asyncio.sleep(7200) + + asyncio.create_task(check_splatfest_schedule_loop()) + + while True: + now_utc = datetime.now(timezone.utc) + next_run_utc = get_next_sunday_reset_time_utc() + wait_seconds = (next_run_utc - now_utc).total_seconds() - wait_seconds = (next_run - now).total_seconds() - print(f"Next ranking reset scheduled for: {next_run} (in {wait_seconds:.0f} seconds)") + print(f"Next ranking reset scheduled for: {next_run_utc.isoformat()} (in {wait_seconds:.0f} seconds)") try: await asyncio.sleep(wait_seconds) - print("Executing weekly ranking reset...") - with SessionLocal() as db: - db.execute(delete(PlayerRank)) - db.commit() - print("Ranking table cleared successfully.") - await FastAPICache.clear() - print("Cache cleared") + print("ranking reset triggerred!") + if skip_upcoming_reset: + print("Reset skipped due to active splatfest") + else: + print("Executing weekly ranking reset...") + with SessionLocal() as db: + db.execute(delete(PlayerRank)) + db.commit() + print("Ranking table cleared successfully.") + await FastAPICache.clear() + print("Cache cleared") + await asyncio.sleep(60) except asyncio.CancelledError: From ab391b89971af9833c9059fcebb67c6d0ad355b1 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 28 May 2026 12:01:47 +0000 Subject: [PATCH 042/119] fix(deps): update dependency starlette to v1.2.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4257ab6..01cc6a6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.50", - "starlette==1.1.0", + "starlette==1.2.0", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From 8e528bc0d9286e9d4e8e9c9dfcf4bef864eaffa2 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 28 May 2026 14:46:52 +0000 Subject: [PATCH 043/119] fix(deps): update dependency idna to v3.17 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 01cc6a6..1b30bd6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", - "idna==3.16", + "idna==3.17", "oauthlib==3.3.1", "oead==1.2.9.post4", "pendulum==3.2.0", From 027430953bcda8bf6bce0c5cc38d8e1672caf516 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 31 May 2026 01:32:04 +0000 Subject: [PATCH 044/119] fix(deps): update dependency starlette to v1.2.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 1b30bd6..f88817e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.50", - "starlette==1.2.0", + "starlette==1.2.1", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From 37f7399edb0adfe838f982e21704d8b00ba9f0b7 Mon Sep 17 00:00:00 2001 From: kittentm Date: Sun, 31 May 2026 17:12:57 +0200 Subject: [PATCH 045/119] print errors when checking pid validity --- judd/routes/post.js | 1 + 1 file changed, 1 insertion(+) diff --git a/judd/routes/post.js b/judd/routes/post.js index fef1834..f20a2a3 100644 --- a/judd/routes/post.js +++ b/judd/routes/post.js @@ -39,6 +39,7 @@ router.post('/post', postLimiter, async (request, response, next) => { isPidValid = false; } } catch (err) { + console.error(`Caught error when validating ${pid}:`, err.message || err); isPidValid = false; } From 3fe3913aa243a9b7491b8dd00763d8feaf5bd952 Mon Sep 17 00:00:00 2001 From: kittentm Date: Sun, 31 May 2026 18:22:14 +0200 Subject: [PATCH 046/119] fix: accept submissions if validation failed --- judd/routes/post.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/judd/routes/post.js b/judd/routes/post.js index f20a2a3..85d531e 100644 --- a/judd/routes/post.js +++ b/judd/routes/post.js @@ -40,7 +40,7 @@ router.post('/post', postLimiter, async (request, response, next) => { } } catch (err) { console.error(`Caught error when validating ${pid}:`, err.message || err); - isPidValid = false; + isPidValid = true; } if (!isPidValid) { From 1e8ebd0f44fc8dbd32737376cb5cb03c50a3d91d Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 31 May 2026 19:25:33 +0000 Subject: [PATCH 047/119] fix(deps): update dependency python-multipart to v0.0.30 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f88817e..621d4cd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", - "python-multipart==0.0.29", + "python-multipart==0.0.30", "pyyaml==6.0.3", "requests==2.34.2", "requests-oauthlib==2.0.0", From ab469e203f823bba53f167ca5cb625668a68ab62 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Tue, 2 Jun 2026 19:09:29 +0000 Subject: [PATCH 048/119] chore(deps): update dependency morgan to v1.11.0 --- judd/package-lock.json | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index d023ed4..52e6e9f 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1348,31 +1348,23 @@ } }, "node_modules/morgan": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", - "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.11.0.tgz", + "integrity": "sha512-zSkVu3t18r39pw4ixfBKvfZi3y2UOqr7d4WYwcj3m8nXpEQK4rPO6GLzs/CExoRgmX3y9EjmmcXqv6jq0SK46g==", "license": "MIT", "dependencies": { "basic-auth": "~2.0.1", "debug": "2.6.9", "depd": "~2.0.0", - "on-finished": "~2.3.0", + "on-finished": "~2.4.1", "on-headers": "~1.1.0" }, "engines": { "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" }, - "engines": { - "node": ">= 0.8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/ms": { From d885899baf47afb621eb50ffcb6fe9fac4c2e36d Mon Sep 17 00:00:00 2001 From: redbinder0526 Date: Wed, 3 Jun 2026 09:05:28 +0200 Subject: [PATCH 049/119] ci doesnt run in containers --- .forgejo/workflows/build.yml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 6d85c91..8662fd7 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -11,15 +11,6 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - - name: install docker??? - run: | - apt update && apt install wget cmake -y && \ - wget "https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" && \ - dpkg --force-confold -i "docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" - - - name: set up Docker Buildx - uses: docker/setup-buildx-action@v4 - name: login if: github.event_name == 'workflow_dispatch' From 65d2c9dc2020a91a4d993c0a19e1f22fe0a15c4e Mon Sep 17 00:00:00 2001 From: redbinder0526 Date: Wed, 3 Jun 2026 09:08:28 +0200 Subject: [PATCH 050/119] wtf is going on with forgejo rn --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 8662fd7..df1dcaf 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -22,7 +22,7 @@ jobs: - name: build env: DOCKER_USER: ${{ secrets.DOCKER_USER }} - run: docker build -t $DOCKER_USER/splatnet-backend:latest . + run: docker buildx build -t $DOCKER_USER/splatnet-backend:latest . - name: push if: github.event_name == 'workflow_dispatch' From 889db3abab08ec1bd9bdfb8ee47e9d102e3df9eb Mon Sep 17 00:00:00 2001 From: redbinder0526 Date: Wed, 3 Jun 2026 09:10:09 +0200 Subject: [PATCH 051/119] consolidate steps --- .forgejo/workflows/build.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index df1dcaf..663caf4 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -22,10 +22,4 @@ jobs: - name: build env: DOCKER_USER: ${{ secrets.DOCKER_USER }} - run: docker buildx build -t $DOCKER_USER/splatnet-backend:latest . - - - name: push - if: github.event_name == 'workflow_dispatch' - env: - DOCKER_USER: ${{ secrets.DOCKER_USER }} - run: docker push $DOCKER_USER/splatnet-backend:latest \ No newline at end of file + run: docker buildx build --push -t $DOCKER_USER/splatnet-backend:latest . \ No newline at end of file From d5819ceec677f59ca3352476ee4bcae38fe7d199 Mon Sep 17 00:00:00 2001 From: redbinder0526 Date: Wed, 3 Jun 2026 09:10:54 +0200 Subject: [PATCH 052/119] Update .forgejo/workflows/build.yml --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 663caf4..5ccb982 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -7,7 +7,7 @@ on: jobs: docker: - runs-on: ${{ vars.RUNNER_LABEL }} + runs-on: debian-trixie steps: - name: Checkout uses: actions/checkout@v6 From 41b0c3297e601008d2fa5d4e81217c64d920d21b Mon Sep 17 00:00:00 2001 From: redbinder0526 Date: Wed, 3 Jun 2026 09:12:54 +0200 Subject: [PATCH 053/119] yo forgejo pmo rn --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 5ccb982..6521f36 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - docker: + splatnet: runs-on: debian-trixie steps: - name: Checkout From 78c1c709fbedab299ac6fb7ad01998765943d0b8 Mon Sep 17 00:00:00 2001 From: kittentm Date: Wed, 3 Jun 2026 13:51:20 +0200 Subject: [PATCH 054/119] revert 41b0c3297e601008d2fa5d4e81217c64d920d21b revert yo forgejo pmo rn --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 6521f36..5ccb982 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -6,7 +6,7 @@ on: workflow_dispatch: jobs: - splatnet: + docker: runs-on: debian-trixie steps: - name: Checkout From bfe7f0209955b7484e3cd65a605977d08766ad84 Mon Sep 17 00:00:00 2001 From: kittentm Date: Wed, 3 Jun 2026 13:51:46 +0200 Subject: [PATCH 055/119] revert d5819ceec677f59ca3352476ee4bcae38fe7d199 revert Update .forgejo/workflows/build.yml --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 5ccb982..663caf4 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -7,7 +7,7 @@ on: jobs: docker: - runs-on: debian-trixie + runs-on: ${{ vars.RUNNER_LABEL }} steps: - name: Checkout uses: actions/checkout@v6 From a4ebf2f106ad049bb8c29c44995b546259ce6ea4 Mon Sep 17 00:00:00 2001 From: kittentm Date: Wed, 3 Jun 2026 13:51:57 +0200 Subject: [PATCH 056/119] revert 889db3abab08ec1bd9bdfb8ee47e9d102e3df9eb revert consolidate steps --- .forgejo/workflows/build.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 663caf4..df1dcaf 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -22,4 +22,10 @@ jobs: - name: build env: DOCKER_USER: ${{ secrets.DOCKER_USER }} - run: docker buildx build --push -t $DOCKER_USER/splatnet-backend:latest . \ No newline at end of file + run: docker buildx build -t $DOCKER_USER/splatnet-backend:latest . + + - name: push + if: github.event_name == 'workflow_dispatch' + env: + DOCKER_USER: ${{ secrets.DOCKER_USER }} + run: docker push $DOCKER_USER/splatnet-backend:latest \ No newline at end of file From 95a022d479297e81fa04999a6bbf051cf6fdd943 Mon Sep 17 00:00:00 2001 From: kittentm Date: Wed, 3 Jun 2026 13:52:09 +0200 Subject: [PATCH 057/119] revert 65d2c9dc2020a91a4d993c0a19e1f22fe0a15c4e revert wtf is going on with forgejo rn --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index df1dcaf..8662fd7 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -22,7 +22,7 @@ jobs: - name: build env: DOCKER_USER: ${{ secrets.DOCKER_USER }} - run: docker buildx build -t $DOCKER_USER/splatnet-backend:latest . + run: docker build -t $DOCKER_USER/splatnet-backend:latest . - name: push if: github.event_name == 'workflow_dispatch' From f42880bec26a4d77ea02bfb1af57b4e8dc8d216a Mon Sep 17 00:00:00 2001 From: kittentm Date: Wed, 3 Jun 2026 13:52:34 +0200 Subject: [PATCH 058/119] revert d885899baf47afb621eb50ffcb6fe9fac4c2e36d revert ci doesnt run in containers --- .forgejo/workflows/build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 8662fd7..6d85c91 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -11,6 +11,15 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 + + - name: install docker??? + run: | + apt update && apt install wget cmake -y && \ + wget "https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" && \ + dpkg --force-confold -i "docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" + + - name: set up Docker Buildx + uses: docker/setup-buildx-action@v4 - name: login if: github.event_name == 'workflow_dispatch' From c410aa4074ef547ee640714022b7306eb2b52480 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 3 Jun 2026 12:03:47 +0000 Subject: [PATCH 059/119] Update dependency axios to v1.17.0 --- judd/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 52e6e9f..1992c15 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -384,9 +384,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.1.tgz", - "integrity": "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", + "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", From cbaa1fa94117db54899eac11e87ad52bcbb3588c Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 3 Jun 2026 12:18:34 +0000 Subject: [PATCH 060/119] Update dependency idna to v3.18 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 621d4cd..2ab7195 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", - "idna==3.17", + "idna==3.18", "oauthlib==3.3.1", "oead==1.2.9.post4", "pendulum==3.2.0", From d6c4ddac449d60c698ff6409dd3a4650abcaef26 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 3 Jun 2026 22:12:09 +0000 Subject: [PATCH 061/119] Update dependency uvicorn to v0.49.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 2ab7195..9696cb2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ "typing-inspection==0.4.2", "tzdata==2026.2", "urllib3==2.7.0", - "uvicorn==0.48.0", + "uvicorn==0.49.0", "jinja2==3.1.6", ] From 1dfa7bccf20fc58e4fca6c62be8f1b8674894f17 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 4 Jun 2026 09:03:41 +0000 Subject: [PATCH 062/119] Update dependency python-multipart to v0.0.31 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9696cb2..ea51c74 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", - "python-multipart==0.0.30", + "python-multipart==0.0.31", "pyyaml==6.0.3", "requests==2.34.2", "requests-oauthlib==2.0.0", From 39f0ff2bf9b1517dcabcb185e9c69226890a2321 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 4 Jun 2026 16:47:45 +0000 Subject: [PATCH 063/119] Update dependency python-multipart to v0.0.32 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ea51c74..4400b21 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "pydantic-settings==2.14.1", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", - "python-multipart==0.0.31", + "python-multipart==0.0.32", "pyyaml==6.0.3", "requests==2.34.2", "requests-oauthlib==2.0.0", From d776c115550887f244e6ebd879b5777384f7ec8f Mon Sep 17 00:00:00 2001 From: Spacebot Date: Tue, 9 Jun 2026 22:40:37 +0000 Subject: [PATCH 064/119] Update dependency cryptography to v48.0.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4400b21..e706f93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "charset-normalizer==3.4.7", "click==8.4.1", "colorama==0.4.6", - "cryptography==48.0.0", + "cryptography==48.0.1", "fastapi==0.136.3", "fastapi-cache2==0.2.2", "greenlet==3.5.1", From aaef1e7ecd9ba3da8f3d77f67bb7ac8c196f49b6 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 11 Jun 2026 14:43:58 +0000 Subject: [PATCH 065/119] Update dependency starlette to v1.3.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e706f93..dbc3513 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.50", - "starlette==1.2.1", + "starlette==1.3.0", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From ceeed0dadeb89c81778adddc59489bd7d846aab3 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 12 Jun 2026 09:35:42 +0000 Subject: [PATCH 066/119] Update dependency starlette to v1.3.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dbc3513..3516672 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.50", - "starlette==1.3.0", + "starlette==1.3.1", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From fdfde0fb3db0206659c8b889d1cb8771fec4cc5b Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 12 Jun 2026 20:22:20 +0000 Subject: [PATCH 067/119] Update dependency cryptography to v49 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3516672..18d64a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "charset-normalizer==3.4.7", "click==8.4.1", "colorama==0.4.6", - "cryptography==48.0.1", + "cryptography==49.0.0", "fastapi==0.136.3", "fastapi-cache2==0.2.2", "greenlet==3.5.1", From 2ac86b3fc6a50783d4c5cd686b336cbd045ca89a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 14 Jun 2026 13:08:39 +0000 Subject: [PATCH 068/119] Update dependency fastapi to v0.137.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 18d64a9..a7d9cf4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ dependencies = [ "click==8.4.1", "colorama==0.4.6", "cryptography==49.0.0", - "fastapi==0.136.3", + "fastapi==0.137.0", "fastapi-cache2==0.2.2", "greenlet==3.5.1", "h11==0.16.0", From 395480182356ae50a5bf8073686889ab8af58ab3 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sun, 14 Jun 2026 18:09:03 +0000 Subject: [PATCH 069/119] Update dependency axios to v1.18.0 --- judd/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 1992c15..09b3885 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -384,9 +384,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.17.0.tgz", - "integrity": "sha512-J8SwNxprqqpbfenehxWYXE7CW+wM1BB4w3+N+g+/Wx40xM4rsLrfPmHHxSWIxJLYDgSY/HqlFPIYb2/S3rxafw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.0.tgz", + "integrity": "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", From 313dfa3cecc85232539724c9e276291658824cc6 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 15 Jun 2026 11:55:28 +0000 Subject: [PATCH 070/119] Update dependency fastapi to v0.137.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a7d9cf4..711e6bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ dependencies = [ "click==8.4.1", "colorama==0.4.6", "cryptography==49.0.0", - "fastapi==0.137.0", + "fastapi==0.137.1", "fastapi-cache2==0.2.2", "greenlet==3.5.1", "h11==0.16.0", From d650edd883f1f9dd5f8cf18a18bbf05ca484c882 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 15 Jun 2026 12:24:49 +0000 Subject: [PATCH 071/119] Update dependency multer to v2.2.0 --- judd/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 09b3885..02141fc 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1374,9 +1374,9 @@ "license": "MIT" }, "node_modules/multer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.1.1.tgz", - "integrity": "sha512-mo+QTzKlx8R7E5ylSXxWzGoXoZbOsRMpyitcht8By2KHvMbf3tjwosZ/Mu/XYU6UuJ3VZnODIrak5ZrPiPyB6A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/multer/-/multer-2.2.0.tgz", + "integrity": "sha512-6rdyFg2kLrMh9Jee7/BMPuV9lEAd7lLW2YUpF9/YxR7njyoUwwQ0ZPh3TaIY50Sw6vlyD2HW3wGOkTS4P79xrQ==", "license": "MIT", "dependencies": { "append-field": "^1.0.0", From c4b503c208fde10afb922563bd0d8edbf9d97e6d Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 15 Jun 2026 15:55:56 +0000 Subject: [PATCH 072/119] Update dependency sqlalchemy to v2.0.51 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 711e6bf..692b625 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ dependencies = [ "requests==2.34.2", "requests-oauthlib==2.0.0", "six==1.17.0", - "sqlalchemy==2.0.50", + "sqlalchemy==2.0.51", "starlette==1.3.1", "tweepy==4.16.0", "typing-extensions==4.15.0", From 40fce749ba6c59fe9c8a4d8476638d1abb186261 Mon Sep 17 00:00:00 2001 From: kitten Date: Mon, 15 Jun 2026 20:25:06 +0200 Subject: [PATCH 073/119] chore: disable auto merge --- renovate.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/renovate.json b/renovate.json index 3f918de..401475e 100644 --- a/renovate.json +++ b/renovate.json @@ -4,7 +4,7 @@ "packageRules": [ { "matchUpdateTypes": ["minor", "patch"], - "automerge": true + "automerge": false }, { "matchUpdateTypes": ["major"], From 269f9f40580bcd6beb1644baa45ca01891b18dd7 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 15 Jun 2026 22:04:03 +0000 Subject: [PATCH 074/119] Update dependency anyio to v4.14.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 692b625..6e842bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ requires-python = ">=3.11" dependencies = [ "annotated-doc==0.0.4", "annotated-types==0.7.0", - "anyio==4.13.0", + "anyio==4.14.0", "argon2-cffi==25.1.0", "argon2-cffi-bindings==25.1.0", "certifi==2026.5.20", From e013c5930f4373cf7149a590da4c484037c89997 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 17 Jun 2026 10:48:51 +0000 Subject: [PATCH 075/119] Update dependency certifi to v2026.6.17 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 6e842bc..8961f02 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "anyio==4.14.0", "argon2-cffi==25.1.0", "argon2-cffi-bindings==25.1.0", - "certifi==2026.5.20", + "certifi==2026.6.17", "cffi==2.0.0", "charset-normalizer==3.4.7", "click==8.4.1", From e12611b8125cac72efd4e24384ee7a257e991a78 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 17 Jun 2026 17:48:30 +0000 Subject: [PATCH 076/119] Update dependency greenlet to v3.5.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8961f02..0a55d4d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "cryptography==49.0.0", "fastapi==0.137.1", "fastapi-cache2==0.2.2", - "greenlet==3.5.1", + "greenlet==3.5.2", "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", From 2f59f2f315f61f807d128895ddf6fe9dc5d971ce Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 17 Jun 2026 17:04:10 +0000 Subject: [PATCH 077/119] Update dependency joi to v18.2.3 --- judd/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 02141fc..4091e11 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1240,9 +1240,9 @@ "license": "MIT" }, "node_modules/joi": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-18.2.1.tgz", - "integrity": "sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ==", + "version": "18.2.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-18.2.3.tgz", + "integrity": "sha512-N5A3KTWQpPWT4ExxxPlUx7WmykGXRzhNidWhV41d6Abu9YfI2NyWCJuxdPnslJCPWtbRpSVOWSnSS6GakLM/Rg==", "license": "BSD-3-Clause", "dependencies": { "@hapi/address": "^5.1.1", From 75dca3509e026ea72ae3e3e2bde1e5bedcc4cdfd Mon Sep 17 00:00:00 2001 From: kitten Date: Thu, 18 Jun 2026 05:18:58 +0200 Subject: [PATCH 078/119] fix this bullshit finally --- .forgejo/workflows/build.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 6d85c91..ed2af5e 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -11,12 +11,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - - name: install docker??? - run: | - apt update && apt install wget cmake -y && \ - wget "https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" && \ - dpkg --force-confold -i "docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" + + - name: Set up Docker Engine + uses: docker/setup-docker-action@v4 - name: set up Docker Buildx uses: docker/setup-buildx-action@v4 From 2d703c78b3bac0eeb413b757eaab485a3be5e976 Mon Sep 17 00:00:00 2001 From: kitten Date: Thu, 18 Jun 2026 05:22:06 +0200 Subject: [PATCH 079/119] fix: forgot this isn't GitHub --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index ed2af5e..49454b0 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v6 - name: Set up Docker Engine - uses: docker/setup-docker-action@v4 + uses: https://github.com/docker/setup-docker-action@v4 - name: set up Docker Buildx uses: docker/setup-buildx-action@v4 From 13afb709c5f2c47e40cb80605d47e7816b9f8b98 Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 19 Jun 2026 04:56:59 +0200 Subject: [PATCH 080/119] revert 2d703c78b3bac0eeb413b757eaab485a3be5e976 revert fix: forgot this isn't GitHub --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 49454b0..ed2af5e 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -13,7 +13,7 @@ jobs: uses: actions/checkout@v6 - name: Set up Docker Engine - uses: https://github.com/docker/setup-docker-action@v4 + uses: docker/setup-docker-action@v4 - name: set up Docker Buildx uses: docker/setup-buildx-action@v4 From c89806fe8713fbb537d4a9adcffffd5123f1291c Mon Sep 17 00:00:00 2001 From: kitten Date: Fri, 19 Jun 2026 04:57:10 +0200 Subject: [PATCH 081/119] revert 75dca3509e026ea72ae3e3e2bde1e5bedcc4cdfd revert fix this bullshit finally --- .forgejo/workflows/build.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index ed2af5e..6d85c91 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -11,9 +11,12 @@ jobs: steps: - name: Checkout uses: actions/checkout@v6 - - - name: Set up Docker Engine - uses: docker/setup-docker-action@v4 + + - name: install docker??? + run: | + apt update && apt install wget cmake -y && \ + wget "https://download.docker.com/linux/debian/dists/bookworm/pool/stable/amd64/docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" && \ + dpkg --force-confold -i "docker-ce-cli_29.2.1-1~debian.12~bookworm_amd64.deb" - name: set up Docker Buildx uses: docker/setup-buildx-action@v4 From 0b5e56b69bcc3537ea27cb00d429aa113217ce17 Mon Sep 17 00:00:00 2001 From: red binder Date: Sun, 21 Jun 2026 23:37:29 +0200 Subject: [PATCH 082/119] rewrite for new account oauth --- config.py | 1 + routes/equipment/equipment.py | 2 +- routes/equipment/equipment_history.py | 2 +- routes/me.py | 4 +-- routes/sso.py | 2 +- services/auth.py | 43 ++++++++++++++------------- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/config.py b/config.py index 7d81b09..66597cf 100644 --- a/config.py +++ b/config.py @@ -18,6 +18,7 @@ class Settings(BaseSettings): twitter_client_id: str twitter_client_secret: str twitter_redirect_uri: str + account_client_secret: str model_config = SettingsConfigDict( env_file=[ diff --git a/routes/equipment/equipment.py b/routes/equipment/equipment.py index 41ef3f7..e77018f 100644 --- a/routes/equipment/equipment.py +++ b/routes/equipment/equipment.py @@ -33,7 +33,7 @@ async def get_equipment_composite(request: Request, db: DBSession = Depends(get_ try: decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() token_data = auth.get_token(user.username, decrypted_pass) - profile = json.loads(auth.get_profile(token_data["token"])) + profile = json.loads(auth.get_profile(token_data["access_token"])) pid_val = int(profile.get("pid")) mii_name = profile.get("name", user.username) diff --git a/routes/equipment/equipment_history.py b/routes/equipment/equipment_history.py index a74309e..e9cacb0 100644 --- a/routes/equipment/equipment_history.py +++ b/routes/equipment/equipment_history.py @@ -27,7 +27,7 @@ async def get_history(request: Request, db: DBSession = Depends(get_db)): try: decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() token_data = auth.get_token(user.username, decrypted_pass) - profile = json.loads(auth.get_profile(token_data["token"])) + profile = json.loads(auth.get_profile(token_data["access_token"])) pid_val = int(profile.get("pid")) print(f"Fetching History for PID: {pid_val}") diff --git a/routes/me.py b/routes/me.py index 4d20b11..72a2456 100644 --- a/routes/me.py +++ b/routes/me.py @@ -33,10 +33,10 @@ async def get_my_profile(request: Request, db: DBSession = Depends(get_db)): decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() token_data = auth.get_token(user.username, decrypted_pass) - if not token_data or "token" not in token_data: + if not token_data or "access_token" not in token_data: return RedirectResponse(url="/sign_in/") - profile_data = auth.get_profile(token_data["token"]) + profile_data = auth.get_profile(token_data["access_token"]) if not profile_data: raise HTTPException(status_code=404, detail="Profile not found") diff --git a/routes/sso.py b/routes/sso.py index e33d9cd..7bbbfcc 100644 --- a/routes/sso.py +++ b/routes/sso.py @@ -37,7 +37,7 @@ async def login( try: print("fetching spfn token") data = auth.get_token(username, password) - if not data or "token" not in data: + if not data or "access_token" not in data: print("auth failed") return RedirectResponse(f"{auth_path}{sep}error=auth&username={username}", 303) diff --git a/services/auth.py b/services/auth.py index d25218d..79dde3b 100644 --- a/services/auth.py +++ b/services/auth.py @@ -1,35 +1,36 @@ import requests -import base64 -from argon2 import PasswordHasher +from config import settings API_URL = "https://account.spfn.net/api/v2" -ph = PasswordHasher() - -def hash_password(password: str): - return ph.hash(password) - -def verify_password(hashed: str, password: str): - try: - return ph.verify(hashed, password) - except Exception: - return False +CLIENT_ID = "splatnet" +CLIENT_SECRET = settings.account_client_secret def get_token(username, password): - creds = f"{username} {password}" - encoded = base64.b64encode(creds.encode()).decode() + url = f"{API_URL}/oauth2/generate_token" - headers = { - "Authorization": f"Basic {encoded}", - "User-Agent": "saturday & allison should lwk kiss..." + payload = { + "grant_type": "password", + "username": username, + "password": password, + "client_id": CLIENT_ID, + "client_secret": CLIENT_SECRET } - response = requests.get(f"{API_URL}/oauth2/generate_token", headers=headers, timeout=10) + headers = { + "User-Agent": "chiyo & eri should lwk kiss..." + } + + response = requests.post(url, data=payload, headers=headers, timeout=10) return response.json() if response.ok else None def get_profile(token): + url = f"{API_URL}/users/@me/profile" + headers = { "Authorization": f"Bearer {token}", - "User-Agent": "every update im going to change this user agent because im bored!!" + "User-Agent": "lets make the most of the night like were gonna die young!!" } - response = requests.get(f"{API_URL}/users/@me/profile", headers=headers, timeout=10) - return response.text if response.ok else None \ No newline at end of file + + response = requests.get(url, headers=headers, timeout=10) + + return response.json() if response.ok else None \ No newline at end of file From ca8090d20de178d21f486d37fb2c9927492ee6c2 Mon Sep 17 00:00:00 2001 From: red binder Date: Sun, 21 Jun 2026 23:40:21 +0200 Subject: [PATCH 083/119] update more routes --- routes/equipment/equipment.py | 2 +- routes/equipment/equipment_history.py | 2 +- routes/twitter_link.py | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/routes/equipment/equipment.py b/routes/equipment/equipment.py index e77018f..72c397e 100644 --- a/routes/equipment/equipment.py +++ b/routes/equipment/equipment.py @@ -33,7 +33,7 @@ async def get_equipment_composite(request: Request, db: DBSession = Depends(get_ try: decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() token_data = auth.get_token(user.username, decrypted_pass) - profile = json.loads(auth.get_profile(token_data["access_token"])) + profile = auth.get_profile(token_data["access_token"]) pid_val = int(profile.get("pid")) mii_name = profile.get("name", user.username) diff --git a/routes/equipment/equipment_history.py b/routes/equipment/equipment_history.py index e9cacb0..54060ff 100644 --- a/routes/equipment/equipment_history.py +++ b/routes/equipment/equipment_history.py @@ -27,7 +27,7 @@ async def get_history(request: Request, db: DBSession = Depends(get_db)): try: decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() token_data = auth.get_token(user.username, decrypted_pass) - profile = json.loads(auth.get_profile(token_data["access_token"])) + profile = auth.get_profile(token_data["access_token"]) pid_val = int(profile.get("pid")) print(f"Fetching History for PID: {pid_val}") diff --git a/routes/twitter_link.py b/routes/twitter_link.py index 9addb7b..65fcd00 100644 --- a/routes/twitter_link.py +++ b/routes/twitter_link.py @@ -93,7 +93,7 @@ async def confirm_twitter(state: str, code: str, db: DBSession = Depends(get_db) decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() profile_auth = auth.get_token(user.username, decrypted_pass) - profile_response = auth.get_profile(profile_auth["token"]) + profile_response = auth.get_profile(profile_auth["access_token"]) if isinstance(profile_response, str): try: @@ -149,7 +149,7 @@ async def get_twitter_status(request: Request, db: DBSession = Depends(get_db)): try: decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() profile_auth = auth.get_token(user.username, decrypted_pass) - profile_res = auth.get_profile(profile_auth["token"]) + profile_res = auth.get_profile(profile_auth["access_token"]) if isinstance(profile_res, str): profile_data = json.loads(profile_res) @@ -183,7 +183,7 @@ async def unlink_twitter(request: Request, db: DBSession = Depends(get_db)): user = db.query(User).filter(User.username == db_session.username).first() decrypted_pass = cipher.decrypt(user.spfn_pass_enc.encode()).decode() profile_auth = auth.get_token(user.username, decrypted_pass) - profile_data = auth.get_profile(profile_auth["token"]) + profile_data = auth.get_profile(profile_auth["access_token"]) if isinstance(profile_data, str): profile_data = json.loads(profile_data) From c4fe4f1bf1017a8443a10d5c612846e8b79ba23d Mon Sep 17 00:00:00 2001 From: kitten Date: Tue, 23 Jun 2026 06:50:34 +0200 Subject: [PATCH 084/119] fix: add missing function --- services/auth.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/auth.py b/services/auth.py index 79dde3b..1064edc 100644 --- a/services/auth.py +++ b/services/auth.py @@ -1,9 +1,14 @@ import requests from config import settings +from argon2 import PasswordHasher API_URL = "https://account.spfn.net/api/v2" CLIENT_ID = "splatnet" CLIENT_SECRET = settings.account_client_secret +ph = PasswordHasher() + +def hash_password(password: str): + return ph.hash(password) def get_token(username, password): url = f"{API_URL}/oauth2/generate_token" From 35a6c0db787fec6be0ced767673e9a45bdfde78d Mon Sep 17 00:00:00 2001 From: kitten Date: Thu, 2 Jul 2026 09:13:15 +0200 Subject: [PATCH 085/119] feat: add /leaderboard/getplayerstats/pid?mode (#65) Adds the ability to grab a players stats by pid without them being on the leaderboard. Untested changes. Reviewed-on: https://git.spbr.net/spacebar/SplatNet-Backend/pulls/65 --- main.py | 2 ++ routes/ranking_grabstats.py | 72 +++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 routes/ranking_grabstats.py diff --git a/main.py b/main.py index 7f31651..3496c9e 100644 --- a/main.py +++ b/main.py @@ -14,6 +14,7 @@ from routes.equipment import equipment_history from routes.equipment import equipment from services.boss_retrieval import process_boss_file from routes import Ranking +from routes import ranking_grabstats from routes import twitter_link from contextlib import asynccontextmanager from datetime import datetime, timedelta, timezone @@ -187,6 +188,7 @@ app.include_router(equipment_history.router, prefix="/api/v1") app.include_router(equipment.router, prefix="/api/v1") app.include_router(Ranking.router, prefix="/api/v1") app.include_router(twitter_link.router, prefix="/api/v1") +app.include_router(ranking_grabstats.router, prefix="/api/v1") def start(): uvicorn.run("main:app", host="0.0.0.0", port=settings.port, reload=False) diff --git a/routes/ranking_grabstats.py b/routes/ranking_grabstats.py new file mode 100644 index 0000000..b46f47e --- /dev/null +++ b/routes/ranking_grabstats.py @@ -0,0 +1,72 @@ +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session as DBSession +from sqlalchemy import desc +from database import SessionLocal, PlayerRank, EquipmentLast +from fastapi_cache.decorator import cache + +router = APIRouter() + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() + +@router.get("/leaderboard/getplayerstats/{pid}") +@cache(expire=60) +async def get_player_stats(pid: int, mode: int | None = None, db: DBSession = Depends(get_db)): + try: + query = ( + db.query(PlayerRank, EquipmentLast) + .outerjoin(EquipmentLast, PlayerRank.PId == EquipmentLast.PId) + .filter(PlayerRank.PId == pid) + ) + + if mode is not None: + query = query.filter(PlayerRank.GameMode == mode) + + result = query.first() + + if not result: + raise HTTPException(status_code=404, detail="Player not found") + + player, gear = result + + player_data = { + "PId": player.PId, + "MiiName": player.MiiName, + "Rank": player.Rank, + "GameMode": player.GameMode, + "WinSum": player.WinSum, + "LoseSum": player.LoseSum, + "RankingScore": round(player.RankingScore, 2), + "weapon": gear.weapon if gear else None, + "headgear": gear.Gear_Head if gear else None, + "clothes": gear.Gear_Clothes if gear else None, + "shoes": gear.Gear_Shoes if gear else None, + } + + if player.GameMode == 2: + top_100_query = ( + db.query(PlayerRank.PId) + .order_by(desc(PlayerRank.FesPower)) + .limit(100) + .all() + ) + top_100_tuples = set(top_100_query) + + is_top_100 = (player.PId,) in top_100_tuples + player_data["FesPower"] = player.FesPower + player_data["is_top_100_fes"] = is_top_100 + else: + player_data["FesPower"] = None + player_data["is_top_100_fes"] = False + + return player_data + + except HTTPException as http_ex: + raise http_ex + except Exception as e: + print(f"Error fetching stats for player {pid}: {e}") + return {"error": str(e)} \ No newline at end of file From 7f187bdad934943744f259edea8ff6006acb503e Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 24 Jun 2026 21:19:39 +0000 Subject: [PATCH 086/119] Update dependency anyio to v4.14.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0a55d4d..acdd105 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,7 @@ requires-python = ">=3.11" dependencies = [ "annotated-doc==0.0.4", "annotated-types==0.7.0", - "anyio==4.14.0", + "anyio==4.14.1", "argon2-cffi==25.1.0", "argon2-cffi-bindings==25.1.0", "certifi==2026.6.17", From 09a2f6f69d96b68bb992b44f205e1d9e4b3faff4 Mon Sep 17 00:00:00 2001 From: kitten Date: Tue, 7 Jul 2026 09:27:13 +0200 Subject: [PATCH 087/119] revert 3fe3913aa243a9b7491b8dd00763d8feaf5bd952 revert fix: accept submissions if validation failed --- judd/routes/post.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/judd/routes/post.js b/judd/routes/post.js index 85d531e..f20a2a3 100644 --- a/judd/routes/post.js +++ b/judd/routes/post.js @@ -40,7 +40,7 @@ router.post('/post', postLimiter, async (request, response, next) => { } } catch (err) { console.error(`Caught error when validating ${pid}:`, err.message || err); - isPidValid = true; + isPidValid = false; } if (!isPidValid) { From aa5e9e5be092add05b499d6d1391afa3ee8c2df4 Mon Sep 17 00:00:00 2001 From: kittentm Date: Thu, 9 Jul 2026 23:01:38 +0200 Subject: [PATCH 088/119] chore: add .venv --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 251ef39..6200a6f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ fes_boss.yaml node_modules build splatnet_backend.egg-info -venv/* \ No newline at end of file +venv/* +.venv/* \ No newline at end of file From cf9a05855ffa88eb4ba4342dc8f4392933c8e538 Mon Sep 17 00:00:00 2001 From: kittentm Date: Thu, 9 Jul 2026 23:07:16 +0200 Subject: [PATCH 089/119] fix: a rly bad oopsie (untested) --- judd/titles/splatoon.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/judd/titles/splatoon.js b/judd/titles/splatoon.js index f75aa19..c910137 100644 --- a/judd/titles/splatoon.js +++ b/judd/titles/splatoon.js @@ -19,7 +19,7 @@ module.exports = { if (parseInt(data.SessionID) > MAX_INT32) sanitizedData.SessionID = 0; - const result = await SplatfestResult.create(sanitizedData); + const result = await SplatfestResult.create(sanitizedData, { ordering: false, ignoreDuplicates: false }); await Equipment.upsert({ PId: sanitizedData.PId, From 3065a4d51edf09a3c0798b8103dde4129b725295 Mon Sep 17 00:00:00 2001 From: kittentm Date: Thu, 9 Jul 2026 23:11:32 +0200 Subject: [PATCH 090/119] chore: fix coc --- code_of_conduct.md | 71 +++++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/code_of_conduct.md b/code_of_conduct.md index b9b2b84..bab5b09 100644 --- a/code_of_conduct.md +++ b/code_of_conduct.md @@ -1,40 +1,65 @@ -# Contributor Covenant Code of Conduct +# Spacebar Network Code of Conduct + +This repository adheres to the official Spacebar Network Code of Conduct ("COC.") These regulations extend to the entire Spacebar network, our official Discord community, and all Git repositories. By choosing to interact with our community, you are entering into a social contract designed to protect the integrity of the project and the well-being of its members. + +> **Note:** If you wish to propose changes or simply view the COC, the primary residence and master copy of this Code of Conduct can be found [here](https://git.spbr.net/spacebar/policy). + +If you intend to contribute code, participate in community discussions, or experience any element of the Spacebar ecosystem, you must strictly abide by the standards and expectations set forth in this Covenant. We believe that a healthy community is built on mutual respect and shared responsibility. Our goal is to foster a space that is welcoming, inclusive, and free from harassment for everyone, regardless of their background or level of experience. Failure to adhere to these principles may result in removal from the network, as we prioritize maintaining a safe and productive environment for all participants. + +--- ## Our Pledge -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. +We pledge to make the Spacebar community welcoming, safe, and equitable for all. -## Our Standards +We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant. -Examples of behavior that contributes to creating a positive environment include: +## Encouraged Behaviors -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language. -Examples of unacceptable behavior by participants include: +With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +1. Respecting the **purpose of our community**, our activities, and our ways of gathering. +2. Engaging **kindly and honestly** with others. +3. Respecting **different viewpoints** and experiences. +4. **Taking responsibility** for our actions and contributions. +5. Gracefully giving and accepting **constructive feedback**. +6. Committing to **repairing harm** when it occurs. +7. Behaving in other ways that promote and sustain the **well-being of our community**. -## Our Responsibilities +## Restricted Behaviors -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. +We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct. -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. +1. **Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop. +2. **Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people. +3. **Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits. +4. **Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community. +5. **Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission. +6. **Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group. +7. Behaving in other ways that **threaten the well-being** of our community. -## Scope +### Other Restrictions -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. +1. **Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions. +2. **Failing to credit sources.** Not properly crediting the sources of content you contribute. If you are found to be using SDK material, all of your content commited towards Spacebar will be removed. No exceptions. +3. **Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community. +4. **Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors. +5. **Discussion of Piracy, or anything relating.** + +## Reporting an Issue + +When an incident occurs, it is important to report it promptly. To report a possible violation, please contact the Spacebar Maintainers via contacting a SPFN or SPBR developer on the discord server found [here](https://discord.gg/grMSxZf). + +Spacebar moderators take reports seriously and will respond in a timely manner. They will investigate all reports by reviewing logs, messages, or interviewing participants. We aim to keep enforcement actions transparent while prioritizing the safety and confidentiality of those involved. + +--- ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version] +This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/). -[homepage]: https://contributor-covenant.org -[version]: https://contributor-covenant.org/version/1/4/ +Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/) + +For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). \ No newline at end of file From 8b532e831e95480cf8b837771b1bb2d5e15bcb77 Mon Sep 17 00:00:00 2001 From: kittentm Date: Sat, 18 Jul 2026 04:02:05 +0200 Subject: [PATCH 091/119] fix: improve XML parsing --- services/boss_retrieval.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/services/boss_retrieval.py b/services/boss_retrieval.py index 54dc664..3737f76 100644 --- a/services/boss_retrieval.py +++ b/services/boss_retrieval.py @@ -15,29 +15,46 @@ def process_boss_file(): base_url = settings.boss_url.rstrip('/') tasks = [ - {"url": f"{base_url}/zvGSM4kOrXpkKnpT/schdat2?c=JP&l=en", "output": "boss.yaml"}, - {"url": f"{base_url}/zvGSM4kOrXpkKnpT/optdat2?c=US&l=en", "output": "fes_boss.yaml"} + { + "url": f"{base_url}/zvGSM4kOrXpkKnpT/schdat2?c=JP&l=en", + "filename": "VSSetting.byaml", + "output": "boss.yaml" + }, + { + "url": f"{base_url}/zvGSM4kOrXpkKnpT/optdat2?c=US&l=en", + "filename": "Festival.byaml", + "output": "fes_boss.yaml" + } ] try: success_all = True for task in tasks: master_url = task["url"] + target_filename = task["filename"] output_yaml = task["output"] print(f"data get: {master_url}") meta_res = requests.get(master_url, timeout=10) meta_res.raise_for_status() root = ET.fromstring(meta_res.content) - data_url_element = root.find(".//Url") - if data_url_element is None or not data_url_element.text: - print("woops! no tag found in the XML response") + # LMFAO HOW DID THIS FLY UNDER THE RADAR FOR SO LONG + real_data_url = None + for file_element in root.findall(".//File"): + filename_elem = file_element.find("Filename") + if filename_elem is not None and filename_elem.text == target_filename: + url_elem = file_element.find("Url") + if url_elem is not None and url_elem.text: + real_data_url = url_elem.text.strip() + break + + if not real_data_url: + print(f"woops! could not find URL for file '{target_filename}' in the XML response") success_all = False continue - real_data_url = data_url_element.text.strip() - print(f"parsed data url: {real_data_url}") + print(f"parsed data url for {target_filename}: {real_data_url}") res = requests.get(real_data_url, timeout=10) res.raise_for_status() From 8d9909a9ed037fdcb20eacfc14a50b5d4e674bc2 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sat, 18 Jul 2026 02:18:24 +0000 Subject: [PATCH 092/119] Update dependency pg to v8.22.0 --- judd/package-lock.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 4091e11..6ba5877 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1463,14 +1463,14 @@ } }, "node_modules/pg": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.21.0.tgz", - "integrity": "sha512-AUP1EYJuHraQGsVoCQVIcM7TEJVGtDzxWtGFZd8rds9d+CCXlU5Js1rYgfLNvxy9iJrpHjGrRjoi/3BT9fRyiA==", + "version": "8.22.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.22.0.tgz", + "integrity": "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==", "license": "MIT", "dependencies": { - "pg-connection-string": "^2.13.0", + "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", - "pg-protocol": "^1.14.0", + "pg-protocol": "^1.15.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -1497,9 +1497,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.13.0.tgz", - "integrity": "sha512-EMnU9E2fSULdsbErBbMaXJvFeD9B4+nPcM3f+4lsiCR0BHLPrLVjv3DbyM2hgQQviKJaTWIRRTjKjWlHg3p2ig==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.0.tgz", + "integrity": "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==", "license": "MIT" }, "node_modules/pg-hstore": { @@ -1533,9 +1533,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.14.0.tgz", - "integrity": "sha512-n5taZ1kO3s9ngDTVxsEznOqCyToTgz0FLuPq0B33COy5pPpuWJpY3/2oRBVETuOgzdqRXfWpM9HIhp2LBBT1BA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.15.0.tgz", + "integrity": "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==", "license": "MIT" }, "node_modules/pg-types": { From ac59d976da2fa60f52645cc1baf16fd585072990 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 3 Aug 2026 21:49:09 +0000 Subject: [PATCH 093/119] Update dependency cffi to v2.1.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index acdd105..fd3e347 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ dependencies = [ "argon2-cffi==25.1.0", "argon2-cffi-bindings==25.1.0", "certifi==2026.6.17", - "cffi==2.0.0", + "cffi==2.1.1", "charset-normalizer==3.4.7", "click==8.4.1", "colorama==0.4.6", From 2293547d977d1ed7997a5ca817c8f8dcf1c551cc Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 19 Jun 2026 14:03:13 +0000 Subject: [PATCH 094/119] Update dependency pydantic-settings to v2.14.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fd3e347..f438a16 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "pycparser==3.0", "pydantic==2.13.4", "pydantic-core==2.46.4", - "pydantic-settings==2.14.1", + "pydantic-settings==2.14.2", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", "python-multipart==0.0.32", From 17682b74d17ff36024f531ae44b26e23ca7616bb Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 22 Jul 2026 12:03:50 +0000 Subject: [PATCH 095/119] Update dependency greenlet to v3.5.4 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f438a16..0f71905 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "cryptography==49.0.0", "fastapi==0.137.1", "fastapi-cache2==0.2.2", - "greenlet==3.5.2", + "greenlet==3.5.4", "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1", From 6f3bb98524046be5c39d3b3ab602fe941ef88207 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 24 Jun 2026 17:49:19 +0000 Subject: [PATCH 096/119] Update dependency click to v8.4.2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0f71905..edca420 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,7 +13,7 @@ dependencies = [ "certifi==2026.6.17", "cffi==2.1.1", "charset-normalizer==3.4.7", - "click==8.4.1", + "click==8.4.2", "colorama==0.4.6", "cryptography==49.0.0", "fastapi==0.137.1", From 0b7b272117eb3830dc91d3e0df8bc9b76023df75 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 29 Jul 2026 17:33:41 +0000 Subject: [PATCH 097/119] Update dependency axios to v1.19.0 --- judd/package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 6ba5877..a7bf051 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -384,13 +384,13 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.18.0.tgz", - "integrity": "sha512-E32NzpYKp++W7XRe52rHiXV2ehxmh3wbdgO7MHeFM+vqxLBYHzt0ElkiImtOBxtOmyp0yoC8C6uESVV84Y2/hw==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", "license": "MIT", "dependencies": { "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", + "form-data": "^4.0.6", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } @@ -998,16 +998,16 @@ } }, "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -1117,9 +1117,9 @@ } }, "node_modules/hasown": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", - "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" From d42f74c81cf368b359d7a465103253f5d2debd64 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 19 Jun 2026 03:03:31 +0000 Subject: [PATCH 098/119] Update actions/checkout action to v7 --- .forgejo/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 6d85c91..396db7d 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ vars.RUNNER_LABEL }} steps: - name: Checkout - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: install docker??? run: | From e37aa0dc37fc6cceb4ac59d3ba53747abb96724e Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 00:18:20 +0000 Subject: [PATCH 099/119] Update dependency annotated-doc to v0.0.5 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index edca420..83884ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Backend for SplatNet" readme = "README.md" requires-python = ">=3.11" dependencies = [ - "annotated-doc==0.0.4", + "annotated-doc==0.0.5", "annotated-types==0.7.0", "anyio==4.14.1", "argon2-cffi==25.1.0", From 8097e6f2780dc2b39b52a7ad965e8b6b7b0a0ef6 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 02:03:26 +0000 Subject: [PATCH 100/119] Update dependency express-rate-limit to v8.6.2 --- judd/package-lock.json | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index a7bf051..68a5650 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -833,11 +833,12 @@ } }, "node_modules/express-rate-limit": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz", - "integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==", + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.6.2.tgz", + "integrity": "sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==", "license": "MIT", "dependencies": { + "debug": "^4.4.3", "ip-address": "^10.2.0" }, "engines": { @@ -850,6 +851,29 @@ "express": ">= 4.11" } }, + "node_modules/express-rate-limit/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/express-rate-limit/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/express-subdomain": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/express-subdomain/-/express-subdomain-1.0.6.tgz", From 86792bc48e964d770600f894f181e5100a7f958b Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 02:03:09 +0000 Subject: [PATCH 101/119] Update dependency certifi to v2026.7.22 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 83884ec..ba68d9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,7 +10,7 @@ dependencies = [ "anyio==4.14.1", "argon2-cffi==25.1.0", "argon2-cffi-bindings==25.1.0", - "certifi==2026.6.17", + "certifi==2026.7.22", "cffi==2.1.1", "charset-normalizer==3.4.7", "click==8.4.2", From ad0cf396473e3d368d3db9d8a39be8fb2c7a823a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 01:02:56 +0000 Subject: [PATCH 102/119] Update dependency charset-normalizer to v3.4.9 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ba68d9a..3ee6192 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ dependencies = [ "argon2-cffi-bindings==25.1.0", "certifi==2026.7.22", "cffi==2.1.1", - "charset-normalizer==3.4.7", + "charset-normalizer==3.4.9", "click==8.4.2", "colorama==0.4.6", "cryptography==49.0.0", From a90061f692c97717fc594534ed7de27e815dee03 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 09:48:00 +0000 Subject: [PATCH 103/119] Update dependency starlette to v1.4.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3ee6192..56936c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.51", - "starlette==1.3.1", + "starlette==1.4.0", "tweepy==4.16.0", "typing-extensions==4.15.0", "typing-inspection==0.4.2", From 702abc832d3ea9b9d152c19f2cef9d74ac7d4111 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 06:03:19 +0000 Subject: [PATCH 104/119] Update dependency uvicorn to v0.52.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 56936c8..97dfb13 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ dependencies = [ "typing-inspection==0.4.2", "tzdata==2026.2", "urllib3==2.7.0", - "uvicorn==0.49.0", + "uvicorn==0.52.1", "jinja2==3.1.6", ] From ddfacaf4a5dacfcc8311bf3b039b353ca2a0ba30 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 05:03:30 +0000 Subject: [PATCH 105/119] Update dependency cryptography to v50 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 97dfb13..5dddc6d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ dependencies = [ "charset-normalizer==3.4.9", "click==8.4.2", "colorama==0.4.6", - "cryptography==49.0.0", + "cryptography==50.0.0", "fastapi==0.137.1", "fastapi-cache2==0.2.2", "greenlet==3.5.4", From 4e5d08b7fc87c195b299f2ecfbdfecb07715b26e Mon Sep 17 00:00:00 2001 From: Spacebot Date: Thu, 2 Jul 2026 09:04:25 +0000 Subject: [PATCH 106/119] Update dependency typing-extensions to v4.16.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 5dddc6d..7c5b344 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -41,7 +41,7 @@ dependencies = [ "sqlalchemy==2.0.51", "starlette==1.4.0", "tweepy==4.16.0", - "typing-extensions==4.15.0", + "typing-extensions==4.16.0", "typing-inspection==0.4.2", "tzdata==2026.2", "urllib3==2.7.0", From 014e59b234e557f63b3c6067cd96320da286a06a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 03:03:37 +0000 Subject: [PATCH 107/119] Update dependency discord.js to v14.27.0 --- judd/package-lock.json | 52 +++++++++++++++++------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index 68a5650..d2aa1f1 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -68,9 +68,9 @@ } }, "node_modules/@discordjs/rest": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.6.1.tgz", - "integrity": "sha512-wwQdgjeaoYFiaG+atbqx6aJDpqW7JHAo0HrQkBTbYzM3/PJ3GweQIpgElNcGZ26DCUOXMyawYd0YF7vtr+fZXg==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.6.3.tgz", + "integrity": "sha512-wvOylxNYJkwKjctS/Mn5GP1w9r3/rzyH+ThD1JlAca6zEdlHs8QWBBUQJpU5Q+W6DoIj/Ljh1IPlZs7hTU+UAg==", "license": "Apache-2.0", "dependencies": { "@discordjs/collection": "^2.1.1", @@ -78,10 +78,10 @@ "@sapphire/async-queue": "^1.5.3", "@sapphire/snowflake": "^3.5.5", "@vladfrangu/async_event_emitter": "^2.4.6", - "discord-api-types": "^0.38.40", + "discord-api-types": "^0.38.50", "magic-bytes.js": "^1.13.0", "tslib": "^2.6.3", - "undici": "6.24.1" + "undici": "^6.27.0" }, "engines": { "node": ">=18" @@ -102,16 +102,6 @@ "url": "https://github.com/discordjs/discord.js?sponsor" } }, - "node_modules/@discordjs/rest/node_modules/@sapphire/snowflake": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.5.tgz", - "integrity": "sha512-xzvBr1Q1c4lCe7i6sRnrofxeO1QTP/LKQ6A6qy0iB4x5yfiSfARMEQEghojzTNALDTcv8En04qYNIco9/K9eZQ==", - "license": "MIT", - "engines": { - "node": ">=v14.0.0", - "npm": ">=7.0.0" - } - }, "node_modules/@discordjs/util": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.2.0.tgz", @@ -234,9 +224,9 @@ } }, "node_modules/@sapphire/snowflake": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz", - "integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.5.tgz", + "integrity": "sha512-xzvBr1Q1c4lCe7i6sRnrofxeO1QTP/LKQ6A6qy0iB4x5yfiSfARMEQEghojzTNALDTcv8En04qYNIco9/K9eZQ==", "license": "MIT", "engines": { "node": ">=v14.0.0", @@ -658,33 +648,33 @@ } }, "node_modules/discord-api-types": { - "version": "0.38.47", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.38.47.tgz", - "integrity": "sha512-XgXQodHQBAE6kfD7kMvVo30863iHX1LHSqNq6MGUTDwIFCCvHva13+rwxyxVXDqudyApMNAd32PGjgVETi5rjA==", + "version": "0.38.52", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.38.52.tgz", + "integrity": "sha512-uwe9EKfbjsmgWc2fdFjvDbj+dQqx3lp7wqDCmIha0jInuU+xeQjkCK9tMMn+p7RXfdVQORCInq4cD3U2ymDmyg==", "license": "MIT", "workspaces": [ "scripts/actions/documentation" ] }, "node_modules/discord.js": { - "version": "14.26.4", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.26.4.tgz", - "integrity": "sha512-4oBp8tc6Kf8IDBwAHhbsMaAqx1b5fob9SNasZT7V6yyyUydoO5i5fGuX7TmvRtR+q/WgKRnRViRoAWnG7fNyvA==", + "version": "14.27.0", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.27.0.tgz", + "integrity": "sha512-qHbFlFG2N7y3LjPySYsL6A1+BnX6bkTVgo842EX0CqVPk/KTMwZkojPHEXKsQUpWZNyz5BISNHK1cPpQw0+m4A==", "license": "Apache-2.0", "dependencies": { "@discordjs/builders": "^1.14.1", "@discordjs/collection": "1.5.3", "@discordjs/formatters": "^0.6.2", - "@discordjs/rest": "^2.6.1", + "@discordjs/rest": "^2.6.2", "@discordjs/util": "^1.2.0", "@discordjs/ws": "^1.2.3", - "@sapphire/snowflake": "3.5.3", - "discord-api-types": "^0.38.40", + "@sapphire/snowflake": "3.5.5", + "discord-api-types": "^0.38.49", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", "magic-bytes.js": "^1.13.0", "tslib": "^2.6.3", - "undici": "6.24.1" + "undici": "^6.27.0" }, "engines": { "node": ">=18" @@ -2137,9 +2127,9 @@ "license": "MIT" }, "node_modules/undici": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", - "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", + "version": "6.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.0.tgz", + "integrity": "sha512-LIY910g9TI13YS95lrMFrs8Rm/u/irgHeTWoKCoteeJ04CUJ92eEfj0rVn+7VKMPBpUPiUoBKfhNyLI23EE/KA==", "license": "MIT", "engines": { "node": ">=18.17" From d81f451963e708f115eb4c086152dfea6e48f1d9 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 05:03:21 +0000 Subject: [PATCH 108/119] Update dependency tzdata to v2026.3 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7c5b344..bd5da3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,7 +43,7 @@ dependencies = [ "tweepy==4.16.0", "typing-extensions==4.16.0", "typing-inspection==0.4.2", - "tzdata==2026.2", + "tzdata==2026.3", "urllib3==2.7.0", "uvicorn==0.52.1", "jinja2==3.1.6", From 0cecc52a557ba492490ef07af25f63d1f0de7326 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 12:18:27 +0000 Subject: [PATCH 109/119] Update dependency fastapi to v0.141.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index bd5da3b..3823149 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,7 +16,7 @@ dependencies = [ "click==8.4.2", "colorama==0.4.6", "cryptography==50.0.0", - "fastapi==0.137.1", + "fastapi==0.141.1", "fastapi-cache2==0.2.2", "greenlet==3.5.4", "h11==0.16.0", From a3571f971df0a82675131016cf3c99ee786073fe Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 12:33:23 +0000 Subject: [PATCH 110/119] Update dependency tweepy to v4.17.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3823149..95a34ca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,7 @@ dependencies = [ "six==1.17.0", "sqlalchemy==2.0.51", "starlette==1.4.0", - "tweepy==4.16.0", + "tweepy==4.17.0", "typing-extensions==4.16.0", "typing-inspection==0.4.2", "tzdata==2026.3", From 2b4e9ae7c02d39e62d3aa7475d282c4e225f43d0 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Wed, 5 Aug 2026 15:47:39 +0000 Subject: [PATCH 111/119] Update dependency starlette to v1.4.1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 95a34ca..7020f3b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.51", - "starlette==1.4.0", + "starlette==1.4.1", "tweepy==4.17.0", "typing-extensions==4.16.0", "typing-inspection==0.4.2", From b2991915146fa836e40de980ba7335f88797e1d1 Mon Sep 17 00:00:00 2001 From: kittentm Date: Thu, 6 Aug 2026 09:03:52 +0200 Subject: [PATCH 112/119] feat: add team colours & battleResultRate to boss response --- routes/boss.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/routes/boss.py b/routes/boss.py index d003d0f..e3ef57e 100644 --- a/routes/boss.py +++ b/routes/boss.py @@ -47,6 +47,20 @@ async def boss_rotation(request: Request): }) return formatted + def nintydevsuranidiotforusingrgb(color_val): + if not color_val: + return "#000000" + if isinstance(color_val, str): + parts = [float(p.strip()) for p in color_val.split(",") if p.strip()] + elif isinstance(color_val, (list, tuple)): + parts = [float(p) for p in color_val] + else: + return "#000000" + + # trash 4th val + rgb = [round(c * 255) for c in parts[:3]] + return f"#{rgb[0]:02X}{rgb[1]:02X}{rgb[2]:02X}" + with open("boss.yaml", "r", encoding='utf-8') as f: yaml_data = yaml.safe_load(f) @@ -97,14 +111,19 @@ async def boss_rotation(request: Request): fest_result = parse_iso(time_cfg.get("Result")) teams = fes_yaml.get("Teams", []) - team_shortnames = [] + formatted_teams = [] for team in teams: - team_shortnames.append(team.get("ShortName", {})) + raw_color = team.get("Color") + formatted_teams.append({ + "shortName": team.get("ShortName", {}), + "color": nintydevsuranidiotforusingrgb(raw_color) + }) response_data["splatfestivalSplatfest"] = { "stages": format_stages(fes_yaml.get("Stages", [])), "mode": RULE_NAMES.get(fes_yaml.get("Rule"), "TurfWar"), - "teams": team_shortnames, + "teams": formatted_teams, + "battleResultRate": fes_yaml.get("BattleResultRate", {}), "time": { "start": fest_start, "end": fest_end, From c696d306aa2e83a5fea5d1f0d5e9b4f0a65acb53 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Fri, 7 Aug 2026 09:47:49 +0000 Subject: [PATCH 113/119] Update dependency pydantic-settings to v2.15.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 7020f3b..0b674f2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "pycparser==3.0", "pydantic==2.13.4", "pydantic-core==2.46.4", - "pydantic-settings==2.14.2", + "pydantic-settings==2.15.0", "python-dateutil==2.9.0.post0", "python-dotenv==1.2.2", "python-multipart==0.0.32", From 432931aab27e4106d32ac0ff01997adffa9552cd Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sat, 8 Aug 2026 13:20:07 +0000 Subject: [PATCH 114/119] Update dependency starlette to v1.5.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0b674f2..91acfab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.51", - "starlette==1.4.1", + "starlette==1.5.0", "tweepy==4.17.0", "typing-extensions==4.16.0", "typing-inspection==0.4.2", From d4d6fd3d07fb89b29981092d066977ea7a9d329e Mon Sep 17 00:00:00 2001 From: red binder Date: Sat, 8 Aug 2026 21:17:43 +0200 Subject: [PATCH 115/119] update domain --- judd/routes/post.js | 4 ++-- services/auth.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/judd/routes/post.js b/judd/routes/post.js index f20a2a3..e8c7c00 100644 --- a/judd/routes/post.js +++ b/judd/routes/post.js @@ -34,7 +34,7 @@ router.post('/post', postLimiter, async (request, response, next) => { try { let isPidValid = true; try { - const spfnCheck = await axios.get(`https://account.spfn.net/api/v2/users/${pid}/mii`); + const spfnCheck = await axios.get(`https://account.spbr.net/api/v2/users/${pid}/mii`); if (typeof spfnCheck.data === 'string' && spfnCheck.data.includes('0008')) { isPidValid = false; } @@ -116,4 +116,4 @@ router.post('/post', postLimiter, async (request, response, next) => { return response.send('success'); }); -module.exports = router; \ No newline at end of file +module.exports = router; diff --git a/services/auth.py b/services/auth.py index 1064edc..efd1f49 100644 --- a/services/auth.py +++ b/services/auth.py @@ -2,7 +2,7 @@ import requests from config import settings from argon2 import PasswordHasher -API_URL = "https://account.spfn.net/api/v2" +API_URL = "https://account.spbr.net/api/v2" CLIENT_ID = "splatnet" CLIENT_SECRET = settings.account_client_secret ph = PasswordHasher() @@ -38,4 +38,4 @@ def get_profile(token): response = requests.get(url, headers=headers, timeout=10) - return response.json() if response.ok else None \ No newline at end of file + return response.json() if response.ok else None From 9625b1be621ed9c6a36b426670b28b01ebad4cd1 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sat, 8 Aug 2026 19:33:41 +0000 Subject: [PATCH 116/119] Update dependency pg to v8.23.0 --- judd/package-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/judd/package-lock.json b/judd/package-lock.json index d2aa1f1..d6335ca 100644 --- a/judd/package-lock.json +++ b/judd/package-lock.json @@ -1477,14 +1477,14 @@ } }, "node_modules/pg": { - "version": "8.22.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.22.0.tgz", - "integrity": "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA==", + "version": "8.23.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.23.0.tgz", + "integrity": "sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==", "license": "MIT", "dependencies": { "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", - "pg-protocol": "^1.15.0", + "pg-protocol": "^1.16.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -1547,9 +1547,9 @@ } }, "node_modules/pg-protocol": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.15.0.tgz", - "integrity": "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.16.0.tgz", + "integrity": "sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==", "license": "MIT" }, "node_modules/pg-types": { From 2933b3bba0e4737609f74ba84fb903a4291a9c46 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Sat, 8 Aug 2026 19:03:09 +0000 Subject: [PATCH 117/119] Update dependency starlette to v1.6.0 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 91acfab..74fbd4f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,7 @@ dependencies = [ "requests-oauthlib==2.0.0", "six==1.17.0", "sqlalchemy==2.0.51", - "starlette==1.5.0", + "starlette==1.6.0", "tweepy==4.17.0", "typing-extensions==4.16.0", "typing-inspection==0.4.2", From 03c11b44627d3a4ea669c59135216f210297f64a Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 10 Aug 2026 09:47:35 +0000 Subject: [PATCH 118/119] Update dependency typing-inspection to v0.4.3 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 74fbd4f..65e1911 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ "starlette==1.6.0", "tweepy==4.17.0", "typing-extensions==4.16.0", - "typing-inspection==0.4.2", + "typing-inspection==0.4.3", "tzdata==2026.3", "urllib3==2.7.0", "uvicorn==0.52.1", From 54041297e6f5c6941783617e3435713ca4e6be22 Mon Sep 17 00:00:00 2001 From: Spacebot Date: Mon, 10 Aug 2026 13:33:03 +0000 Subject: [PATCH 119/119] Update dependency greenlet to v3.5.5 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 65e1911..6dcb7ad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,7 +18,7 @@ dependencies = [ "cryptography==50.0.0", "fastapi==0.141.1", "fastapi-cache2==0.2.2", - "greenlet==3.5.4", + "greenlet==3.5.5", "h11==0.16.0", "httpcore==1.0.9", "httpx==0.28.1",