rebel shell

This commit is contained in:
zk
2026-05-08 16:54:34 +00:00
parent 03ad9a7dfd
commit efcd7652ae
148 changed files with 1317 additions and 514 deletions
+2 -2
View File
@@ -69,7 +69,7 @@ Empty Object.
`POST /api/v1/admin/recalc-pbs`
Inserts every distinct `(user_id, chart_id)` from the **`score`** table into **`pb_dirty`**, then **drains** `pb_dirty` and downstream **`session_dirty`** / **`game_profile_dirty`** queues until nothing remains (same batching as the background worker, but the HTTP request waits until idle). Intended when PBs may be out of sync (e.g. after a bad migration). There is **no request body** and no filter—always all distinct pairs that appear on scores.
Inserts every distinct `(user_id, chart_id)` from the **`score`** table into **`pb_dirty`**, then **drains** `pb_dirty` and downstream **`session_dirty`** / **`game_profile_dirty`** queues until nothing remains (same batching as the background worker, but the HTTP request waits until idle). Intended when PBs may be out of sync (e.g. after a bad migration). There is **no request body** and no filter-always all distinct pairs that appear on scores.
### Permissions
@@ -191,7 +191,7 @@ Empty Object.
`POST /api/v1/admin/recalc`
Enqueues **every chart** into **`score_rederive`**, then **drains** `score_rederive` and downstream **`pb_dirty`**, **`session_dirty`**, and **`game_profile_dirty`** queues until nothing remains (the request waits until idle). Re-runs `scoreDeriver` and `scoreCalcs` for every score. There is **no request body** and no filter—always all charts.
Enqueues **every chart** into **`score_rederive`**, then **drains** `score_rederive` and downstream **`pb_dirty`**, **`session_dirty`**, and **`game_profile_dirty`** queues until nothing remains (the request waits until idle). Re-runs `scoreDeriver` and `scoreCalcs` for every score. There is **no request body** and no filter-always all charts.
### Permissions
+19 -7
View File
@@ -236,13 +236,13 @@ provide callback URLs inside emails.
SMTP is always configured. Set:
- `TACHI_EMAIL_FROM` — `From` header (must match a verified sender when using Postmark).
- `TACHI_EMAIL_AUTH_POSTMARK` — `true` or `false`. When `true`, uses Postmark’s SMTP
endpoint; set `TACHI_EMAIL_AUTH_USER` and `TACHI_EMAIL_AUTH_PASS` to your server API token
(both are the token for Postmark SMTP).
- When Postmark is `false`: `TACHI_EMAIL_HOST`, `TACHI_EMAIL_PORT`, `TACHI_EMAIL_SECURE`
(`true` / `false`), and optionally `TACHI_EMAIL_AUTH_USER` / `TACHI_EMAIL_AUTH_PASS`
for servers that require auth (local Mailpit typically needs no auth).
- `TACHI_EMAIL_FROM` - `From` header (must match a verified sender when using Postmark).
- `TACHI_EMAIL_HOST`, `TACHI_EMAIL_PORT`, `TACHI_EMAIL_SECURE` (`true` / `false`).
- Optionally `TACHI_EMAIL_AUTH_USER` / `TACHI_EMAIL_AUTH_PASS` for SMTP auth (local Mailpit
typically needs none).
- For Postmark, use host `smtp.postmarkapp.com` (usually port `587` with `TACHI_EMAIL_SECURE=false`)
and set either auth field to your server API token (both username and password are the token for
Postmark SMTP).
`TRANSPORT_OPS` is derived from these variables and passed to Nodemailer.
@@ -272,6 +272,18 @@ interface INVITE_CODE_CONFIG: {
};
```
### TACHI_INVITE_ADMIN_INITIAL_INVITE_CODE
- Type: String (Optional, environment variable only)
A one-time bootstrap invite code for first-time instance setup. When `INVITE_CODE_CONFIG` is
configured, new instances have a chicken-and-egg problem: registration requires an invite code,
but invite codes can only be created by an existing user.
Set this environment variable to a long, random secret. The first person to register with this
code - while the `account` table is still empty - becomes the site admin. Once the first admin
exists, the code is no longer accepted.
### TACHI_CONFIG
- Type: TACHI_CONFIG