Skip to content

Releases: RogueAssassin/Oxide.Ext.RogueRust

RogueRust v4.4.62

Choose a tag to compare

@RogueAssassin RogueAssassin released this 12 Oct 08:45

4.4.62 — Plugin config and data attributes, DeathNotes names, HeliCrash icon

  • Fix (config and data files): [JsonProperty] and [JsonIgnore] on plugin classes are now honoured by LoadConfiguration/SaveConfiguration and LoadData/SaveData. Oxide compiles plugins against its own merged copy of Json.NET, so the extension never saw those attributes: files were written with member names, a setting typed under its documented name (for example "Disable Vanilla Spawns": true in RogueRustEventDirector) was silently discarded on the next load, and ignored members were written out. Existing files still load, because a renamed member also accepts its old member-name key; they are rewritten with the declared names on the next save. Once rewritten, a file is not readable by 4.4.60 or earlier.
  • Config files: saved lists now replace a class's built-in defaults instead of being appended to them.
  • Icons: Icons/RogueRustHeliCrash.png is embedded for the RogueRustHeliCrash on-screen alert.
  • Dictionaries: added DeathNotesNames (display names for the killers and victims the original Death Notes shipped with: animals, NPCs, traps, turrets, vehicles), DeathNotesWeaponNames and DeathNotesAttachments.
  • Dictionaries: DeathNotesWeapons gains about 85 prefab aliases: held tools and guns, RPG, MLRS, mortar, cannon and siege projectiles, molotov, bee and flashbang grenades, modular cars, bikes and snowmobiles.
  • Tests: every embedded dictionary is loaded and checked, and the attribute handling is covered. 82 unit tests.
  • Paired plugin updates (separate files): RogueRustDeathNotes 2.5.3, RogueRustEventDirector 1.3.2, RogueRustHeliLeashControl 2.1.3, RogueRustServerInfo 1.1.1, RogueRustFurnaceSplitter 2.1.3, RogueRustHackableCrateTracker 2.1.1, and the new RogueRustHeliCrash 1.0.0. 4.4.61 was a test build and was not released.

RogueRust v4.4.60

Choose a tag to compare

@RogueAssassin RogueAssassin released this 11 Oct 11:18

4.4.60 — Stability release

  • Plugin unload: each cleanup step (events, network, image callbacks, cache, commands, UI, workloads, scheduler, HTTP, database) is isolated, so a failure in one can no longer leave an unloaded plugin's timers, requests or UI alive in the others.
  • HTTP: a POST or PATCH is no longer replayed after a timeout or 5xx unless the caller supplies a retry policy, because the server may already have acted on it (for example a webhook message sent twice). 429 responses still retry for every method. A date-form Retry-After is capped at five minutes like the seconds form.
  • Database (MySQL and custom providers): argument errors, a missing provider and unregistered connections are not retried and do not count against the circuit breaker.
  • Events: removed a race where a subscription added while its event group was being emptied could be lost.
  • Updater: the "check in progress" flag is always cleared, so one failed check cannot disable later ones.
  • Caches: expired entries in the image byte cache are swept with the main cache.
  • SDK: SaveDataInBackground(key, value) on RogueRustPlugin snapshots on the game thread and writes on a worker thread, for periodic and dirty-flag saves.
  • Tests: 68 unit tests, adding events, the in-process network bus and HTTP retry decisions.

RogueRust v4.4.58

Choose a tag to compare

@RogueAssassin RogueAssassin released this 11 Oct 09:47

4.4.58 — Unit tests, image index saves and release hardening

  • Tests: a unit-test project (tests/) covers version comparison, cron parsing, the scheduler (including a repeating job surviving a failure), the cache, cooldowns, circuit breakers, pathfinding, PNG validation, the topology masks and the update-manifest signing format. CI runs it before every build.
  • Performance: the ImageLibrary index is serialized once, without an intermediate copy, and the debounced save writes the file on a worker thread. The index is flushed at shutdown.
  • Fix: logging a scheduled-job failure can no longer affect the job itself.
  • Publishing: re-running the pipeline for a version that is already public keeps that version's binaries and updater pointer and only refreshes notes and the changelog. The update manifest is written without a byte-order mark.
  • Docs: the README and feature list describe the current release flow.

RogueRust v4.4.57

Choose a tag to compare

@RogueAssassin RogueAssassin released this 11 Oct 08:54

4.4.57 — Signed updates, single version source, fixes and performance

  • Updater: the release public key is now built into the DLL and a valid manifest signature is required before an update is installed. Unsigned or wrongly signed releases are refused.
  • Versioning: the version is declared once, in the VERSION file. Project metadata, assembly attributes, RogueRustExtension.InformationalVersion/CurrentVersion, the Windows tooling and both GitHub workflows read it from there; nothing rewrites source files any more.
  • Fix: RogueTopologyService road, river and rail masks now match Rust's TerrainTopology values.
  • Fix: the MySQL provider resolves MySqlConnector from Oxide.MySql.dll.
  • Fix: unregistering a database (including on plugin unload) no longer closes a SQLite handle or disposes a gate under a running operation.
  • Fix: only transient SQLite errors are retried and counted against the circuit breaker.
  • Fix: plugin unload now removes network subscriptions and pending image callbacks.
  • Fix: command arguments are validated before the cooldown starts; server console and RCON can run permissioned commands.
  • Fix: a repeating or cron job that throws keeps its schedule, and job failures are logged.
  • Change: RogueRustPlugin cache and cooldown helpers prefix keys with the plugin name.
  • Performance: terrain, topology, world-size and entity queries call the game API directly instead of through reflection; pathfinding uses a binary heap; UI callback expiry sweeps are throttled and CUI calls use cached delegates; PNG validation uses a table-driven CRC; expired cache entries are swept every minute.
  • Performance: SaveDataDebounced serializes on the game thread and writes on a worker thread; asset-store database writes are queued instead of blocking the caller; ImageLibrary downloads up to three images at once with one decode per frame.
  • Tooling: RogueRust-Windows.cmd no longer defaults to version 4.4.0, and its Protected build action works again.
  • Publishing: the public release now contains only the signed protected DLL, its signed manifest and SHA256SUMS.txt, and is refused unless the signature verifies. The release page shows only that version's changelog section; the full CHANGELOG.md is updated on the public repository for stable releases.

RogueRust v4.4.50

Choose a tag to compare

@RogueAssassin RogueAssassin released this 10 Oct 21:28

4.4.50 — DeathNotes coverage and stable release readiness

  • Added combat-type dictionary aliases for shark, travelling-vendor turret, excavator, car shredder, cactus, locomotive, work cart and train; expanded shared entity and weapon labels.
  • Aligned AssemblyInfo.cs, project metadata, RogueRustExtension runtime version and CI release validation with 4.4.50.
  • Preserved the 4.4.49 profiler/scheduler allocation improvements and October compatibility changes.
  • Updated stable release documentation and protected public-release workflow version identity; stable and testing updater manifests remain separate.

