CHANGELOG

Changelog

2.1.0

Editor-authored responsive UI

  • Replaced the primary runtime-built backpack chrome with an editor-authored Unity AssetBundle across the standalone backpack, storage, station, deal-handover, settings, and dedicated-canvas surfaces.
  • Unified anchoring, safe-area fitting, UI scaling, slot-grid placement, and input/raycaster behavior so backpack surfaces remain usable across display resolutions and supported UI scales.
  • Added the integrated settings overlay, scalable slider-style settings icon, side-mounted collapse rail with explanatory tooltips, and visually connected active filter tabs.
  • Improved the product metrics drawer with package counts, unit and total values, drug-family colors, unpackaged product imagery, overflow ellipses, and a scroll indicator for longer lists.
  • Retained the runtime-authored UI as a compatibility fallback when the embedded AssetBundle is missing or fails contract validation.

Backpack, storage, and handover reliability

  • Fixed larger backpack tiers restoring with the wrong capacity and prevented non-local player initialization from taking ownership of the local backpack UI.
  • Stabilized storage, station, employee-inventory, and handover panel lifecycles so embedded backpack surfaces bind, dismiss, and reopen without leaking layout or visibility state into their host UI.
  • Preserved vanilla handover completion controls and corrected backpack slot layering, anchoring, active-tab state, search alignment, and metrics-panel joins.
  • Added guarded runtime compatibility discovery so optional station patches are skipped cleanly when their target methods are unavailable on a game branch.

Transfers and large-inventory performance

  • Made deal auto-fill package-aware so requested unit counts are assembled correctly from bags, jars, bricks, and unpackaged product.
  • Bounded large auto-fill combination searches and moved backpack stacking to a deterministic planner so large inventories remain responsive.
  • Prewarmed reflection metadata, UI assets, menu overloads, and camera-lock state to reduce first-open and hotkey latency.
  • Added an opt-in UI profiler and summary tooling for measuring full backpack, storage, station, and handover interaction paths without enabling diagnostics by default.

Runtime compatibility and validation

  • Preserved Mono and IL2CPP support across current/beta and alternate/legacy Schedule One branches.
  • Added focused tests for auto-fill planning, stack planning, embedded-panel sessions, runtime target discovery, reflection caching, UI bounds, and scaling policy.

Release metadata

  • Bumped the mod version to 2.1.0.

2.0.0

Redesigned backpack browser

  • Replaced the standalone backpack display with a responsive, Schedule One-style backpack browser designed for large bags, multiple pages, and varied display resolutions and UI scales.
  • Added live partial-match search across item names, qualities, categories, drug types, base strains, and derived mixed products.
  • Added type and quality filters; sort tabs for all items, favorites, name, quantity, quality, type, and recent items; and ascending or descending ordering.
  • Added favorites and recent-item views, persistent favorite state, keyboard navigation for PackRat controls, and safe focus handling for text entry and mouse interaction.
  • Added opening, closing, filter/search, tab, and pagination animations, including directional page wipes.
  • Added Organize to group items by type, name, and quality, plus Stack to consolidate compatible stacks into the earliest available slots across pages.

In-game settings and appearance

  • Added a backpack settings modal with live per-view X/Y positioning and scale controls for the hotkey, storage, station, and deal-handover views.
  • Added settings for search, sync diagnostics, organization, smart routing, product metrics, and backpack tiers.
  • Added built-in visual themes and a custom primary-color picker that derives the remaining backpack UI colors from the selected color.

Integrated storage and deal views

  • Reused the backpack browser in storage containers, stations, and deal handovers with independent layout scaling and positioning.
  • Improved deal-handover lifecycle handling so the backpack browser appears and closes with its owning UI without interfering with vanilla storage containers.
  • Added vehicle/backpack source switching in deal handovers when an eligible vehicle is available.
  • Added highlighted deal matches, reliable tooltip layering, source feedback, and one-click deal autofill from the available item sources.

Transfer and routing quality of life

  • Added bulk transfers in storage menus for selected item categories and products in either direction between storage and the backpack.
  • Expanded marijuana bulk selection to include derivative mixed products for the selected base strain.
  • Added smart quick-move routing with configurable category rules for products, seeds, mixers, and reagents.

Product metrics

  • Added an expandable product metrics drawer with grouped product quantities, unit and total values, and active-order quantities when applicable.
  • Added settings that control the product metrics shown in the drawer.

