From 3d72dfbf6ee473cc8ddc60f9ae5311e0977fd818 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:18:05 +0000 Subject: [PATCH 1/4] docs: note when TFMCWeb resends player meta Co-Authored-By: Claude Opus 5.5 --- projects/ProvinceSystem/docs/identity/tfmcweb.md | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/ProvinceSystem/docs/identity/tfmcweb.md b/projects/ProvinceSystem/docs/identity/tfmcweb.md index 0ae5abf..225e844 100644 --- a/projects/ProvinceSystem/docs/identity/tfmcweb.md +++ b/projects/ProvinceSystem/docs/identity/tfmcweb.md @@ -125,6 +125,7 @@ Rules: - **Shared mint cooldown (`skin` + `drink`):** owned by **TFMCWeb** only. Profile is not in the shared family. - **Command gate:** LP `tfmcweb.token.create`; staff perm `tfmcweb.token.create.staff`. - Skin and drink **upload** entitlements: TFMCWeb `player-meta.*` → `PUT /characters/plugin/rpc-player-meta`. +- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. It also sends it about a second after LuckPerms recalculates an online player's permissions, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. Those LuckPerms-triggered sends are skipped when nothing changed, because LuckPerms recalculates every online player on each `sync-minutes` storage sync. ## Discord gate + RPCharacters freeze From eb11589a43e6eee94c66ed511fb6ce45b28a41db Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:25:47 +0000 Subject: [PATCH 2/4] docs: cover group recalculations and site restores in the meta resync note Co-Authored-By: Claude Opus 5.5 --- projects/ProvinceSystem/docs/identity/tfmcweb.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ProvinceSystem/docs/identity/tfmcweb.md b/projects/ProvinceSystem/docs/identity/tfmcweb.md index 225e844..a3124c8 100644 --- a/projects/ProvinceSystem/docs/identity/tfmcweb.md +++ b/projects/ProvinceSystem/docs/identity/tfmcweb.md @@ -125,7 +125,7 @@ Rules: - **Shared mint cooldown (`skin` + `drink`):** owned by **TFMCWeb** only. Profile is not in the shared family. - **Command gate:** LP `tfmcweb.token.create`; staff perm `tfmcweb.token.create.staff`. - Skin and drink **upload** entitlements: TFMCWeb `player-meta.*` → `PUT /characters/plugin/rpc-player-meta`. -- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. It also sends it about a second after LuckPerms recalculates an online player's permissions, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. Those LuckPerms-triggered sends are skipped when nothing changed, because LuckPerms recalculates every online player on each `sync-minutes` storage sync. +- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. About a second after LuckPerms recalculates an online player's permissions, or a group's (which checks every online player), it sends again, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. These LuckPerms-triggered sends skip a player whose meta has not changed since the last send, because LuckPerms recalculates every online player and group on each `sync-minutes` storage sync. Sends for one player go out in order, and a failed send is retried at the next recalculation. After restoring the website database, run `/web syncmeta` on each server: TFMCWeb cannot see the restore and would otherwise skip online players whose meta has not changed until they rejoin. ## Discord gate + RPCharacters freeze From 150d1ae628d0cabfdd1b89a5442f5428f6f357c2 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:31:04 +0000 Subject: [PATCH 3/4] docs: describe the meta resend window after a failed send Co-Authored-By: Claude Opus 5.5 --- projects/ProvinceSystem/docs/identity/tfmcweb.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ProvinceSystem/docs/identity/tfmcweb.md b/projects/ProvinceSystem/docs/identity/tfmcweb.md index a3124c8..7d81ff4 100644 --- a/projects/ProvinceSystem/docs/identity/tfmcweb.md +++ b/projects/ProvinceSystem/docs/identity/tfmcweb.md @@ -125,7 +125,7 @@ Rules: - **Shared mint cooldown (`skin` + `drink`):** owned by **TFMCWeb** only. Profile is not in the shared family. - **Command gate:** LP `tfmcweb.token.create`; staff perm `tfmcweb.token.create.staff`. - Skin and drink **upload** entitlements: TFMCWeb `player-meta.*` → `PUT /characters/plugin/rpc-player-meta`. -- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. About a second after LuckPerms recalculates an online player's permissions, or a group's (which checks every online player), it sends again, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. These LuckPerms-triggered sends skip a player whose meta has not changed since the last send, because LuckPerms recalculates every online player and group on each `sync-minutes` storage sync. Sends for one player go out in order, and a failed send is retried at the next recalculation. After restoring the website database, run `/web syncmeta` on each server: TFMCWeb cannot see the restore and would otherwise skip online players whose meta has not changed until they rejoin. +- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. About a second after LuckPerms recalculates an online player's permissions, or a group's (which checks every online player), it sends again, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. These LuckPerms-triggered sends skip a player whose meta has not changed since the last send, because LuckPerms recalculates every online player and group on each `sync-minutes` storage sync. Sends for one player go out one at a time, newest meta last. After a failed send, TFMCWeb resends that player's meta at every recalculation for 10 minutes, because a timed-out send can still reach the website after a newer one. After restoring the website database, run `/web syncmeta` on each server: TFMCWeb cannot see the restore and would otherwise skip online players whose meta has not changed until they rejoin. ## Discord gate + RPCharacters freeze From 5a9bb8e1d2d75bb28c0205536cf66296bcf6c997 Mon Sep 17 00:00:00 2001 From: Ryan Barlow <7389646+ryanbarlow97@users.noreply.github.com> Date: Sun, 11 Oct 2026 17:34:22 +0000 Subject: [PATCH 4/4] docs: qualify the meta resend ordering and repair guarantee Co-Authored-By: Claude Opus 5.5 --- projects/ProvinceSystem/docs/identity/tfmcweb.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/ProvinceSystem/docs/identity/tfmcweb.md b/projects/ProvinceSystem/docs/identity/tfmcweb.md index 7d81ff4..1c05595 100644 --- a/projects/ProvinceSystem/docs/identity/tfmcweb.md +++ b/projects/ProvinceSystem/docs/identity/tfmcweb.md @@ -125,7 +125,7 @@ Rules: - **Shared mint cooldown (`skin` + `drink`):** owned by **TFMCWeb** only. Profile is not in the shared family. - **Command gate:** LP `tfmcweb.token.create`; staff perm `tfmcweb.token.create.staff`. - Skin and drink **upload** entitlements: TFMCWeb `player-meta.*` → `PUT /characters/plugin/rpc-player-meta`. -- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. About a second after LuckPerms recalculates an online player's permissions, or a group's (which checks every online player), it sends again, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. These LuckPerms-triggered sends skip a player whose meta has not changed since the last send, because LuckPerms recalculates every online player and group on each `sync-minutes` storage sync. Sends for one player go out one at a time, newest meta last. After a failed send, TFMCWeb resends that player's meta at every recalculation for 10 minutes, because a timed-out send can still reach the website after a newer one. After restoring the website database, run `/web syncmeta` on each server: TFMCWeb cannot see the restore and would otherwise skip online players whose meta has not changed until they rejoin. +- TFMCWeb sends player meta on join, on config reload and with `/web syncmeta [player]`. About a second after LuckPerms recalculates an online player's permissions, or a group's (which checks every online player), it sends again, so a rank granted while they play (Patreon, staff panel or `/lp`) reaches the website without a rejoin. These LuckPerms-triggered sends skip a player whose meta has not changed since the last send, because LuckPerms recalculates every online player and group on each `sync-minutes` storage sync. Sends for one player are attempted one at a time, newest meta last. A timed-out send can still be applied by the website after a newer one, so after a failed send TFMCWeb resends that player's meta at every recalculation until one succeeds at least 10 minutes after the last failure. This repair is best effort and relies on recalculations happening, which the periodic sync provides. After restoring the website database, run `/web syncmeta` on each server: TFMCWeb cannot see the restore and would otherwise skip online players whose meta has not changed until they rejoin. ## Discord gate + RPCharacters freeze