4.4.49 — Hot-path allocation cuts for plugins (testing)

  • Profiler: Measure() no longer builds an owner/category/operation key string or allocates a Stopwatch on every completed scope. Metrics use a composite struct key and Stopwatch.GetTimestamp(). Reported metrics are unchanged.
  • Scheduler: zero-delay one-shot jobs (Delay(TimeSpan.Zero, ...), CoalesceNextTick, zero-delay Debounce) no longer create a System.Threading.Timer. They dispatch straight to the existing deferred path (Oxide NextTick or the thread pool), so callbacks stay asynchronous. Repeating and cron jobs keep their timer.
  • Paired plugin updates (separate files): AdminMenu 2.5.2, DeathNotes 2.5.1, FuelStackOptimizer 2.1.1, FurnaceSplitter 2.1.1, HeliLeashControl 2.1.1, RandoSpawns 2.1.1, RemovalTool 2.0.2, Skins 2.3.1.

4.4.48 — Native grid: power-plant requirement override (testing)

  • Added RogueNativeGridOptions.OverridePowerPlantRequirement. In Convars mode it makes every native access point deliver the configured maximum output (powergrid.powerlinemaxpoweroutput) immediately, without power-plant fuses or stages.
  • The override reuses the Fixed-mode output patch. It honours FixedRequiresGridOnline (follows street-light hours) and RespectPowergridDisabled.
  • GetNativeGridStatus now reports PowerPlantRequired=YES|NO (override) and the pinned output.
  • Pairs with RogueRustGridPower 1.9.6 ("Override Power Plant Requirement").

4.4.47 — GridPower rebuilt on Rust's native power grid (testing)

Native power grid

  • GridPower now works with Rust's own PowergridIOAccessPoint entities, which Rust spawns, saves and lets players wire. RogueRust no longer spawns its own transformers.
  • New ConfigureNativeGrid(RogueNativeGridOptions) output policy:
    • Vanilla: no change.
    • Convars: sets Rust's powergrid.powerlinebasepoweroutput / powerlinemaxpoweroutput; output still follows power-plant stages. Original values are restored on Vanilla or shutdown.
    • Fixed: constant output on every access point via a Harmony override, optionally only while the RogueRust grid is online and respecting powergrid.enabled.
  • Output changes are re-pushed to access points in frame-budgeted batches (1 ms / 32 per frame by default).
  • Access points are indexed with a typed lookup (about 1k objects) instead of an 820k-transform scene scan, which took about 27 s on a 4500 map in 4.4.45.
  • New diagnostics: GetNativeGridStatus, InspectNativeAccessPoint (saving flag, wired slots, energy, max output) and AuditNativeAccessPoints (reports stacked access points left by older RogueRust test builds and can remove unwired duplicates only).
  • TryFindNearestPlayerPole now resolves to the nearest native access point, so ladder placement no longer needs reference JSON.

Removed

  • RogueRust pole discovery, the pole-type catalogue, road review, pole diagnostics files and substation clustering.
  • RogueGridPowerPlayerService, RogueGridPowerRecoveryService, RogueGridPowerControlledTest, RogueGridPowerClimbService and RogueGridPowerClimbabilityService.
  • Automatic pole discovery on streetlight refresh (the source of the long startup scan).
  • Legacy interface members (PlayerPowerPoles, RefreshPlayerInfrastructure, GetPlayerInfrastructureStatus, PlayerSubstations, PlayerReferenceFilePath) remain as [Obsolete] forwards for one release.

Unchanged

  • Streetlights: discovery, density/seed selection and 4.4.46 streamed spawning.

Requires in-game verification

  • Wired access points keep their wires across a restart.
  • Convars changes take effect without waiting for a power-plant stage change.
  • Fixed output powers wired circuits.
  • Run the audit once on servers that used earlier RogueRust transformer tests.

4.4.46 — Server performance pass: GridPower streaming and hot-path indexing (testing)

GridPower

  • Streetlight spawn/despawn is now streamed across frames (default 1.0 ms / 12 fixtures per frame) and ordered nearest-to-players first, instead of creating or killing every managed light entity in one frame at dusk and dawn. IRogueGridPowerService.ConfigureStreaming(...) tunes it; maxFixturesPerFrame = 0 restores the legacy single-frame behaviour.
  • Player-grid population no longer scans every BaseNetworkable in the world for each transformer it places. Native power-grid IO positions are indexed once per reconciliation pass.
  • The independent-power Harmony prefixes (GetCurrentEnergy/GetHasPower, which run for every power-grid IO entity on every IO update) now use an O(1) ownership set instead of enumerating every owned transformer.
  • Pole discovery uses allocation-free name checks for every scanned transform (power-pole/substation tests no longer lower-case each name). Streetlight exclusion and native IO/access-spawn association use spatial buckets, and road distance plus native proximity are computed once per pole instead of up to two road scans and six native scans per pole.
  • Climbability discovery examines only transforms named as pole variants instead of walking ten parents (with a lower-cased copy per hop) for every transform.
  • RemoveAll is a single pass (was O(n²)). Transformer adoption uses a spatial index. Output refreshes on configure are skipped when the effective output is unchanged.
  • IsStreetlight/SetStreetlight are O(1) lookups.
  • Added TryFindNearestPlayerPole(...) so plugins can do pole proximity checks without re-reading the reference JSON, and PendingStreetlightUpdates plus streaming metrics in GetStreetlightStatus().

Core

  • Console command lookup no longer allocates a lower-cased copy for every console command (OnServerCommand hot path).
  • OnEntityKill skips world-event bookkeeping for entity types that are never tracked.
  • IRogueWorldService.FindEntities reads component transforms directly instead of using reflection per entity.
  • Workshop resolution publishes skins once per Steam batch (RegisterRange) instead of rebuilding the whole skin catalogue per item.
  • The full skin-catalogue SQLite rewrite runs on the database worker instead of blocking the caller.
  • Steam skin-pack indexing at startup writes only new or changed packs in one transaction (previously they were never persisted because indexing ran before the store was ready). The legacy ImageLibrary import is a single transaction.
  • Repeating scheduler jobs re-arm their existing timer instead of allocating a new one each run.
  • Builds on the 4.4.45 schema-6 / pole-filter-12 discovery and roadside eligibility rules without changing reference formats or classification.
  • In-game verification required: dusk/dawn should log the new "applied" line with MaxFrameMs; transformer population, adoption after restart and pole counts should match 4.4.45.

4.4.43 — Transformer activation and in-game validation (testing)

  • Populate schema-6 player pole references from explicitly enabled roadside-priority structural families only when validated within 12 m of a discovered road spline.
  • Exclude poles associated with native power-grid IO/access spawn points; preserve vanilla grid infrastructure and do not enable all discovered poles automatically.
  • Align the player transformer population manager, single-entity controlled test, and recovery reference validation to schema 6.
  • Reject destroyed/non-networked entities after spawn and clean up entities when Spawn throws, rather than marking failed spawns as managed.
  • Native transformer persistence, bounded reconciliation, managed IO output refresh and existing electrical wiring behavior are retained.
  • In-game verification required: enable the intended family in the map-specific pole-types JSON, refresh infrastructure, confirm candidate counts, test transformer visibility and wiring, restart and check saved entity adoption.
  • Protected CI build success does not by itself prove in-game client visibility or power propagation.

4.4.15 — October stabilization: scheduler overlap accounting (staged)

  • Correct scheduler running-execution accounting: release one reservation rather than resetting the counter when overlapping callbacks are permitted.
  • Keep scheduler public interfaces and default behavior unchanged.
  • Add targeted concurrent callback and plugin unload tests to the performance audit. Plugin testing sources remain local and are not published to this repository.

