Commit Graph

329 Commits

Author SHA1 Message Date
Sahil Yeole
3811f41076
Feat: Follow remote cursor and window focus | Auto display switch (#7717)
* feat: auto switch display on follow remote cursor

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* feat: auto switch display on follow remote window focus

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build and remove unused imports

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix linux get_focused_window_id

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* lock show remote cursor when follow remote cursor is enabled

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix config

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* prevent auto display switch on show all display and displays as individual windows

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix options

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix options

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove unused function

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove unwraps and improve iterations

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* set updateCursorPos to false to avoid interrupting remote cursor

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* update lang

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix web build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* update checks for options and enable in view mode

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use focused display index for window focus service

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use window center for windows display focused

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove unused imports

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use libxdo instead of xdotool

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix multi monitor check

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* enable show cursor when follow cursor is default

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove show_all_displays,use runtime state instead

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix show cursor lock state on default

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove view mode with follow options

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use separate message for follow current display

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix options

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* sciter support for follow remote cursor and window

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* add check for ui session handlers count

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use cached displays and remove peer info write

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* No follow options when show all displays

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* No follow options when multi ui session

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* turn off follow options when not used|prevent msgs

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use window center for switch in linux

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use subbed display count to prevent switch msgs

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix web build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* move subbed displays count

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* add noperms for window focus

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* add subscribe for window focus

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove window_focus message and unsub on multi ui

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* add multi ui session field

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

---------

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
Co-authored-by: RustDesk <71636191+rustdesk@users.noreply.github.com>
2024-04-25 13:26:02 +08:00
whosehang
66d1af63b0
chore: fix some typos in comments (#7814)
Signed-off-by: whosehang <whosehang@outlook.com>
2024-04-24 14:16:19 +08:00
rustdesk
40067f5aa2 no countdown in scam warning of android for custom build 2024-04-19 13:49:45 +08:00
21pages
5d5547ffef
put andriod custom client logo to settings section list (#7768)
Signed-off-by: 21pages <pages21@163.com>
2024-04-19 12:44:52 +08:00
rustdesk
4e8cbe3db1 buildPresetPasswordWarning for android 2024-04-17 22:01:09 +08:00
rustdesk
bdf8bbe26f custom android 2024-04-17 12:49:25 +08:00
rustdesk
7bb4e22a77 fix ci 2024-04-16 22:53:01 +08:00
Tom-Brian Garcia
c972452310
fix: do not call WakeLock on Web (mobile) (#7668)
* fix: do not call WakeLock on Web (mobile)

* fix: do not call WakeLock on Web (mobile) - replaced isMobile by !isWeb
2024-04-10 21:32:05 +08:00
fufesou
129548764e
fix build (#7597)
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-04-03 22:20:56 +08:00
fufesou
6e44a91d0b
Refact. Flutter web desktop (#7539)
* Refact. Flutter web desktop

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

* Flutter web, prevent default context menu

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

---------

Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-03-28 11:38:11 +08:00
fufesou
e86d4657da
Refact. Flutter web, key input (#7511)
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-03-26 10:45:06 +08:00
fufesou
85cafda168
Refact. Flutter web, mid commit (#7494)
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-03-24 11:23:06 +08:00
fufesou
a15cd62fd4
Refact. Flutter web, mid commit (#7482)
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2024-03-23 10:08:55 +08:00
21pages
41da6d552f
shared address book (#7229)
Signed-off-by: 21pages <pages21@163.com>
2024-03-20 15:05:54 +08:00
21pages
dcbe2805e6
improve waiting for image when only one image received (#7340)
* fix padding of mobile server page PopupMenuItem

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

* improve waiting for image when only one image received

* For flutter texture late creation: create texture between session add and session start, it works not in principle but in test.
* For late PeerInfo handling
	a. rgba texture render: allow zero size in on_rgba
	b. gpu texture render and rgba buffer render doesn't check size currently
* Fix wrong valid flag of first frame in rgba texture render

Other issues:
* decodeImageFromPixels may fail on first image
* Correct width/height when resolution changes

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

---------

Signed-off-by: 21pages <pages21@163.com>
2024-03-08 17:24:02 +08:00
rustdesk
a28c9f8f36 remove more "rustdesk" built-in 2024-02-25 13:29:06 +08:00
Sahil Yeole
4bf3764b5d
Feat: Windows connect to a specific user session (#6825)
* feat windows connect to specific user session

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix import

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix multiple user session fields

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix build

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix file transfer

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix text color on light theme

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* feat windows connect to specific user session code changes and sciter support

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* update texts

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix sciter selected user session

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* add translations

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* Use Y,N options

* feat windows specific user code changes

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* Update dialog.dart

* Update connection.rs

* Update connection.rs

* feat windows specific user code changes

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix sciter

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use lr.union

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove unused peer options

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* select user only when authorised and no existing connection

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* check for multiple users only once

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* optimise and add check for client version

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* use misc option message

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* update rdp user session proto

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix show cm on user session

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* Update pl.rs

* update on_message

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix cm

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* remove user_session_id

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix cm

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* fix multiple connections

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

---------

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2024-02-14 23:59:17 +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
44e6b7dbb0 2fa for unattended access 2024-01-19 15:35:58 +08:00
Sahil Yeole
ce0fc14a8a
scrollable scam warning dialog (#6850)
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2024-01-11 12:05:30 +08:00
Sahil Yeole
352de75fdd
fix height (#6846) 2024-01-10 09:26:01 +08:00
Sahil Yeole
bdf6f5c3b9
Fix: android scam warning not showing on toggling screen capture (#6750)
* fix scam warning not showing on toggling screen capture

* fix scam warning not showing on toggling screen capture

* fix scam warning not showing on toggling screen capture

* fix scam warning not showing on toggling screen capture
2023-12-26 10:19:05 +08:00
Sahil Yeole
c168b7e979
Autocomplete container UI changes (#6690)
* add left & right padding to autocomplete peer and format

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

* handle max height for autocomplete equal padding, add box shadow and format

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>

---------

Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-12-17 09:22:18 +08:00
21pages
03c8d94024
mobile/desktop use same 'other default settings' (#6652)
1. mobile add 'reverse mouse wheel' default setting
2. change related menu position

Signed-off-by: 21pages <pages21@163.com>
2023-12-11 15:32:13 +08:00
rustdesk
2e146190e1 swap left right mouse button 2023-12-11 11:22:27 +08:00
rustdesk
93aac0bc99 fix #616: support QR for uri link 2023-12-03 22:33:52 +08:00
rustdesk
aa7d0471db Fix #616, add rustdesk://config/<config_string> 2023-12-03 20:31:48 +08:00
fufesou
5e103a5ccb fix, mobile, switch display
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-29 12:30:41 +08:00
21pages
ec15412755 fix mobile os password edit action
Signed-off-by: 21pages <pages21@163.com>
2023-11-22 16:46:17 +08:00
fufesou
38182ba020 tmp fix, mobile soft keyboard focus
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-17 14:43:23 +08:00
fufesou
722c789448 add comment
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-16 23:39:07 +08:00
fufesou
faa4c36956 fix, android_soft_keyboard_input, maybe flutter 3.13.*
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-11-16 23:08:09 +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
mcfans
b522de3b56 Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	Cargo.lock
#	src/server/connection.rs
2023-11-07 12:13:15 +08:00
rustdesk
d7e8d4d5c3 fix #6198 2023-11-06 20:12:01 +08:00
Sahil Yeole
b1682d5794 listen and connect to uni link mobile
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-11-02 23:57:31 +05:30
21pages
36f7d64352 opt "True color" translation
Signed-off-by: 21pages <pages21@163.com>
2023-11-01 11:46:51 +08:00
rustdesk
c2703d215b bump flutter to 3.13.9 and bridge to 1.79 2023-10-31 21:10:23 +08:00
21pages
f05f86dc80 444
Signed-off-by: 21pages <pages21@163.com>
2023-10-30 18:46:56 +08:00
mcfans
7b24835c9e Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	src/server/connection.rs
2023-10-29 23:32:43 +08:00
fufesou
e32748daf2 fix, autocomplete, fill id field
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-10-27 17:00:13 +08:00
Sahil Yeole
feb6f7930e common code autocomplete
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-24 05:30:43 +05:30
Sahil Yeole
70794c8eb5
Merge branch 'master' into feat/autocomplete_mobile 2023-10-23 05:28:15 +05:30
Sahil Yeole
5109802dfb update id on onchaged
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-23 04:17:28 +05:30
Sahil Yeole
935297b9e8 fix empty peers
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-23 04:03:05 +05:30
Sahil Yeole
dad209d1cd feat autocomplete mobile
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-23 03:21:54 +05:30
fufesou
c518521d74 fix, android physical mouse, click events, penetrated
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-10-22 20:35:43 +08:00
21pages
7a5bc864fa fix client side record
Signed-off-by: 21pages <pages21@163.com>
2023-10-19 09:50:55 +08:00
mcfans
bbc241748b feat: support android keyboard input 2023-10-17 22:12:52 +08:00
dignow
013d307bcd feat, multi_flutter_ui_sessions
Signed-off-by: dignow <linlong1265@gmail.com>
2023-10-14 12:26:24 +08:00
Sahil Yeole
ab982e86c3 fix scam alert buttons overflow
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-10 22:48:23 +05:30
Sahil Yeole
20a4cd49de update scam text height
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-10 21:32:05 +05:30
Sahil Yeole
387d712b67 make scam alert text scrollable
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-10-10 20:58:58 +05:30
fufesou
8cc5aee528 fix, mobile curosr (hotx,hoty)
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-10-06 23:36:58 +08:00
fufesou
863c8de28e fix, one tap results double tap event
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-10-02 10:30:51 +08:00
fufesou
b88fafe5ff refact, remove cursor if mobile -- mobile
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-10-01 12:16:06 +08:00
rustdesk
f21f793343 remove check update from periodical call 2023-09-26 10:47:45 +08:00
21pages
167bf70cd6 mobile: limited height scroll tags/users, and scrollable peers
Signed-off-by: 21pages <pages21@163.com>
2023-09-25 16:18:01 +08:00
21pages
0a0653358c auto disconnect
Signed-off-by: 21pages <pages21@163.com>
2023-09-13 13:57:57 +08:00
Sahil Yeole
1e548af987 update lang
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-09-13 11:00:07 +05:30
RustDesk
4c4c62c7e5
Update server_page.dart
change countdown to 12
2023-09-13 10:19:43 +08:00
Sahil Yeole
d4f4a64937
remove empty line 2023-09-11 21:57:45 +05:30
Sahil Yeole
754fea538a add scam warning window
Signed-off-by: Sahil Yeole <sahilyeole93@gmail.com>
2023-09-11 21:48:36 +05:30
dignow
e1f2cd21e7 add comment
Signed-off-by: dignow <linlong1265@gmail.com>
2023-09-10 15:41:29 +08:00
dignow
ea5c60af7a fix, android softkeyboard, 'delete input' on conn password
Signed-off-by: dignow <linlong1265@gmail.com>
2023-09-10 15:32:50 +08:00
21pages
14bf3056de mobile privacy statement
Signed-off-by: 21pages <pages21@163.com>
2023-09-08 13:29:07 +08:00
fufesou
85e82d0bd5 fix, mobile connecting canvas color
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-09-04 23:21:47 +08:00
dignow
ea41a60057 fix, the session image covers android toolbar
Signed-off-by: dignow <linlong1265@gmail.com>
2023-09-04 14:17:54 +08:00
rustdesk
701220246d fix ci 2023-09-03 14:55:23 +08:00
rustdesk
e3b0cdaf69 Merge branch 'ios_1.2.2' 2023-09-03 11:28:21 +08:00
21pages
58073484fe fix ios setting page show chat title
Signed-off-by: 21pages <pages21@163.com>
2023-09-03 08:07:14 +08:00
rustdesk
5b802e9edd Merge branch 'ios_1.2.2' 2023-09-03 00:16:08 +08:00
fufesou
96d9604fe1 enable bottom actions before first image is reached
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-09-01 23:55:43 +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
5d18c04661 replace SettingsTile.navigation with SettingsTile()
Signed-off-by: 21pages <pages21@163.com>
2023-09-01 12:49:57 +08:00
21pages
3eeed39f52 ios add settings tab
Signed-off-by: 21pages <pages21@163.com>
2023-08-30 22:04:15 +08:00
21pages
c9423509a9 ios show login/logout
Signed-off-by: 21pages <pages21@163.com>
2023-08-30 19:26:15 +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
21pages
fbde794d39 add missing Get.delete, android can update id controller
Signed-off-by: 21pages <pages21@163.com>
2023-08-09 13:54:09 +08:00
21pages
21cf2a01c7 update idController when create new connection
Signed-off-by: 21pages <pages21@163.com>
2023-08-08 21:20:06 +08:00
Mr-Update
b34f745837
Supplement for "fix some words" from yesterday 2023-08-07 14:20:20 +02:00
dignow
c01c8d0afc touch screen input
Signed-off-by: dignow <linlong1265@gmail.com>
2023-07-17 20:07:55 +08:00
21pages
ebd8903c9b logout confirm
Signed-off-by: 21pages <pages21@163.com>
2023-07-15 07:21:54 +08:00
rustdesk
6b8d2a33c0 fix lang 2023-07-10 23:02:26 +08:00
21pages
fcf6b5466a mobile show chat icon overlay on main page
Signed-off-by: 21pages <pages21@163.com>
2023-07-10 22:21:03 +08:00
21pages
745f33a8c1 opt mobile unread and autoSizeTextField
Signed-off-by: 21pages <pages21@163.com>
2023-07-10 22:21:01 +08:00
21pages
22994ee8f2 opt chatModel, linux same startup height as dart
Signed-off-by: 21pages <pages21@163.com>
2023-07-10 16:02:47 +08:00
21pages
6c6f6c081e mobile unread chat
Signed-off-by: 21pages <pages21@163.com>
2023-07-10 12:57:38 +08:00
21pages
65529b10b6 opt mobile chat message store
Signed-off-by: 21pages <pages21@163.com>
2023-07-09 21:45:35 +08:00
rustdesk
82219775e3 change download page to https://rustdesk.com/download 2023-07-03 16:43:39 +08:00
rustdesk
79f8727c69 move super.dispose ahead in async dispose 2023-06-30 14:01:12 +08:00
21pages
07d9162491 remove PopupMenuButton default tooltip, and then long press will pop up menu
Signed-off-by: 21pages <pages21@163.com>
2023-06-29 10:26:03 +08:00
21pages
f38ebb7b3c android and approve mode
Signed-off-by: 21pages <pages21@163.com>
2023-06-28 20:22:57 +08:00
rustdesk
bb679bf25a may help issue #4714 #4780 2023-06-28 17:09:23 +08:00
rustdesk
5b093f5f32 fix changeid 2023-06-26 23:27:18 +08:00
rustdesk
0d658963e4 Enable change id only when connected 2023-06-26 22:05:27 +08:00
RustDesk
e30f09e7f7
Revert "Fix/mobile connection login state" 2023-06-23 18:25:42 +08:00
RustDesk
74dc8536be
Merge pull request #4747 from dignow/fix/mobile_connection_login_state
Fix/mobile connection login state
2023-06-23 17:43:42 +08:00
rustdesk
31eea1482b remove stupid group, bad implementation, buggy, and not usable 2023-06-23 17:05:48 +08:00