Tablet System — Changelog
All notable changes to this pack are recorded here.
The format follows Keep a Changelog and the pack follows Semantic Versioning.
The version below must always match the one declared in Runtime/AssemblyInfo.cs — that
is the version the FOS Hub shows, and the one the Hub compares against the installed Core.
Nothing yet.
[2.1.0] — 2026-08-20
Section titled “[2.1.0] — 2026-08-20”Groundwork for the Pro edition. On its own, Standard behaves exactly as it did in 2.0.0.
- Permissions are a set of capabilities, not just a rank: freeze, isolate, mute,
teleport to a player, change roles, community settings, act on an equal rank, open the
staff panel, view the log. Every moderation action — authority side and button side —
goes through one decision point,
FOSCanDo. - Refused actions are recorded in the log. A refusal reaching the authority means either a role that changed between the click and the request, or a modified client; both are worth a trace. Switchable off on the staff manager.
- A role can be attached to an account, as a floor: its holder arrives with it, can be promoted above it for one instance, and can never be pushed below it.
- The founder role and the role on arrival are configurable, instead of being fixed at admin and visitor.
FOSEffectiveRoleOffor anything that displays, falling back to the arrival role while the synchronised list has not reached a player yet.FOSRoleOfstays the one to ask when deciding a permission, where no answer must mean refusal.
Changed
Section titled “Changed”- The rule deciding a role change lives in one place,
FOSCanSetRole, asked by both the authority and the interface. It was written twice — once to decide, once to grey out a button — which is how two copies of a rule eventually stop agreeing. - “Only an admin makes an admin” became a grant ceiling per role. With no matrix, everyone grants up to their own rank, exactly as before.
- The upper bound of a role change comes from the number of declared roles instead of a hardcoded admin level.
- A role with no name shows its number instead of falling back to “Visitor”, which was a lie on any rank above admin.
Without the Pro edition, the capability matrix and the account list are empty and permissions are derived from rank — every decision is the one 2.0.0 made.
One visible difference: in the role panel, promoting the founder to admin is no longer offered. It was a no-op, since the founder is already admin, and the interface now matches the authority instead of following a rule of its own.
2.0.0 — 2026-08-19
Section titled “2.0.0 — 2026-08-19”Full rewrite on the FOS Essentials Core. The tablet does the same job as before, and almost none of it is the same code.
Not backward compatible with 1.0.x — hence the major version. Class names, fields and several method names differ, and a prefab you have modified does not carry over on its own. The upgrade path is at the end of this entry.
Requires FOS Essentials Core 1.1.0. Ships with FOS Localization 1.0.0 and FOS Teleport 1.0.0, both used by the tablet.
- In-game translation, any number of languages. Text and images go through FOS Localization: a real table editor, CSV export and import for translators, and the player’s choice remembered between visits. The old system was two hardcoded languages.
- The moderation log reads in each player’s own language. What travels on the network is the action — a code, the names involved, a value — not a ready-made sentence, so the host’s language is no longer imposed on the instance. English and French are built in.
- Teleporting to a player is now logged, along with role recovery from the instance memory and automatic admin succession. Twelve distinct actions instead of catch-all messages.
- The log shows the author’s real rank at the time of the action, and puts the newest entry first.
- Button wiring checker:
FOS Essentials > FOS Tablet System > Check button wiringlists every control whose event matches no existing method. A wrong event name raises no error in VRChat — the control is simply dead, silently. - Inspector diagnostics: missing references are reported in place, in your language.
- Gizmos for the auto-close radius and the isolation zone, visible in the scene view.
- Extension points: any behaviour can follow the moderation state, a toggle group or
the current language through
FOSRegister. - Inspectors, tooltips and messages translated into English, French, Spanish and German.
Changed
Section titled “Changed”- Toggle groups replace the key-based toggle manager. One component per group, each button pointing at its group directly. A typo in a string key used to produce a dead button with no error; that is now impossible to write.
- A toggle group holds one state applied to all its objects. Before, each object was flipped independently: one object left off in the scene split the group in two, for good.
- Teleporting uses FOS Teleport, which brings a cooldown, optional room alignment,
velocity control and one-click
OnClickwiring. - Every behaviour derives from
FOSBehaviour: the FOS banner in the inspector, prefixed logs that can be switched on per component, and safe ownership helpers. - The pack now lives in
Assets/FOS/TabletSystem/Standard/, making room for the coming editions. - The moderation log reports failed network serialisations instead of failing silently.
- The player list could contain an empty slot, which made network serialisation fail in a loop: the state stopped reaching every other player, with nothing to explain why.
- A player joining could be missing from the list, because nothing guarantees the order in which two components receive the same event.
- The instance memory could stop working after an ownership transfer, silently and for good.
- Log entries were attributed to the object’s owner rather than to the moderator who performed the action.
Upgrading from 1.0.x
Section titled “Upgrading from 1.0.x”The class names, the fields and several method names have changed. A prefab you have modified will not carry over on its own.
- Import the package and let Unity compile.
- Open
FOS Essentials > Huband check that everything is green. - Run Check button wiring on your tablet: it lists every control to repoint.
- Compare your old prefab with the new one for the renamed fields — the inspector marks the missing references in red.
Keeping your old version until the new one is wired is the safe path.
Fixed three timing problems that only appeared under particular join orders.
- The admin bootstrap is also secured from
OnPlayerJoined, in case it runs beforeStart(). - A stale list entry can no longer demote the instance founder.
- The permission panel reads the current role at start instead of assuming visitor —
Start()only runs when the object first becomes active, which could happen long after the real role had been applied, and cut an admin off from their own panel.
First sold release.
- Summoning, teleport menu, local toggles, community rules, staff panel with roles, freeze, temporary isolation, mute, and a synchronised moderation log. FR/EN localisation.
- Built on the security rework of the internal 0.6 line: the object’s owner is the only authority, moderation actions are requests validated against the real calling player, synced variables carry state and never commands, ownership is restricted to staff, the first player of the instance becomes admin rather than the master, and staff roles are remembered for the current instance only.