4.4.14 — October performance audit: ImageLibrary build and clear safety (staged)

  • Fix v4.4.13 CS0165 unassigned CRC compile failure.
  • Add ImageLibrary clear-generation checks to abort downloads in progress and suppress callbacks/cooldowns from cleared work.
  • Preserve all public SDK interfaces; runtime tests are still required for image queue teardown and callback races.

4.4.13 — October performance audit phase 5: ImageLibrary lifecycle (staged)

  • Read ImageLibrary readiness under the same lock protecting pending work and processing state.
  • Persist CommunityEntity rollover invalidation even when an image lookup misses, preventing stale metadata from remaining on disk after a wipe or entity replacement.
  • Keep image queue, storage, deduplication and callback contracts unchanged; further in-flight cancellation testing remains required.

4.4.12 — October performance audit phase 4: HTTP metric overhead (staged)

  • Batch endpoint-metric pruning every 64 recor...
Read more

RogueRust v4.4.0

Choose a tag to compare

@RogueAssassin RogueAssassin released this 30 Sep 11:32

RogueRust Changelog

4.4.0

Global assets and Workshop infrastructure

  • Promoted the validated 4.3.x global asset and Workshop development line to the stable 4.4.0 release.
  • Added the shared IRogueAssetStoreService backed by RogueRust/Assets/RogueAssets.db with versioned SQLite migrations for reusable asset, Workshop item, collection and Steam skin-pack metadata.
  • Added IRogueWorkshopService for keyless known-ID Workshop metadata resolution, seven-day cache freshness, bounded batches, in-flight request deduplication, collection expansion and persistent reuse.
  • Workshop records can publish resolved skins into the shared skin catalogue and provide cached preview URLs to RogueRust ImageLibrary.
  • Added Steam skin-pack indexing from Rust UnlockedViaSteamItem relationships while keeping ownership/entitlement decisions in consuming plugins.

Skin and building platform

  • Added bounded shared skin-catalogue search by name, Workshop ID and content ID so execution plugins no longer need duplicate catalogue indexes.
  • Added shared building-skin metadata by grade, including the current Rust Wood, Stone, Metal and Armored building skin families used by RogueRust skin consumers.
  • Improved shared skin application so held entities receive the selected skin and an immediate network update alongside the underlying item.
  • Kept player-facing commands, permissions, blacklists, targeting, UI, selections and application policy in execution plugins such as RogueRustSkins.

Release and compatibility

  • Removed the Workshop item-tag lookup's compile-time dependency on Rust localization display-name types, restoring compatibility with the established protected Rust/Oxide reference set.
  • Aligned project, assembly, runtime, CI and public-release identities to 4.4.0.
  • Stable and testing updater channels remain isolated: update-manifest.json for stable and update-manifest-testing.json for testing.
  • Protected release publication updates the public release assets and stable updater pointer used by RogueRust automatic updates.

4.3.3

  • Added a shared skin-catalogue search API so execution plugins can query the DLL catalogue by skin name, Workshop ID or content ID without maintaining duplicate search indexes.
  • Began the contextual skinning development line for RogueRustSkins 2.2.5 while keeping player permissions, targeting, CUI and execution policy in the plugin.
  • Preserved the 4.3.2 Workshop/global asset architecture as the authoritative discovery and cache layer.
  • Reserved 4.4.0 as the next stable feature line after successful live development testing.

4.3.2

  • Moved Steam Workshop published-file and collection resolution into the RogueRust DLL through the new shared IRogueWorkshopService.
  • Added keyless Workshop metadata resolution, seven-day cache freshness, batched published-file requests, in-flight request deduplication, collection expansion and persistent reuse through RogueAssets.db.
  • Workshop metadata now publishes resolved skins into the shared skin catalogue and supplies preview URLs directly to RogueRust ImageLibrary.
  • Added normalized Workshop tag-to-Rust-item lookup so plugins no longer need to repeatedly scan every item definition for every imported skin.
  • Kept player-facing import commands, permissions, blacklists and execution policy in consuming plugins; the DLL owns discovery/cache infrastructure only.
  • Extended the global asset layer with Steam skin-pack membership based on Rust UnlockedViaSteamItem relationships, while leaving ownership/entitlement decisions to the execution plugin.
  • Reviewed external skin/building implementations for architectural gaps. Building grades, wallpaper sides/packs, redirects, searchable catalogue metadata, favourites/sets and player execution policy remain separated so future shared metadata can be added without moving gameplay policy into the DLL.

4.3.1-testing

Global asset/workshop cache migration candidate

  • Added the shared RogueRust asset store backed by RogueRust/Assets/RogueAssets.db with versioned SQLite migrations.
  • Added global Workshop item and collection metadata caching for reuse across RogueRust plugins without requiring a Steam Web API key.
  • Added compatibility migration of legacy RogueRust ImageLibrary metadata while leaving legacy data intact for safe rollback during testing.
  • Added shared assets and workshop-cache capabilities while preserving existing ImageLibrary and skin APIs.
  • Prepared content cache directories for image and Workshop assets so future consumers can share durable data instead of duplicating plugin-specific caches.
  • Added first-class Steam skin-pack indexing from Rust UnlockedViaSteamItem relationships, persisted in the global asset database with content/workshop membership for reuse by skin consumers.
  • Kept entitlement/ownership policy separate from catalogue discovery so pack/DLC metadata can be indexed globally without forcing plugins to expose paid content.
  • Kept Workshop discovery keyless and bounded: known IDs and collections can enrich the shared cache without brittle Steam Community HTML scraping.

4.3.0

RRAM administration/UI release

  • Promoted the validated 4.2.9 RRAM testing line to the 4.3.0 stable release identity.
  • Finalized the shared RogueRust administration UI foundation, appearance/window primitives and reusable component styling used by RogueRustAdminMenu 2.5.0.
  • Retains demand-driven RogueUI rendering, selective refresh policy, shared service reuse and the no-dashboard-polling design.
  • Preserves non-blocking immediate actions such as rapid Give without rebuilding the administration workspace.
  • Keeps Oxide-first operation and Carbon compatibility through the Oxide compatibility surface.
  • Carries forward the validated runtime, diagnostics, GridPower, skin, teleport, vehicle, ImageLibrary and performance infrastructure from the 4.2.x line.

4.2.9-testing

RRAM pre-2.5 polish and performance validation

  • Advanced the testing line to 4.2.9 for the final optimisation and UI-polish cycle before the 2.5.0 AdminMenu release.
  • Retains demand-driven RogueUI rendering, selective refresh policy, shared service reuse and the no-dashboard-polling design.
  • Keeps immediate actions non-blocking and avoids workspace rebuilds for rapid actions such as Give.
  • Reserved 4.2.9 for compatibility/performance hardening so the next release line can focus on validated shared UI consumers, including the planned SkinBox conversion.

4.2.0-testing

Completion release from the 4.0.0 baseline

  • Consolidated the validated v4.0.0 performance/runtime baseline and subsequent 4.1.x development work into the RogueRust 4.2.0 completion candidate.
  • Aligned project, assembly, runtime and plugin-manifest source identity to 4.2.0.
  • Retained Oxide-first operation and Carbon compatibility through the Oxide compatibility surface without introducing a hard Carbon dependency.
  • Preserved established plugin-facing services and compatibility/API baseline protections.

