Skip to content

Release S1API 3.2.1 for Schedule I 0.4.7 - #361

Merged
ifBars merged 95 commits into
stablefrom
releases/3.2.1
Oct 9, 2026
Merged

ifBars merged 95 commits into
stablefrom
releases/3.2.1

Conversation

@ifBars

@ifBars ifBars commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

Release S1API 3.2.1 for the final Schedule I 0.4.7 Special Customers update. Integrates the validated beta series while retaining stable's documentation/contribution updates, updates project and Melon versions, and adds curated stable release notes. Refs #305.

Validation: release candidate builds with zero warnings/errors and passes 792 Mono plus 766 IL2CPP tests against final f12 references. Earlier same-behavior final-release runtime probes cover custom NPC roles, portraits, customer data, and two save loads on both runtimes; final-release multiplayer was not retested. Hosted documentation coverage, target-branch ApiCompat, coverage, and IL2CPP checks must pass before merge.

Compatibility: existing managed public signatures, save identifiers, and network payload formats are preserved, with the existing narrowly documented native PhoneApp.Exit migration suppression. This release targets game 0.4.7. No new breaking-change exceptions are introduced.

Delivery: merge with a merge commit, fast-forward releases/3.2.1 to that exact stable commit, then tag v3.2.1 for GitHub/Nexus/Thunderstore/NuGet publication. The user explicitly authorized stable releases and merging. No proprietary game references or runtime probes are included.

Summary by CodeRabbit

  • Compatibility

    • Supports Schedule I 0.4.7 beta on Mono and IL2CPP.
  • New Features

    • Added APIs for hosting phone and TV apps in independent display sessions.
  • Improvements

    • Updated avatar appearance handling, portrait capture, and NPC workbench previews for the beta pipeline.
    • Improved NPC conversation and contact persistence across saves and reloads.
  • Bug Fixes

    • Addressed NPC setup, custom contact, and icon-generation issues.
  • Known Limitations

    • Character creator presets and legacy hidden-UI and initial-settings options are unavailable with the beta game version.

ifBars and others added 30 commits September 19, 2026 15:22
fix(beta): support Schedule I 0.4.7
fix(avatar): restore beta portraits and preview poses
fix(NPC): initialize plain custom NPC data on 0.4.7 beta
fix: support plain custom NPCs on f6 beta
chore(release): prepare S1API 3.2.1-beta.4
fix(Delivery): avoid unused vehicle wrapping when opening Gamepad
fix(NPC): prevent post-load custom contact reinitialization on beta
chore(release): prepare S1API 3.2.1-beta.5
fix(NPC): refresh message contact info on first load
fix(Lifecycle): detach native listeners on scene unload
* fix(NPC): retain messages across initial network spawn

* fix(NPC): preserve conversation across both spawn paths
r-melvin and others added 24 commits October 7, 2026 15:13
GetDerivedClasses<T> scanned every eligible assembly on each call, and custom
NPC readiness calls it once per custom NPC. Results per base type are now kept
per ordinary assembly until another assembly loads. Dynamic assemblies can gain
types without a load event, so they stay in the plan and are re-scanned (and
their eligibility re-checked) on every call. Each call returns a new list.

Refs #351

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Movement presets, voice databases, NPC map PoIs and contact circles were each
found with a scene or asset scan per custom NPC. They now come from a per-scene
index built from one scan. Only found objects are reused, and only while alive
and still under the key they were indexed by; a lookup that finds nothing scans
again, so an object created later during loading is still found. Indexes clear
on scene change.

Refs #351

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
f11 replaced ProductIconManager.GenerateIcons (one batch at load) with on-demand
GenerateRuntimeIcons(productID). The missing target made Harmony reject the whole
ProductPackagingContentPatches class, so ApplyVisuals, GeneratePackagingIcon and
GetIcon were unpatched too. The two batch hooks move to their own class, applied
only when GenerateIcons exists; on f11 the packaging-icon prefix generates custom
icons directly.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
fix: keep packaging-content patches working on game 0.4.7f11
fix(avatar): preserve fallback portrait pose and workbench animation
fix(npc): prepare IL2CPP client customer and dealer prefabs
perf: index scene objects instead of scanning for every custom NPC
perf: keep derived-type scans until an assembly loads
chore(release): prepare 3.2.1-beta.9 prerelease
@ifBars ifBars added the game update Fixes the API for a Schedule 1 game update label Oct 9, 2026
@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 8d6c035a-6034-4a60-b193-b1b44a87a3bb

📥 Commits

Reviewing files that changed from the base of the PR and between 350cd70 and 08237df.


