Skip to content

let overlay controls edit native binds left without an editor - #276

Merged
Microck merged 1 commit into
mainfrom
fix/overlay-native-binds
Oct 10, 2026
Merged

Microck merged 1 commit into
mainfrom
fix/overlay-native-binds

Conversation

@Microck

@Microck Microck commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Summary

follow-up to #270. dropping everest's generated keyboard/controller screens from akron's mod options left nine native binds without any in-game editor. if you'd set one of them there before, it kept firing but you couldn't change or clear it. right-clicking the matching overlay control only added a second, separate overlay bind next to it.

this maps those controls onto the native binds in ResolveDefaultButtonBinding, the same way StartPos, retry and the cursor holds already work, so right-click edits and clears the real binding:

  • SRT Slot popup: Previous / Next → PreviousSlot / NextSlot
  • Timescale popup: Decrease / Increase → DecreaseTimescale / IncreaseTimescale
  • Frame Stepper popup: Step Once → StepFrame (which also keeps hold-to-repeat, since that reads the native bind)
  • Open Debug Map row → OpenDebugMap
  • FPS Bypass row → ToggleFrameBypass

two of them had no matching control, so they get one:

  • Grab Mode popup: new Cycle button → CycleGrabMode
  • FPS Bypass popup: the existing Smooth Camera button is now bindable → CycleFrameBypassCameraSmoothing

the Keybinds tab now lists these native binds too: top-level rows count native binds as well as overlay ones, and the two new popup targets are registered like the other popup actions.

the native hotkey handlers are unchanged. only the overlay's bind and clear actions now point at the native binds. overlay binds people already set on these controls keep working: HasMenuBinding still wins for display and dispatch, and the context menu's Clear removes both.

Verification

  • scoped to the nine native binds stranded by trim akron's mod options to enable and menu bind #270
  • docs updated (hotkeys page, player feature table for Grab Mode Cycle)
  • changelog updated
  • no feature classification changes
  • tests added: one case per mapping, each checks that the overlay action key resolves to the exact native ButtonBinding instance the hotkey handler reads (identity, since CI's reference-only Celeste.dll can't run ButtonBinding.Keys). all nine fail with the mapping block removed
  • live game evidence below
  • screenshots included
  • no secrets, private paths, local config or captures committed
  • submitted at the maintainer's request under the contribution license
  • human review/testing: none yet; agent testing is described below

Checks run

dotnet build Akron.sln --configuration Release --nologo
dotnet test tests/akron-tests.csproj --configuration Release --nologo
make format-check

rebased on #268 (menu mouse). build passed, 2029/2029 tests passed on b92a3f4, make format-check passes.

Live verification

  • environment: linux mint 22.3/X11 (cinnamon) test box, jc141 wine launcher, celeste 1.4.0.0, everest 6418, akron built from this branch (85d89f1, then 9ad0875)
  • map: Celeste/1-ForsakenCity via akron_qa_enter_level 1 normal 0
  • setup: wrote OpenDebugMap: [F9] into modsettings-Akron.celeste to stand in for a bind saved through the old everest screen
  • steps and results:
    • right-click Open Debug Map in the Creator column: the context menu shows Binding: F9 and Built-in: F9, with Clear binding enabled. Clear: the saved OpenDebugMap keys become [], and pressing F9 in the level leaves the scene as Level (before this change, Clear removed only the overlay bind and F9 kept opening the debug map)
    • Grab Mode popup shows the new Cycle button. right-click → Grab Mode / Cycle, Binding: Unbound. Bind input + F8: the saved CycleGrabMode keys become [F8]. pressing F8 in the level changed Active grab mode from Toggle to Invert
    • Keybinds tab (9ad0875), with OpenDebugMap = F9 and CycleGrabMode = F8 saved and no overlay binds: it lists Open Debug Map F9 and Grab Mode / Cycle F8
  • not checked live: the SRT Slot, Timescale, Frame Stepper, FPS Bypass and Smooth Camera mappings. they use the same resolver path as Open Debug Map and are covered by the unit tests. FPS Bypass also needs Motion Smoothing, which the box doesn't have
  • the box's settings were restored afterwards

grab mode popup with the new Cycle button and its bind menu

Open Debug Map's bind menu showing the saved native F9 bind

AI assistance disclosure

  • agent_name: Claude Code (omp harness)
  • agent_version: not exposed
  • model_used: anthropic/claude-opus-5-5
  • human_testing: none yet
  • contribution_summary: mapped the stranded native binds onto their overlay controls, added the Grab Mode Cycle button and Smooth Camera bind target, wrote the tests and docs, and ran the live checks on the linux test box