GridPower / public power-pole backend

  • Added the shared GridPower backend developed through the 4.1.x testing cycle for public power-pole discovery and managed grid state.
  • Supports the proven power-pole/streetlight workflow used by RogueRustGridPower without requiring each plugin to duplicate world discovery/state infrastructure.
  • Retained bounded discovery/state handling and diagnostics suitable for server-side validation.
  • Removed the experimental substation/splitter service implementation from the 4.2.0 release line after testing showed the power-pole-only design to be the safer completed scope.
  • Preserved the former experimental substation implementation separately on testing-substation-backup for future investigation; it is not part of 4.2.0.

Performance and runtime hardening retained from v4.0.0

  • Retained reduced scheduler and workload hot-path allocations without changing scheduling semantics.
  • Retained cached stable Rust world reflection metadata and per-runtime-type entity member lookups to reduce repeated world-query reflection overhead.
  • Retained reduced network subscription cleanup/snapshot allocations and HTTP diagnostics allocation overhead.
  • Retained bounded HTTP host-interval handling and runtime User-Agent synchronization through the release pipeline.
  • Retained cached ADO.NET provider resolution and reduced database diagnostics snapshot allocations while preserving SQLite/MySQL concurrency, retry and circuit-breaker behaviour.
  • Retained RogueUI lifecycle/metrics optimisations while preserving canonical full-document rendering for structural changes and safe selective leaf updates.
  • Retained drain-first shutdown, workload pressure controls, resilience diagnostics and existing security/integrity helpers.

Shared framework improvements carried into 4.2.0

  • Retained the shared skin catalogue/application/cache/session platform introduced before the v4 baseline.
  • Retained embedded binary PNG/FileStorage delivery with validation, fingerprinting, deduplication and no runtime external image-host requirement for packaged assets.
  • Retained shared teleport, vanish, vehicle catalogue, F1 administration, world-query, database, HTTP, scheduling, profiling and integration service families.
  • Continued the shared-service approach so plugins can avoid duplicating expensive scans, timers, persistence loops and infrastructure.

Build, CI and release safety

  • Updated the source release identity to 4.2.0 so the testing branch resolves to 4.2.0-testing and stable promotion resolves to 4.2.0.
  • CI validates that project, assembly and runtime identities agree before building the protected release package.
  • CI continues to require current Rust/Oxide reference assemblies and verifies protected release outputs before artifact upload.
  • Public publication remains explicitly controlled: testing and normal CI validation do not overwrite the stable updater channel.
  • Retained the unified...
Read more

RogueRust v4.1.0

Choose a tag to compare

@RogueAssassin RogueAssassin released this 25 Sep 04:27

RogueRust Changelog

4.0.0-testing

Performance and runtime hardening

  • Advanced the source, assembly and runtime identity to 4.0.0 while preserving the established plugin-facing API baseline.
  • Reduced scheduler and workload hot-path allocations without changing scheduling semantics.
  • Cached stable Rust world reflection metadata and per-runtime-type entity member lookups to reduce repeated world-query reflection overhead.
  • Reduced network subscription cleanup/snapshot allocations and HTTP diagnostics allocation overhead.
  • Tightened HTTP host-interval handling and corrected the runtime HTTP User-Agent to RogueRust/4.0.0.
  • Cached resolved ADO.NET provider types and reduced database diagnostics snapshot allocations while retaining existing SQLite/MySQL concurrency, retry and circuit-breaker behaviour.
  • Reduced RogueUI lifecycle/metrics overhead while preserving canonical full-document rendering for structural changes and safe selective leaf updates.

Build, validation and release safety

  • Added the unified RogueRust Windows launcher with clean, build, validation, pre-stable, template, protected-build, package, reference-update and SDK-reference actions.
  • Kept PowerShell execution-policy bypass process-scoped only.
  • Corrected API-baseline export exit handling and retained compatibility-first source-contract validation.
  • Changed normal testing/main CI pushes to validate and package only; public publishing now requires an explicit manual workflow dispatch with publish_public enabled.
  • Retained isolated stable/testing updater channels and protected release packaging.

Compatibility

  • v4 is an overhaul rather than a rewrite: existing source files and established services remain in place.
  • Oxide remains the primary runtime with Carbon supported through its Oxide compatibility surface and no hard Carbon dependency.
  • The supplied RogueRust plugin family remains the regression-consumer set for v4 validation.

3.3.11-testing

  • Advanced project, assembly and runtime testing identity to 3.3.11; testing CI publishes the canonical 3.3.11-testing prerelease.
  • Added the shared IRogueSkinCatalogService catalogue with immutable read snapshots and generation tracking.
  • Added IRogueSkinService for validated, low-overhead in-place skin application.
  • Added IRoguePlayerSkinCacheService for generation-aware per-player effective-skin snapshots.
  • Added IRogueSkinSessionService for bounded 48-slot skin-browser paging, lifecycle state and cleanup.
  • Added runtime imported skin registration/removal with source and owner metadata so Workshop/custom skin workflows can update the catalogue without rescanning Rust definitions.
  • Added a persistent server-side skin manifest at oxide/data/RogueRust/RogueRustSkins/skin-manifest.json (and the equivalent Carbon data root), loaded on startup and atomically refreshed when Steam inventory definitions are available.
  • Added late Steam inventory-definition discovery without a compile-time Steamworks dependency, allowing the manifest to include Workshop definitions that are not present in the early ItemSkinDirectory snapshot.
  • Exposed Steam-manifest readiness and last-refresh metadata so plugins can distinguish cached/startup data from a fully established Steam skin catalogue.
  • Preserved native Rust/content skin aliases across runtime catalogue mutations.
  • Registered skin catalogue, application, player-cache and session services through RogueServices and the capability registry.
  • Redirect skin replacement remains guarded until state-preserving item replacement is validated against the current Rust server API.
  • Updated README and feature documentation for the RogueRustSkins backend platform.

3.3.8-testing

Binary embedded image foundation

  • Advanced project, assembly and runtime testing identity to 3.3.8.
  • Reworked packaged artwork around real binary .png assembly resources; legacy Base64 resource packaging is no longer used.
  • Valid embedded PNGs now follow the same proven direct-validation path as valid downloaded PNGs and are never unnecessarily decoded/re-encoded through Unity.
  • Retained Unity ImageConversion only as a normalization fallback for non-PNG embedded formats.
  • Added full PNG chunk/CRC/IEND validation before FileStorage registration.
  • Added immediate FileStorage round-trip verification after a new embedded image is stored.
  • Retained SHA-256 content deduplication, owner namespaces, stale CRC cleanup, persisted metadata and CommunityEntity identity handling.
  • This establishes the reusable local-only image foundation for RogueRustDeathNotes and future RogueRust plugin icons.

3.3.7-testing

Embedded asset delivery hardening

  • Advanced project, assembly and runtime testing identity to 3.3.7.
  • Embedded images are now fingerprinted before reuse; a packaged icon change invalidates the previous cached FileStorage record automatically.
  • Valid current embedded assets reuse their existing FileStorage CRC without decoding or storage work beyond initialization.
  • Stale CRCs are replaced and unreferenced FileStorage entries are cleaned up.
  • Added explicit diagnostics for missing assembly resources, CommunityEntity readiness and successful embedded-image registration including the resulting FileStorage CRC.
  • Retained local-only delivery: no HTTP, GitHub, SteamID or external image host is required.