📒 Files selected for processing (90)
  • .github/api-compat-suppressions.xml
  • .github/release-notes/3.2.1-beta.1.md
  • .github/release-notes/3.2.1-beta.2.md
  • .github/release-notes/3.2.1-beta.3.md
  • .github/release-notes/3.2.1-beta.4.md
  • .github/release-notes/3.2.1-beta.5.md
  • .github/release-notes/3.2.1-beta.6.md
  • .github/release-notes/3.2.1-beta.7.md
  • .github/release-notes/3.2.1-beta.8.md
  • .github/release-notes/3.2.1-beta.9.md
  • .github/release-notes/3.2.1.md
  • .github/workflows/coverage.yml
  • .github/workflows/docs.yml
  • .github/workflows/il2cpp-build-check.yml
  • S1API.Tests/Deliveries/LoadingDockApiTests.cs
  • S1API.Tests/Entities/MugshotCapturePolicyTests.cs
  • S1API.Tests/Entities/NPCConversationRegistrationTests.cs
  • S1API.Tests/ExternalHosting/ExternalAppCatalogTests.cs
  • S1API.Tests/Internal/Patches/ContactsAppWaitTests.cs
  • S1API.Tests/Internal/Patches/HarmonyPatchTargetTests.cs
  • S1API.Tests/Internal/Utils/ReflectionUtilsTests.cs
  • S1API.Tests/Internal/Utils/SceneObjectIndexTests.cs
  • S1API.Tests/NPCs/NPCPrefabDataTests.cs
  • S1API.Tests/Rendering/CustomAvatarObjectsTests.cs
  • S1API.Tests/Rendering/RuntimePreviewLayerTests.cs
  • S1API.Tests/Rendering/RuntimeResourceRegistryCollection.cs
  • S1API.Tests/Rendering/RuntimeResourceRegistryTests.cs
  • S1API.Tests/S1API.Tests.csproj
  • S1API/Avatar/Avatar.cs
  • S1API/Avatar/BasicAvatarSettings.cs
  • S1API/Deliveries/LoadingDock.cs
  • S1API/Dialogues/DialogueInjector.cs
  • S1API/Entities/Dialogue/DialogueContainerBuilder.cs
  • S1API/Entities/Employees/EmployeeManager.cs
  • S1API/Entities/NPC.cs
  • S1API/Entities/NPCAppearance.cs
  • S1API/Entities/NPCCustomer.cs
  • S1API/Entities/NPCDealer.cs
  • S1API/Entities/NPCDialogue.cs
  • S1API/Entities/NPCMessaging.cs
  • S1API/Entities/NPCMovement.cs
  • S1API/Entities/NPCPrefabBuilder.cs
  • S1API/Entities/Player.cs
  • S1API/ExternalHosting/ExternalAppCatalog.cs
  • S1API/ExternalHosting/IExternalAppHost.cs
  • S1API/GameTime/TimeManager.cs
  • S1API/Internal/Abstraction/Registerable.cs
  • S1API/Internal/Abstraction/Saveable.cs
  • S1API/Internal/Compatibility/AvatarCompatibility.cs
  • S1API/Internal/Cutscenes/NativeCutsceneAdapter.cs
  • S1API/Internal/Deliveries/LoadingDockEventBridge.cs
  • S1API/Internal/Entities/ImpostorTextureResolver.cs
  • S1API/Internal/Entities/NPCConversationLifecycle.cs
  • S1API/Internal/Entities/NPCDataAccess.cs
  • S1API/Internal/Entities/NPCNativeAwakeScope.cs
  • S1API/Internal/Entities/NPCPrefabIdentity.cs
  • S1API/Internal/Lifecycle/SceneStateCleaner.cs
  • S1API/Internal/Lifecycle/TimeManagerShim.cs
  • S1API/Internal/NPCWorkbench/NPCWorkbenchPreview.cs
  • S1API/Internal/NPCWorkbench/NPCWorkbenchRuntimeAdapter.cs
  • S1API/Internal/Patches/AvatarAccessoryPatches.cs
  • S1API/Internal/Patches/ContactsAppPatches.cs
  • S1API/Internal/Patches/CustomProductManifestPatches.cs
  • S1API/Internal/Patches/HomeScreen.Start.cs
  • S1API/Internal/Patches/NPCPatches.cs
  • S1API/Internal/Patches/ProductPackagingContentPatches.cs
  • S1API/Internal/Patches/SceneObjectIndexPatches.cs
  • S1API/Internal/Patches/TVPatches.cs
  • S1API/Internal/Rendering/CustomAvatarObjects.cs
  • S1API/Internal/Rendering/PresentationWorkbenchRuntime.cs
  • S1API/Internal/Rendering/RuntimePreviewLayer.cs
  • S1API/Internal/Utils/ReflectionUtils.cs
  • S1API/Internal/Utils/SceneObjectIndex.cs
  • S1API/Items/Clothing/ClothingItemDefinition.cs
  • S1API/Items/Clothing/ClothingItemDefinitionBuilder.cs
  • S1API/Items/Clothing/ClothingMetadataCatalog.cs
  • S1API/Items/ClothingItemDefinition.cs
  • S1API/Items/ClothingItemDefinitionBuilder.cs
  • S1API/Lifecycle/GameLifecycle.cs
  • S1API/PhoneApp/PhoneApp.cs
  • S1API/Rendering/AccessoryFactory.cs
  • S1API/Rendering/IconFactory.cs
  • S1API/Rendering/RuntimeResourceRegistry.cs
  • S1API/S1API.cs
  • S1API/S1API.csproj
  • S1API/TVApp/TVApp.cs
  • S1API/Trash/TrashManager.cs
  • S1API/UI/CharacterCreatorManager.cs
  • S1API/docs/appearance-customization.md
  • S1API/docs/npc-workbench.md

 _________________________________________
< OODA Loop: Observe, Orient, Debug, Act. >
 -----------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR


  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ifBars
ifBars merged commit a4cbdd9 into stable Oct 9, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

game update Fixes the API for a Schedule 1 game update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants