Core — Changelog
Esta página aún no está disponible en tu idioma.
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 FOSVersion.CoreVersion in Runtime/FOSVersion.cs —
that is the version the FOS Hub shows, and the one every pack declares a minimum against.
Nothing yet.
1.2.0 — 2026-08-20
Section titled “1.2.0 — 2026-08-20”- The shop button now covers several stores. The branding settings hold a list of stores instead of a single URL, pre-filled with FOS Shop, Jinxxy, Booth and Gumroad. The button appears both in the banner of every FOS component and in the Hub.
- An entry with no URL is ignored, so a store can be prepared before its page exists. With one usable store the button opens it directly; from two it becomes a dropdown — a menu holding a single entry would only be an extra click.
- A pack can declare what it needs from other packs, through
MinimumVersionson theFOSToolattribute:MinimumVersions = "FOS Tablet System=2.0.0". Until now a pack could only state a minimum Core version, so a dependency between two packs existed only in an assembly reference — invisible to the buyer, and unverifiable by the Hub. - The Hub reports every unmet requirement on a tool, telling a missing pack apart from one that is merely too old, and naming the version actually installed.
Changed
Section titled “Changed”- The former single shop URL is moved into the store list the first time the editor loads, and the old field is then cleared. Nothing to redo by hand.
- Hub layout: Links now sits directly under Environment, before the prefabs and the tool list.
- The banner stretched over hundreds of empty pixels inside an editor window. It centres its text with flexible spacing, which does nothing in an inspector whose height follows its content, but claimed all the available height in a window. It now keeps the height of its content everywhere.
Removed
Section titled “Removed”- The branding settings and Discord and Shop links rows of the environment section, and the Open branding settings button. They told the author of a pack about their own configuration and taught a buyer nothing. The branding asset is still reachable in the project, and the Core recreates it if it goes missing.
1.1.1 — 2026-08-20
Section titled “1.1.1 — 2026-08-20”- The Hub window was slow to the point of feeling laggy, and got worse with every pack installed. Three of its status rows queried the AssetDatabase and the Package Manager on every repaint, and one of them ran a full project search per installed pack. With seven packs that came to roughly ten project-wide searches and fifty asset loads for each frame the window drew. The results are now read once when the window opens, when it regains focus, and after any action that changes them.
FOSCoreBootstrap.CountUnregistered()collects the registered assemblies in a single pass instead of searching the whole project once per pack. Any caller benefits, not just the Hub.- The Hub’s Repair now button refreshes the state it displays, instead of leaving the row in error until the window regained focus.
1.1.0 — 2026-08-19
Section titled “1.1.0 — 2026-08-19”Every pack built on 1.0.0 keeps working. Tools that use the localisation system or the prefab menu require this version.
Localisation
FOSLoc— translation lookup for the whole editor interface, in English, French, Spanish and German. A key resolves against the active language, then English, then the caller’s fallback, then the raw key. Showing the raw key is deliberate: a missing translation is meant to be seen.FOSCoreStrings— the four tables, held in code rather than in assets, so no buyer can break them by moving or deleting a file.FOSLocalizedInspector— replacesDrawDefaultInspector()and translates field labels, tooltips and section titles. Keys resolve from the type that declares a field, so an inherited field is translated once and serves every tool deriving from it.FOSSectionAttribute— localisable replacement for[Header], whose text is frozen at compile time.- Language selector in the Hub and in the branding settings, stored in
EditorPrefs. The language belongs to the machine, not to the pack.
Menu and prefabs
- Root
FOS Essentialsmenu, as the VRChat SDK itself does. FOSPrefabCatalog— discovers prefabs by convention underAssets/FOS/<Pack>/Prefabs/, andAssets/FOS/<Pack>/<Edition>/Prefabs/for a pack shipped in several editions. No pack has a line of code to write to expose its prefabs.FOSPrefabMenuGenerator— writes real[MenuItem]entries per pack into a generated file.[MenuItem]is an attribute and cannot be built from a runtime scan; Unity’s dynamicMenu.AddMenuItemis internal and undocumented, so it is not used.- Add to scene section in the Hub, one button per prefab, dropped in front of the scene view as a linked prefab instance.
FOSMenu— shared priority bands for every menu entry of the line.
Changed
Section titled “Changed”FOSCoreBootstrapnow registers everyFOS.*.Runtimeassembly with UdonSharp, not only the Core’s. A new pack no longer needs a manual step to avoid being silently ignored by the compiler.- The Hub resolves a tool’s description through
FOSLocwhen it is a translation key, so the tool list reads in the user’s language. Plain text still works. - Branding settings removed from the menu; they are opened from the Hub.
[Tooltip]texts rewritten in English, where they now serve as fallbacks.- Shipped
README.mdfiles rewritten in English.
- Menu ordering: prefab entries were numbered by a running counter that grew with every pack, and past five packs it overflowed into the Core utilities. A pack could appear between two tools. Each pack now receives its own priority band, and the generator warns instead of silently degrading when the bands run out.
1.0.0 — 2026-08-18
Section titled “1.0.0 — 2026-08-18”First release.
Runtime
FOSBehaviour— base class of every FOS behaviour: filterable logging, ownership and serialisation helpers. Abstract, so UdonSharp generates no program asset for it.FOSPlayerRegistry— player list rebuilt on join and leave instead of every frame, with listeners notified throughOnFOSPlayersChanged().FOSToolAttribute— how a pack declares itself to the Hub.FOSVersion— identity and version constants.
Editor
FOSBrandingSettings— logo, accent colour, Discord, shop, site and documentation URLs in a single asset. No URL is ever written in code.FOSDefaultInspector— the FOS banner appears automatically on anything deriving fromFOSBehaviour, with no editor class to write, through a[CustomEditor]that UdonSharp propagates to derived types.FOSInspectorBase— base for a custom inspector that keeps the banner.FOSToolRegistry— discovers installed tools by scanning assemblies, so the Core holds no hard-coded list, and warns when a tool needs a newer Core.FOSHubWindow— environment diagnostics, installed tools and links.FOSProgramAssets— creates the missingUdonSharpProgramAssetfiles. UdonSharp does not generate them, and without one a behaviour cannot be added to a GameObject at all.FOSCoreBootstrap— registers the runtime assembly with UdonSharp. Without that registration, behaviours placed in an asmdef are ignored by the compiler with no error whatsoever.