3.3.6-testing

Embedded RogueRust icon assets

  • Advanced project, assembly, runtime and testing release identity to 3.3.6.
  • Added a dedicated src/Oxide.Ext.RogueRust/Icons/ asset folder for current and future RogueRust plugin artwork.
  • Added the RogueRustDeathNotes icon as an assembly embedded resource.
  • Extended IRogueImageLibraryService with an additive embedded-image resolver that validates the PNG, stores it once through Rust FileStorage, reuses content hashes, and persists normal ImageLibrary metadata.
  • Embedded assets require no SteamID, HTTP request, GitHub request or external image host at runtime.
  • Prepared RogueRustDeathNotes to consume its branded icon through the shared DLL ImageLibrary path.

3.3.5-testing

Vehicle catalogue / administration cleanup

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Expanded modular cars into distinct 2/3/4-module spawned cars and chassis with exact Rust item IDs, shortnames and prefabs.
  • Split submarines into solo/duo variants and added the motorbike-with-sidecar.
  • Added additive ItemShortname and ItemId descriptor metadata and populated validated prefab paths where available.
  • Kept existing service families intact for current plugins; this stage removes no shared non-UI contracts.
  • Enables AdminMenu and future plugins to prefer native Rust ItemId artwork and exact prefab identity over guessed image/spawn mappings.

3.3.5-testing

3.3.5 consolidates the current F1 administration, vehicle-catalogue and ImageLibrary hardening work into the active testing release.

Release identity

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Testing CI resolves the source version to v3.3.5-testing and keeps the stable/testing updater channels isolated.
  • Refreshed README, feature catalogue and F1 administration documentation for the current testing release.

RogueUI / F1 administration

  • Added reusable F1 workspace, top-navigation, category-bar, content, search, grid-cell and tile-action geometry.
  • Added shared F1 workspace/tab/tile component models and bounded grid-column calculation.
  • Added bounded catalogue filtering for dense item/vehicle browsers.
  • Added standard item amount tokens/actions for 1, 100, 1000 and native stack size.
  • Continued charcoal/slate surfaces, muted olive selection and restrained orange interaction accents.
  • F1 helpers remain stateless and introduce no polling/timers/per-frame work.

Vehicle catalogue

  • Added shared IRogueVehicleService / RogueVehicleService catalogue support.
  • Added stable vehicle descriptors and categories for Animals, Bikes, Boats, Cars, Helicopters, Misc, Siege and Trains.
  • Added bounded category/search filtering and stable image keys for F1/AdminMenu consumers.
  • Vehicle entity spawning remains game/plugin-side until safe spawn resolution is finalized.

ImageLibrary hardening

  • Valid PNG downloads now use a direct validation/storage path rather than being unnecessarily decoded/re-encoded through Unity.
  • Non-PNG sources retain Unity image decode/PNG normalization.
  • Added PNG header/IHDR dimension validation while retaining source/PNG/dimension limits.
  • Added five-minute failure cooldowns to prevent repeated broken URL/404 requests from hammering the server.
  • Retained SHA-256 content deduplication, Rust FileStorage persistence, owner namespaces, reverse index, warmup and telemetry.
  • RogueRust metadata remains persisted under oxide/data/RogueRust/ImageLibrary/images.json.

CI/API compatibility correction

  • Run #89 compiled successfully but failed pre-stable validation because the source-contract exporter treated public implementation members inside the internal RogueImageLibraryService class as public SDK API.
  • The compatibility comparison now excludes that internal implementation file while continuing to validate the actual public IRogueImageLibraryService contract.
  • This prevents implementation-only formatting/refactoring from being misclassified as a breaking public API removal.

3.3.1-testing

  • Continued the administration/backend integration line with RogueUI design tokens, shared teleport/vanish state and ImageLibrary-v2 direction.
  • Maintained isolated testing release/update metadata.

3.3.0-testing

  • Began the coordinated administration-platform overhaul with shared vanish state, RogueUI design/font primitives and shared teleport direction.

3.0.0

  • Consolidated the mature 2.x framework into the stable 3.x platform with diagnostics, lifecycle safety, API compatibilit...
Read more

RogueRust v4.0.0

Choose a tag to compare

@RogueAssassin RogueAssassin released this 20 Sep 13:21

RogueRust Changelog

4.0.0-testing

Performance and runtime hardening

  • Advanced the source, assembly and runtime identity to 4.0.0 while preserving the established plugin-facing API baseline.
  • Reduced scheduler and workload hot-path allocations without changing scheduling semantics.
  • Cached stable Rust world reflection metadata and per-runtime-type entity member lookups to reduce repeated world-query reflection overhead.
  • Reduced network subscription cleanup/snapshot allocations and HTTP diagnostics allocation overhead.
  • Tightened HTTP host-interval handling and corrected the runtime HTTP User-Agent to RogueRust/4.0.0.
  • Cached resolved ADO.NET provider types and reduced database diagnostics snapshot allocations while retaining existing SQLite/MySQL concurrency, retry and circuit-breaker behaviour.
  • Reduced RogueUI lifecycle/metrics overhead while preserving canonical full-document rendering for structural changes and safe selective leaf updates.

Build, validation and release safety

  • Added the unified RogueRust Windows launcher with clean, build, validation, pre-stable, template, protected-build, package, reference-update and SDK-reference actions.
  • Kept PowerShell execution-policy bypass process-scoped only.
  • Corrected API-baseline export exit handling and retained compatibility-first source-contract validation.
  • Changed normal testing/main CI pushes to validate and package only; public publishing now requires an explicit manual workflow dispatch with publish_public enabled.
  • Retained isolated stable/testing updater channels and protected release packaging.

Compatibility

  • v4 is an overhaul rather than a rewrite: existing source files and established services remain in place.
  • Oxide remains the primary runtime with Carbon supported through its Oxide compatibility surface and no hard Carbon dependency.
  • The supplied RogueRust plugin family remains the regression-consumer set for v4 validation.

3.3.11-testing

  • Advanced project, assembly and runtime testing identity to 3.3.11; testing CI publishes the canonical 3.3.11-testing prerelease.
  • Added the shared IRogueSkinCatalogService catalogue with immutable read snapshots and generation tracking.
  • Added IRogueSkinService for validated, low-overhead in-place skin application.
  • Added IRoguePlayerSkinCacheService for generation-aware per-player effective-skin snapshots.
  • Added IRogueSkinSessionService for bounded 48-slot skin-browser paging, lifecycle state and cleanup.
  • Added runtime imported skin registration/removal with source and owner metadata so Workshop/custom skin workflows can update the catalogue without rescanning Rust definitions.
  • Added a persistent server-side skin manifest at oxide/data/RogueRust/RogueRustSkins/skin-manifest.json (and the equivalent Carbon data root), loaded on startup and atomically refreshed when Steam inventory definitions are available.
  • Added late Steam inventory-definition discovery without a compile-time Steamworks dependency, allowing the manifest to include Workshop definitions that are not present in the early ItemSkinDirectory snapshot.
  • Exposed Steam-manifest readiness and last-refresh metadata so plugins can distinguish cached/startup data from a fully established Steam skin catalogue.
  • Preserved native Rust/content skin aliases across runtime catalogue mutations.
  • Registered skin catalogue, application, player-cache and session services through RogueServices and the capability registry.
  • Redirect skin replacement remains guarded until state-preserving item replacement is validated against the current Rust server API.
  • Updated README and feature documentation for the RogueRustSkins backend platform.

