Merged
Conversation
- Add KeyRoute::Player for keys queried with and without uid prefix (options/*, mission/*, QualityManager/*, Scopely.Analytics.*, Scopely.Attribution.*, selected_language) - Replace session-based log dedup (HashSet, once per session) with time-based dedup (HashMap<String, Instant>, once per 60 seconds) - Add put_player_float helper for consistency with put_player_int and put_player_string - Add tests for player routing, dual-key convergence and phase 1 routability
- Track widget instance via Awake hook (persists for the session) - Resolve OnCollectButtonClicked at startup for ESC triggering - Refactor collect_reward_screen() with check_active closure - Widget-based collect screens checked after reward VC slots (0-3)
- Replace ChatPreviewController.OnEnable hook with AboutToShow - AboutToShow fires after RegisterActiveChannels and SubscribeToEvents, ensuring channel subscriptions are active before the sidebar opens - UIFrameManager.OnEnable hook remains unchanged
- Add shortcuts section to settings (backend, mod, Vue UI with key capture) - Parse default game bindings from InputActionAsset.ToJson() at runtime - Detect and resolve conflicts with game keybindings automatically - Defer LoadBindings() to main thread to avoid IL2CPP thread crash - Support queue attack: engage button check + queue button interactable check - Rename spacebar.rs to main_action.rs, remove InitializeActions suppression - Route "keybindings" PlayerPrefs key to [player] section
- cargo update for rust-mod (20 packages): tokio 1.50→1.51, toml 1.0→1.1, libc 0.2.183→0.2.184, zerocopy 0.8.47→0.8.48 and others - cargo update for backend (58 packages): hyper 1.8→1.9, icu_* 2.1→2.2, tao 0.34.6→0.34.8, tokio 1.50→1.51, toml 1.0→1.1 and others - pnpm update: vue 3.5.31→3.5.32, eslint 10.1→10.2, @types/node 24.12.0→24.12.2, @mburchard/bit-log 1.2.2→1.2.3
- Hook AboutToShow to track and AboutToHide to clear reward screen instances, using the UI visibility lifecycle instead of object lifecycle (Awake/OnDestroy) - Prevents stale pointers: instances are only held while the screen is visible - Three hook pairs cover all subclasses: AnimatedRewardsScreenViewController (slot 0), GenericRewardsScreenViewController (slots 1 + 3), FirstTimeSpenderScreenViewController (slot 2) - Remove OnDestroy hooks entirely, no GC/lifetime assumptions needed - Extract shared track/untrack_reward_instance() for class-based slot dispatch - Collapse nested if in chat_frame.rs (Clippy lint)
- Remove stfc-mod/ directory (legacy C++ mod kept as reference, no longer needed) - Remove C++ build path from build.ts (buildCppMod, ModVariant, xmake config) - Simplify PlatformConfig to Rust-only fields (outputLibrary, rustLibrary) - Update keyboard shortcuts feature description to reflect configurable shortcuts with game-binding conflict detection
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan