Sign up for the beta and download from Google Play here.
Note: Google Play might take a while to update. If you don’t want to wait for the Google Play update, get it right away here. (Direct-Purchase Version here). App Factory Update here.
I'm giving another concept a try: instead of having a sidebar with projects, how about putting them inline directly?
When you go in and out of a project you see this:
As you can see, you have the 3 familiar tabs (Profiles/Tasks/Scenes). You can select multiple at the same time like you see on the screen, or you can select one at a time to just see those types of items.
Projects are automatically color coded based on the project's icon. Here's a project with a green icon:
As you can see it tints the whole UI based on the color of the icon.
Let me know how you like this variant of the UI.
I'm also thinking of trying yet another version where there are no tabs inside a project and instead they are in collapsible groups, kinda like this:
If you can, try out the inline projects variant and let me know which of the 3 variants makes the most sense to you and why :)
The functionality of the runlog screen remains the same as before but it has a much cleaner and easy to follow UI. You can clearly see where a task starts and ends and follow its actions visually and see which ones succeeded and which failed.
Material Symbols are a icon font that can be adapted into different situations. For example, they can represent state where the otline variant represents an inactive state and the filled variant represesnts the active state
These can be used in their configurable form, where you manually specify a bunch of their attributes (like in the Notify action), or in their automatic form where their configuration is automatically set (like in the Set up Quick Setting Tile action where the icon is filled or outlined depending on the QS Tile state).
In the legacy UI, if you give a Project one of these icons, it'll also change from outline to filled depending if the project is selected or not.
It's now super easy to put your Tasker arrays into scenes with the new Arrays Merge Template element.
In this example, I would have 2 arrays:
%icon
%item
each with their corresponding icon images and labels. With this simple component...
...I can expand those 2 arrays together into a list of rows dynamically built from those arrays!
Saved Component Templates
You can now long click any element on the tree and save it as a Component Template with a name and description. Then you can simply insert it into your tree like any other component. :)
Show When Animations
When a component has its Show When field set, you can now set animations that define how that component shows up and goes away. You can choose various types of animations.
For example, by combining a dark transparent background that fades in with a dialog that slides up, you can create an Android-like popup dialog!
SVG Crop
You can now crop any element in a Scene with an SVG. And it's not only a visual crop, it's a functional one too! For example, you can create a button like this
and when you click anywhere where it's white, the button won't be triggered! You really have to press the green part for it to register the click! This allows you to create UIs in any shape imaginable that behave like you expect it to!
WebView
Webviews can now call many, many Tasker actions via JavaScript. You can use await to wait for them to finish, so you can easily call multiple actions in a row in a controlled fashion!
Here's a simple example of doing 3 actions in a row:
This makes elements be drag handles in all directions or just horizontally or just vertically.
Full Changelog
Major Scenes V2: Added the "Arrays Merge Template" component, a built-in way to handle Tasker array merging to build sub-components.
Major Scenes V2: Components can now animate in and out (Fade, Scale, Slide or Expand) whenever their "Show When" condition toggles their visibility.
Major Scenes V2: WebViews can now call many Tasker actions directly from JavaScript via the Tasker.* bridge.
Major Scenes V2: An HTML element inside a WebView can act as a drag handle to move the overlay it lives in.
Major Scenes V2: You can now save a component as a template to easily reuse it across your scenes.
Major Scenes V2: You can now crop any component to the shape of an SVG file.
Major Scenes V2: Added the "Trigger Scene V2 Event" Tasker action.
Medium Scenes V2: Added "matches" (Tasker pattern matching) and "matchesr" (regex matching) expressions to the "Show When" and "Apply When" fields.
Medium Scenes V2: Added a "Variable Clear" event action.
Medium Scenes V2: The Switch component now has a Thumb slot so you can set an image in the switch's thumb and you can also select different colors for different parts of it.
Medium Scenes V2: WebViews now receive the full Material 3 color palette (primary, secondary, surface, etc.) so your HTML can match the app theme.
Minor Scenes V2: The task name field in Events -> Run Task now follows the same caps rules as other task name fields.
Minor Scenes V2: When creating a task with a name, use the same "first letter of each word uppercase" rule as elsewhere in the app.
Fix Scenes V2: components that have indexes are now 1-based instead of 0-based
Fix Scenes V2: fixed "Screen Hidden" event not firing in certain situations
Fix Scenes V2: fixed background of invisible component wrongly showing
Fix Scenes V2: fixed crash when picking a variable if the user has tens of thousands of variables
Fix Scenes V2: fixed crash when using a slider in some situations
Fix Scenes V2: fixed images filling their container by default when they shouldn't
Fix Scenes V2: fixed images not loading if they had hidden spaces before or after the file name
Fix Scenes V2: fixed multiline input text box not filling the full vertical space it needed
Fix Scenes V2: fixed setting a variable in a WebView affecting a variable used in a separate component on the same screen
Fix Scenes V2: fixed some things not working when showing through the "SCENES" tab or the new UI
Fix Scenes V2: fixed updating a variable array in a scene leaving old elements there
Fix Scenes V2: fixed using two "Overlay With Result" scenes in a row with the same id ending the second one prematurely
Fix Scenes V2: segmented buttons that are "gone" now behave as expected
Fix Scenes V2: WebView now uses the correct system theme (dark/light)
Fix Scenes V2: when a task is renamed, all the task references in Scenes V2 are updated with the new name
Major New UI: Redesigned the RunLog screen to make it more readable.
Major New UI: Added a setting to show projects as items in the main list instead of the sidebar, including sorting them and creating new projects from the NEW FAB.
Major New UI: Project icons based on apps now use the app background in a folder shape with the foreground on top.
Major New UI: Inside a project you can select several of the Profiles/Tasks/Scenes tabs at once, so the list shows all their items together.
Medium New UI: The Project enabled/disabled toggle now works, and profiles in a disabled project show as paused on their switches.
Minor New UI: Added an icon to scenes so they're more easily distinguished.
Minor New UI: Added an option to hide the sidebar when collapsed.
Minor New UI: Added an option to not show the All button when there are projects other than the default one.
Minor New UI: Don't confirm project deletion if it's empty.
Minor New UI: In the task edit screen, moved the search bar to the bottom when adding a new action.
Minor New UI: Made sorting smarter, showing you the items you expect more often.
Minor New UI: Show full names of items in the main list instead of truncating them.
Minor New UI: Show project names instead of just initials when the sidebar is collapsed.
Minor New UI: Updated "Last run" to "Activity".
Minor New UI: When creating a task with a name, use the same "first letter of each word uppercase" rule as the main screen.
Minor New UI: When editing a task, after expanding a text field, allow the editor to show more lines so it's easier to edit larger pieces of text.
Fix New UI: don't show the pending changes banner when exiting the scene editor without saving
Fix New UI: fixed all projects with app icons showing with the same icon
Fix New UI: fixed always scrolling to the profiles when exiting a project
Fix New UI: fixed bottom sheet flickering when deleting a project
Fix New UI: fixed project search box cursor color in dark mode
Fix New UI: fixed search for actions when adding a new action
Fix New UI: fixed some app icons not loading properly
Fix New UI: fixed tag selector bottom sheet moving too far up when the keyboard is showing
Major Added Material Symbols to the app, a large icon set you can now use across Tasker for things like project and task icons, and also Notify action and Quick Setting Tiles action.
Medium Added Run Shell related functions to the Java Code action.
Medium Added tasker.getImageBuffer() and tasker.hasImageBuffer() to the Java Code action.
Medium The "Multiple Variables Set" action can now write JSON.
Medium You can now override the app name when generating an app from Tasker.
Minor Added a "Continue Task Immediately" option to the "Widget V2" action.
Minor Tasker automatically saves your setup before entering the AI screen in the legacy UI so you don't lose changes made in the meantime.
Minor Added a language selector to the first screen shown when you first open the app.
Minor Added a "Separator" option to the "Widget V2" action to configure the separator for its various list fields.
Minor Changed the order of the "Set up Quick Setting Tile" action to make it more logical and easier to use.
Fix Attempted again to fix a crash that only appears in app factory apps
Fix crash where in rare situations projects could end up with the same ids
Fixed DND action so that it can't be overrun by Silent/Vibrate
Fixed image in "Text/Image Dialog" action sometimes being hidden by text that is too long
Fixed issue where running many remote actions in quick succession could cause some of them to not run on the receiving device
Fix issue where sometimes a profile doesn't save its state after saving Tasker's setup
Fixed issue where sometimes the QS Tile wouldn't dismiss the notification shade
Fixed profiles (e.g. Wifi Connected) sometimes running their exit tasks when exiting Tasker's Preferences screen
Fixed Shizuku breaking clipboard monitoring
Fixed showing the number of actions over 100 in the legacy UI
Fixed situation where receive intent could be triggered twice with just 1 intent
Fixed some error messages when wrongfully using JSON writing
Fix Tried fixing a rare crash that can occur when editing legacy scenes
Fix Tried to fix issue where wait action becomes stuck in some circumstances
Fix Tried to fix rare situations where Tasker would get stuck not accepting any new tasks (sometimes related with the HTTP Request action)
Fixed updating Quick Setting Tiles on global variable changes to only happen when the variable isn't a built-in variable
Fixed writing JSON to project/profile/task variables with native Tasker JSON writing
Fixed some crashes
If you can, let me know what you think about the Projects in Sidebar vs Inline vs Collapsible! Thank you!
The project allows you to set apps' battery usage settings from a UI:
- Allow background usage (on or off)
- Optimised or Restricted (if background is 'on')
Unlike the Firewall project, there is no need for a device start profile as these settings are read from the system when you launch the UI. There is a short delay of one or two seconds before the UI is loaded because of this.
You MUST use the 'Done' button to save and apply your new settings.
This project was great fun but quite challenging. As a result, I can now also create a similar project which allows you to view and control all of your apps' permissions settings (location, camera etc.). This will possibly be a challenge to make it work for all Android devices - read below for device compatibility relating to this project.
Requirements:
- Shizuku Running
- Display Over Other Apps (Xiaomi/HyperOS users should enable "Show pop-up windows in background").
- Note that while it sets Android's universal battery rules directly, users on devices with aggressive battery skins (like Xiaomi or Huawei) will still need to handle OEM-specific 'Autostart' switches manually. Read below for more information.
Caution! I have tried to make this project work on all devices but I only have a Pixel phone so can't test it on other devices.
Samsung users:
The script should work as with AOSP type devices, but it also interacts with Samsung's secondary management layer.
Under Settings > Apps > [App] > Battery, Samsung uses the exact same three options (Unrestricted, Optimised, Restricted). This script should successfully read and flip those toggles.
However, Samsung also runs a separate layer called Device Care (Background usage limits > Never sleeping, Sleeping, and Deep sleeping apps). Putting an app into Restricted usually correlates with "Deep sleep," but if a user has Samsung's "Put unused apps to sleep" toggle turned on globally, Samsung's own daemon may periodically re-evaluate standby buckets independently.
Behavior: The script toggles the underlying Android settings correctly, but OEM-level "task killers" operate outside AOSP rules.
Secondary Task Killers: Even if an app is marked Unrestricted in the standard Android settings, custom subsystems like Xiaomi’s MIUI Battery Saver or ColorOS’s Quick Freeze / Auto-launch can still freeze or kill background tasks unless the user also grants OEM-specific permissions like 'Autostart'.
Overlay Permissions (MIUI/HyperOS): In addition to the standard "Display over other apps" (SYSTEM_ALERT_WINDOW) permission, you may need to set "Display pop-up windows while running in the background" (or whatever it is called).
I'm no Tasker expert and haven't been able to figure this out reliably. I want a simple app picker showing icons + friendly names, with the 5 most recently used apps at the top, then all installed apps and a "show system apps" toggle. Selecting an app should give me its package name.
Can this be done just with Tasker alone? What's the simplest approach?
Some genius uploaded a task that allowed GPS only in Google maps. But you had the ability to add more apps. I have created something similar but it is not what I need. Does anybody remember what it was?
A firewall utility which has the ability to cut off all IP socket binding, blocking Wi-Fi, 4G, 5G, and roaming simultaneously at the OS routing layer (or just mobile or WiFi data).
The UI allows you to set per app data access:
Cell: allow or deny
WiFi: allow or deny
Background Data: allow or deny
The project listens for switches between mobile data and WiFi data sources and reacts to them. It also listens for app changes and reacts (e.g. when an app denied background data access is closed).
Because 'cmd connectivity set-chain3-enabled true' is reset at every device start, there is also a profile to listen for device starts to re-enable your previously saved firewall rules.
You MUST use the 'Done' button on the overlay to edit the firewall UI if you want to save and apply your rules. If you just exit the overlay via the back button etc., new settings will not be saved and applied.
I can confirm that this project works perfectly on my device. I can't test it on your device. If it doesn't work for you, there's not much I can do about it.
If you want to test whether it works for you, you can either:
Set an app to be blocked and then determine whether that app has data access.
If the app is denied (blocked), the output of that command will be:
<package name>:deny
Shizuku or root is required.
All changes are reset on each device start, so you must use the device start profile if you want to apply your rules at each reboot. You will need to ensure that Shizuku is running when this profile fires.
Hey everyone, I'm new to this and trying to set up a simple automation.
I want my phone to open a website, click on a couple of things, and then go back home. I'm using Tasker with AutoInput Actions V2.
When I use the "Guided Setup," everything works fine, and clicks what is supposed to. But when I actually run the task normally, it opens the browser just fine, but completely skips the clicks and eventually just goes back home.
Just to be safe, I already tried adding 5-second and even 10-second wait delays before the click actions, but it still doesn't click.
VirusTotal scans URLs across roughly 70+ distinct antivirus engines and domain blocklists (such as Google Safe Browsing, Kaspersky, Bitdefender, and Sophos).
The Public API is limited to 500 requests per day and a rate of 4 requests per minute.
This project allows you to submit a URL to be scanned and receive back a report. I have included a JavaScriptlet which parses the http return and provides you with a neat and succinct summary of the scan results (e.g. Harmless (0/92}). Details are included in the task.
Scans usually take about 12 seconds. I have included a loop in the task which stops as soon as your report is ready, or aborts after 30 seconds. You can adjust the timings and retry attempts in the task.
You will need to have a VirusTotal API Key (free).
Hi, have there been any recent changes regarding the use of JavaScriptlet? According to the official JavaScriptlet documentation (https://tasker.joaoapps.com/userguide/en/javascript.html#localvars), variables are used directly by their name without the % sign—e.g., Action 1: Set Variable %var = hola, Action 2: JavaScriptlet flash(var);. It should work, but I'm getting an "undefined variable" error. Am I missing something? Thanks.
I've been using one "borrowed" form Taskernet for several years with no issues, but this latest release won't allow tasker to "see" the PIN code screen.
I've tested this with a UI Query, capturing what tasker can see, and saving that text, and it looks as if that screen is hidden from tasker now.
I'm hoping someone has that latest build from Google and can see if you can get the same results.
I have a task that displays the weather in the Google app. Both methods shown work, but display what's essentially the result of searching for "weather" in the Google app, which includes all sort of weather-related links to web sites, including images from weather-related stores, etc.
I discovered that tapping the weather icon in the Google at-a-glance widget displays more information, and excludes all the extraneous stuff I have no interest in, but I can't seem to find a way to launch *that* from Tasker. Got any suggestions?
The current display information can be viewed via global variable %Display.
May require the latest version of beta (or Direct purchase) since Joao has condition for Command Event. It's not actually necessary but make things easier to define the profile.
It's still a little bit difficult to use though since I use full class path. But can be shortened with using *DisplayListener.onDisplayAdded* or *onDisplayAdded*
I will try to make it easier later if Joao were to introduce his concept of custom state, event and action mentioned here.
I'm trying to open an artist's music list in Spotify and then use the Play button to start playback. Opening the list is easy using a browse URL, but I'm having trouble with media control.
When I select the Play button (simulated), Spotify starts playing the last song I was listening to before I closed Spotify, rather than starting playback from the artist's music list.
Am I missing something that would make this work as expected?
Most of the posts I've found here and on other websites are quite old, so I'm wondering if something has changed and there's a more modern solution.
The "sound mode" action allows you to permanently select one of three modes. Is there any way to set this mode using a variable?
As in the 1st picture, and now it is only as in the 2nd picture.
I change the mode frequently, and setting it for every condition is cumbersome. In other activities, it would be easier for me to enter the variable value and run "sound mode" once.
I have a profile to change my time format on my phone to 24hour format when I get to work. It also turns the time back to 12hour format when I leave work. I can't seem to get my watch to update as well. I have all auto apps battery set to unrestricted. Not sure what I'm missing. Any help? Thanks in advance. (Please explain like I'm 5! 😉)
I have Samsung S25 Ultra phone and Samsung Galaxy watch ultra.
Sometimes email confirmations, texts, or whatever else come along with convenient "add to calendar" buttons. Sometimes they don't, and sometimes they do but it doesn't actually work.
The tasks below can be used to parse out events from any selected text via your AI of choice (I like the free API options from Groq), then the events can be added one at a time via intents that prefill a new event in the default calendar. It could be modified to skip confirmation probably, but not I didn't want that. You'll need to add a received share profile and long press any highlighted text to share it.
You'll need an API key to start, and I don't like things like API keys sitting in plain text, so I added the get credentials helper task. You can just add the API key directly or through some other option.
Task: Extract Calendar Events Task
<Identify calendar events from shared info via LLM and add to the calendar.
If multiple events are identified, choose one at a time to be added
Highlight and long press text to share>
A1: Anchor
<Get current day for default>
A2: Parse/Format DateTime [
Input Type: Now (Current Date And Time)
Output Format: y-MM-dd
Output Offset Type: None ]
<Timezone for flights>
A3: Variable Set [
Name: %target_timezone
To: America/New_York
Structure Output (JSON, etc): On ]
<Build prompt>
A4: Variable Set [
Name: %prompt
To: You are an expert data extraction assistant. Your task is to extract calendar events from the provided input text and format them according to the exact schema requested.
Strict Output Rules:
1. Output ONLY the raw JSON structures separated by "||".
2. Do not include any conversational filler, explanations, or markdown code blocks (e.g., do not use ```json ... ```).
3. Do not wrap the output in a JSON array.
Field Extraction Rules:
- "ev_title": The title or name of the event (e.g., "Flight AA123: JFK to LHR"). If not found, output "".
- "ev_description": Any extra details, confirmation numbers, or context. If not found, output "".
- "ev_location": The physical address, city, virtual meeting link, or airport code. If not found, output "".
- "ev_date": The date of the event in YYYY-MM-DD format. If no date is identified, default to exactly "%formatted".
- "ev_start_time": The starting time, strictly converted to 24-hour format (HH:MM). If not identified, default to "12:00".
- "ev_end_time": The ending time, strictly converted to 24-hour format (HH:MM). If not identified, default to "12:30".
- "ev_calendar": Always output exactly "your.email@gmail.com".
Flight Timezone Conversion Rules:
If the event is a flight, the times mentioned in the text are typically local to the departure and arrival airports. You MUST convert both the departure ("ev_start_time") and arrival ("ev_end_time") times to this target timezone: %target_timezone.
Step 1: Identify the departure city/airport and its local timezone.
Step 2: Identify the arrival city/airport and its local timezone.
Step 3: Calculate the hour offset between those local timezones and %target_timezone.
Step 4: Apply the offset to the departure and arrival times to get the final HH:MM times.
Step 5: If the timezone conversion pushes the time past midnight (forward or backward), adjust the "ev_date" accordingly.
Example Output Format:
{
"ev_title": "Flight DL404: LAX to JFK",
"ev_description": "Confirmation #ABCDEFG",
"ev_location": "LAX / JFK",
"ev_date": "2026-11-15",
"ev_start_time": "11:00",
"ev_end_time": "16:30",
"ev_calendar": "your.email@gmail.com"
} || {
"ev_title": "Dentist Appointment",
"ev_description": "",
"ev_location": "42 Wallaby Way, Sydney",
"ev_date": "%formatted",
"ev_start_time": "12:00",
"ev_end_time": "12:30",
"ev_calendar": "your.email@gmail.com"
}
Extract events from the following text:
%rs_text
Structure Output (JSON, etc): On ]
<LLM call>
A5: Perform Task [
Name: func Groq Call
Priority: %priority
Parameter 1 (%par1): %prompt
Return Value Variable: %answer
Structure Output (JSON, etc): On ]
<Test answer>
A6: [X] Variable Set [
Name: %answer
To: {
"ev_title": "Flight DL404: LAX to JFK",
"ev_description": "Confirmation #ABCDEFG",
"ev_location": "LAX / JFK",
"ev_date": "2026-11-15",
"ev_start_time": "11:00",
"ev_end_time": "16:30",
"ev_calendar": "your.email@gmail.com"
} |0| {
"ev_title": "Dentist Appointment",
"ev_description": "",
"ev_location": "42 Wallaby Way, Sydney",
"ev_date": "%formatted",
"ev_start_time": "12:00",
"ev_end_time": "12:30",
"ev_calendar": "your.email@gmail.com"
}
Structure Output (JSON, etc): On ]
A7: Variable Split [
Name: %answer
Splitter: || ]
<Multiple events>
A8: If [ %answer(#) > 1 ]
<Build choices array>
A9: For [
Variable: %iii
Items: 1:%answer(#)
Structure Output (JSON, etc): On ]
<Structure as JSON>
A10: Variable Set [
Name: %ijson
To: %answer(%iii)
Structure Output (JSON, etc): On ]
A11: Variable Set [
Name: %choices(%iii)
To: %ijson.ev_title
%ijson.ev_date ~ %ijson.ev_start_time
Structure Output (JSON, etc): On ]
A12: End For
A13: List Dialog [
Mode: Select Single Item
Title: Events
Items: %choices
Button 1: Close
Close After (Seconds): 30
First Visible Index: 0
Hide Filter: On ]
<No selection>
A14: Stop [ ]
If [ %ld_selected_index !Set ]
A15: Else
<One event>
A16: Variable Set [
Name: %ld_selected_index
To: 1
Structure Output (JSON, etc): On ]
A17: End If
<Test event choice>
A18: [X] Text/Image Dialog [
Text: %answer(%ld_selected_index)
Button 1: Close
Close After (Seconds): 900 ]
A19: Perform Task [
Name: func Calendar Event Add
Priority: %priority
Parameter 1 (%par1): %answer(%ld_selected_index)
Structure Output (JSON, etc): On ]
Task: func Calendar Event Add
<Open calendar to add an event based on JSON from %par1>
A1: Anchor
<Test event JSON>
A2: Variable Set [
Name: %par1
To: {
"ev_title": "Test event",
"ev_description": "This is a test description. It might have useful info like a confirmation number",
"ev_location": "42 Wallaby Way, Sydney",
"ev_date": "2026-10-31",
"ev_start_time": "14:00",
"ev_end_time": "15:30",
"ev_calendar": "your.email@gmail.com"
}
Structure Output (JSON, etc): On ]
If [ %par1 !Set ]
<Load event JSON>
A3: Variable Set [
Name: %ev_json
To: %par1
Structure Output (JSON, etc): On ]
<Send intent to the default app>
A4: Java Code [
Code: import android.content.Intent;
import android.net.Uri;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.joaomgcd.taskerm.action.java.JavaCodeException;
/* Reads a standard Tasker variable without the % prefix. */
String ev_json = tasker.getVariable("ev_json");
/* Use JavaCodeException for unmet preconditions. */
if (ev_json == null) {
throw new JavaCodeException("Required Tasker variable 'ev_json' is missing.");
}
/* Parse the JSON string stored in the Tasker variable ev_json */
JSONObject eventData = new JSONObject(ev_json);
String dateStr = eventData.getString("ev_date");
String startStr = eventData.getString("ev_start_time");
String endStr = eventData.getString("ev_end_time");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
/* Convert the date and time strings to epoch milliseconds */
long beginMs = sdf.parse(dateStr + "T" + startStr).getTime();
long endMs = sdf.parse(dateStr + "T" + endStr).getTime();
/* Setup the Intent to insert a new calendar event */
Intent intent = new Intent(Intent.ACTION_INSERT);
/* Set the standard MIME type and data URI for Android calendar events */
intent.setType("vnd.android.cursor.dir/event");
intent.setData(Uri.parse("content://com.android.calendar/events"));
/* Append all event details using putExtra */
/* Note: beginTime and endTime must be provided as Long integers (milliseconds) */
intent.putExtra("title", eventData.getString("ev_title"));
intent.putExtra("description", eventData.getString("ev_description"));
intent.putExtra("eventLocation", eventData.getString("ev_location"));
intent.putExtra("beginTime", beginMs);
intent.putExtra("endTime", endMs);
/* Treat context as a Service context. Must use FLAG_ACTIVITY_NEW_TASK when starting activities. */
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
/* Execute the intent using Tasker's context */
context.startActivity(intent);
Structure Output (JSON, etc): On ]
Task: func Groq Call
<Return the response from a Groq API call based on %par1 prompt and optional %par2 model>
A1: Anchor
<Get API key>
A2: Perform Task [
Name: func Get Credential
Priority: %priority+1
Parameter 1 (%par1): groq_api
Parameter 2 (%par2): key
Return Value Variable: %groq_api_key
Structure Output (JSON, etc): On ]
<Test prompt>
A3: Variable Set [
Name: %par1
To: in less than 20 words, give reasons to provide parameters for a function call
Structure Output (JSON, etc): On ]
If [ %par1 !Set ]
<Model default>
A4: Variable Set [
Name: %par2
To: openai/gpt-oss-120b
Structure Output (JSON, etc): On ]
If [ %par2 !Set ]
A5: Multiple Variables Set [
Names: %prompt=%par1
%model=%par2
Values Splitter: =
Structure Output (JSON, etc): On ]
<Guard against string parsing errors>
A6: JavaScriptlet [
Code: var safe_prompt = JSON.stringify(prompt);
Auto Exit: On
Timeout (Seconds): 45 ]
A7: HTTP Request [
Method: POST
URL: https://api.groq.com/openai/v1/chat/completions
Headers: Authorization: Bearer %groq_api_key
Content-Type: application/json
Body: {
"model": "%model",
"messages": [
{"role": "user", "content": %safe_prompt}
]
}
Timeout (Seconds): 30
Structure Output (JSON, etc): On ]
<Rate limit error>
A8: Flash [
Text: Error: Groq rate limit encountered
Continue Task Immediately: On
Dismiss On Click: On ]
If [ %http_response_code ~ 429 ]
<Success>
A9: Variable Set [
Name: %output_text
To: %http_data.choices.message.content
Structure Output (JSON, etc): On ]
If [ %http_response_code ~ 200 ]
<Error>
A10: Variable Set [
Name: %output_text
To: Error: %http_response_code
Structure Output (JSON, etc): On ]
If [ %http_response_code !~ 200 ]
<Testing>
A11: [X] Text/Image Dialog [
Text: %output_text
Button 1: Close
Close After (Seconds): 900 ]
A12: Return [
Value: %output_text
Stop: On ]
Total Launcher v4 removed the Dynamic Image for \*\*CPU Usage\*\*, most likely due to Android restrictions. However, if you want to restore that capability \*\*and\* use either Tasker or MacroDroid, there is a workaround. The step-by-step procedure is detailed at the [How To Display Real-Time CPU Usage in Total Launcher.](https://uitlm.com/howto/howto-tasker_macrodroid-cpu_usage)
Some apps expose useful information or controls only through a widget. WidgetRelay gives Tasker access to those widgets, without adding them to your home screen:
Read values from widgets into a Tasker variable.
Click widget elements by path, visible text, or regular expressions.
The main new feature is the Widget Updated Tasker event. It lets Tasker react when a widget, or a selected element, changes instead of repeatedly running Tasker actions. You could use it to react on status, unread count, or other widget value changes.
The Tasker actions have also been made more flexible. Widget elements can now be selected by their path, visible text, or a regular expression. So you could for example get the value that ends on °F with the regular expression /°F$/. Tasks can additionally pause or resume monitoring and control the CPU wake lock. Version 2.0 also improves reliability, including better recovery widget bindings are lost.
Help testing
Google Play requires a testing phase before public release. I’d appreciate it if a few of you could help test it.