Skip to content

Add job queue auto-expand and harden all hook functions#31

Merged
MBurchard merged 3 commits intomainfrom
feature/job-queue-expand-and-hook-safety
Mar 31, 2026
Merged

Add job queue auto-expand and harden all hook functions#31
MBurchard merged 3 commits intomainfrom
feature/job-queue-expand-and-hook-safety

Conversation

@MBurchard
Copy link
Copy Markdown
Owner

  • Add auto_expand_job_queue setting across all layers (backend, mod, frontend toggle in SettingsView)
  • Hook RegenerateLists() as instance-capture trigger for the job queue panel (non-virtual, avoids IL2CPP generic sharing)
  • Add null-guards on original function pointers in all hook callbacks to prevent null-dereference during installation
  • Wrap custom hook logic in catch_unwind where missing (chat_frame, spacebar) to prevent panics crossing FFI boundary
  • Consolidate redundant original-pointer resolution in player_prefs hooks (one load at entry instead of per-branch)
  • Remove unused LogLevelScopes fields: backend drops game, mod drops app (serde ignores unknown TOML sections)
  • Document JobQueue log target in log-levels.md

- Add auto_expand_job_queue setting across all layers (backend, mod, frontend toggle in
  SettingsView)
- Hook RegenerateLists() as instance-capture trigger for the job queue panel (non-virtual,
  avoids IL2CPP generic sharing)
- Add null-guards on original function pointers in all hook callbacks to prevent
  null-dereference during installation
- Wrap custom hook logic in catch_unwind where missing (chat_frame, spacebar) to prevent
  panics crossing FFI boundary
- Consolidate redundant original-pointer resolution in player_prefs hooks (one load at entry
  instead of per-branch)
- Remove unused LogLevelScopes fields: backend drops `game`, mod drops `app` (serde ignores
  unknown TOML sections)
- Document JobQueue log target in log-levels.md
- Add LogLevelScopes struct to AppSettings so [log_levels.game] and [log_levels.app]
  sections in settings.toml survive load/save round-trips
- Previously, saving any setting (e.g. toggling auto_open_sidebar) would silently drop
  manually configured per-target log levels
- Omit the section entirely when no overrides are configured
- Add round-trip and omission tests
- Hook UIFrameManager.OnEnable to capture the manager instance. The previous
  ShowSideFrame hook was never called on Windows, not even manually.
- Call ResizeSideFrame directly on the captured instance after the click, instead
  of the indirect PENDING_WIDTH mechanism via ShowSideFrame.
- Use GetMaxSideFrameWidth to query the game's actual maximum instead of blindly
  passing 2000.0 and hoping the game clamps. Falls back to 2000.0 if unavailable.
- try_restore now requires three conditions: ChatPreviewController active,
  UIFrameManager captured, and settings synced. Any of the three can arrive last.
@MBurchard MBurchard merged commit fc80e4f into main Mar 31, 2026
1 check passed
@MBurchard MBurchard deleted the feature/job-queue-expand-and-hook-safety branch March 31, 2026 06:53
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.

1 participant