3.3.8-testing

Binary embedded image foundation

  • Advanced project, assembly and runtime testing identity to 3.3.8.
  • Reworked packaged artwork around real binary .png assembly resources; legacy Base64 resource packaging is no longer used.
  • Valid embedded PNGs now follow the same proven direct-validation path as valid downloaded PNGs and are never unnecessarily decoded/re-encoded through Unity.
  • Retained Unity ImageConversion only as a normalization fallback for non-PNG embedded formats.
  • Added full PNG chunk/CRC/IEND validation before FileStorage registration.
  • Added immediate FileStorage round-trip verification after a new embedded image is stored.
  • Retained SHA-256 content deduplication, owner namespaces, stale CRC cleanup, persisted metadata and CommunityEntity identity handling.
  • This establishes the reusable local-only image foundation for RogueRustDeathNotes and future RogueRust plugin icons.

3.3.7-testing

Embedded asset delivery hardening

  • Advanced project, assembly and runtime testing identity to 3.3.7.
  • Embedded images are now fingerprinted before reuse; a packaged icon change invalidates the previous cached FileStorage record automatically.
  • Valid current embedded assets reuse their existing FileStorage CRC without decoding or storage work beyond initialization.
  • Stale CRCs are replaced and unreferenced FileStorage entries are cleaned up.
  • Added explicit diagnostics for missing assembly resources, CommunityEntity readiness and successful embedded-image registration including the resulting FileStorage CRC.
  • Retained local-only delivery: no HTTP, GitHub, SteamID or external image host is required.

3.3.6-testing

Embedded RogueRust icon assets

  • Advanced project, assembly, runtime and testing release identity to 3.3.6.
  • Added a dedicated src/Oxide.Ext.RogueRust/Icons/ asset folder for current and future RogueRust plugin artwork.
  • Added the RogueRustDeathNotes icon as an assembly embedded resource.
  • Extended IRogueImageLibraryService with an additive embedded-image resolver that validates the PNG, stores it once through Rust FileStorage, reuses content hashes, and persists normal ImageLibrary metadata.
  • Embedded assets require no SteamID, HTTP request, GitHub request or external image host at runtime.
  • Prepared RogueRustDeathNotes to consume its branded icon through the shared DLL ImageLibrary path.

3.3.5-testing

Vehicle catalogue / administration cleanup

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Expanded modular cars into distinct 2/3/4-module spawned cars and chassis with exact Rust item IDs, shortnames and prefabs.
  • Split submarines into solo/duo variants and added the motorbike-with-sidecar.
  • Added additive ItemShortname and ItemId descriptor metadata and populated validated prefab paths where available.
  • Kept existing service families intact for current plugins; this stage removes no shared non-UI contracts.
  • Enables AdminMenu and future plugins to prefer native Rust ItemId artwork and exact prefab identity over guessed image/spawn mappings.

3.3.5-testing

3.3.5 consolidates the current F1 administration, vehicle-catalogue and ImageLibrary hardening work into the active testing release.

Release identity

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Testing CI resolves the source version to v3.3.5-testing and keeps the stable/testing updater channels isolated.
  • Refreshed README, feature catalogue and F1 administration documentation for the current testing release.

RogueUI / F1 administration

  • Added reusable F1 workspace, top-navigation, category-bar, content, search, grid-cell and tile-action geometry.
  • Added shared F1 workspace/tab/tile component models and bounded grid-column calculation.
  • Added bounded catalogue filtering for dense item/vehicle browsers.
  • Added standard item amount tokens/actions for 1, 100, 1000 and native stack size.
  • Continued charcoal/slate surfaces, muted olive selection and restrained orange interaction accents.
  • F1 helpers remain stateless and introduce no polling/timers/per-frame work.

Vehicle catalogue

  • Added shared IRogueVehicleService / RogueVehicleService catalogue support.
  • Added stable vehicle descriptors and categories for Animals, Bikes, Boats, Cars, Helicopters, Misc, Siege and Trains.
  • Added bounded category/search filtering and stable image keys for F1/AdminMenu consumers.
  • Vehicle entity spawning remains game/plugin-side until safe spawn resolution is finalized.

ImageLibrary hardening

  • Valid PNG downloads now use a direct validation/storage path rather than being unnecessarily decoded/re-encoded through Unity.
  • Non-PNG sources retain Unity image decode/PNG normalization.
  • Added PNG header/IHDR dimension validation while retaining source/PNG/dimension limits.
  • Added five-minute failure cooldowns to prevent repeated broken URL/404 requests from hammering the server.
  • Retained SHA-256 content deduplication, Rust FileStorage persistence, owner namespaces, reverse index, warmup and telemetry.
  • RogueRust metadata remains persisted under oxide/data/RogueRust/ImageLibrary/images.json.

CI/API compatibility correction

  • Run #89 compiled successfully but failed pre-stable validation because the source-contract exporter treated public implementation members inside the internal RogueImageLibraryService class as public SDK API.
  • The compatibility comparison now excludes that internal implementation file while continuing to validate the actual public IRogueImageLibraryService contract.
  • This prevents implementation-only formatting/refactoring from being misclassified as a breaking public API removal.

3.3.1-testing

  • Continued the administration/backend integration line with RogueUI design tokens, shared teleport/vanish state and ImageLibrary-v2 direction.
  • Maintained isolated testing release/update metadata.

3.3.0-testing

  • Began the coordinated administration-platform overhaul with shared vanish state, RogueUI design/font primitives and shared teleport direction.

3.0.0

  • Consolidated the mature 2.x framework into the stable 3.x platform with diagnostics, lifecycle safety, API compatibilit...
Read more

RogueRust v4.0.0-testing

Pre-release

Choose a tag to compare

@RogueAssassin RogueAssassin released this 20 Sep 11:08

RogueRust Changelog

3.3.11-testing

  • Advanced project, assembly and runtime testing identity to 3.3.11; testing CI publishes the canonical 3.3.11-testing prerelease.
  • Added the shared IRogueSkinCatalogService catalogue with immutable read snapshots and generation tracking.
  • Added IRogueSkinService for validated, low-overhead in-place skin application.
  • Added IRoguePlayerSkinCacheService for generation-aware per-player effective-skin snapshots.
  • Added IRogueSkinSessionService for bounded 48-slot skin-browser paging, lifecycle state and cleanup.
  • Added runtime imported skin registration/removal with source and owner metadata so Workshop/custom skin workflows can update the catalogue without rescanning Rust definitions.
  • Added a persistent server-side skin manifest at oxide/data/RogueRust/RogueRustSkins/skin-manifest.json (and the equivalent Carbon data root), loaded on startup and atomically refreshed when Steam inventory definitions are available.
  • Added late Steam inventory-definition discovery without a compile-time Steamworks dependency, allowing the manifest to include Workshop definitions that are not present in the early ItemSkinDirectory snapshot.
  • Exposed Steam-manifest readiness and last-refresh metadata so plugins can distinguish cached/startup data from a fully established Steam skin catalogue.
  • Preserved native Rust/content skin aliases across runtime catalogue mutations.
  • Registered skin catalogue, application, player-cache and session services through RogueServices and the capability registry.
  • Redirect skin replacement remains guarded until state-preserving item replacement is validated against the current Rust server API.
  • Updated README and feature documentation for the RogueRustSkins backend platform.

