diff --git a/CHANGELOG.md b/CHANGELOG.md
index 30912a37a..e74eb5861 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,6 +14,7 @@
- It is now possible to add the same shortcut multiple times to a multi-shortcut, and additionally it is now possible to add multiple shortcuts at once
### Miscellaneous
+- The option to change the app's theme is disabled when dark mode is on
- Stetho (for network traffic inspection via Chrome) was removed from the app, as it was not working properly and posed a potential security risk
### Bugfixes
diff --git a/HTTPShortcuts/app/src/main/assets/changelog.html b/HTTPShortcuts/app/src/main/assets/changelog.html
index 0a83be2dd..a8d0b6e04 100644
--- a/HTTPShortcuts/app/src/main/assets/changelog.html
+++ b/HTTPShortcuts/app/src/main/assets/changelog.html
@@ -42,7 +42,7 @@
-Version 2.20.0
Variables
- There are two new types of variables, UUID and Clipboard Content, which bring some of the functionality that was so far only possible via Scripting into an easier to use form. More to come (probably).
- With variables of type Text Input, Number Input, or Password Input, you can now choose to display a custom message in the dialog window, and similarly with variables of type Color Input, Date Input, or Time Input, you can now choose to display a title in the dialog window.
- You can now add a prefix and suffix to be displayed along the number that is displayed in a Number Slider variable's dialog window, e.g., to add a percentage sign or unit
Scripting
- The code snippet picker now has a search feature to make it easier to explore and find available functions for Scripting
- You can now query the contents of the device's clipboard via the
getClipboardContent
function
Improvements
- When doing a partial export of shortcuts, only those custom icons, variables and client certificates that are really needed are included in the exported file
- It is now possible to add the same shortcut multiple times to a multi-shortcut, and additionally it is now possible to add multiple shortcuts at once
Miscellaneous
- Stetho (for network traffic inspection via Chrome) was removed from the app, as it was not working properly and posed a potential security risk
Bugfixes
- Inserting a variable placeholder into the "Message" field for response display settings works again as expected
- The User-Agent request header no longer contains mismatched parentheses
- For languages written right-to-left (specifically Hebrew) the variable picker button no longer overlaps with other views
Version 2.19.0
Scripting
- You can now send UDP packets using the
sendUDPPacket
function
Improvements
- When exporting, you can now select which shortcuts to export, allowing for partial exports
Miscellaneous
- Added helper texts to the variable creation dialog to better explain the different types of variables and their use
Bugfixes
- When a request fails, the response is now displayed according to the configured display type for errors, instead of the one for successful requests
- Newly created shortcuts are no longer placed into the first category if that category is hidden
- Multiple-Choice variables can now be configured again to allow selecting more than one value at time
Version 2.18.0
Scripting
- It is now possible to integrate with the 'QR Droid', 'Barcode Scanner' or 'Binary Eye' app to scan barcodes and use their contents in Scripting, via the new
scanBarcode()
function - There is now a
getLocation()
function which allows you to query your device's physical location (not available in F-Droid version)
Improvements
- You can now open the "Import from URL" dialog directly via deep-linking, allowing for convenient two-click importing of shortcuts from tutorials and template collection websites
- It is now possible to easily sort all variables alphabetically
Miscellaneous
- Minor reorganization of the shortcut editor layout
- Added a helper text that explains what toasts are
- Moved the "Become a Translator" call-to-action up to a more prominent position
Bugfixes
- All webviews (e.g. for displaying responses) are now properly stopped when their window is closed, preventing them from using resources in the background
- In Scripting, the
response
variable is always defined. When no response is available, it is set to null
instead of being undefined. - Headers without a space between the name and value are now correctly imported from cURL
- The order of launcher shortcuts is now updated immediately when shortcuts are moved around within a category
Version 2.17.0
Improvements
- Slider variables now support floating point numbers
- You can now use the
uuidv4()
function in Scripting to generate random UUIDs
Bugfixes
- Triggering a shortcut via a deep-link from an NFC tag now works as expected (thanks @granoeste)
- When switching between categories, their background is now always correctly displayed
- The changelog dialog no longer shows up again unexpectedly after being dismissed
- The horizontal separator lines in menu dialogs are no longer clickable
Version 2.16.0
Scripting
- There is now a
parseXML
function available - The Code Snippet Picker now contains an entry for
JSON.parse()
for easier access - The Code Snippet Picker now allows to quickly jump to the documentation of each entry
- The
enqueueShortcut
function now allows to forward selected files to other shortcuts (experimental) - Variables used in Scripting are now evaluated lazily, which means a dynamic variable (e.g. a text input prompt) will only try to resolve its value if that value is actually needed
Improvements
- If the app crashes or is unintentionally closed while creating or editing a shortcut, the app will offer to recover the unsaved changes the next time it is opened
- Added a button to the Troubleshooting section which allows Xiaomi users to more easily reach the permission screen, to fix the issue of shortcuts not working properly when triggered from the home screen
- Long running shortcuts can now be cancelled with the back button
Bugfixes
- Dialog windows no longer disappear when switching away from and then back to the app
- Javascript errors from a Scripting shortcut are now displayed in a dialog window instead of a toast, and the line number is no longer skewed by use of the Global Scripting feature
- Choosing a different language in the Settings screen now more reliably applies that language to the app
- When selecting Italian as the app's language, the app is now actually set to Italian instead of Indonesian
Version 2.15.1
Bugfixes
- Fixed error when importing categories that use grid layout
Version 2.15.0
Improvements
- The Code Snippet Picker was redesigned for clarity and easier use
- You now have the option to use the camera to take a picture and use it as the request body or as a form parameter
- In a Browser Shortcut you can now choose which of the installed browsers should be used
- When using the Grid layout for a category, it is now possible to choose from 3 different types of grid densities
- It is now possible to override the shortcut click behavior on a per category basis
- Categories can now have a custom background color
- The
changeDescription
function was added to allow programmatically updating a shortcut's description
Miscellaneous
- The "Client Certificate" option was moved to the "Authentication" section in the shortcut editor
- In categories that use the "Wallpaper" background, shortcut labels now have a drop shadow for better readability
- Various small tweaks to performance, app stability and UX improvements
Bugfixes
- When using the "-F" parameter in a cURL import, the method is now correctly set to POST instead of GET
- When the window displaying a response is closed, the app's main screen should now no longer show up unexpectedly
Version 2.14.1
Bugfixes
- The grid category layout now has the correct number of columns again
- The app no longer freezes when switching tabs while shortcut moving is enabled
- The icon picker dialogs are now properly preserved when screen orientation changes
Version 2.14.0
Custom Icons
The app now gives you more control over your custom icons. It now includes a new icon picker screen, which allows you to see all the icons you have used before and gives you the option to delete the ones you don't need anymore. In addition, you now have to open to download the favicon of a webpage and use that as the icon for your shortcut.
Improvements
- In the Variables screen, it is now easier to find out which variables are unused.
- The Code Snippet Picker now contains an entry for the "trim()" function.
- When sharing text into variables, it is now possible to also receive the title being shared, not only the text.
- Changing the title in the app's main screen is now more discoverable via an option in the Settings screen
Bugfixes
- Some text fields in the shortcut editor were misbehaving or not properly initialized. This is now fixed.
- Unusually large custom icons now just display an error instead of crashing the app
- In most places (not all yet, still work in progress) when a dialog is displayed and then the screen orientation changes, the dialog persists instead of being closed
- The Acknowledgments screen now respects dark mode
- Long pressing on shortcuts now no longer brings up the context menu while the app is locked
- The Settings screen no longer crashes when the screen orientation changes while a dialog is visible
Version 2.13.1
Bugfixes
- Deleted shortcuts can now be removed again from Multi-Shortcuts
- When exporting shortcuts and overwriting a file, the exported file no longer gets corrupted
- App no longer crashes when encountering a cookie without a value
- Added missing error handling for large responses
- Added missing loading states to some screens
- Improved resilience against crashes due to very large custom icons
- Fixed an issue with Indonesian translations and improved resilience against similar issues
- The state of the Acknowledgements screen is now preserved when the screen orientation changes
Version 2.13.0
This version includes a massive refactoring under the hood, so there's a good chance that some new bugs or small changes in behavior were introduced. Please let me know if you find something unusual.
Scripting
- The
setVariable
function can now be used to set the stored value of any type of variable, not only static/constant variables. This allows you to set the remembered value of a variable where the 'Remember value' option is enabled. - Added functions
openApp
and openUrl
to allow opening external apps more conveniently than by using sendIntent
or a browser shortcut - Added
getWifiSSID
function to allow querying the SSID of the currently connected Wi-Fi network - Renamed
triggerShortcut
to enqueueShortcut
to make it clearer what it does
Miscellaneous
- Toast messages now support basic HTML tags for formatting
- Improved the UX for the Request Body input box
- Improved the internal data store, so that the app should take up a bit less storage on the device
- Improved text sizes and colors for better readability in various places
- Added Indonesian translation
Bugfixes
- Quick Settings Tile shortcuts are now sorted alphabetically instead of appearing in no particular order
- Custom icons are now loaded asynchronously and more memory-efficiently, which should reduce the risk of running out of memory when loading many icons at once
- Fixed a deadlock that would happen when calling the
wait
function too many times - Fixed crash on Android 12 when trying to open Wi-Fi selection screen
- Reduced likelihood of old response window showing up again when triggering a new shortcut
- Removed "Multline" checkbox from Number Input and Password Input variable types as it had no effect and was never supposed to be there
- Improved the handling of large HTTP responses. The app is now less likely to crash when encountering these
Version 2.12.0
Miscellaneous
- Use https for new shortcuts by default
- Improved Android backup support
- Improved error messages in some places
- Rearranged the order of the icons in the built-in icon picker
Bugfixes
- Fixed an issue with the
-d
parameter in cURL parsing - 3xx status codes are now treated as a successful response instead of a failure
Version 2.11.0
Scripting
response.headers
and response.cookies
now return a list of strings instead of just a string. This is a breaking change, but it allows handling the case where there are multiple headers or cookies with the same name.
For convenience, there is now a response.getHeader(headerName)
and a response.getCookie(cookieName)
function which can be used to retrieve a specific header or cookie by name. If there are multiple headers or cookies with the given name, the last one will be returned.
Miscellaneous
- When choosing an icon for a shortcut, it is now possible to select a custom icon that was previously used
- Added partial Japanese translation
Bugfixes
- Passing variable values to a shortcut via the
triggerShortcut
now passes the correct values again, without an unwanted prefix - Fixed incorrect error message of
wakeOnLan
function
Version 2.10.0
Important Changes
The minimum supported Android version is now at 5.0 (Lollipop). Going forward, older versions of Android will no longer receive updates. You can still install older versions of the app by downloading the APK directly from Github.
Furthermore, this version introduces a breaking change to the Scripting feature, specifically to the built-in hmac
and base64decode
functions. The return type of these functions is now Uint8Array
(i.e., an array of bytes) instead of a hex string. See the Scripting section below for more information.
Scripting
- The
base64encode
and hmac
functions now also accept Uint8Array
(byte arrays) as input, instead of only strings - The
hmac
and base64decode
functions now return Uint8Array
(byte arrays) instead of a hex encoded string - There are 2 new functions
toString
and toHexString
which allow to convert Uint8Array
into strings - The Code Snippet picker now also allows easily adding "if { }" and "if { } else { }" blocks
Miscellaneous
- The "Misc Settings" section was renamed to "Trigger & Execution Settings"
- Some error messages, in particular around import & export, were improved
- The color picker dialog for
Color
variables was swapped out for a different, easier-to-use component
Bugfixes:
- The response headers can now be properly accessed again via Scripting
- Form parameters can now have empty values
Version 2.9.0
Improvements
- Added
wakeOnLan
function to allow sending magic packets to wake up devices on the network - When using Scripting, JavaScript errors now also include the line number for easier debugging
- The
triggerShortcut
function now supports a 3rd argument which can be used to specify a custom delay (in milliseconds) - Multiple Choice variables can now be configured to allow selecting multiple options
Miscellaneous
- Prepared the app for compatibility with Android 12
Bugfixes
- The
triggerShortcut
function can now be used to re-trigger the current shortcut itself, and do so indefinitely for as long as a delay larger than 500 milliseconds is specified.
Version 2.8.0
Improvements
- When only one shortcut is configured for the use in the Quick Settings Tile, the tile will assume the name of the shortcut instead of displaying "Execute Shortcut"
- Shortened deep-link URLs so they better fit on NFC tags and small QR codes
Bugfixes
- When importing from cURL, the method is now set to POST when there is a request body, instead of falling back to GET and ignoring the body
- When using the "Number Input" variable type, it is no longer possible to enter invalid numbers
- When editing variables, the checkbox values are now also taken into account when detecting whether there are unsaved changes
Version 2.7.0
Improvements
- Categories can now be pinned to the home screen, allowing faster access
- Category tabs can now be long-pressed to go to the category settings
Bugfixes
- When exporting a single shortcut via sharing, only that shortcut is exported instead of all shortcuts
- Better error handling for devices that don't offer an image picker
Version 2.6.0
Improvements
- Shortcuts can now be re-ordered within a category by dragging
- Basic support for Zeroconf/Bonjour/mDNS (.local domains)
- Added troubleshooting option to improve Tasker integration. Enable it you find that triggering shortcuts from Tasker or other 3rd party apps doesn't work.
Bugfixes
- Fixed Quick Settings Tile not working when there are 3 or more shortcuts enabled for it
Version 2.5.0
Miscellaneous
- Added a "Rerun" button to the response window, allowing to easily execute a shortcut again
- Added option for multiline text input to the "Text Input" variable
- Added and improved some help texts throughout the app
Bugfixes
- The "Password Input" variable now properly hides the password
- Tweaked the Tasker integration to more reliably execute shortcuts
Version 2.4.0
Important: Tasker Integration Overhaul
The integration with Tasker has been updated. It should now work more reliably, in particular in terms of passing around variables.
+
Version 2.20.0
Variables
- There are two new types of variables, UUID and Clipboard Content, which bring some of the functionality that was so far only possible via Scripting into an easier to use form. More to come (probably).
- With variables of type Text Input, Number Input, or Password Input, you can now choose to display a custom message in the dialog window, and similarly with variables of type Color Input, Date Input, or Time Input, you can now choose to display a title in the dialog window.
- You can now add a prefix and suffix to be displayed along the number that is displayed in a Number Slider variable's dialog window, e.g., to add a percentage sign or unit
Scripting
- The code snippet picker now has a search feature to make it easier to explore and find available functions for Scripting
- You can now query the contents of the device's clipboard via the
getClipboardContent
function
Improvements
- When doing a partial export of shortcuts, only those custom icons, variables and client certificates that are really needed are included in the exported file
- It is now possible to add the same shortcut multiple times to a multi-shortcut, and additionally it is now possible to add multiple shortcuts at once
Miscellaneous
- The option to change the app's theme is disabled when dark mode is on
- Stetho (for network traffic inspection via Chrome) was removed from the app, as it was not working properly and posed a potential security risk
Bugfixes
- Inserting a variable placeholder into the "Message" field for response display settings works again as expected
- The User-Agent request header no longer contains mismatched parentheses
- For languages written right-to-left (specifically Hebrew) the variable picker button no longer overlaps with other views
Version 2.19.0
Scripting
- You can now send UDP packets using the
sendUDPPacket
function
Improvements
- When exporting, you can now select which shortcuts to export, allowing for partial exports
Miscellaneous
- Added helper texts to the variable creation dialog to better explain the different types of variables and their use
Bugfixes
- When a request fails, the response is now displayed according to the configured display type for errors, instead of the one for successful requests
- Newly created shortcuts are no longer placed into the first category if that category is hidden
- Multiple-Choice variables can now be configured again to allow selecting more than one value at time
Version 2.18.0
Scripting
- It is now possible to integrate with the 'QR Droid', 'Barcode Scanner' or 'Binary Eye' app to scan barcodes and use their contents in Scripting, via the new
scanBarcode()
function - There is now a
getLocation()
function which allows you to query your device's physical location (not available in F-Droid version)
Improvements
- You can now open the "Import from URL" dialog directly via deep-linking, allowing for convenient two-click importing of shortcuts from tutorials and template collection websites
- It is now possible to easily sort all variables alphabetically
Miscellaneous
- Minor reorganization of the shortcut editor layout
- Added a helper text that explains what toasts are
- Moved the "Become a Translator" call-to-action up to a more prominent position
Bugfixes
- All webviews (e.g. for displaying responses) are now properly stopped when their window is closed, preventing them from using resources in the background
- In Scripting, the
response
variable is always defined. When no response is available, it is set to null
instead of being undefined. - Headers without a space between the name and value are now correctly imported from cURL
- The order of launcher shortcuts is now updated immediately when shortcuts are moved around within a category
Version 2.17.0
Improvements
- Slider variables now support floating point numbers
- You can now use the
uuidv4()
function in Scripting to generate random UUIDs
Bugfixes
- Triggering a shortcut via a deep-link from an NFC tag now works as expected (thanks @granoeste)
- When switching between categories, their background is now always correctly displayed
- The changelog dialog no longer shows up again unexpectedly after being dismissed
- The horizontal separator lines in menu dialogs are no longer clickable
Version 2.16.0
Scripting
- There is now a
parseXML
function available - The Code Snippet Picker now contains an entry for
JSON.parse()
for easier access - The Code Snippet Picker now allows to quickly jump to the documentation of each entry
- The
enqueueShortcut
function now allows to forward selected files to other shortcuts (experimental) - Variables used in Scripting are now evaluated lazily, which means a dynamic variable (e.g. a text input prompt) will only try to resolve its value if that value is actually needed
Improvements
- If the app crashes or is unintentionally closed while creating or editing a shortcut, the app will offer to recover the unsaved changes the next time it is opened
- Added a button to the Troubleshooting section which allows Xiaomi users to more easily reach the permission screen, to fix the issue of shortcuts not working properly when triggered from the home screen
- Long running shortcuts can now be cancelled with the back button
Bugfixes
- Dialog windows no longer disappear when switching away from and then back to the app
- Javascript errors from a Scripting shortcut are now displayed in a dialog window instead of a toast, and the line number is no longer skewed by use of the Global Scripting feature
- Choosing a different language in the Settings screen now more reliably applies that language to the app
- When selecting Italian as the app's language, the app is now actually set to Italian instead of Indonesian
Version 2.15.1
Bugfixes
- Fixed error when importing categories that use grid layout
Version 2.15.0
Improvements
- The Code Snippet Picker was redesigned for clarity and easier use
- You now have the option to use the camera to take a picture and use it as the request body or as a form parameter
- In a Browser Shortcut you can now choose which of the installed browsers should be used
- When using the Grid layout for a category, it is now possible to choose from 3 different types of grid densities
- It is now possible to override the shortcut click behavior on a per category basis
- Categories can now have a custom background color
- The
changeDescription
function was added to allow programmatically updating a shortcut's description
Miscellaneous
- The "Client Certificate" option was moved to the "Authentication" section in the shortcut editor
- In categories that use the "Wallpaper" background, shortcut labels now have a drop shadow for better readability
- Various small tweaks to performance, app stability and UX improvements
Bugfixes
- When using the "-F" parameter in a cURL import, the method is now correctly set to POST instead of GET
- When the window displaying a response is closed, the app's main screen should now no longer show up unexpectedly
Version 2.14.1
Bugfixes
- The grid category layout now has the correct number of columns again
- The app no longer freezes when switching tabs while shortcut moving is enabled
- The icon picker dialogs are now properly preserved when screen orientation changes
Version 2.14.0
Custom Icons
The app now gives you more control over your custom icons. It now includes a new icon picker screen, which allows you to see all the icons you have used before and gives you the option to delete the ones you don't need anymore. In addition, you now have to open to download the favicon of a webpage and use that as the icon for your shortcut.
Improvements
- In the Variables screen, it is now easier to find out which variables are unused.
- The Code Snippet Picker now contains an entry for the "trim()" function.
- When sharing text into variables, it is now possible to also receive the title being shared, not only the text.
- Changing the title in the app's main screen is now more discoverable via an option in the Settings screen
Bugfixes
- Some text fields in the shortcut editor were misbehaving or not properly initialized. This is now fixed.
- Unusually large custom icons now just display an error instead of crashing the app
- In most places (not all yet, still work in progress) when a dialog is displayed and then the screen orientation changes, the dialog persists instead of being closed
- The Acknowledgments screen now respects dark mode
- Long pressing on shortcuts now no longer brings up the context menu while the app is locked
- The Settings screen no longer crashes when the screen orientation changes while a dialog is visible
Version 2.13.1
Bugfixes
- Deleted shortcuts can now be removed again from Multi-Shortcuts
- When exporting shortcuts and overwriting a file, the exported file no longer gets corrupted
- App no longer crashes when encountering a cookie without a value
- Added missing error handling for large responses
- Added missing loading states to some screens
- Improved resilience against crashes due to very large custom icons
- Fixed an issue with Indonesian translations and improved resilience against similar issues
- The state of the Acknowledgements screen is now preserved when the screen orientation changes
Version 2.13.0
This version includes a massive refactoring under the hood, so there's a good chance that some new bugs or small changes in behavior were introduced. Please let me know if you find something unusual.
Scripting
- The
setVariable
function can now be used to set the stored value of any type of variable, not only static/constant variables. This allows you to set the remembered value of a variable where the 'Remember value' option is enabled. - Added functions
openApp
and openUrl
to allow opening external apps more conveniently than by using sendIntent
or a browser shortcut - Added
getWifiSSID
function to allow querying the SSID of the currently connected Wi-Fi network - Renamed
triggerShortcut
to enqueueShortcut
to make it clearer what it does
Miscellaneous
- Toast messages now support basic HTML tags for formatting
- Improved the UX for the Request Body input box
- Improved the internal data store, so that the app should take up a bit less storage on the device
- Improved text sizes and colors for better readability in various places
- Added Indonesian translation
Bugfixes
- Quick Settings Tile shortcuts are now sorted alphabetically instead of appearing in no particular order
- Custom icons are now loaded asynchronously and more memory-efficiently, which should reduce the risk of running out of memory when loading many icons at once
- Fixed a deadlock that would happen when calling the
wait
function too many times - Fixed crash on Android 12 when trying to open Wi-Fi selection screen
- Reduced likelihood of old response window showing up again when triggering a new shortcut
- Removed "Multline" checkbox from Number Input and Password Input variable types as it had no effect and was never supposed to be there
- Improved the handling of large HTTP responses. The app is now less likely to crash when encountering these
Version 2.12.0
Miscellaneous
- Use https for new shortcuts by default
- Improved Android backup support
- Improved error messages in some places
- Rearranged the order of the icons in the built-in icon picker
Bugfixes
- Fixed an issue with the
-d
parameter in cURL parsing - 3xx status codes are now treated as a successful response instead of a failure
Version 2.11.0
Scripting
response.headers
and response.cookies
now return a list of strings instead of just a string. This is a breaking change, but it allows handling the case where there are multiple headers or cookies with the same name.
For convenience, there is now a response.getHeader(headerName)
and a response.getCookie(cookieName)
function which can be used to retrieve a specific header or cookie by name. If there are multiple headers or cookies with the given name, the last one will be returned.
Miscellaneous
- When choosing an icon for a shortcut, it is now possible to select a custom icon that was previously used
- Added partial Japanese translation
Bugfixes
- Passing variable values to a shortcut via the
triggerShortcut
now passes the correct values again, without an unwanted prefix - Fixed incorrect error message of
wakeOnLan
function
Version 2.10.0
Important Changes
The minimum supported Android version is now at 5.0 (Lollipop). Going forward, older versions of Android will no longer receive updates. You can still install older versions of the app by downloading the APK directly from Github.
Furthermore, this version introduces a breaking change to the Scripting feature, specifically to the built-in hmac
and base64decode
functions. The return type of these functions is now Uint8Array
(i.e., an array of bytes) instead of a hex string. See the Scripting section below for more information.
Scripting
- The
base64encode
and hmac
functions now also accept Uint8Array
(byte arrays) as input, instead of only strings - The
hmac
and base64decode
functions now return Uint8Array
(byte arrays) instead of a hex encoded string - There are 2 new functions
toString
and toHexString
which allow to convert Uint8Array
into strings - The Code Snippet picker now also allows easily adding "if { }" and "if { } else { }" blocks
Miscellaneous
- The "Misc Settings" section was renamed to "Trigger & Execution Settings"
- Some error messages, in particular around import & export, were improved
- The color picker dialog for
Color
variables was swapped out for a different, easier-to-use component
Bugfixes:
- The response headers can now be properly accessed again via Scripting
- Form parameters can now have empty values
Version 2.9.0
Improvements
- Added
wakeOnLan
function to allow sending magic packets to wake up devices on the network - When using Scripting, JavaScript errors now also include the line number for easier debugging
- The
triggerShortcut
function now supports a 3rd argument which can be used to specify a custom delay (in milliseconds) - Multiple Choice variables can now be configured to allow selecting multiple options
Miscellaneous
- Prepared the app for compatibility with Android 12
Bugfixes
- The
triggerShortcut
function can now be used to re-trigger the current shortcut itself, and do so indefinitely for as long as a delay larger than 500 milliseconds is specified.
Version 2.8.0
Improvements
- When only one shortcut is configured for the use in the Quick Settings Tile, the tile will assume the name of the shortcut instead of displaying "Execute Shortcut"
- Shortened deep-link URLs so they better fit on NFC tags and small QR codes
Bugfixes
- When importing from cURL, the method is now set to POST when there is a request body, instead of falling back to GET and ignoring the body
- When using the "Number Input" variable type, it is no longer possible to enter invalid numbers
- When editing variables, the checkbox values are now also taken into account when detecting whether there are unsaved changes
Version 2.7.0
Improvements
- Categories can now be pinned to the home screen, allowing faster access
- Category tabs can now be long-pressed to go to the category settings
Bugfixes
- When exporting a single shortcut via sharing, only that shortcut is exported instead of all shortcuts
- Better error handling for devices that don't offer an image picker
Version 2.6.0
Improvements
- Shortcuts can now be re-ordered within a category by dragging
- Basic support for Zeroconf/Bonjour/mDNS (.local domains)
- Added troubleshooting option to improve Tasker integration. Enable it you find that triggering shortcuts from Tasker or other 3rd party apps doesn't work.
Bugfixes
- Fixed Quick Settings Tile not working when there are 3 or more shortcuts enabled for it
Version 2.5.0
Miscellaneous
- Added a "Rerun" button to the response window, allowing to easily execute a shortcut again
- Added option for multiline text input to the "Text Input" variable
- Added and improved some help texts throughout the app
Bugfixes
- The "Password Input" variable now properly hides the password
- Tweaked the Tasker integration to more reliably execute shortcuts
Version 2.4.0
Important: Tasker Integration Overhaul
The integration with Tasker has been updated. It should now work more reliably, in particular in terms of passing around variables.
Unfortunately, this is a breaking change, so most likely you will need to re-configure your Tasker tasks, if you have any. Sorry for the inconvenience.
Miscellaneous
- Added TLSv1.3 support also for older Android versions
- Added option to use a .p12 file directly for client certificate authentication
- Added function
playSound
which allows playing a notification sound - Added info dialog for easier lookup for a shortcut's ID or deep-linking URL
Bugfixes
- Fixed broken special characters when using Basic Authentication, now uses UTF-8
Version 2.3.0
Client Certificate Authentication
There is now the option to configure a shortcut to use a client certificate for authentication. You'll find the option in the shortcut's Advanced Settings section.
Improved Import & Export
When exporting shortcuts and variables, the resulting file is now a ZIP file instead of a raw JSON file. This has the advantage that custom icons are now also exported and automatically become part of the exported bundle, and of course they can be imported again as well.
The Import and Export functionality was moved out of the general settings screen and into its own dedicated screen to make it easier to discover and use.
Miscellaneous
- Added
hmac
function, which allows computing the HMAC of a message. Supported algorithms are md5, sha-1, sha-256 and sha-512. - The "Number Slider" variable type now also supports negative numbers.
- Image responses can now also be displayed in the 'Dialog Window' option, not only with the 'Fullscreen Window' option
Bugfixes
- When using the
getVariable
function to access a variable's value in code and that variable has not been loaded yet, instead of aborting with an error, the missing value is now resolved in a second variable loading step.
Version 2.2.0
Miscellaneous
- Added
base64decode
and base64encode
functions for scripting
Bugfixes
- When triggering the same shortcut multiple times but with different variable values, the values are preserved and passed correctly.
Version 2.1.0
Miscellaneous
- Browser Shortcuts are no longer limited to just HTTP(S) but can now use arbitrary URL schemes, allowing deep-linking into other apps.
- Improved some of the help texts to make it clearer how to use the app
Bugfixes
- Replaced the icon picker & cropper, as it no longer worked on Android 10. As a bonus, it now supports free 360° rotation
- Original file names are preserved when sharing files into the app and accessing file information through scripting
- Fixed a crash when displaying responses close to the 1MB size limit.
- Fixed the displaying of the changelog dialog on app startup (so meta).
- Fixed detection of variable names in scripts when enclosed by single quotes instead of double quotes
- When unlocking app settings, the password prompt dialog no longer incorrectly pops up again when the correct password is entered.
Version 2.0.0
Response Handling
- When using the 'Window' UI type for displaying the response, it is now possible to save the response into a file.
- When using the 'Window' UI type for displaying the response and the response is an image, it will be displayed as such instead of displaying it as plain text.
- When the response is larger than the limit of 1MB, instead of failing, the request is treated as a success.
- When creating a new shortcut, the default way of displaying the response is via a window instead of a toast.
Scripting
- When using the Code Snippet picker for the
changeIcons
action it is now possible to pick a custom image instead of only a built-in one. - It is now possible to access the name, type and size of selected files via Scripting.
- The settings page now features a scripting editor which can be used to define a piece of code which is executed at the start of each shortcut, allowing to share code and define common variables and functions.
Miscellaneous
- Shortcuts can now be limited to only execute when connected to a specific wifi (thanks @crasu)
- The value input field for static (constant) variables is now multi-line, making it easier to enter or view larger values.
- It is now possible to trigger a specific shortcut via a invoking a deep-link of the form
http-shortcuts://deep-link/<id-of-shortcut-here>
- When displaying a JSON formatted response in a window, it is now possible to toggle line-wrapping by tapping.
- The
About
section was moved out of the Settings
page to be a standalone page.
Bugfixes
- Deleted shortcuts now show in the shortcut list of Multi-Shortcuts, making it possible to fully remove them manually.
- When a response is too large for sharing as text, instead of crashing or silently failing it will now try to share it as a file instead.
- When selecting files (for request parameters or body) their original file name is used instead of a generated or internal one.
Version 1.39.0
Remote Editing
You can now edit your shortcuts and categories from the comfort of a desktop computer. Go to "Settings > Edit on Computer" to find out more.
Miscellaneous
- Increased maximum length of static variables (constants) from 3000 to 30000 characters
- Improved Polish translation
Bugfixes
- Fixed a crash caused by invalid characters in User-Agent header
- Fixed a rounding error when using large numbers in Scripting and storing them using
setVariable()
- Using getVariable() or setVariable() now raises an error when the variable doesn't exist instead of silently failing
Version 1.38.0
Scripting Improvements
There is now a hash() action, which allows to apply MD5, SHA-1, SHA-256 and SHA-512.
Bugfixes
- Content-Length is now correctly computed when using form-data. Previously it was counting some characters (e.g. Cyrillic letter) incorrectly.
- Shared text is no longer ignored when sharing text and files into the app at the same time
- The scrolling behavior is now smoother when displaying HTML responses
Version 1.37.0
Scripting Improvements
There is now a showSelection() action which allows showing a dialog of options to choose from, similar to the multiple-choice variable type.
Miscellaneous
- Added help buttons that link to the online documentation throughout the app
Bugfixes
- The "User-Agent" header can now be set without being overwritten by the default one
Version 1.36.0
Cookie Store
Shortcuts can now be configured to accept and store cookies via the "Advanced Technical Settings" section.
Miscellaneous
- Privacy improvements in crash reporting (some unnecessary details excluded from crash reports)
Version 1.35.0
Improved "Response Handling"
The "Response Handling" section of the shortcut editor was redesigned to allow for more
fine-grained control over how the HTTP response should be handled and displayed when a
shortcut is executed. For example, it is now possible to display a custom message instead of
diff --git a/HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/settings/settings/SettingsActivity.kt b/HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/settings/settings/SettingsActivity.kt
index aebfc2dd1..924a7cbfd 100644
--- a/HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/settings/settings/SettingsActivity.kt
+++ b/HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/settings/settings/SettingsActivity.kt
@@ -11,6 +11,7 @@ import androidx.preference.Preference
import ch.rmy.android.framework.extensions.bindViewModel
import ch.rmy.android.framework.extensions.createIntent
import ch.rmy.android.framework.extensions.initialize
+import ch.rmy.android.framework.extensions.isDarkThemeEnabled
import ch.rmy.android.framework.extensions.observe
import ch.rmy.android.framework.extensions.showSnackbar
import ch.rmy.android.framework.extensions.startActivity
@@ -68,6 +69,7 @@ class SettingsActivity : BaseActivity() {
initListPreference("theme") {
restartToApplyThemeChanges()
}
+ .isEnabled = !requireContext().isDarkThemeEnabled()
initListPreference("dark_theme") { newSetting ->
DarkThemeHelper.applyDarkThemeSettings(newSetting as String)