feat(editor): add zoom direction preference#7552
Conversation
Add a new user preference `isZoomDirectionInverted` that allows users to invert the scroll wheel zoom direction. This is helpful for users who prefer macOS-style "natural" scrolling or come from other software with opposite zoom conventions. Changes include: - Add `isZoomDirectionInverted` to TLUserPreferences - Add migration for the new preference - Apply inversion in Editor.ts wheel zoom handler - Add UI toggle in Preferences menu - Add database migration for dotcom - Add unit tests for the new preference Co-Authored-By: Claude Opus 4.5 <[email protected]>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
5 Skipped Deployments
|
|
it's crazy how many files it takes to add a pref 🙃 |
|
Kind of not sure about this one, I think its significant that I haven't heard this request in the last five years. Not sure I'd add a preference for this if the convention is very strong. |
|
I'd be okay having this in the SDK as a developer option, just thinking about the preferences menu. |
yeah thats fair this did come off of a request here #6164. fwiw this is an option in Figma on Desktop. We could add it to the sdk but I don't feel crazy strongly about it either way. |
|
Aha, well that might be enough evidence for me. |
|
We might have more (e.g. disabling auto pen mode is another one I sometimes get asked about) |
ah so you think we move all these input-y ones if and when they come in to that input mode submenu. The pen mode one, in that submenu makes sense to me, but zoom direction I dunno. We do only zoom with input devices, but I would not naturally look for this option in an input devices menu. I'd probably heuristically think it would exist at the top level menu. |
|
Hm, invert zoom also inverts the panning on a trackpad, which is wrong. This really is "invert wheel zoom direction" and only have an effect if mousewheel zoom is on. Which also makes me think it should be placed next to that control. |
|
Ok fair, good catch, it should only affect zooming. I didn't appreciate that mouse wheel zoom option, makes sense to put it with input devices then! I'll take a look. |
…t device instead of input mode, finally add tests
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
multiplayer-template | 5b33b39 | Jan 07 2026, 04:45 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| 🔵 In progress View logs |
branching-chat-template | 5b33b39 | Jan 07 2026, 04:45 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
multiplayer-template | 5b33b39 | Jan 07 2026, 04:49 PM |
|
cc @steveruizok
|
Renamed 'Invert zoom' to 'Invert mouse zoom' in translations and UI labels for clarity. Disabled the invert zoom menu item when not in mouse input mode, and updated button styles to support [data-disabled] attribute for better accessibility and consistency.
|
closed in favour of the clean pr |


Some users (#6164) prefer inverted scroll wheel zoom direction - scrolling up to zoom out and down to zoom in (similar to macOS "natural" scrolling). This PR adds an
isZoomDirectionInverteduser preference that allows users to toggle this behavior.Change type
featureTest plan
API changes
isZoomDirectionInvertedproperty toTLUserPreferencesgetIsZoomDirectionInverted()method toUserPreferencesManagerToggleInvertZoomItemUI component for use in menusRelease notes
Note
Adds a user preference to invert mouse wheel zoom and wires it through storage, editor behavior, UI, and i18n.
Editorwheel handling wheninputMode === 'mouse'andisZoomDirectionInvertedis true; exposesgetIsZoomDirectionInverted()viaUserPreferencesManager; updates defaults, schema validation, migrations, and versioning.isZoomDirectionInvertedonTLUserPreferencesand DB (030_add_zoom_direction_preference.sql); sync worker SQL and column maps updated; test helpers default updated.ToggleInvertZoomItemunderInput devicesubmenu; disables toggle unless mouse is selected; styling updated to respect[data-disabled].menu.input-modetomenu.input-deviceacross locales.Written by Cursor Bugbot for commit 1571510. This will update automatically on new commits. Configure here.