Skip to content

Control Scheme Improvements - #58

Merged
officialMECH merged 21 commits into
release/0.6.0from
feat/improve-controls
Oct 29, 2026
Merged

officialMECH merged 21 commits into
release/0.6.0from
feat/improve-controls

Conversation

@officialMECH

Copy link
Copy Markdown

This PR integrates a substantial number of new capabilities and improvements to the editor workflow in anticipation of upcoming features.

General Changes

  • The toggle for camera movement/rotation has been changed to right click (as opposed to shift) to allow camera controls to align more closely with traditional workflows from other editors.
  • Certain hotkeys have been remapped to more intuitive combinations and sequences to reduce collisions and align with traditional layouts and intents.
    • NOTE: The docs have not yet been updated to reflect the updated hotkeys, as they'll be subject to change throughout future changesets prior to public release.
  • The "snap precision" selector has been changed to an input-based field to allow greater customization of precision values.
    • You can customize the highest precision used for snap calculations as well as other placement and navigation controls.
    • MOD+{1-9} will update the snap precision to 1/{1-9} respectively, and each base will now support incremental steps of precision between 1/1 and the highest precision.
  • The jump navigation shortcuts have been streamlined to a more unified control scheme:
    • The buttons for "Jump Forwards/Backwards" will now advance by your active snap precision and will only jump larger distances when holding down the MOD key.
    • The hotkeys for "Jump Forwards/Backwards" actions have been inverted for consistency with other navigation hotkeys.
    • You can now customize the window size for "Jump Forwards/Backwards" actions within views that support object visualization.
    • The distance for the "Nudge Selection" actions are now unified with the "Jump Forwards/Backwards" actions, which now offers the ability to nudge selected objects across window ranges.
    • The "Jump to Start/End" actions will now jump between your active bookmarks (as well as the first and last measured beats of your song).
  • A dedicated "form editor" is now available for bulk modification of object/event properties. You can trigger this prompt via MOD+E or associated buttons while objects/events are selected.
    • When multiple types of objects/events are selected, the form editor will only display the properties that are shared between collections.
    • Any property fields left blank will preserve the original values set for each object.
  • The "Color Note" tool has been consolidated into a single button, where you can now middle click the button (or press 1 again) to swap the active color set. This change will better inform the workflows for upcoming feature additions using a more consistent control scheme.
    • As a side effect of these changes, the "Left Note" tool will now be inaccessible in beatmaps set to the "One Saber" characteristic to better align with base-game behavior.
  • The pointer controls for object placement have been reworked, such that placing an object will now keep the cursor anchored at the position where you first clicked as opposed to having tentative objects follow the cursor as you scroll. This change aims to make placements feel more responsive and align with workflows from other editors.
    • For object types with a start and end position (such as obstacles and sliders), you can now scroll while holding down left click to modify the duration without needing to release the click. This works for both scroll directions; the time and duration values will automatically compensate for deltas.
    • For object types with a fixed position (such as notes and bombs), the cursor will remain in the anchored position until you release left click to commit the placement action. All navigation-related actions that jump the cursor will also be temporarily disabled until you release the click.
    • These improvements come with one notable breaking change: the default obstacle duration is no longer tracked in state and will not be reflected for tentative obstacle placements, since the new workflow is arguably more responsive compared to the old workflow where this workaround doesn't offer the same meaningful utility as before.
  • New controls are available for in-place modification of objects based on common workflows from other editors:
    • You can now hover over a note and press ALT+W/S/A/D/F to update the direction of the note in-place. This also supports the quality-of-life shortcuts used by other editors for angled dot notes as well as automatically resetting angle offset when the direction is updated.
    • The behavior of ALT+SCROLL has been changed to modify cut direction for color notes, and ALT+SHIFT+SCROLL is the new shortcut for angle offset. This change should hopefully create more alignment with control schemes from other editors.
    • You can now change the step size used for angle offset modification via a new dedicated setting in the Controls tab.
  • New interactive buttons have been added to the event grid to better illustrate supported controls and make the editor more pointer-driveable.
    • These changes also introduce new dedicated actions for mirroring the light color for a selection of basic events.
  • The "Download Map" action has been consolidated into a prompt as opposed to a dedicated page, which better illustrates the action as an effectful operation.
    • This change also allows customization options to be accessible when triggering the action via hotkey.

Technical Changes

  • Added a devtools panel for tracking all registered hotkeys within the current route.

* upgrade workspace binaries

* upgrade project dependencies

* add changeset

* adopt satteri-based pipeline for content collections

* refactor toc to ark-based implementation

* move active prompt blocker to internal call site

* use ark's registration model for hotkeys

* rewrite controls as a component-based model

* fix compiler/linter issues

* drop barrel for asset module imports

* clean up unused dependencies

* address lint warnings and deprecations

* add support for vitest browser integration testing

* integrate oxc-based react compiler

* align formatting for all changesets

* update language target to es2024

* improve module resolution for peer dependencies

* fix lint issues and test env for actions (hopefully)

* skip gl render tests for actions workflows
@officialMECH officialMECH added this to the 0.6.0 milestone Oct 29, 2026
@officialMECH
officialMECH merged commit 8be0e2f into release/0.6.0 Oct 29, 2026
2 checks passed
@officialMECH
officialMECH deleted the feat/improve-controls branch October 29, 2026 23:48
officialMECH added a commit that referenced this pull request Oct 30, 2026
* add devtools panel for inspecting registered hotkeys

* colocate hotkey registrations with components

* anchor cursor position for object placement

* drop support for default obstacle duration

* make undo/redo jump action conditional based on active scopes

* change camera control modifier to right click

* support granular precision for snap controls

* unify jump actions for navigation controls

* smaller fixes for bugs and lint warnings

* consolidate logic for navigation prompts

* fix navigation lock for tentative object placement

* streamline controls for beatmap action panel

* streamline controls for event grid

* streamline editor controls across shared views

* clean up styles and unused imports

* some more bugfixes

* organize changesets for worktree

* support customization for highest precision

* more improvements for object placement controls
officialMECH added a commit that referenced this pull request Oct 30, 2026
* add devtools panel for inspecting registered hotkeys

* colocate hotkey registrations with components

* anchor cursor position for object placement

* drop support for default obstacle duration

* make undo/redo jump action conditional based on active scopes

* change camera control modifier to right click

* support granular precision for snap controls

* unify jump actions for navigation controls

* smaller fixes for bugs and lint warnings

* consolidate logic for navigation prompts

* fix navigation lock for tentative object placement

* streamline controls for beatmap action panel

* streamline controls for event grid

* streamline editor controls across shared views

* clean up styles and unused imports

* some more bugfixes

* organize changesets for worktree

* support customization for highest precision

* more improvements for object placement controls
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