Skip to content

Align downstream settings with upstream PR 333 - #368

Merged
Guffawaffle merged 28 commits into
playfrom
integrate/settings-pr333-20261017
Oct 18, 2026
Merged

Guffawaffle merged 28 commits into
playfrom
integrate/settings-pr333-20261017

Conversation

@Guffawaffle

@Guffawaffle Guffawaffle commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Align downstream Mod Settings with upstream STFC-Mod/mod#333 at 66e9b045, including the shared substantive chat-title hook fix. Consolidates the upstream interior-zoom and downstream Haven-orbit contributions behind one shared camera-constraint detour, preventing the duplicate-detour station startup crash.

Preserves downstream custom audio/files and coalescing, galaxy controls, layout-aware shortcut recording, ID-based ship pins, loading artwork, OPC/ship technology indicators, and production queue fixes on Windows and both Mac architectures. Claim/selection diagnostics remain outside this play candidate. The combined default-on control.kirshara_fixes replaces the former separate feature switches; legacy queue opt-outs are ignored unless the canonical switch is set.

Validation:

  • Three independent review lanes cleared the integration and shared-camera-owner correction at e6d5ed74; the Mac pointer conversion at 5ed1b792 passed general delta review, and the declaration include at feb91cae passed all three delta lanes.
  • Windows release build, actual 101-key catalog fixture, 15-key audio fixture (including async custom-file replacement/stale reset), metadata/default/save/reload/conflict/ACL/force-close fixtures, Python coverage6checks, keyboard/chord/pin/audio and SPUD relocation regressions passed.
  • git diff --check and held-PR251 guard pass. All example TOML files parse; translated examples unchanged.
  • Corrected Windows DLL C3EB3CFE9B7A3A3948CF4012314D1EA64C334D85A784C9FC0800ABBA3F85D0BC deployed from e6d5ed74; tester confirms station is visible and stable. The later Mac pointer conversion and direct guard declaration include preserve the tested Windows runtime behavior. The corrected head also passed a local Windows release rebuild. Tester confirms ALL PASS: settings save/reopen, custom audio, shortcut/text entry, chat titles, interior/exterior zoom and Haven orbit/reset. The live trampoline was read back and contains relocated original game instructions.
  • Both Mac architectures passed compilation and tests on final head d039a84b; required build-mac is green. The test-only migration at d039a84b passed all three delta review lanes, both full Windows CI test runners locally, and a release rebuild. Final exact-head Windows CI is pending. Mac native-fit/runtime evidence remains unverified; build coverage is not player smoke.

Tester smoke passed. Keep draft until required builds pass, then promote through this PR. No CI workflows changed.

netniV and others added 28 commits October 16, 2026 08:22
…287)

* Guard existing IL2CPP class lookup when metadata is unavailable

* Recover stalled queues through guarded native planner paths

* Complete queue config examples and reuse class lookup helper

* Separate queue hook installation from runtime recovery preferences

* Remove obsolete feature-derived queue installation helper

* Name queue compatibility checks and failed detours

* Keep missing queue field types safe while logging

* Protect Kirshara queues from another ship changing the reported address

* Enable Kirshara protections together with one default-on setting
* feat: hide player title rows in chat messages

- hook UserProfileWidget.UpdatePlayerTitle and the PlayerTitleWidget bind
  paths (SetWidgetData, OnDidBindContext), clearing the title row only when
  the profile widget belongs to a chat message and ui.show_player_title is
  disabled
- validate native method extents on macOS before detouring the small bind
  wrappers: LC_FUNCTION_STARTS extent lookup plus a bounded instruction
  preflight via the new spud::has_detour_prologue (spud bumped to v0.2.0-4),
  following a direct branch to a downstream thunk when the entry does not
  fit; targets that fail validation are skipped
- add ui.show_player_title (default true) and the emergency
  patches.chattitledisplayhooks toggle (default true); document both in the
  English example config

