## Version 4.2.0 ### Improvements - When reopening the app, it will now show the most recently viewed category instead of the first one. You can disable this in the settings. - When unlocking the app, the lock will now no longer be removed but only kept temporarily unlocked. It will automatically lock again after the app was in the background for 10 minutes. You can remove the lock in the settings. - It is now possible (again) to have multiple options in a Multiple Choice Variable that share the same value - For Variable widgets you can now choose which shortcut should be triggered when the widget is clicked - When editing a shortcut widget, the previously selected shortcut is highlighted to make it easier to verify or re-select - The app can now detect whether a custom icon has transparency and consists of a single color. This allows it to pick a better icon background color when placing shortcuts on the home screen, and it allows using the icon's outline in the quick settings tile. This only works with newly added icons, not with existing ones. - On the Troubleshooting screen you now have the option to disable some of the performance optimizations that the app will try to apply to very simple shortcuts, as these might break functionality in rare situations - You can now configure host name verification and use client certificates also for MQTT-Shortcuts ### Bugfixes - The option to exclude the values of specific variables from exports is now also honored when using the web editor - When completing an import, shortcuts on the home screen and in the launcher menu are now updated to reflect the changes from the import - When editing the main screen title, the "Title changed" snackbar only shows if the title was actually changed ### Miscellaneous - All icons in the app were switched from Material Icons to Material Symbols - Some of the settings on the Settings screen now use toggleable switch UI elements ## Version 4.1.0 ### Potentially Breaking Change - There is a minor change in how the app URL-encodes the values of global variables, which affects all variables where the "URL encode" option is enabled. Previously, a space character would be turned into a `+` character. Going forward, it will be turned into `%20` instead. This should work fine in most cases or even improve things, but might break the behavior of some of your shortcuts if you have very specific logic or requirements in your shortcuts or your servers. ### Improvements - It is now possible to display a static title at the top of your global variable home screen widgets - There is now a [promptNumberSlider](https://http-shortcuts.rmy.ch/scripting#prompt-number-slider) Scripting function, which allows to prompt for a number using a horizontal slider, the same kind used for "Number Slider" variables - You can now use the [getDeviceId](https://http-shortcuts.rmy.ch/scripting#device-id) Scripting function to query the randomly generated ID of your device, which might help with differentiating different devices on the server side if they all share the same shortcuts - The Code Snippet Picker in the Scripting feature now features a "URL Encode" option, to transform arbitrary text to be URL-safe ### Bugfixes - An experimental fix is applied to mitigate crashes that occasionally happen when displaying very large HTML documents - Fixed a crash when displaying Scripting error messages in Vietnamese ### Miscellaneous - The build number is now displayed next to the app's version number on the Information screen ## Version 4.0.0 ### Breaking Change This versions drops backwards compatibility with the internal data format that was used up to version 3.28.0. If you're reading this inside the app, your data was already successfully migrated and you don't need to do anything. If you're upgrading from version 3.28.0 or older, you should install version 3.33.0 first to make sure your data is migrated. For more information and for recovery options, see [http-shortcuts.rmy.ch/restore](https://http-shortcuts.rmy.ch/restore). ### Improvements - You can now configure a category to hide the labels of all shortcuts within, to show only a grid of shortcut icons - There is now a [showMultiSelection](https://http-shortcuts.rmy.ch/scripting#show-selection) Scripting function - It is now possible to use client certificates that don't require a password ### Bugfixes - Date Input and Time Input variables now use the correct locale instead of defaulting to English, for resolving things like weekday of month names. (thanks [@f0sh](https://github.com/f0sh)) - It is no longer possible to create select variables where the same key is used multiple times for different options ## Version 3.33.0 ### Improvements - There is now a new type of widget, which allows you to display the value of a static global variable on your home screen. - The [getDirectory](https://http-shortcuts.rmy.ch/scripting#read-write-files) Scripting function can now be used to read the contents of shared or selected files - The [parseHtml](https://http-shortcuts.rmy.ch/scripting#parse-html) Scripting function now supports XPath queries ### Bugfixes - Exporting MQTT shortcuts no longer results in incomplete exports - Icons in widgets are now properly cropped into a circle when needed - Syntax highlighting now also works for XML responses - The [sendHttpRequest](https://http-shortcuts.rmy.ch/scripting#send-http-request) Scripting function now considers redirects (i.e., 3xx responses) as successful as well (thanks [@ray2c](https://github.com/ray2c)) ## Version 3.32.0 ### Improvements - There is a now a [cancelShortcut()](https://http-shortcuts.rmy.ch/scripting#cancel-shortcut) Scripting function, which can be used to cancel the execution of a scheduled or repeating shortcut ### Bugfixes - Delayed and scheduled shortcuts are no longer blocked by repeating shortcuts (thanks [@ray2c](https://github.com/ray2c)) - Shortcut descriptions are no longer truncated unnecessarily when importing (thanks [@ray2c](https://github.com/ray2c)) - A few other very minor tweaks in some edge-cases ## Version 3.31.0 ### Improvements - The execution times of repeating shortcuts will no longer drift over time and adhere to a more reliable schedule. When the device is rebooted, the schedule is recreated instead of dropped. - If you have [Termux](https://github.com/termux/termux-app) installed, you can now use the [runTermuxCommand](https://http-shortcuts.rmy.ch/scripting#run-termux-command) function to run a command in a Termux terminal - URLs can now be pasted into the URL field without first having to clear the prefilled "https://" - Custom tabs opened via Browser Shortcuts or the [openUrl()](https://http-shortcuts.rmy.ch/scripting#open-url) function will now show the 'Share' button (if the browser supports it) ### Bugfixes - Local variables now also work correctly in ["Headless Mode"](https://http-shortcuts.rmy.ch/advanced#headless-mode) - The dialog for slider variables now displays numbers using the locale-appropriate format - Variable placeholders used in the file name field for storing responses are no longer resolved when the shortcut is not actually configured to store responses - Certificate files are now correctly restored when importing from a file - Headers and request parameters are no longer getting duplicated when importing - The recovery dialog will now only show if there actually are unsaved changes - The soft keyboard no longer overlap important UI elements, e.g., in the Scripting editor (thanks [@ray2c](https://github.com/ray2c)) ### Miscellaneous - Automatic deletion of obsolete icon and certificate files - Static variables can now reference other variables again. This is a revert of a change made in version 3.16.0. I've changed my mind. - Empty sections will stop showing the placeholder text once shortcuts were moved into any section, allowing to have truly empty sections ## Version 3.30.2 ### Bugfixes - Fixed slider variables causing a crash depending on app language - The user-agent field now also shows the default value as a placeholder when a custom user-agent had already been set ## Version 3.30.1 ### Bugfixes - Fixed a critical issue, which caused shortcuts to fail silently under certain circumstances - Slider variables should now no longer show rounding errors when floating point numbers are used for step size, minimum or maximum value - When exporting a shortcut, variables referenced from global code are now also included in the export ### Miscellaneous - The text field for setting a custom user-agent header now shows the default header as a placeholder - Removed the incomplete and unmaintained Norwegian translations ## Version 3.30.0 ### Improvements - You can now add placeholders for [local variables](https://http-shortcuts.rmy.ch/variables#local-variables) to your shortcuts, to dynamically insert values without having to explicitly create variables on the Variables screen for them. The existing Variables feature was renamed to "Global Variables" to make the distinction clearer. - The app now also support Traditional Chinese as a language (thanks [@ray2c](https://github.com/ray2c)) - The `sendHttpRequest` Scripting function now supports an option to disable the following of redirects, and it is possible to override the `Connection` and `User-Agent` headers which are added by default. ### Bugfixes - It is now no longer possible to create multiple options in a Select variable that use the same value - When selecting a code snippet for Scripting, it is now inserted into the correct text box instead of always the "Run before execution" one - Various fixes for rare crashes ### Miscellaneous - This app now has an [official subreddit](https://www.reddit.com/r/HTTP_Shortcuts/). A link to it was added to the Information screen ## Version 3.29.1 - Changing the Response Content Type option is no longer ignored - The initial empty screen no longer interferes with the selection of UI elements when using a DPAD or accessibility options - It is no longer possible to insert newline characters into URLs - When adding a placeholder for a newly created variable, it now adds the correct variable instead of a random non-existing one - Added missing launcher icon for use on Android TV ## Version 3.29.0 ### Breaking Change The "Use specific file" feature was reworked to address a bug and a technical limitation. If you've previously configured a shortcut to use a specific file as a request parameter or as the request body, you will need to reconfigure that. Instead of directly picking a file, you now need to first select the directory that contains the file and then enter the name of the file. This has the advantage that it is possible to modify the file through Scripting, which would previously always fail. ### Improvements - The [`prompt()` function](https://http-shortcuts.rmy.ch/scripting#prompt-confirm) can now be configured to allow the input of multiline text - When using file form parameters, it is now possible to enter static text directly, without the need of an actual file - Various small improvements around import & export, such as the ability to protect the export file with a password, and including more useful meta data ### Bugfixes - Fixed the sorting order of shortcuts in various dialogs, which was broken in the previous version - Fully replaced the image editor, which fixes the issue that on Android 15 custom icons could no longer be used due to the editor's buttons being covered up by other UI elements - Fixed a crash that would sometimes happen when the icon picker was opened - Fixed issues with the data migrations which would cause the app to crash on startup for a few users ### Miscellaneous - When opening the app for the first time, you can now click the "Documentation" link in the empty view to open the documentation screen - Rearranged the items on the "Information" screen for clarity ## Version 3.28.0 ### Improvements - You can now customize the buttons of the dialog window when using the `showDialog` function in Scripting - The size of shortcut icons and text can now be increased, via the "Scaling Factor" option in the Category settings - When opening the Variables screen from the variable picker dialog, you can now directly select a variable without first having to navigate back to the dialog - Shortcuts triggered from a Multi-Shortcut can now also benefit from ["Headless Mode"](https://http-shortcuts.rmy.ch/advanced#headless-mode) - The category editor can now be opened by long-pressing on the background of the main screen ### Miscellaneous - The entire internal database was migrated and refactored. This should not have any noticeable impact, but might have introduced new bugs. ## Version 3.27.0 ### Improvements - You can now create "MQTT Shortcuts", which let you send MQTT messages without resorting to the `sendMqttMessages` Scripting function - You can now define a custom charset for the response in the `sendHttpRequest` function ### Bugfixes - The charset for the response can now also be configured even when the response is not displayed, e.g. for the use in Scripting. - It is now no longer possible to create certificate pinnings with invalid hostname patterns - Having cyclical references in Scripting function parameters no longer crashes the app - Very long responses are now truncated when displayed to avoid crashing the app ### Miscellaneous - When an unexpected error occurs, a more meaningful toast message is displayed - Implemented a workaround for a crash caused by a recent Tasker update - Lots of big changes in the underlying database. Hopefully everything still works. ## Version 3.26.0 ### Improvements - Categories can now be subdivided into sections, allowing for better structuring of your shortcuts - You can now create "Wake-on-LAN" shortcuts, which allow you to wake up computers on your network - Scripting functions `htmlEncode` and `htmlDecode` were added ### Bugfixes - Fixed an issue where byte arrays were not properly handled in Scripting functions, such as `hmac` ### Miscellaneous - Added icons to some of the menus - Added a few useful hints here and there to better explain some features - The Scripting examples were moved out of the general Scripting documentation and into their own dedicated page ## Version 3.25.0 ### Improvements - Various accessibility improvements - Added better error handling in some places ### Bugfixes - Scripting functions now work correctly when an integer, integer array, or byte array is used as a parameter (e.g. `hmac` or `writeFile`) - The `showNotification` function now also works when only a title but no message is provided ### Miscellaneous - The generation of the "Device ID", which is used for remote editing and crash logs, was unified and simplified ## Version 3.24.0 ### Improvements - The experimental setting for running all shortcuts in the background was removed and replaced with a revamped per-shortcut setting. It's still somewhat experimental, but should be more stable now. - In addition to toasts, dialogs and windows, shortcuts can now be configured to display their response (or custom message) in a notification - New Scripting functions `showNotification` and `showWindow` were added, which allow to display content in a notification or a fullscreen window - The Scripting functions `promptColor`, `promptDate`, `promptTime` and `showSelection` now support adding a title to the dialog. Similarly, variables of type "Date Input" and "Time Input" can now be configured to show a title on the picker dialog. - The Scripting function `sendHttpRequest` now also supports adding custom headers, a text-based body and form data to the request - Improved accessibility in some places by adding content descriptions to some UI elements and increasing touch surfaces or font sizes ### Bugfixes - The `parseHtml` function no longer fails when returning an array ## Version 3.23.0 ### Improvements - There is now rudimentary support for the Quick Access Device Controls feature (on Android 11 and up) ### Bugfixes - The "Display Type" dropdown field no longer fails to open after having been disabled and re-enabled - The progress spinner now no longer flickers up for really short-lived shortcut executions - Scripting functions no longer fail when an empty string is passed to them ## Version 3.22.0 ### Improvements - The JavaScript engine used for the Scripting feature was completely replaced. This reduces the size of the app, should improve performance and fix some more exotic bugs, and allow the app to build again for F-Droid. ### Bugfixes - The "Show at startup" checkbox in the Changelog now behaves correctly ### Miscellaneous - The minimum supported Android version was raised to Android 8 (Oreo). ## Version 3.21.0 ### Improvements - Homescreen widgets can now be reconfigured without needing to be removed and re-added - The size of the icon on home screen widgets can now be reduced - It is now possible to select whether IPv4 or IPv6 should be used for a shortcut's hostname (thanks [menendezeldemente](https://github.com/menendezeldemente)) - You can now send simple HTTP requests directly from Scripting with the newly added `sendHttpRequest` function ### Bugfixes - The circle icon in the icon picker now has the correct aspect ratio ### Miscellaneous - The size of the app has been reduced ## Version 3.20.0 ### Improvements - It is now possible to enable JavaScript as part of the response display window. This feature is experimental and it may not work for every website. - When selecting the "Read from File" or "Write to File" options from the Code Snippet picker in Scripting, there is now a picker to select the directory that should be used. ### Bugfixes - When exporting shortcuts that use the `getDirectory()` function in their Scripting, the directories are now also included in the export. ### Miscellaneous - When creating your very first shortcut, a useful hint is now shown if you haven't opened the "Response Handling" section - Removed some broken icons ## Version 3.19.0 ### Improvements - It is now possible to show/hide categories with Scripting - The `writeFile` and `appendFile` Scripting functions can now also write raw bytes instead of just strings - The Code Snippet picker now includes an "Append to File" option ### Miscellaneous - Prepared for Android 15 - Fixed typos and other minor improvements to documentation and help texts (thanks [@NathanBaulch](https://github.com/NathanBaulch)) ## Version 3.18.0 ### Improvements - In addition to `writeFile`, there is now also an `appendFile()` Scripting function which allows to append content to a file instead of fully replacing the file's content. ### Bugfixes - The `getDirectory(...).readFile()` and `getDirectory(...).writeFile()` Scripting function should now work as expected. - The "Allow receiving files from share dialog" checkbox now only shows for regular HTTP shortcuts instead of all shortcut types. ### Miscellaneous - Rearranged some options on the "Response Handling" screen for clarity - The "Display JSON array as table" option is now enabled by default, and it now also applies if the response is a JSON object with a single key which holds a JSON array. ## Version 3.17.0 ### Improvements - It is now possible to hide shortcuts inside the app, either manually or with the `setShortcutHidden` Scripting function. ### Bugfixes - When using the `prompt()` function with a very long text, the text now properly scrolls instead of pushing the text input field off screen. ### Miscellaneous - Removed unnecessary details from malformed GSON error message - The size of the APK file is back to a more reasonable value, after having blown up unexpectedly for version 3.16.0 ## Version 3.16.0 ### Improvements - It is now possible to read and write files using the Scripting feature - You can now exclude shortcuts from being able to receive files from the Share dialog, similar to how it was already possible to exclude variables. This option can be found on the "Trigger & Execution Settings" screen. - Variables can now be configured such that their values are excluded from exports - In widgets, it is now possible to hide the icon, allowing the creation of text-only home screen widgets ### Bugfixes - The label in widgets is now aligned such that multiple widgets placed next to each other with varying label lengths still look nice - Links to documentation now open in the browser instead of crashing when no web view is available - Fixed a few crashes that would occur during app startup in some rare cases ### Miscellaneous - Android 5 is no longer supported. Android 6 is the new minimum supported Android version. - The maximum length for static variables is increased to 40'000 characters. - I'm beginning to phase out the feature that allows having variable placeholders inside static variables. Let me know if you see a problem with that. ## Version 3.15.0 ### Improvements - If the response is a JSON array, there is now an option to display it as a table instead of raw JSON - The curl import and export now support the `--silent` parameter - There is now a dedicated screen for managing directories, for granting the app access to reading and writing files. So far this is only used for storing HTTP responses into files, but it will be expanded upon in upcoming releases. ### Bugfixes - In the widget, the label is now less likely to be truncated or hidden when there isn't enough space - When shortcuts are moved within the app, the shortcuts shown on the main app launcher are now also rearranged accordingly - When a shortcut that used the "Secondary Launcher App" option is deleted, the "Trigger Shortcut" app is properly removed from the launcher now ## Version 3.14.0 ### Improvements - The Response Handling screen was redesigned for more clarity and to allow for future improvements - Shortcut selection dialogs now also show the shortcuts' descriptions - A warning is now displayed when a request body contains malformed JSON ### Bugfixes - Fixed a crash that would happen on some devices when deleting characters in Scripting fields or the cURL import - Home screen shortcuts are now properly disabled when the respective shortcut is deleted ## Version 3.13.0 ### Improvements - On the Event History screen, it is now possible to use relative timestamps instead of absolute ones - The "Meta Information" section that is displayed above the response is now collapsed by default and can be expanded when needed - The icon picker for built-in icons now has a (rudimentary, English-only) search - There is now an `abortAndTreatAsFailure()` Scripting function which can be used to customize whether a response should be considered a success or not - The `sendTCPPacket()` Scripting function can now also be used to listen for incoming data, allowing for a basic request-response setup - Similar to the response window, it is now possible to also change the font size of the response dialog - The curl import now supports the `--head` parameter - Various small tweaks to the UI here and there to improve clarity, performance, and to make it more consistent ### Bugfixes - Fixed a crash that occasionally happened when testing shortcuts ### Miscellaneous - The Event History now shows up to 12 hours of data instead of only 8 ## Version 3.12.1 ### Bugfixes - Fixed crash when placing a shortcut on the home screen ## Version 3.12.0 ### Improvements - The performance of the syntax highlighting is now improved, so that it also works on larger pieces of code or data - When exporting shortcuts, you can now more easily select which shortcuts should be exported - When importing from or exporting to curl, the `--insecure` option is now supported - In Scripting, it is now possible to get the ID and name of the category the current shortcut belongs to - Some tweaks to the built-in documentation were made to make it easier to understand ### Bugfixes - The `getClipboarContent()` function should now also work when using the experimental background execution setting - The `parseHtml()` function now also works for reading the content of `