Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
LoadingWidgetREPO
Loading-screen panel for every player: live load states with stuck detection, talking bars, local voice volume; kick/ban and stuck-load lobby rescue for moderators. Works standalone; full SharePermissions integration when installed
| Last updated | 14 hours ago |
| Total downloads | 110 |
| Total rating | 0 |
| Categories | Tools Client-side AI Generated Quality Of Life |
| Dependency string | redos7-LoadingWidgetREPO-1.1.0 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
LoadingWidget
A panel on the R.E.P.O. loading screen — the one place the normal menus can't reach. Every player running the mod sees it while a multiplayer level load is in flight — between levels in the game itself, including through the scene-swap gap where even the game's own UI is gone; never on the boot/menu loads or in singleplayer. Works on its own; SharePermissions is an optional companion that unlocks its full moderation stack.
Everyone sees:
- every connected player with their live load state — LOADING / BUILDING / LOADED / READY — so the one player hanging the load is visible at a glance. When a load is genuinely stuck (the game's own ~25s verdict, or the panel's own backstop for the Start/reload phases it misses), the header flags STUCK and the blocking rows burn red
- a talking-volume bar per player
- a per-player local voice volume slider (0–200%, this machine only, resets on room leave)
Moderators (the host — plus SharePermissions moderators when it's installed) additionally get:
- Kick / Ban for stuck or misbehaving players
- a Lobby button that brings the whole room back to the lobby even when a load is stuck — with the host-side QUEUED / FORCE rescue escalation for a wedged transition (the vanilla stuck prompt only offers leaving the room; this bail keeps the room intact)
Standalone vs. with SharePermissions
The mod detects SharePermissions at startup and uses all of it when found:
| Standalone | With SharePermissions v1.17.0+ | |
|---|---|---|
| Who sees the panel | Everyone in the room running the mod | Everyone in the room running the mod |
| Who gets moderation actions | Host only | Host and SharePermissions moderators |
| Kick / Ban | The game's own kick & ban (host) | SharePermissions rules & wire protocol — moderators can kick remotely, bans are audited |
| Role icons | Host crown only | Full tiers: host / moderator / mod user / no mod |
| Lobby + QUEUED/FORCE rescue | Yes (host) | Yes, plus moderator-initiated via wire command |
| Load states, talking bars, local volume | Yes | Yes |
| Panel on/off toggle | This mod's config: UI / ShowLoadingPanel in BepInEx/config/RED.LoadingWidget.cfg |
SharePermissions' Settings tab "Loading panel" (config: UI / ShowLoadingPanel in SharePermissions' config file) — live, mid-load included |
Note on older SharePermissions (≤ 1.16.x): those versions ship this panel inside SharePermissions itself, so LoadingWidget stays dormant (one log line, no double panel). Update SharePermissions to 1.17.0+ — or uninstall it — to activate LoadingWidget.
Quick start
- Install this mod. That's it — the panel appears on multiplayer loading screens for everyone running it; the kick/ban and lobby controls light up for the host.
- Optional: install SharePermissions v1.17.0+ (and set it up as usual, secret code etc.) to get moderator access, role tiers, and its kick/ban machinery on the panel.
For developers
This mod is the panel UI plus the native FORCE lobby rescue, talking to a backend picked once
at startup (Plugin.ResolveBackend, soft [BepInDependency] so SharePermissions loads first when
present):
- Bridged — SharePermissions v1.17.0+ installed: moderation goes through its public facade
SharePermissions.Api.LoadingWidgetBridge(additive-only stability contract). - Standalone — SharePermissions absent: host-only moderation fallbacks on the game's own
machinery (native kick/ban wire events, replicated lobby-return, own
PlayerVoiceChatpostfix for talking bars and local volume — applied only in this mode so the two mods never double-apply volume factors). - FORCE is native in both modes (
src/StandaloneLobby.cs): the wedged-transition restart acts on the game's pipeline, not on backend state, so it lives here; the backend that owns the queued return finishes the trip after the reboot.
src/SharePermissionsBackend.cs is the only file allowed to reference SharePermissions.*
types (JIT isolation is what lets the mod run without the assembly on disk — keep it that way).
-
libs/SharePermissions.dllis the vendored compile-time copy of the bridge contract. It is not bundled at runtime (Private=false) — BepInEx loads the real installed mod. Whenever the bridge gains members this mod needs, rebuild SharePermissions and refresh the vendored DLL:dotnet build <SharePermissions repo>\SharePermissions.csproj copy <SharePermissions repo>\bin\Debug\netstandard2.1\SharePermissions.dll libs\...then raise
PluginInfo.SharePermissionsMinVersionif the new members are required — installs below the minimum fall back to standalone-or-dormant instead of crashing. -
dotnet builddeploys straight into the r2modman profile configured inDirectory.Repo.props(per-machine overrides go inDirectory.Repo.props.user, via the Linkoid.Repo.Plugin.Build SDK). -
Design notes: the extraction spec lives in the SharePermissions repo (
docs/superpowers/specs/2026-07-13-loading-widget-extraction-design.md); the optional-dependency design lives here (docs/superpowers/specs/2026-07-13-optional-sharepermissions-design.md).