* fix: consolidate duplicate chat title detour targets

Opening chat crashed with SIGBUS: SetWidgetData and OnDidBindContext are
4-byte IL2CPP thunks that resolve through direct branches to one shared
native implementation, and the patch installed two SPUD detours on that
address. The second detour rebuilt the first detour's jump into a broken
trampoline, so the bind-path hook's original(...) call branched into
non-executable detour context data.

Deduplicate the resolved targets before installing; one detour on the
shared body is enough because both method entries funnel into the same
hook, which re-derives everything from the instance.

* fix: guard arm64-only MacFollowDirectBranch call in chat title detour validation

The macOS x86_64 pipeline failed because chat_titles.cc referenced
native_hooks::MacFollowDirectBranch under a plain __APPLE__ guard while
the helper is declared and implemented only for __aarch64__ (it decodes an
ARM64 B instruction). Keep ValidateDetourTarget under __APPLE__ since
MacHookFits works on both architectures, and gate only the branch-following
fallback on __aarch64__.
…flector (#331)

Add ui.auto_confirm_reveal_ability to skip the free-ability confirmation
popup for the U.S.S. Excelsior's Decloaking Deflector. A detour on
MessageUtility.ShowFreeAbilityConfirmationPopup resolves the ability type
via ActivatedAbilityManager.GetActivatedAbilityType and, for the
RevealHostileVger (86002) ability type, invokes the confirm Action
directly instead of showing the MessageBox. The method contract is
validated at install time so client drift fails closed.

The hook installs behind the standard patches.revealconfirmhooks toggle
(default on) and checks ui.auto_confirm_reveal_ability (default off) at
call time, keeping hook installation decoupled from the feature setting.

Ported from stfc-mod-personal 20422847, without the Mod Settings UI parts
and narrowed to the Excelsior's ability type.

Co-authored-by: netniV <netniv@hotmail.com>
* Prevent primary action from using dismissed targets

* Use native star viewer base for dismissal visibility checks

* Unbox parent visibility Boolean before gating target actions

* Make primary-action target visibility protection opt-in

* Preserve native Armada join visibility in both option modes

---------

Co-authored-by: netniV <netniv@hotmail.com>
* feat: pin or unpin fleet dock ships with SHIFT+click

Replicates the shift-click pin changes from stfc-mod-personal
(commits 1708449, e54315b, 8c5b739 and a7e4c39):

- route ShipTileWidget.HandleOnClick through one idempotent dispatcher
  shared by double-click-assign and the new pin toggle (macOS only permits
  one hook per function)
- toggle the clicked ship's normalized display name in ui.pinned_ships and
  rebuild the dock with SelectableListBase.ClearAndGenerateContents so the
  change shows instantly
- persist ui.pinned_ships by rewriting just that key in the user's TOML
  config (the personal fork's runtime config writer does not exist here)
- add patches.pinnedshipclicktoggle (default on) and document it in the
  English example config

* chore: edit comment

---------

Co-authored-by: netniV <netniv@hotmail.com>
The station-interior camera backs out only far enough to show part of the
base. Hook OrbitFrameProvider.UpdateConstrains to scale the interior blend's
pinned far endpoint by graphics.interior_zoom_scale (default 2.0) so the whole
station fits on screen.

That orbit endpoint is the same instance as the exterior station camera (the
interior's fully-zoomed-out end is the exterior view), so the hook only widens
while the section is Starbase_Interior and restores the native radius
otherwise, leaving the exterior view and its component-level labels stock.

A multiplier (not an absolute distance like zoom/haven_zoom) keeps it
resolution-independent: the native stop is a single pinned radius. Gated by
[patches].interiorzoomhooks.
@Guffawaffle
Guffawaffle marked this pull request as ready for review October 18, 2026 03:37
@Guffawaffle
Guffawaffle merged commit a3e4911 into play Oct 18, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants