Files
Commonwealth-Online-Public/changelog.md
T
2026-06-30 16:59:42 +12:00

10 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

For testing notes, milestone summaries, known issues, and next steps, see docs/dev-log.md. Do not include testing content in this file.

[Unreleased]

Added

  • Optional appearance transform snapshots for best-effort runtime proxy body and face visuals, including height, body morph weight, body tint, hair colors, head-part IDs, and morph slider values while leaving gender switching out.
  • Game-thread proxy appearance application for supported appearance fields after runtime proxy 3D is ready, with race switching deferred for future proxy-base compatibility work.
  • server/fake_client.py parsing/output and server/fake_player.py sample payloads for relayed appearance transform data.
  • COVault109 solo-cell handling in the plugin so first-time character-creation space suppresses outgoing transform packets and remote proxy representation.
  • compile-papyrus.bat to compile active Papyrus sources from creation-kit\scripts\source into creation-kit\scripts\compiled using the Fallout 4 Creation Kit Papyrus compiler, resolving the Fallout 4 install with the same path workflow as deploy-all.bat, using saved .fallout4-path values without re-prompting during builds, and skipping reference-only CoSync*.psc files.
  • build-all.bat now compiles Papyrus scripts before staging the mod package, and still stages the repo build folder for inspection when Papyrus compilation fails.
  • deploy-all.bat now resolves the Fallout 4 path, compiles Papyrus scripts, stages the repo build folder, and then deploys from build\Fallout 4\Data into the Fallout 4 Data folder.
  • stage-mod.bat now stages active Papyrus scripts recursively: compiled creation-kit\scripts\compiled\*.pex into Data\Scripts and raw creation-kit\scripts\source\*.psc into Data\Scripts\Source\User, while skipping reference-only CoSync* files.
  • Server-authoritative weather and time control via serverWorldState packets from the dev server GUI.
  • Weather / Time tab in server/dev_server_app.py with preset buttons for fw weather form IDs and set gamehour to HHmm time values.
  • server/world_state_presets.py with shared weather and time preset definitions.
  • protocol/server-world-state.md documenting the new packet type.
  • Event-driven world time resync via optional timeSync field on worldState packets; the current world-state host pushes time after menus, loading screens, save/load, wait/sleep, and other time freezes.
  • timeSync tracking in server/fake_client.py host world-state snapshot output.
  • Optional equippedItems transform snapshots for visible apparel slots so proxies can mirror clothing, armor, hats, and eyewear changes.
  • Game-thread proxy equipment application for synced apparel, including explicit tracked-slot unequips and cleanup when runtime proxy slots are held, reused, or reassigned.
  • server/fake_client.py parsing and output for relayed equippedItems transform data.

