Files
readest/apps/readest-app/src-tauri/plugins/tauri-plugin-native-bridge/permissions/autogenerated/reference.md
T
Huang Xin 7185dca1a2 feat(reader): add save/share button to image gallery toolbar (#4680)
* feat(reader): add save/share button to image gallery toolbar

Add a button to the top-right toolbar of the fullscreen image viewer
that saves the currently viewed image to the device. It uses the native
or web Share flow where available (iOS/Android/macOS, navigator.share)
and falls back to a save dialog or browser download otherwise, reusing
the existing export path via appService.saveFile.

The button icon and label reflect the active flow (share vs save).
Adds dataUrlToBytes/imageExtensionFromMime helpers, unit and component
tests, and translations for the new strings across all locales.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(share): write shareable file to a Temp subdirectory to avoid 0-byte share

On Android, Tauri's Temp dir is the app cache dir, and the sharekit plugin
copies the shared file to <cacheDir>/<name> before firing the share intent.
When saveFile wrote the shareable file to the Temp root, that copy became a
copy onto itself whose output stream truncated the source to 0 bytes, so the
shared image (and any shared export) arrived as a 0 KB file. Write the file
to a Temp subdirectory instead so the plugin's copy has a distinct source.

Verified on a Xiaomi device: sharing a file in the Temp root truncated it to
0 bytes, while sharing from the subdirectory produced a real, non-empty copy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* feat(reader): save image to system gallery on Android

The Android share sheet cannot save an image to a file (no file manager
registers as an ACTION_SEND target), so the Save Image button now writes
the image straight into the system photo gallery via MediaStore. It lands
in Pictures/Readest, visible in Gallery and the Files app, with no picker
and no storage permission on Android 10+.

Adds a save_image_to_gallery command to the native-bridge plugin (Rust +
Kotlin MediaStore insert) and an appService.saveImageToGallery method. On
Android the Save button uses it; iOS/macOS/desktop/web keep the existing
share/export flow, and the button label/icon reflect the actual action.

Also includes local agent memory notes that were staged alongside.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 06:28:08 +02:00

14 KiB

Default Permission

Default permissions for the plugin

This default permission set includes the following:

  • allow-auth-with-safari
  • allow-auth-with-custom-tab
  • allow-copy-uri-to-path
  • allow-save-image-to-gallery
  • allow-use-background-audio
  • allow-install-package
  • allow-set-system-ui-visibility
  • allow-get-status-bar-height
  • allow-get-sys-fonts-list
  • allow-intercept-keys
  • allow-lock-screen-orientation
  • allow-iap-is-available
  • allow-iap-initialize
  • allow-iap-fetch-products
  • allow-iap-purchase-product
  • allow-iap-restore-purchases
  • allow-get-system-color-scheme
  • allow-get-safe-area-insets
  • allow-get-screen-brightness
  • allow-set-screen-brightness
  • allow-get-external-sdcard-path
  • allow-open-external-url
  • allow-show-lookup-popover
  • allow-get-lookup-dictionary
  • allow-clear-lookup-dictionary
  • allow-select-directory
  • allow-get-storefront-region-code
  • allow-request-manage-storage-permission
  • allow-register-listener
  • allow-remove-listener
  • allow-check-permissions
  • allow-request-permissions
  • allow-checkPermissions
  • allow-requestPermissions
  • allow-set-sync-passphrase
  • allow-get-sync-passphrase
  • allow-clear-sync-passphrase
  • allow-is-sync-keychain-available

Permission Table

Identifier Description

native-bridge:allow-auth-with-custom-tab

Enables the auth_with_custom_tab command without any pre-configured scope.

native-bridge:deny-auth-with-custom-tab

Denies the auth_with_custom_tab command without any pre-configured scope.

native-bridge:allow-auth-with-safari

Enables the auth_with_safari command without any pre-configured scope.

native-bridge:deny-auth-with-safari

Denies the auth_with_safari command without any pre-configured scope.

native-bridge:allow-check-permissions

Enables the check-permissions command without any pre-configured scope.

native-bridge:deny-check-permissions

Denies the check-permissions command without any pre-configured scope.

native-bridge:allow-checkPermissions

Enables the checkPermissions command without any pre-configured scope.

native-bridge:deny-checkPermissions

Denies the checkPermissions command without any pre-configured scope.

native-bridge:allow-check-permissions

Enables the check_permissions command without any pre-configured scope.

native-bridge:deny-check-permissions

Denies the check_permissions command without any pre-configured scope.

native-bridge:allow-clear-lookup-dictionary

Enables the clear_lookup_dictionary command without any pre-configured scope.

native-bridge:deny-clear-lookup-dictionary

Denies the clear_lookup_dictionary command without any pre-configured scope.

native-bridge:allow-clear-sync-passphrase

Enables the clear_sync_passphrase command without any pre-configured scope.

native-bridge:deny-clear-sync-passphrase

Denies the clear_sync_passphrase command without any pre-configured scope.

native-bridge:allow-clip-url

Enables the clip_url command without any pre-configured scope.

native-bridge:deny-clip-url

Denies the clip_url command without any pre-configured scope.

native-bridge:allow-copy-uri-to-path

Enables the copy_uri_to_path command without any pre-configured scope.

native-bridge:deny-copy-uri-to-path

Denies the copy_uri_to_path command without any pre-configured scope.

native-bridge:allow-get-external-sdcard-path

Enables the get_external_sdcard_path command without any pre-configured scope.

native-bridge:deny-get-external-sdcard-path

Denies the get_external_sdcard_path command without any pre-configured scope.

native-bridge:allow-get-lookup-dictionary

Enables the get_lookup_dictionary command without any pre-configured scope.

native-bridge:deny-get-lookup-dictionary

Denies the get_lookup_dictionary command without any pre-configured scope.

native-bridge:allow-get-safe-area-insets

Enables the get_safe_area_insets command without any pre-configured scope.

native-bridge:deny-get-safe-area-insets

Denies the get_safe_area_insets command without any pre-configured scope.

native-bridge:allow-get-screen-brightness

Enables the get_screen_brightness command without any pre-configured scope.

native-bridge:deny-get-screen-brightness

Denies the get_screen_brightness command without any pre-configured scope.

native-bridge:allow-get-status-bar-height

Enables the get_status_bar_height command without any pre-configured scope.

native-bridge:deny-get-status-bar-height

Denies the get_status_bar_height command without any pre-configured scope.

native-bridge:allow-get-storefront-region-code

Enables the get_storefront_region_code command without any pre-configured scope.

native-bridge:deny-get-storefront-region-code

Denies the get_storefront_region_code command without any pre-configured scope.

native-bridge:allow-get-sync-passphrase

Enables the get_sync_passphrase command without any pre-configured scope.

native-bridge:deny-get-sync-passphrase

Denies the get_sync_passphrase command without any pre-configured scope.

native-bridge:allow-get-sys-fonts-list

Enables the get_sys_fonts_list command without any pre-configured scope.

native-bridge:deny-get-sys-fonts-list

Denies the get_sys_fonts_list command without any pre-configured scope.

native-bridge:allow-get-system-color-scheme

Enables the get_system_color_scheme command without any pre-configured scope.

native-bridge:deny-get-system-color-scheme

Denies the get_system_color_scheme command without any pre-configured scope.

native-bridge:allow-iap-fetch-products

Enables the iap_fetch_products command without any pre-configured scope.

native-bridge:deny-iap-fetch-products

Denies the iap_fetch_products command without any pre-configured scope.

native-bridge:allow-iap-initialize

Enables the iap_initialize command without any pre-configured scope.

native-bridge:deny-iap-initialize

Denies the iap_initialize command without any pre-configured scope.

native-bridge:allow-iap-is-available

Enables the iap_is_available command without any pre-configured scope.

native-bridge:deny-iap-is-available

Denies the iap_is_available command without any pre-configured scope.

native-bridge:allow-iap-purchase-product

Enables the iap_purchase_product command without any pre-configured scope.

native-bridge:deny-iap-purchase-product

Denies the iap_purchase_product command without any pre-configured scope.

native-bridge:allow-iap-restore-purchases

Enables the iap_restore_purchases command without any pre-configured scope.

native-bridge:deny-iap-restore-purchases

Denies the iap_restore_purchases command without any pre-configured scope.

native-bridge:allow-install-package

Enables the install_package command without any pre-configured scope.

native-bridge:deny-install-package

Denies the install_package command without any pre-configured scope.

native-bridge:allow-intercept-keys

Enables the intercept_keys command without any pre-configured scope.

native-bridge:deny-intercept-keys

Denies the intercept_keys command without any pre-configured scope.

native-bridge:allow-is-sync-keychain-available

Enables the is_sync_keychain_available command without any pre-configured scope.

native-bridge:deny-is-sync-keychain-available

Denies the is_sync_keychain_available command without any pre-configured scope.

native-bridge:allow-lock-screen-orientation

Enables the lock_screen_orientation command without any pre-configured scope.

native-bridge:deny-lock-screen-orientation

Denies the lock_screen_orientation command without any pre-configured scope.

native-bridge:allow-open-external-url

Enables the open_external_url command without any pre-configured scope.

native-bridge:deny-open-external-url

Denies the open_external_url command without any pre-configured scope.

native-bridge:allow-register-listener

Enables the register_listener command without any pre-configured scope.

native-bridge:deny-register-listener

Denies the register_listener command without any pre-configured scope.

native-bridge:allow-remove-listener

Enables the remove_listener command without any pre-configured scope.

native-bridge:deny-remove-listener

Denies the remove_listener command without any pre-configured scope.

native-bridge:allow-request-permissions

Enables the request-permissions command without any pre-configured scope.

native-bridge:deny-request-permissions

Denies the request-permissions command without any pre-configured scope.

native-bridge:allow-requestPermissions

Enables the requestPermissions command without any pre-configured scope.

native-bridge:deny-requestPermissions

Denies the requestPermissions command without any pre-configured scope.

native-bridge:allow-request-manage-storage-permission

Enables the request_manage_storage_permission command without any pre-configured scope.

native-bridge:deny-request-manage-storage-permission

Denies the request_manage_storage_permission command without any pre-configured scope.

native-bridge:allow-request-permissions

Enables the request_permissions command without any pre-configured scope.

native-bridge:deny-request-permissions

Denies the request_permissions command without any pre-configured scope.

native-bridge:allow-save-image-to-gallery

Enables the save_image_to_gallery command without any pre-configured scope.

native-bridge:deny-save-image-to-gallery

Denies the save_image_to_gallery command without any pre-configured scope.

native-bridge:allow-select-directory

Enables the select_directory command without any pre-configured scope.

native-bridge:deny-select-directory

Denies the select_directory command without any pre-configured scope.

native-bridge:allow-set-screen-brightness

Enables the set_screen_brightness command without any pre-configured scope.

native-bridge:deny-set-screen-brightness

Denies the set_screen_brightness command without any pre-configured scope.

native-bridge:allow-set-sync-passphrase

Enables the set_sync_passphrase command without any pre-configured scope.

native-bridge:deny-set-sync-passphrase

Denies the set_sync_passphrase command without any pre-configured scope.

native-bridge:allow-set-system-ui-visibility

Enables the set_system_ui_visibility command without any pre-configured scope.

native-bridge:deny-set-system-ui-visibility

Denies the set_system_ui_visibility command without any pre-configured scope.

native-bridge:allow-show-lookup-popover

Enables the show_lookup_popover command without any pre-configured scope.

native-bridge:deny-show-lookup-popover

Denies the show_lookup_popover command without any pre-configured scope.

native-bridge:allow-use-background-audio

Enables the use_background_audio command without any pre-configured scope.

native-bridge:deny-use-background-audio

Denies the use_background_audio command without any pre-configured scope.