Reliability and compatibility

  • Hardened backpack state synchronization so completed backpack changes are queued after the menu closes, improving client restore and reconnection behavior.
  • Improved UI cleanup, modal responsiveness, layout isolation, input handling, and cross-view rendering stability.
  • Updated current beta and alternate-beta game references while retaining Mono and IL2CPP compatibility.

Release metadata

  • Bumped the mod version to 2.0.0.

1.1.2

Backpack UI integration

  • Added backpack integration for storage containers and station UIs, with paginated 3x3 panels and quick-move support.
  • Added configurable X/Y offsets for storage, station, and handover backpack overlays via PackRat.cfg.

Gameplay fixes

  • Added backpack ammo support for weapon reloads.
  • Fixed duplicate backpack unlockable registration.
  • Fixed unintended backpack disabling on player death.
  • Fixed cash quick-move ordering so hot-deposited money stacks into existing cash slots before filling empty storage or backpack slots.
  • Fixed station backpack panel raycaster registration so drag/drop can target backpack slots inside station UIs.

Release metadata

  • Bumped the mod version to 1.1.2.

1.0.8

IL2CPP hardware-store stability

  • Reworked IL2CPP backpack definition creation so PackRat no longer falls back to cloning arbitrary shop items when the safe template is unavailable.
  • Deferred safe backpack template creation until hardware-store integration time, when IL2CPP has a valid shop context to seed from if direct StorableItemDefinition instantiation is still unavailable.
  • Sanitized fallback template state before reuse and reduced repeated safe-template failure logs to a single actionable warning instead of console spam.

Release metadata

  • Bumped the mod version to 1.0.8 and restored Thunderstore-compatible semantic versioning in the packaged manifest.

1.0.7

Backpack definition and storage fixes

  • Added a safe backpack item template for IL2CPP fallback definition creation so backpack tier purchases no longer clone arbitrary hardware-store items.
  • Fixed backpack storage lookup to target PackRat's own StorageEntity instead of blindly taking the first storage component on the player.
  • Hardened legality checks to read legal status by reflection so both Mono and IL2CPP continue working across game API changes.
  • Fixed extended-slot growth to avoid registering the same storage slot twice, resolving the regression where the final backpack slots could mirror each other when items were moved.

Save/load and sizing fixes

  • Ensured the saved purchased backpack tier is applied before restoring saved contents.
  • Fixed slot growth so newly created backpack slots are actually appended to the underlying storage slot list.
  • Added equipped-backpack tier persistence so upgrades and downgrades save correctly and restore the active backpack size on the next load.

Compatibility

  • Added the new core assembly references required by the latest Schedule One update for both Mono and IL2CPP builds.
  • Split Mono and IL2CPP intermediate build output into separate obj folders so switching runtimes no longer contaminates restore/build state.

Runtime stability and multiplayer

  • Fixed host-to-client config sync parsing after the EnableSearch payload change so clients correctly receive host backpack settings again.
  • Added null-safety around shop/cart backpack checks and guarded backpack save-path lookups against missing player-data indices.
  • Cleaned up duplicate local PlayerBackpack components, improved slot clearing to prefer game-native clear methods, and removed the extra IL2CPP handover diagnostics while pruning stale handover panel cache state.

1.0.6

Game update compatibility

  • Updated Mono and IL2CPP references for the latest Schedule One game version, including the new ScheduleOne.Core / Il2CppScheduleOne.Core assembly split.
  • Removed hard dependency on game assemblies that are no longer present in newer installs so both runtimes compile cleanly against the current game files.
  • Adjusted cross-runtime item/core type handling to match the updated game API surface.

Backpack save/load fixes

  • Fixed backpack restore order so the purchased backpack tier and slot count are applied before backpack contents are deserialized.
  • Fixed larger backpacks only restoring the first 8 slots by ensuring restored item data loads into the correctly resized storage.
  • Applied the same pre-resize restore flow to host-synced multiplayer backpack snapshots.

Arrest and respawn stability

  • Removed backpack enable/disable lifecycle hooks tied to player arrest/exit flows to avoid respawn activation issues after arrest.
  • Fixed the post-arrest local player lockup where the game could leave the player unable to move after respawn.

1.0.5

Handover UI performance

  • Fixed severe handover UI lag when moving items from the backpack panel or player inventory by removing broad hierarchy-wide label scans.
  • Reduced repeated header reapply passes and limited backpack label updates to local storage-panel operations so handover paging and item movement remain responsive on both Mono and IL2CPP.