3.3.8-testing

Binary embedded image foundation

  • Advanced project, assembly and runtime testing identity to 3.3.8.
  • Reworked packaged artwork around real binary .png assembly resources; legacy Base64 resource packaging is no longer used.
  • Valid embedded PNGs now follow the same proven direct-validation path as valid downloaded PNGs and are never unnecessarily decoded/re-encoded through Unity.
  • Retained Unity ImageConversion only as a normalization fallback for non-PNG embedded formats.
  • Added full PNG chunk/CRC/IEND validation before FileStorage registration.
  • Added immediate FileStorage round-trip verification after a new embedded image is stored.
  • Retained SHA-256 content deduplication, owner namespaces, stale CRC cleanup, persisted metadata and CommunityEntity identity handling.
  • This establishes the reusable local-only image foundation for RogueRustDeathNotes and future RogueRust plugin icons.

3.3.7-testing

Embedded asset delivery hardening

  • Advanced project, assembly and runtime testing identity to 3.3.7.
  • Embedded images are now fingerprinted before reuse; a packaged icon change invalidates the previous cached FileStorage record automatically.
  • Valid current embedded assets reuse their existing FileStorage CRC without decoding or storage work beyond initialization.
  • Stale CRCs are replaced and unreferenced FileStorage entries are cleaned up.
  • Added explicit diagnostics for missing assembly resources, CommunityEntity readiness and successful embedded-image registration including the resulting FileStorage CRC.
  • Retained local-only delivery: no HTTP, GitHub, SteamID or external image host is required.

3.3.6-testing

Embedded RogueRust icon assets

  • Advanced project, assembly, runtime and testing release identity to 3.3.6.
  • Added a dedicated src/Oxide.Ext.RogueRust/Icons/ asset folder for current and future RogueRust plugin artwork.
  • Added the RogueRustDeathNotes icon as an assembly embedded resource.
  • Extended IRogueImageLibraryService with an additive embedded-image resolver that validates the PNG, stores it once through Rust FileStorage, reuses content hashes, and persists normal ImageLibrary metadata.
  • Embedded assets require no SteamID, HTTP request, GitHub request or external image host at runtime.
  • Prepared RogueRustDeathNotes to consume its branded icon through the shared DLL ImageLibrary path.

3.3.5-testing

Vehicle catalogue / administration cleanup

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Expanded modular cars into distinct 2/3/4-module spawned cars and chassis with exact Rust item IDs, shortnames and prefabs.
  • Split submarines into solo/duo variants and added the motorbike-with-sidecar.
  • Added additive ItemShortname and ItemId descriptor metadata and populated validated prefab paths where available.
  • Kept existing service families intact for current plugins; this stage removes no shared non-UI contracts.
  • Enables AdminMenu and future plugins to prefer native Rust ItemId artwork and exact prefab identity over guessed image/spawn mappings.

3.3.5-testing

3.3.5 consolidates the current F1 administration, vehicle-catalogue and ImageLibrary hardening work into the active testing release.

Release identity

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Testing CI resolves the source version to v3.3.5-testing and keeps the stable/testing updater channels isolated.
  • Refreshed README, feature catalogue and F1 administration documentation for the current testing release.

RogueUI / F1 administration

  • Added reusable F1 workspace, top-navigation, category-bar, content, search, grid-cell and tile-action geometry.
  • Added shared F1 workspace/tab/tile component models and bounded grid-column calculation.
  • Added bounded catalogue filtering for dense item/vehicle browsers.
  • Added standard item amount tokens/actions for 1, 100, 1000 and native stack size.
  • Continued charcoal/slate surfaces, muted olive selection and restrained orange interaction accents.
  • F1 helpers remain stateless and introduce no polling/timers/per-frame work.

Vehicle catalogue

  • Added shared IRogueVehicleService / RogueVehicleService catalogue support.
  • Added stable vehicle descriptors and categories for Animals, Bikes, Boats, Cars, Helicopters, Misc, Siege and Trains.
  • Added bounded category/search filtering and stable image keys for F1/AdminMenu consumers.
  • Vehicle entity spawning remains game/plugin-side until safe spawn resolution is finalized.

ImageLibrary hardening

  • Valid PNG downloads now use a direct validation/storage path rather than being unnecessarily decoded/re-encoded through Unity.
  • Non-PNG sources retain Unity image decode/PNG normalization.
  • Added PNG header/IHDR dimension validation while retaining source/PNG/dimension limits.
  • Added five-minute failure cooldowns to prevent repeated broken URL/404 requests from hammering the server.
  • Retained SHA-256 content deduplication, Rust FileStorage persistence, owner namespaces, reverse index, warmup and telemetry.
  • RogueRust metadata remains persisted under oxide/data/RogueRust/ImageLibrary/images.json.

CI/API compatibility correction

  • Run #89 compiled successfully but failed pre-stable validation because the source-contract exporter treated public implementation members inside the internal RogueImageLibraryService class as public SDK API.
  • The compatibility comparison now excludes that internal implementation file while continuing to validate the actual public IRogueImageLibraryService contract.
  • This prevents implementation-only formatting/refactoring from being misclassified as a breaking public API removal.

3.3.1-testing

  • Continued the administration/backend integration line with RogueUI design tokens, shared teleport/vanish state and ImageLibrary-v2 direction.
  • Maintained isolated testing release/update metadata.

3.3.0-testing

  • Began the coordinated administration-platform overhaul with shared vanish state, RogueUI design/font primitives and shared teleport direction.

3.0.0

  • Consolidated the mature 2.x framework into the stable 3.x platform with diagnostics, lifecycle safety, API compatibility checks and public documentation.

2.x development summary

  • 2.9.0: bounded stability/soak monitoring.
  • 2.8.0: developer platform, capability contracts and API-baseline release gating.
  • 2.7.0: resilience/circuit breakers and drain-first shutdown.
  • 2.6.0: ImageLibrary reverse indexes, owner namespaces/pressure and warmup.
  • 2.5.0: UI/data efficiency and reusable DB command templates.
  • 2.4.0: adaptive observability and recent metrics.
  • 2.3.0: pressure attribution, HTTP protection and image content dedupe.
  • 2.2.0: runtime pressure/lifecycle hardening.
  • 2.1.0: performance/public-package consolidation.

RogueRust v3.3.11-testing

Pre-release

Choose a tag to compare

@RogueAssassin RogueAssassin released this 19 Sep 08:42

RogueRust Changelog