Fixed

  • New clients now receive existing players' last transform snapshots immediately after welcome, including appearance, so late joiners do not start with default proxy visuals while waiting for the next sender heartbeat.
  • Runtime proxy candidate isolation now ignores actors flagged as deleted, so a freshly spawned proxy is controlled instead of the slot adopting a still-present stale proxy that was marked for deletion the same frame.
  • Stale saved runtime COPlayerProxy actors are deleted before spawning a fresh PlaceAtMe proxy, preventing duplicate visible proxies when an old uncontrolled proxy persisted in a save.
  • Runtime proxy promotion no longer waits for camera-frustum IsVisible() before assigning a newly spawned proxy, preventing remote players from appearing only after the local player turns toward them.
  • Fixed Papyrus staging path construction so .pex and .psc files are copied into build\Fallout 4\Data\Scripts and build\Fallout 4\Data\Scripts\Source\User.
  • If a server profile exists but its associated save was deleted, joining from the main menu now falls back to first-time character creation and re-binds the profile to the newly created save instead of hard-failing.
  • Pending first-time profile binding now completes as soon as a save exists even if character-creation phase flags are still active, preventing repeated coc first-time launches on reconnect.
  • Session launch now resolves equivalent server endpoints (for example localhost, 127.0.0.1, and legacy host-case variants) to an existing server profile before deciding first-time join flow, preventing unintended new-character creation when reconnecting.
  • Server profile persistence now uses a sanitized save-folder path with a Documents fallback and write-failure logging, preventing silent loss of server profile bindings across game restarts.
  • Pending profile binding now accepts exit saves (including Exitsave...) so the last auto-save on game exit can be rebound and loaded on reconnect, reducing accidental progress loss.
  • Fixed Windows build issues in server profile path fallback by replacing unsafe getenv usage and accepting std::string_view save-folder names in folder sanitization.
  • Reconnect now refreshes stale associated Exitsave... names to the newest available exit save before load, preventing fallback to first-time flow when exit-save filenames rotate between sessions.
  • Server GUI weather now runs fw <8-digit-form-id> on the current worldStateHostPlayerId client (not hardcoded to player 1), scheduled on the game thread.
  • Weather serverWorldState handling now defers until world-state host assignment is known, then skips only non-host clients.
  • Weather serverWorldState packets are broadcast to all clients so the designated host receives them even after host reassignment.
  • Server restart now resets player/host assignment so the first client is playerId 1 again, preventing GUI weather from being ignored after restart.
  • Plugin now defers server weather commands until player assignment is available, preventing initial GUI clicks from being dropped right after connect.
  • Replaced invalid default GUI weather IDs with valid Fallout 4 weather form IDs so fw <id> no longer fails with "Invalid weather ...".
  • Corrected Clear preset ID typo from 0002852a to valid 0002b52a (CommonwealthClear).
  • Time apply now converts timeHHmm to Fallout game-hour float before executing set gamehour, fixing 2200-style values applying incorrectly.
  • Corrected CO_Vault109StartQuestScript.psc to compile against Fallout 4 Papyrus by replacing unsupported Actor.ShowLooksMenu/UI.IsMenuOpen calls with Game.ShowRaceMenu and Utility.IsInMenuMode.
  • Race customization now forces third-person camera and a short pre-menu settle delay before ShowRaceMenu, fixing cases where the menu opens but the player model is not visible.
  • CO_Vault109StartQuestScript now uses configurable RaceMenuMode (default 0) plus RaceMenuFallbackMode (default 1) for ShowRaceMenu.
  • Race menu open flow now retries with fallback mode if the primary mode does not enter menu mode.
  • Moved first-time character customization menu control out of CO_Vault109StartQuestScript.psc; the quest now only handles spawn/stage while plugin C++ session-launch flow owns Looks/SPECIAL sequencing.
  • First-time C++ character creation now prepares camera context with ForceThirdPerson, opens Looks via ShowLooksMenu 14, retries with Actor.ShowLooksMenu fallback, and times out/reset safely if Looks menu never opens.
  • When LooksMenu is confirmed open, C++ now applies chargen camera context (SetInChargen 1 + ForceThirdPerson) and restores it on close, fixing first-person camera persistence during customization.
  • Looks menu camera correction now directly sets PlayerCamera to third-person state for several polls while LooksMenu is open, avoiding reliance on console-only camera commands.
  • Looks menu camera correction now configures the ThirdPersonState for face editing by zeroing shoulder offsets, flipping camera yaw toward the player, enabling free rotation, and applying a closer zoom offset.
  • Looks menu camera cleanup now restores the pre-customization third-person offsets, yaw, zoom, and free-rotation flags so movement controls return to normal after first-time customization closes.

Changed

  • Weather presets store the exact fw console argument (8-digit hex); edit server/world_state_presets.py only if a preset ID fails in your console.
  • Updated protocol weather examples/default preset table to match the new valid Fallout 4 preset IDs.
  • World time no longer re-applies on every worldState heartbeat; weather heartbeats continue at ~1 Hz while time stays in sync during normal gameplay.
  • Updated Weather/Time UI and protocol wording to use world-state host terminology instead of hardcoded player-1 wording.
  • Reformatted changelog.md to follow Keep a Changelog.
  • First-time character creation launch now uses coc COVault109 and waits for the COVault109 start cell instead of SanctuaryExt.
  • First-time COVault109 launch now starts CO_Vault109StartQuest once per first-time join flow so the quest can move the player to its preset spawn marker.
  • CO_Vault109StartQuest now opens ShowRaceMenu(player, 1) after stage-10 spawn completion, waits for menu mode to close, then opens ShowSPECIALMenu for name/S.P.E.C.I.A.L. setup.
  • First-time Looks menu now narrows the camera FOV while open (restored on close) to magnify the face for easier facial-feature editing, since LooksMenu uses its own fixed camera that ignores third-person zoom offsets.
  • First-time Looks menu now centers the player on the fixed LooksMenu camera's optical axis for the first few polls (preserving distance and facing the camera), fixing the off-center face caused by the FOV zoom; the player's original transform is restored when the menu closes.
  • Added temporary diagnostic logging to LooksMenu centering (camera position/heading, target vs actual player position per poll) to confirm whether SetPosition takes effect and whether the menu camera is fixed or follows the player.
  • Documented optional apparel equipment sync in protocol and architecture docs.

[0.0.1] - 2026-06-23

Added

Changed

Removed

  • docs/changelog.md — moved to project root.