1.0.4

Multiplayer backpack sync

  • Added host-driven backpack state sync so clients request and receive the host-authoritative backpack snapshot in multiplayer sessions.
  • Added chunked backpack snapshot transfer and host-to-client backpack pull/response handling to keep larger backpack inventories synchronized reliably.
  • Non-host clients now skip local backpack persistence and instead load/apply the synchronized host state.
  • Added BackpackSyncDebugLogging configuration to enable verbose multiplayer backpack sync diagnostics when needed.

Runtime and UI robustness

  • Improved IL2CPP string assignment handling in reflection utilities so managed strings can be written safely to Il2CppSystem.String members.
  • Added supporting save/load and variable-database hooks required for multiplayer backpack synchronization.
  • Hardened backpack/player initialization paths so backpack components and synced state are attached/applied more reliably across runtime variants.

Documentation

  • Updated hosted README screenshots and project links for the 1.0.4 release.

1.0.3

Deal handover backpack panel

  • Added backpack storage integration to the deal handover UI with paged slot rendering for larger backpack tiers.
  • Added pager controls (<, page indicator, >) and ensured page switching updates slot bindings correctly.
  • Added a vehicle/backpack view toggle under the pager; backpack view is default and toggle is only shown when vehicle storage is available within 20 meters.

Handover UI behavior and stability

  • Fixed item duplication regression introduced during early slot-initialization experiments.
  • Hardened handover panel lifecycle checks against stale/destroyed components to prevent open-time exceptions in IL2CPP.
  • Improved pager setup robustness for IL2CPP by recreating/repairing missing controls and guarding fragile component access paths.

Handover UI placement and visuals

  • Reworked pager layout anchoring so controls are placed beneath the backpack storage area.
  • Added a dedicated pager background element and aligned it with the pager controls.

1.0.1

IL2CPP Hardware Store fixes

  • Fixed IL2CPP backpack tier listing creation by using IL2CPP-safe TryCast and a template-clone fallback when creating StorableItemDefinition instances.
  • Improved Hardware Store integration flow to use game-native listing UI refresh methods and to avoid false "added" success logs.
  • Added targeted diagnostics for resource lookup and tier-listing pipeline failures to make IL2CPP troubleshooting actionable.

Backpack tier purchase and use (Hardware Store)

  • Backpack tiers are now purchased at the Hardware Store (both locations) with account funds; they no longer unlock automatically by rank.
  • After purchase, a backpack tier item appears in your inventory/hotbar (real StorableItemDefinition with tier icon). Select it and press B to consume it, apply that tier to your backpack, and open the backpack.
  • Added config options Tier{n}_Price (defaults: 25, 75, 150, 300, 500) for store prices.
  • Inventory UI is refreshed after consuming a backpack item so the hotbar slot updates immediately.
  • Already-purchased tiers no longer show in the Hardware Store: when adding listings we only add tiers the player has not yet purchased; when the player uses a backpack item (press B) we remove that tier and all lower tiers’s from all stores (each tier is an upgrade; buying Tactical Pack means only Hiking Backpack remains).

Removed / simplified

  • Removed patches that blocked the backpack item from being added or that cleaned it up in the background; the item is now a normal purchasable that you use with B.
  • Removed PlayerInventoryPatch and InventoryAddBlockPatch; removed OnEnable patch from ShopInterfacePatch. Purchase and payment are handled entirely by the game; our shop patch only adds tier listings and returns without running purchase logic for them.

1.0.0

  • Initial port of ScheduleOne-Backpack (v1.8.1) by D-Kay into the PackRat project structure
  • Full cross-runtime support: IL2CPP (net6) and Mono (netstandard2.1)
  • Backpack storage entity attached to player prefab via PlayerSpawner patch
  • Configurable toggle key (default: B), slot count (default: 12), and unlock rank (default: Hoodlum)
  • Backpack contents persist across save/load sessions
  • Network save data appended to inventory string with ||| delimiter
  • Host-to-client config sync via Steam lobby metadata
  • Optional police body search includes backpack when EnableSearch = true
  • Shop cart warning accounts for backpack overflow capacity
  • Items can be sold directly from backpack via ShopInterface
  • StorageMenu expanded to support up to 128 slots dynamically
  • Backpack registered as an unlockable in the levelling system with embedded icon