3.3.11-testing

  • Advanced project, assembly and runtime testing identity to 3.3.11; testing CI publishes the canonical 3.3.11-testing prerelease.
  • Added the shared IRogueSkinCatalogService catalogue with immutable read snapshots and generation tracking.
  • Added IRogueSkinService for validated, low-overhead in-place skin application.
  • Added IRoguePlayerSkinCacheService for generation-aware per-player effective-skin snapshots.
  • Added IRogueSkinSessionService for bounded 48-slot skin-browser paging, lifecycle state and cleanup.
  • Added runtime imported skin registration/removal with source and owner metadata so Workshop/custom skin workflows can update the catalogue without rescanning Rust definitions.
  • Added a persistent server-side skin manifest at oxide/data/RogueRust/RogueRustSkins/skin-manifest.json (and the equivalent Carbon data root), loaded on startup and atomically refreshed when Steam inventory definitions are available.
  • Added late Steam inventory-definition discovery without a compile-time Steamworks dependency, allowing the manifest to include Workshop definitions that are not present in the early ItemSkinDirectory snapshot.
  • Exposed Steam-manifest readiness and last-refresh metadata so plugins can distinguish cached/startup data from a fully established Steam skin catalogue.
  • Preserved native Rust/content skin aliases across runtime catalogue mutations.
  • Registered skin catalogue, application, player-cache and session services through RogueServices and the capability registry.
  • Redirect skin replacement remains guarded until state-preserving item replacement is validated against the current Rust server API.
  • Updated README and feature documentation for the RogueRustSkins backend platform.

3.3.8-testing

Binary embedded image foundation

  • Advanced project, assembly and runtime testing identity to 3.3.8.
  • Reworked packaged artwork around real binary .png assembly resources; legacy Base64 resource packaging is no longer used.
  • Valid embedded PNGs now follow the same proven direct-validation path as valid downloaded PNGs and are never unnecessarily decoded/re-encoded through Unity.
  • Retained Unity ImageConversion only as a normalization fallback for non-PNG embedded formats.
  • Added full PNG chunk/CRC/IEND validation before FileStorage registration.
  • Added immediate FileStorage round-trip verification after a new embedded image is stored.
  • Retained SHA-256 content deduplication, owner namespaces, stale CRC cleanup, persisted metadata and CommunityEntity identity handling.
  • This establishes the reusable local-only image foundation for RogueRustDeathNotes and future RogueRust plugin icons.

3.3.7-testing

Embedded asset delivery hardening

  • Advanced project, assembly and runtime testing identity to 3.3.7.
  • Embedded images are now fingerprinted before reuse; a packaged icon change invalidates the previous cached FileStorage record automatically.
  • Valid current embedded assets reuse their existing FileStorage CRC without decoding or storage work beyond initialization.
  • Stale CRCs are replaced and unreferenced FileStorage entries are cleaned up.
  • Added explicit diagnostics for missing assembly resources, CommunityEntity readiness and successful embedded-image registration including the resulting FileStorage CRC.
  • Retained local-only delivery: no HTTP, GitHub, SteamID or external image host is required.

3.3.6-testing

Embedded RogueRust icon assets

  • Advanced project, assembly, runtime and testing release identity to 3.3.6.
  • Added a dedicated src/Oxide.Ext.RogueRust/Icons/ asset folder for current and future RogueRust plugin artwork.
  • Added the RogueRustDeathNotes icon as an assembly embedded resource.
  • Extended IRogueImageLibraryService with an additive embedded-image resolver that validates the PNG, stores it once through Rust FileStorage, reuses content hashes, and persists normal ImageLibrary metadata.
  • Embedded assets require no SteamID, HTTP request, GitHub request or external image host at runtime.
  • Prepared RogueRustDeathNotes to consume its branded icon through the shared DLL ImageLibrary path.

3.3.5-testing

Vehicle catalogue / administration cleanup

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Expanded modular cars into distinct 2/3/4-module spawned cars and chassis with exact Rust item IDs, shortnames and prefabs.
  • Split submarines into solo/duo variants and added the motorbike-with-sidecar.
  • Added additive ItemShortname and ItemId descriptor metadata and populated validated prefab paths where available.
  • Kept existing service families intact for current plugins; this stage removes no shared non-UI contracts.
  • Enables AdminMenu and future plugins to prefer native Rust ItemId artwork and exact prefab identity over guessed image/spawn mappings.

3.3.5-testing

3.3.5 consolidates the current F1 administration, vehicle-catalogue and ImageLibrary hardening work into the active testing release.

Release identity

  • Advanced project, assembly, runtime and default plugin-manifest identity to 3.3.5.
  • Testing CI resolves the source version to v3.3.5-testing and keeps the stable/testing updater channels isolated.
  • Refreshed README, feature catalogue and F1 administration documentation for the current testing release.

RogueUI / F1 administration

  • Added reusable F1 workspace, top-navigation, category-bar, content, search, grid-cell and tile-action geometry.
  • Added shared F1 workspace/tab/tile component models and bounded grid-column calculation.
  • Added bounded catalogue filtering for dense item/vehicle browsers.
  • Added standard item amount tokens/actions for 1, 100, 1000 and native stack size.
  • Continued charcoal/slate surfaces, muted olive selection and restrained orange interaction accents.
  • F1 helpers remain stateless and introduce no polling/timers/per-frame work.

Vehicle catalogue

  • Added shared IRogueVehicleService / RogueVehicleService catalogue support.
  • Added stable vehicle descriptors and categories for Animals, Bikes, Boats, Cars, Helicopters, Misc, Siege and Trains.
  • Added bounded category/search filtering and stable image keys for F1/AdminMenu consumers.
  • Vehicle entity spawning remains game/plugin-side until safe spawn resolution is finalized.

ImageLibrary hardening

  • Valid PNG downloads now use a direct validation/storage path rather than being unnecessarily decoded/re-encoded through Unity.
  • Non-PNG sources retain Unity image decode/PNG normalization.
  • Added PNG header/IHDR dimension validation while retaining source/PNG/dimension limits.
  • Added five-minute failure cooldowns to prevent repeated broken URL/404 requests from hammering the server.
  • Retained SHA-256 content deduplication, Rust FileStorage persistence, owner namespaces, reverse index, warmup and telemetry.
  • RogueRust metadata remains persisted under oxide/data/RogueRust/ImageLibrary/images.json.

CI/API compatibility correction

  • Run #89 compiled successfully but failed pre-stable validation because the source-contract exporter treated public implementation members inside the internal RogueImageLibraryService class as public SDK API.
  • The compatibility comparison now excludes that internal implementation file while continuing to validate the actual public IRogueImageLibraryService contract.
  • This prevents implementation-only formatting/refactoring from being misclassified as a breaking public API removal.

3.3.1-testing

  • Continued the administration/backend integration line with RogueUI design tokens, shared teleport/vanish state and ImageLibrary-v2 direction.
  • Maintained isolated testing release/update metadata.

3.3.0-testing

  • Began the coordinated administration-platform overhaul with shared vanish state, RogueUI design/font primitives and shared teleport direction.

3.0.0

  • Consolidated the mature 2.x framework into the stable 3.x platform with diagnostics, lifecycle safety, API compatibility checks and public documentation.

2.x development summary

  • 2.9.0: bounded stability/soak monitoring.
  • 2.8.0: developer platform, capability contracts and API-baseline release gating.
  • 2.7.0: resilience/circuit breakers and drain-first shutdown.
  • 2.6.0: ImageLibrary reverse indexes, owner namespaces/pressure and warmup.
  • 2.5.0: UI/data efficiency and reusable DB command templates.
  • 2.4.0: adaptive observability and recent metrics.
  • 2.3.0: pressure attribution, HTTP protection and image content dedupe.
  • 2.2.0: runtime pressure/lifecycle hardening.
  • 2.1.0: performance/public-package consolidation.