@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@codex review

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 38 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository YAML (base), Organization UI (inherited)
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 737d9b77-afd1-402c-810a-2bee18658803

📥 Commits

Reviewing files that changed from the base of the PR and between 85d89f1 and 9ad0875.


📒 Files selected for processing (8)
  • CHANGELOG.md
  • Source/Overlay/akron-overlay-bindable-actions.cs
  • Source/Overlay/akron-overlay-bypass-popups.cs
  • Source/Overlay/akron-overlay-gameplay-popups.cs
  • Source/Overlay/akron-overlay-keybind-entries.cs
  • docs/feature-guide/player.mdx
  • docs/getting-started/hotkeys.mdx
  • tests/module-settings-tests.cs

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository YAML (base), Organization UI (inherited)
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 7d9787bb-3472-4459-b44c-2b2df9acd3ea




📥 Commits

Reviewing files that changed from the base of the PR and between 66452e4 and 85d89f1.





📒 Files selected for processing (7)
  • CHANGELOG.md
  • Source/Overlay/akron-overlay-bindable-actions.cs
  • Source/Overlay/akron-overlay-bypass-popups.cs
  • Source/Overlay/akron-overlay-gameplay-popups.cs
  • docs/feature-guide/player.mdx
  • docs/getting-started/hotkeys.mdx
  • tests/module-settings-tests.cs




Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.






Overlay controls now edit and clear the native bindings for nine actions that lacked an in-game editor, including bindings saved through Everest’s former keyboard and controller screens. The Grab Mode popup also adds a Cycle control with a bindable hotkey.

  • Tests cover mapping each overlay action to its native binding; the reported build, 2,002 tests, and format check passed.
  • Live checks covered Open Debug Map and Grab Mode Cycle. The other actions were not verified live; FPS Bypass checks also required unavailable Motion Smoothing.
  • No human review or findings were reported.

Walkthrough

Overlay action keys now resolve to their corresponding native settings bindings, including slot, timescale, frame-step, grab-mode, FPS bypass, and debug-map actions. The FPS Bypass popup shows binding context for Smooth Camera. The grab-mode popup adds a Cycle button that cycles the active grab mode. Tests verify that assigning a hotkey updates the corresponding setting. The documentation and changelog describe these controls.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to 85d89

The change adds native hotkey editing and a grab-mode cycle control. No concrete behavior risk requiring a pre-merge fix is established by the supplied evidence.

Pre-merge checks | Passed 1
✅ Passed checks (1 passed)
Check name Status Explanation
Documentation Impact Passed The pull request changes visible binding behavior and adds the Grab Mode Cycle control. The documentation matches these changes: docs/getting-started/hotkeys.mdx documents all nine overlay-to-native…







✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • 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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T23:19:42.574869Z b92a3f4 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 85d89f11b8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Source/Overlay/akron-overlay-bindable-actions.cs
coderabbitai[bot]
coderabbitai Bot previously approved these changes Oct 10, 2026
@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7bd5891178

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Source/Overlay/akron-overlay-bindable-actions.cs
@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Microck
Microck force-pushed the fix/overlay-native-binds branch from 7bd5891 to 9ad0875 Compare October 10, 2026 22:03
@Microck
Microck deployed to release-build October 10, 2026 22:03 — with GitHub Actions Active
@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Bravo.

Reviewed commit: 9ad087526a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

…itor

Everest's generated keyboard and controller screens left Akron's mod
options in #270, which stranded nine native binds: a value saved there
kept firing but could not be changed or cleared in-game.

Map SRT Slot Previous/Next, Timescale Decrease/Increase, Frame Stepper
Step Once, Open Debug Map and the FPS Bypass row onto those native binds
in ResolveDefaultButtonBinding, so right-clicking them edits and clears
the real binding. Grab Mode cycling and frame bypass camera smoothing had
no matching control, so the Grab Mode popup gets a Cycle button and the
FPS Bypass popup's Smooth Camera button becomes bindable.
@Microck
Microck force-pushed the fix/overlay-native-binds branch from 9ad0875 to b92a3f4 Compare October 10, 2026 23:17
@Microck
Microck deployed to release-build October 10, 2026 23:17 — with GitHub Actions Active
@Microck

Microck commented Oct 10, 2026

Copy link
Copy Markdown
Owner Author

Note

🤖 Claude Opus 5.5 responding on behalf of Microck

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

Reviewed commit: b92a3f43b6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@Microck
Microck merged commit a512b0a into main Oct 10, 2026
3 checks passed
@Microck
Microck deleted the fix/overlay-native-binds branch October 10, 2026 23:36

This branch was successfully deployed

1 active deployment
release-build — b92a3f43 Deployed Oct 10, 2026 by Microck via Build and test #888
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