- 🏷️ The panel names players. Each question from the plugin notes the player's name, UUID, and operator status per server in a directory, so the Players page, runs, the dashboard, and a player's page show names instead of pseudonyms. Players from before 6.4 keep their pseudonym until their next question. A rename shows everywhere at once, and an erasure takes the name off every run. The directory lives 400 days after a player's last question, a player's export includes their name, and the audit log still keeps pseudonyms only.
- 🙂 Faces. The Players page opens with a “Skin” column, and names carry the player's head in runs, the dashboard, and the erase picker. The backend fetches heads from mc-heads.net (by UUID, or by name on offline-mode servers) and caches them for 6 hours, so the panel's CSP stays
'self' and the viewer's browser never calls a third party.
- 🔎 Find and erase by name. The Players search takes a name's start, a UUID, or a pseudonym. “Erase a player” picks the player from a drop-down of that server's players, with face and UUID, and still takes a UUID or a pseudonym typed in; a name typed in whole works too, unless two players on the server shared it.
- 📊 More numbers. The Players table adds servers, errors, tokens, average answer time, and the first question. A player's page shows their name, UUID, pseudonym, operator status, and servers, eight tiles (questions, cost, error rate, typical and slowest time, tokens, tool calls, cancellations), questions by day and by hour, and their kinds of runs, models, and tools. A run's page adds the player's UUID, the license's name, the payment, web searches, spans in its trace, the error code, time per step, cost per 1000 tokens, and output speed; the runs table shows tokens and tool calls.
- 📈 More charts. The dashboard adds failed and cancelled questions stacked, tokens read and written, the typical answer time, the cost of a question, web searches, and the busiest players of the period.
- 🗑️ Delete a license. A license nobody paid for, or one refunded, deletes after one confirmation, with its budget windows; its payments stay as the record of money that moved. A paid license without a refund sends you to “Refund and revoke” first. An owner may delete it anyway after a warning about the payer's rights and a second agreement, and the audit log records the unrefunded Stars.
DELETE /api/admin/licenses/{id} answers 409 PAID without { "force": true }, and 403 for a forced delete by anyone but an owner.
- 🪪 Name players from before 6.4.
migrate players <name>=<uuid> … inside the container fills the directory for players who haven't asked since: their runs give the servers and the first and last question. A UUID without runs changes nothing, and a name from a newer question stays.
- 🔬 Every run traced by default.
TRACE_SAMPLE defaults to 1 on hosted backends too, so the Traces page fills from the first question. A value saved in the panel or set in the environment still wins.
docker pull ghcr.io/allay-ai/server:6.4.0