63 Commits

Author SHA1 Message Date
fufesou 170516572e refact(password): Store permanent password as hashed verifier (#14619)
* refact(password): Store permanent password as hashed verifier

Signed-off-by: fufesou <linlong1266@gmail.com>

* fix(password): remove unused code

Signed-off-by: fufesou <linlong1266@gmail.com>

* fix(password): mobile, password dialog, width 500

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
2026-03-26 14:49:54 +08:00
fufesou 998b75856d feat: Add relative mouse mode (#13928)
* feat: Add relative mouse mode

- Add "Relative Mouse Mode" toggle in desktop toolbar and bind to InputModel
- Implement relative mouse movement path: Flutter pointer deltas -> `type: move_relative` -> new `MOUSE_TYPE_MOVE_RELATIVE` in Rust
- In server input service, simulate relative movement via Enigo and keep latest cursor position in sync
- Track pointer-lock center in Flutter (local widget + screen coordinates) and re-center OS cursor after each relative move
- Update pointer-lock center on window move/resize/restore/maximize and when remote display geometry changes
- Hide local cursor when relative mouse mode is active (both Flutter cursor and OS cursor), restore on leave/disable
- On Windows, clip OS cursor to the window rect while in relative mode and release clip when leaving/turning off
- Implement platform helpers: `get_cursor_pos`, `set_cursor_pos`, `show_cursor`, `clip_cursor` (no-op clip/hide on Linux for now)
- Add keyboard shortcut Ctrl+Alt+Shift+M to toggle relative mode (enabled by default, works on all platforms)
- Remove `enable-relative-mouse-shortcut` config option - shortcut is now always available when keyboard permission is granted
- Handle window blur/focus/minimize events to properly release/restore cursor constraints
- Add MOUSE_TYPE_MASK constant and unit tests for mouse event constants

Note: Relative mouse mode state is NOT persisted to config (session-only).
Note: On Linux, show_cursor and clip_cursor are no-ops; cursor hiding is handled by Flutter side.

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat(mouse): relative mouse mode, exit hint

Signed-off-by: fufesou <linlong1266@gmail.com>

* refact(relative mouse): shortcut

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
2026-01-09 10:03:14 +08:00
fufesou 910dcf2036 refact: tls, native-tls fallback rustls-tls (#13263)
Signed-off-by: fufesou <linlong1266@gmail.com>
2025-11-03 23:21:01 +08:00
Alessandro De Blasis 0550397046 fix: scale custom on mobile (#13324)
* fix: prevent custom scale dialog from closing when interacting with slider

Wrapped MobileCustomScaleControls in GestureDetector with opaque behavior
to prevent touch events from propagating to parent dialog's clickMaskDismiss
handler. The slider now works correctly without closing the dialog.

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Revert "fix: mobile remove "Scale custom" (#13323)"

This reverts commit 265d08fc3b.

* chore: keep remote_toolbar.dart cleanup (remove dead code)

  The dead code removed in 265d08fc3 hasn't been used since Aug 2023.
  Only reverting toolbar.dart is needed for the mobile Scale custom fix.

* Update flutter/lib/mobile/pages/remote_page.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: Implement CustomScaleControlsMixin for shared scaling logic across mobile and desktop widgets

- Introduced a new mixin `CustomScaleControlsMixin` to encapsulate custom scale control logic, allowing for code reuse in both mobile and desktop widgets.
- Refactored `_CustomScaleMenuControlsState` and `_MobileCustomScaleControlsState` to utilize the new mixin, simplifying the scaling logic and reducing code duplication.
- Updated slider handling and state management to leverage the mixin's methods for improved maintainability.

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* Update flutter/lib/desktop/widgets/remote_toolbar.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/widgets/custom_scale_widget.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update flutter/lib/mobile/pages/remote_page.dart

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* refactor: changed from mixin to abstract class

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* Revert "Update flutter/lib/mobile/pages/remote_page.dart"

This reverts commit 7c35897408.

* refactor: remove unnecessary tap event handling in custom scale controls

- Removed the `onTap` handler from the

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

* refactor: simplify MobileCustomScaleControls usage in remote_page.dart

- Removed unnecessary GestureDetector wrapper around MobileCustomScaleControls for cleaner code.

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>

---------

Signed-off-by: Alessandro De Blasis <alex@deblasis.net>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-31 11:08:03 +08:00
fufesou 0f3a03aab7 feat: mobile, virtual mouse (#12911)
* feat: mobile, virtual mouse

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat: mobile, virtual mouse, mouse mode

Signed-off-by: fufesou <linlong1266@gmail.com>

* refact: mobile, virtual mouse, mouse mode

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat: mobile, virtual mouse mode

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat: mobile virtual mouse, options

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
2025-10-09 08:23:55 +08:00
fufesou 9114743577 fix: linux, flutter, workaround freeze (#10324)
Signed-off-by: fufesou <linlong1266@gmail.com>
2024-12-20 09:24:08 +08:00
21pages 34d2c62781 set id/relay server with a dialog (#10150)
Signed-off-by: 21pages <sunboeasy@gmail.com>
2024-12-03 14:14:29 +08:00
21pages 560c1effe8 remove mobile web setting, remove web/ios relay server setting (#9575)
Signed-off-by: 21pages <sunboeasy@gmail.com>
2024-10-06 16:20:37 +08:00
dignow b967d496cc refact: init values from initState to Constractor (#8817)
* refact: init values from initState to Constractor

Signed-off-by: dignow <linlong1265@gmail.com>

* fix: move RxBool init into Constructor

Signed-off-by: dignow <linlong1265@gmail.com>

* peer sort option

Signed-off-by: dignow <linlong1265@gmail.com>

* Remove empty initState()

Signed-off-by: dignow <linlong1265@gmail.com>

---------

Signed-off-by: dignow <linlong1265@gmail.com>
2024-07-25 10:45:51 +08:00
fufesou 1dfbaa1e02 fix: test if valid server, control if try test with proxy (#7858)
* fix: test if valid server, control if try test with proxy

Signed-off-by: fufesou <shuanglongchen@yeah.net>

* fix: build

Signed-off-by: fufesou <shuanglongchen@yeah.net>

---------

Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-04-28 14:22:21 +08:00
21pages 1f557888f5 update pubspec.lock, remove some deprecated (#7110)
* fix some warnings and some deprecated reported by `flutter analyze`

Signed-off-by: 21pages <pages21@163.com>

* pubspec.lock changes from flutter 3.16.9

Signed-off-by: 21pages <pages21@163.com>

* pubspec.lock changes from `flutter pub upgrade`

Signed-off-by: 21pages <pages21@163.com>

---------

Signed-off-by: 21pages <pages21@163.com>
2024-02-12 21:39:19 +08:00
rustdesk aa7d0471db Fix #616, add rustdesk://config/<config_string> 2023-12-03 20:31:48 +08:00
fufesou 1905a81f9a virtual_display_privacy_mode, switch privacy mode directly
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-14 19:36:51 +08:00
fufesou e2382a1465 refact, mobile, privacy mode menu
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-14 17:35:16 +08:00
21pages 54de5b0300 mobile add default display, merge set server and custom quality code
Signed-off-by: 21pages <pages21@163.com>
2023-09-01 15:04:36 +08:00
21pages 979203cbdb replace offstage with if-else for LinearProgressIndicator in dialog
Signed-off-by: 21pages <pages21@163.com>
2023-08-18 16:16:21 +08:00
dignow c01c8d0afc touch screen input
Signed-off-by: dignow <linlong1265@gmail.com>
2023-07-17 20:07:55 +08:00
rustdesk 31eea1482b remove stupid group, bad implementation, buggy, and not usable 2023-06-23 17:05:48 +08:00
Kingtous 77fa807b57 feat: implement dialog callback 2023-05-08 12:34:19 +08:00
grummbeer 18ebd2e727 Dialogs Mobile. Options for password length horizontal 2023-03-30 04:11:48 +02:00
grummbeer 7351c58336 Dialogs Mobile. Remove custom contentPadding 2023-03-30 02:43:31 +02:00
fufesou 8ebfd3f628 refactor dialog
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-03-24 15:21:14 +08:00
Mr-Update b7f16997b1 Update dialog.dart 2023-03-12 14:08:26 +01:00
rustdesk 6ae2fbdbc8 change "temporary password" to "one-time password" 2023-03-06 11:25:49 +08:00
NicKoehler fd8829f08e added icon to dialogButton, reverted some design changes. The outline buttons now rely on theme data 2023-03-01 14:50:50 +01:00
NicKoehler 18339cf343 password dialog 2023-02-28 16:36:44 +01:00
NicKoehler 7bf728bdad restart device dialog 2023-02-28 15:57:25 +01:00
21pages a9598e006a request elevation menu
Signed-off-by: 21pages <pages21@163.com>
2023-02-24 15:51:13 +08:00
csf 244cfa25f1 opt dark theme in gesture_help.dart 2023-02-09 10:29:35 +09:00
21pages 40d0ea016b refactor peer tab with model, make it scrollable
Signed-off-by: 21pages <pages21@163.com>
2023-02-06 12:54:32 +08:00
rustdesk 3462756a11 optimize dialog margin, fix password eye icon color 2023-02-05 16:56:13 +08:00
21pages dec1820694 opt dialog style
Signed-off-by: 21pages <pages21@163.com>
2023-01-30 17:56:35 +08:00
21pages 62791613a7 opt dialog button style
Signed-off-by: 21pages <pages21@163.com>
2023-01-15 19:46:16 +08:00
21pages d3b490ac48 elevation request
Signed-off-by: 21pages <pages21@163.com>
2023-01-14 17:39:46 +08:00
csf 9c07a0f2d8 fix mobile api server validation bug 2022-12-26 10:12:01 +09:00
csf cba6a3e0ee refactor to use ServerConfig 2022-12-21 16:24:01 +09:00
csf f5cc55ab3d refactor mobile import ServerConfig 2022-12-21 15:41:07 +09:00
21pages ca8cb5a3b0 portable-service: better prompt message
Signed-off-by: 21pages <pages21@163.com>
2022-11-15 17:05:12 +08:00
Kingtous 2301d09303 feat: replace forceAppUpdate with customed reloadWindow 2022-10-26 14:39:13 +08:00
fufesou 77de0d05f9 msgbox & translations
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2022-10-17 22:00:44 +08:00
21pages 172091602a opt: adjust msgbox text width, passwordDialog support enter && esc
Signed-off-by: 21pages <pages21@163.com>
2022-09-29 10:48:27 +08:00
csf 51b02353c9 1. mobile ab login.
2. typos
3. del rename dialog body padding
2022-09-22 17:41:58 +08:00
rustdesk f64d2a3983 fix translation 2022-09-18 11:02:27 +08:00
RustDesk d18071e70a Merge pull request #1372 from TheLumbee/master
Grammatical correction for closing dialog.
2022-09-18 10:59:36 +08:00
csf f6055130e4 mv overlay.dart 2022-09-13 09:14:10 +08:00
csf d0c438268d update overlay widgets on flutter desktop
1. add mobile actions
2. disable showChatIcon
2022-09-08 22:18:02 +08:00
Zachary Locklear 25b052ef17 Grammatical correction for closing dialog. 2022-08-25 09:57:12 -06:00
csf ce050e250d desktop close connection tab (remote page) 2022-08-17 10:01:26 +08:00
csf 53b69b59a8 rename get_session -> session_get 2022-08-17 10:00:35 +08:00
csf f99ab7d0a7 fix dialog res bug ; add desktop restart remote device 2022-08-15 20:29:51 +08:00