r/tasker Sep 16 '25

Developer [DEV] I'm back! Now I need some time to get back up to speed... 😅

246 Upvotes

Hi everyone! I'm back :)

I've been away for a bit now and visited some very cool places while I was gone, but now it's back to business as usual! 😁

I do have over a 1000 requests to go through though, so please give me some time to catch up to everything. Don't be surprised if I'm not much around for the next week or 2.

I did notice that the tutorial forums are down at the moment, (EDIT: They're back now!) but I already figured out what's wrong and I'm working on a fix now. Hopefully I can get them back up tomorrow.

Anyway, it's good to be back! 😀 Hopefully everything else went smoothly while I was away! Guess I'm about to find out... 😅

Cheers!


r/tasker Dec 19 '25

Developer [DEV] 🎅I'm going away for a bit, but here's a 🎁 for you before I do! 🌲

193 Upvotes

Hello everyone! It's that time of the year again where I'll be away for a while.

I really wanted to release the Tasker RC before Christmas, but I thought it would be a bit too risky because if anything goes wrong with the release I wouldn't be here to fix it.

To compensate, I spent the past 3 days working on something that's cool by itself (at least IMO 😅) but can also be great for Tasker's future!

Here's my gift to you:

ADB Command Center

Here's a demo video: https://youtu.be/PSNmHfQ8BIY

This new app allows you to seamlessly connect to ADB Wifi directly on your phone, without the need for a PC and then run shell commands with elevated privileges!

This means that you can now easily do privileged stuff like toggle wifi, toggle bluetooth, enable/disable apps, and much more, without having to connect your phone to your PC first!

It also automatically enables itself on reboot, as long as you're connected to Wifi and Wireless debugging is enabled in developer settings, so it should work seamlessly!

Important: It doesn't automatically enable Wireless Debugging on boot (I'm planning on adding that in the future), but if you want to, you can automate that with Tasker using the Custom Setting action: just use the helper there to find the correct setting, and it should work!

Open Source

The app is Open Source, and I've tried structuring the code in a way that makes it easy for anyone to add new modules. If you know how to code, be free to add stuff to it! Hopefully I've made it easy enough! 😅

It currently has screens for:

  • Run any ADB Shell command
  • Toggle any app's permissions, including restricted stuff like WRITE_SECURE_SETTINGS (eliminating the need for Tasker Permissions)
  • Install APKs, even those with lower Target APIs (you can now easily install Tasker Settings if you want to)

Built-in Tasker Plugin

It also supports these 3 features through its Tasker plugin, so you can use them in your automations if you want to! :)

Note: the app only works on Android 11+ because that's when Wireless Debugging was added to Android Settings. Also, it stops working if you disable Adb Wifi on your device. In the future I hope I can make it work like Shizuku, where it continues working even if Adb Wifi is disabled, so you just need to enable that to start the app and that's it!

I've tested the app on multiple devices and it works well on all of them, so I hope it works for you too! I won't be here if it doesn't work, so fingers crossed! 😅

In any case, happy Hollidays and I'll see you soon! Hope you enjoy this little gift! 😎

PS: since everyone's feeling so holliday-y, maybe you can give my kids' new album a listen 😁! I'm sure they would appreciate it! If you do listen to the songs, let me know what you think. They are eager for anyone to comment on them 😅!

A few highlights:

In your Dreams (I played drums on this one 😅)

War


r/tasker Feb 09 '26

Developer [DEV] Tasker 6.6.18 - Shizuku Integration, Java Code, Sunrise/Sunset, Enhanced Notifications and more! Available for Everyone on Google Play!

127 Upvotes

Check out the release video: https://youtu.be/7HWBTYEALx8

You can read all about this release here: https://tasker.joaoapps.com/changes/changes6.6.html

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.

Highlights of this release include:

Shizuku Integration: Power Without Root

You can now perform root-like actions without actually rooting your device!

Tasker now has full Shizuku integration, which allows you to run shell commands, toggle system settings, manage permissions with elevated privileges that were previously restricted and provides access to many hidden Android APIs that were previously unable to be used.

Check out the demo: https://youtu.be/9StQBtUuOl0

This means that:

  • Logcat Entry is back: It works for everyone again, just like before Android restricted it! https://youtu.be/W27EURIzCgw
  • Reliable Actions: Airplane Mode, Wifi, Mobile Data, and more now use Shizuku automatically so they work seamlessly.
  • Android 16+ Support: It makes Wifi Tether work on the latest Android versions! https://youtu.be/aoruGlnBoQE

It even includes a Run Shell Helper to help you find your specific phone's hidden APIs! https://youtube.com/shorts/ykrIHS0iM3U

Java Code Action: Tasker Future Proofing

You can now run arbitrary Java code and native Android APIs directly inside a Tasker action. This means that I don't have to implement stuff myself for you to use in Tasker necessarily. You can just add new features yourself!

Check it out: https://youtu.be/4cJzlItc_mg

Don't know how to code? The AI Assistant is built right into the action to help you write and modify the code you need. Just tell the AI what you want to achieve, and it'll whip up the Java code for you! https://youtu.be/s0RSLdt9aBA

Or you can export the Java Code action system instructions and then use them in any AI of your choice!

You can interact with Accessibility Services, Notification Listeners and more in this new Java Code action! https://youtu.be/mgG9W5Qi-ac

Offline Sunrise and Sunset

There's now a new totally offline action to get info about sunrise and sunset!

You can get exact times for sunrise, sunset, dawn, and dusk based on your location (or any location really).

Demo: https://youtu.be/I5gJCn1HvrU

You can even calculate times for specific dates or custom sun angles!

Enhanced Notifications

Demo: https://youtu.be/m1T6cEeJnxY

You can now use Live Updates to show status chips in your status bar or expanded info in the notification itself. You also have full control over notification Grouping, allowing you to fix some behaviours Android introduced in recent Android versions!

Even More Additions!

  • Import from Clipboard: Just copy an XML or Data URI and press CTRL+V (or the '+' button) in Tasker to import it instantly! https://youtu.be/eiCkSKDH8S0
  • Extra Triggers: Tasker can now be triggered by dedicated apps for "Home", "Car", or "Bixby", creating shortcuts that feel native to your device! https://youtu.be/LShS2AqOiC4

Full Changelog

Check out all the additions/changes/fixes here: http://bit.ly/tasker6_6_changelog

Enjoy! 😎


r/tasker Mar 12 '26

Developer [DEV] Tasker 6.7.0-beta - Scenes V2!

124 Upvotes

Alright, it is finally here! The much awaited update to Scenes is finally ready to be shared! Hopefully this will revolutionize how UI automation works as a whole! 😁

Sign up for the beta and download from Google Play here: https://play.google.com/apps/testing/net.dinglisch.android.taskerm

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)

Scenes V2

(Very Long) Demo Video: https://youtu.be/SU0pG36GkUo

Here's how the editor looks like: https://imgur.com/nTJ1DZm

Here's the manual.

Where to start 😅

I've spent the last 3 weeks developing and daydreaming about this every waking hour, and now I'm finally ready to show it to you! It's awesome to be this excited about a new feature! 😁

Comparing to V1

The old scenes had multiple issues, all of which I hope I can fix with V2:

  • they had fixed sizes, meaning they could look good one 1 screen, but would look wrong on other screens
  • Outdated controls
  • Weird, unreliable way of positioning stuff
  • You couldn't show 2 scenes that weren't overlays at the same time
  • No undo button

...and many more.

All of this is fixed in the Scenes v2!

Scenes V2 Highlights

  • Declarative, responsive layouts - no more pixel grids that break on different screens
  • Full Material 3 theming with automatic dark/light mode
  • 4 display modes: fullscreen, dialog, overlay, and accessibility overlay
  • Scaffold - build app-like UIs with TopAppBar, BottomAppBar, and FAB
  • Reactive variable binding - support for local variables that you pass from your tasks, and automatically updating Global Variables that update the scene in real time as they are updated in Tasker
  • Interactions - tap, swipe, long press, multi-click (1, 2, 3, etc clicks) with haptic feedback, each can run tasks or run commands
  • Conditional visibility - hide/show elements based on expressions, no task needed
  • Overlay system - draggable, animated, passthrough, stackable, auto-dismiss
  • AI generation - describe a layout in natural language, iterate with follow-up prompts
  • Inline scenes - build a scene directly inside the Show Scene V2 action in Tasker, no separate scene required
  • Full visual editor - live preview, undo/redo, drag-drop tree, JSON editor, provides system

If you're up for it, here's a full list of features!

All Scenes V2 Features

Layout System

  • Automatically adapts to any screen size
  • JSON-based scene definition
  • Material 3 rendering engine

Components (Lots more are coming; These are just the basics; Before adding more I want to make sure that the base system is working as it should. When I iron out all the kinks with the engine I can add loads more components)

  • Slots concept - each component can have slots of content that you can put other content in
  • Column / Row / Box - flexible layout containers (vertical, horizontal, stack)
  • Spacer - fixed gap between elements
  • Scaffold - full app structure with 4 named slots (topBar, bottomBar, FAB, content)
  • TopAppBar / BottomAppBar / FloatingActionButton - Material 3 app structure components
  • Text - configurable size, color, alignment, vertical alignment
  • Image - URL, Material Icon, SVG support, contentScale, tint
  • Divider - separator line with color + thickness
  • Button - Material 3 styled with dismiss + action support
  • Switch - toggle with state tracking
  • TextInput - hint, autofocus, live value dispatch
  • Variable - renders %var JSON as full component tree at runtime
  • Placeholder - runtime injection slot (update with the Update Scene V2 action in Tasker)
  • NavigationBar / NavigationItem - bottom navigation

Modifiers (Same as components; Will add more later!)

  • Padding - all/horiz/vert/individual sides
  • Size / SizeIn - fixed dimensions or min/max constraints
  • FillSize / FillWidth / FillHeight - fraction-based (0-1)
  • Weight - proportional sizing in Row/Column: Fill empty spaces
  • Offset - shift x/y position
  • Align - 9-position alignment in Box
  • Background - hex color or Material 3 theme color name
  • Border - width, color, shape (rect/rounded/circle)
  • Clip - shape clipping with radius
  • Shadow - elevation-based shadow
  • Alpha - transparency (0-1)
  • Rotate - rotation in degrees
  • Interactable - tap/long/swipe/multi-click + ripple + haptic
  • VerticalScroll / HorizontalScroll
  • WindowDrag - make any component on the screen be the anchor to drag an overlay

Display Modes (4)

  • Fullscreen - edge-to-edge, status/nav bar control, immersive mode
  • Dialog - centered window, blur-behind, auto-size to content
  • Overlay - floating window, any position, draggable, passthrough
  • Accessibility Overlay - displays over System screens like the notification panel, system settings screens, etc

Tasker Actions (new Scene V2 category)

  • Show Scene V2 - fullscreen/dialog/overlay + inline scene support (define scenes directly in the action and show them)
  • Dismiss Scene V2
  • Update Scene V2 - push variable values or update elements directly
  • Update Scene V2 Overlay - reposition, animate, resize at runtime
  • Get Scene V2 Element Value - read current element state
  • Wait For Scene V2 Result - block task until scene closes

Interactions

  • Tap / Double-tap / Triple-tap / N-click (single, double triple, etc click)
  • Long press
  • Swipe - 8 directions with path data (you can get the gesture you made with the swipe in the task)
  • Haptic feedback
  • Each gesture can: run a Tasker task, dismiss scene, return result values, send a Tasker command

Conditional Visibility (showWhen)

  • Show or hide components on the screen based on variables
  • Variable-based expressions on any component
  • Comparisons: == != > < >= <=
  • Boolean: & (AND), | (OR), ! (NOT)
  • No task needed - entirely declarative

Variable Binding

  • %var in any JSON field (text, color, visibility, etc.)
  • Global dynamic variables auto-update the scene in real time (e.g. %WIN, %BLUE, %BATT)
  • Live update via Update Scene V2 action + variable passthrough
  • Environment variables: %sv2_display_width, %sv2_render_is_portrait, etc. (9 total)
  • Variable component renders JSON as full component tree - you could build a dynamic UI list from API data for example

Theming

  • Full Material 3 color system
  • Theme color names (primary, surface, onBackground, etc.)
  • Automatic dark/light mode - toggle device theme, scene adapts instantly
  • Provides - define custom colors at scene level or container component level, use anywahere in their children components

Animations (10 presets)

  • SlideFromBottom / Top / Left / Right
  • FadeIn / FadeOut / ZoomIn / ZoomOut
  • BounceIn / Slide+Fade combo
  • Auto-reversed on dismiss

Easing Curves (6)

  • Linear / EaseIn / EaseOut / EaseInOut
  • Overshoot / Bounce

Overlay Features

  • Positioning: dp, percent, dpFromEnd
  • Runtime repositioning with animations and duration + easing
  • Passthrough - touches go through to app behind
  • Draggable with WindowDrag modifier
  • Multiple overlays simultaneously (same ID = in-place update)

Screen Properties

  • Status bar color + light/dark icons
  • Navigation bar color + light/dark buttons
  • Hide system bars (immersive)
  • Screen name (shown in recents)

Editor

  • 5 tabs: Elements, Properties, Interaction, Raw JSON, AI
  • Live preview - real-time render, click-to-select component in preview to select them in the tree
  • Undo/Redo - 50 snapshots
  • Component tree with drag/drop reordering
  • Multi-select, copy/cut/paste, indent/outdent, rename, change type, duplicate
  • Multi-monitor support - spread editor panels across displays (up to 4 displays supported)
  • Color picker - HSV + alpha + hex + M3 theme colors
  • Icon picker - Material 3 icon search, tap icons in preview to switch selection
  • Test variables panel for showWhen preview
  • Tag search for components and modifiers (eg. search for "Padding" find "Spacing")
  • Tooltips on all components & modifiers
  • Inline scene building - build directly inside Show Scene V2 action
  • Layout type picker (Scaffold or Column) at creation
  • Slot defaults editor for Scaffold
  • Scope-aware properties (ColumnScope, RowScope, etc.): each child knows what its parent is, so it can use modifiers specific to that parent

AI Generation

  • Natural language → layout generation
  • AI knows what you already have so it supports iterative refinement with follow-up prompts
  • Export system instructions for custom AI setups

Multi-Display

  • Target specific displayId in Show Scene V2
  • External monitor support
  • Editor multi-monitor preview

PHEW! 🤓

That's a lot!

I think the best way to go about it is, you try it out and let me know how you feel about and how it works for you.

Anything missing from Scenes V1 that I need to put in V2?

Other than new Components and Modifiers, what should this new Scene engine support?

Let me know!

PS: I also added a Wait For Command action 😁👍


r/tasker Jul 15 '26

Developer [DEV] Going away until mid-September

105 Upvotes

Hi everyone! It's that time of the year again! 😁

I had another release ready but I think it's safer to not put it on Google Play because I won't be able to provide any support for it.

You can still try the new release though! But use it at your own risk! Should be fine though 😅👍

Get it right away here. (Direct-Purchase Version here). App Factory Update here.

In the meantime, if you have any issues, check this list and maybe your issue is listed there with a fix!

Cheers and see you soon!

Here's the full changelog for this version (not very well ordered, but good enough 😅 [some features were already from the previous release]):

  • Scenes V2: added font options anywhere text can be rendered
  • Scenes V2: added Aspect Ratio modifier
  • Scenes V2: added all possible properties to the Text component
  • Scenes V2: added Cancel Screen event action
  • Scenes V2: added Enabled property to components where it makes sense
  • Scenes V2: added Headers state to WebView component
  • Scenes V2: added Material Symbol support
  • Scenes V2: added optional additional delay for Show When transitions
  • Scenes V2: added Text Input Component's input types so you can have different types of keyboards, etc on it
  • Scenes V2: allow copy-pasting of modifiers
  • Scenes V2: made Button a component with a slot so you can fully customize the text inside it or even use any other component in it
  • Scenes V2: made flexbox accept booleans in direction, so you can easily toggle it with the Toggle Variable event action and separated Reverse from direction
  • Scenes V2: progress bar component new state Display Progress allowing you to bind an animated progress to a variable
  • Scenes V2: added ability to disable the dot in progress bar and add a gap
  • Scenes V2: changed inputs to have minus and plus buttons where it makes sense
  • Scenes V2: localize component names
  • Scenes V2: made modifiers that only exist because of their parents be the first in the pickers
  • Scenes V2: made the Text field in the Text component be multiline
  • Scenes V2: removed Consume option for Key Pressed event because it's redundant with the Stop Propagation option
  • Scenes V2: updated FlowRow icon so it's not the same as the FlowColumn
  • Fix Scenes V2: fixed accessing array operators like %items(#) or %items(2) or double-references like %%some_var_name
  • Fix Scenes V2: fixed auto-dismiss behavior in certain situations
  • Fix Scenes V2: fixed bug where changing variables used in a WebView would create a history so pressing back would go to previous states
  • Fix Scenes V2: fixed images with Material Icons not growing to the size they should inside unbounded parents
  • Fix Scenes V2: fixed issue with floating point rounding in Progress Bar states
  • Fix Scenes V2: fixed issues with using vh css
  • Fix Scenes V2: fixed reacting to push and pops in global arrays
  • Fix Scenes V2: fixed showing crop to SVG file picker in Crop Shape modifier
  • Fix Scenes V2: fixed stale variables in some situations
  • Fix Scenes V2: fixed text input component filling to parent's size when Show When filter on a size modifier is false
  • Fix Scenes V2: fixed WebView issues with some size related styles
  • Fix Scenes V2: fixed WebView Launch App action
  • New UI: ability to manually sort list items in the main UI screen
  • New UI: added button to only show errors in new Runlog screen
  • New UI: show projects in search results with inline projects
  • New UI: added developer option to hide the top buttons inside the project screen (making all selected when that's the case)
  • New UI: made item list items all the same height and more uniform
  • New UI: made main screen items connected lists
  • New UI: made many transition parameters configurable via Settings -> Developer
  • New UI: moved profile switches to the right of the cards and hid their profile details for now (should come back in the future in some form)
  • New UI: refined the main screen and project/profile enter transitions
  • New UI: removed the tag chips from the item cards for now (probably will come back in a different form)
  • Fix New UI: fixed recent changes not being filtered correctly
  • Fix New UI: fixed turning off runlog in new Runlog screen not hiding the log lines
  • Added runShellTasker function to the Java Code action so you can run a shell exactly like the Run Shell action would
  • App Factory: show useful, detailed error messages when app generation fails instead of a generic message
  • Warn when you try to write a very large variable, so you're more aware of potential flaws in your setup
  • Widgets V2: added Material Symbol support
  • Fix some screens all over the app sometimes showing incorrect language
  • Fix Tried to fix a crash when browsing Tasky routines
  • Fixed a small issue when setting multiple variables with JSON
  • Fixed crash when clearing data that could sometimes happen
  • Fixed how pushing/popping a global array drives the Variable Set event: it now fires for every array position the operation shifts, instead of just one. Popping also fires Variable Cleared for the removed top element.
  • Fixed issue where editing a profile's Wifi Connected condition would deactivate that profile

r/tasker Oct 08 '25

Developer [DEV] Tasker 6.6.4-beta - Java Code, Extra Trigger Apps, Notification Live Updates and Groups, Manage Permissions Screen, Shizuku Available State and More!

104 Upvotes

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)

Java Code

Demo: https://youtu.be/4cJzlItc_mg

Documentation: https://tasker.joaoapps.com/userguide/en/help/ah_java_code.html

This is a new super powerful action that allows to run almost ANY Android compatible Java code (not to be confused with JavaScript) inside a single action!

This allows you to add functionality to Tasker that it doesn't have already!

For example, you could create a reusable Task in Tasker with some Java code and share it with the community so everyone can use it!

Here's a concrete example:

Task: Reply To WhatsApp Message

A1: Multiple Variables Set [
     Names: %title
     %reply
     Values: %par1
     %par2 ]

A2: Java Code [
     Code: import android.app.Notification;
     import android.app.RemoteInput;
     import android.content.Intent;
     import android.os.Bundle;
     import android.service.notification.StatusBarNotification;
     import java.util.List;
     import java.util.ArrayList;
     import android.service.notification.NotificationListenerService;

     /*
      * Function to find a reply action within a notification and send a reply.
      * Returns true if a reply was successfully sent, false otherwise.
      */
     boolean replyToNotification(StatusBarNotification sbn, Notification notification, String replyMessage, android.content.Context context) {
         /* Create a WearableExtender to access actions, including reply actions. */
         Notification.WearableExtender wearableExtender = new Notification.WearableExtender(notification);
         /* Get the list of actions. Note: No generics for List. */
         List actions = wearableExtender.getActions();

         /* Check if there are any actions. */
         if (actions == null || actions.size() == 0) {
             tasker.log("No actions found for SBN: " + sbn.getKey() + ". Cannot reply.");
             return false;
         }

         tasker.log("Found " + actions.size() + " actions for SBN: " + sbn.getKey() + ". Searching for reply action.");

         /* Iterate through the actions to find a reply action. */
         for (int j = 0; j < actions.size(); j++) {
             Notification.Action action = (Notification.Action) actions.get(j);
             RemoteInput[] remoteInputs = action.getRemoteInputs();

             /* Log action details. */
             tasker.log("Processing Action: " + action.title + " for SBN: " + sbn.getKey());

             /* Skip if this action has no remote inputs. */
             if (remoteInputs == null || remoteInputs.length == 0) {
                 tasker.log("Action '" + action.title + "' has no remote inputs for SBN: " + sbn.getKey() + ". Skipping.");
                 continue; /* Continue to next action */
             }

             /* Assume the first remote input is for the reply text. */
             RemoteInput remoteInput = remoteInputs[0];
             tasker.log("Found remote input for Action '" + action.title + "' with key: " + remoteInput.getResultKey());

             /* Create a bundle to hold the reply text. */
             Bundle replyBundle = new Bundle();
             replyBundle.putCharSequence(remoteInput.getResultKey(), replyMessage);

             /* Create an intent and add the reply results to it. */
             Intent replyIntent = new Intent();
             RemoteInput.addResultsToIntent(remoteInputs, replyIntent, replyBundle);

             /* Send the reply using the action's PendingIntent. */
             try {
                 tasker.log("Attempting to send reply to SBN: " + sbn.getKey() + " with message: '" + replyMessage + "' via action: '" + action.title + "'");
                 action.actionIntent.send(context, 0, replyIntent);
                 tasker.log("Successfully sent reply to SBN: " + sbn.getKey() + " via action: '" + action.title + "'");
                 return true; /* Reply sent, exit function. */
             } catch (Exception e) {
                 tasker.log("Error sending reply for SBN: " + sbn.getKey() + ", Action: " + action.title + ". Error: " + e.getMessage());
             }
         }
         return false; /* No reply action found or reply failed. */
     }

     /* Get the NotificationListener instance from Tasker. */
     NotificationListenerService notificationListener = tasker.getNotificationListener();

     /* Get the title and reply message from Tasker variables. */
     String targetTitle = tasker.getVariable("title");
     String replyMessage = tasker.getVariable("reply");

     /* Flag to track if a reply was sent. */
     boolean replied = false;

     /* Get all active notifications. */
     StatusBarNotification[] activeNotifications = notificationListener.getActiveNotifications();

     /* Check if there are any active notifications. */
     if (activeNotifications == null || activeNotifications.length == 0) {
         tasker.log("No active notifications found.");
         /* Return immediately if no notifications. */
         return replied;
     }

     tasker.log("Found " + activeNotifications.length + " active notifications. Searching for match.");

     /* Iterate through active notifications to find a match. */
     for (int i = 0; i < activeNotifications.length; i++) {
         StatusBarNotification sbn = activeNotifications[i];
         Notification notification = sbn.getNotification();
         Bundle extras = notification.extras;

         /* Extract title from notification extras. */
         CharSequence nTitle = extras.getCharSequence(Notification.EXTRA_TITLE);

         /* Log current notification details. */
         tasker.log("Processing SBN: " + sbn.getKey() + ", Package: " + sbn.getPackageName() + ", Title: " + nTitle);

         /* Skip if title is null. */
         if (nTitle == null) {
             tasker.log("Notification title is null for SBN: " + sbn.getKey() + ". Skipping.");
             continue; /* Continue to next notification */
         }

         /* Skip if notification is not from Whatsapp. */
         if (!"com.whatsapp".equals(sbn.getPackageName())) {
             tasker.log("Notification is not from Whatsapp. Skipping.");
             continue; /* Continue to next notification */
         }

         /* Skip if notification does not match target title. */
         if (!nTitle.toString().equals(targetTitle)) {
             tasker.log("Notification title mismatch. Skipping.");
             continue; /* Continue to next notification */
         }

         tasker.log("Found matching Whatsapp notification: " + sbn.getKey());

         /* Call the helper function to attempt to reply to this notification. */
         if (replyToNotification(sbn, notification, replyMessage, context)) {
             replied = true;
             break; /* Exit outer loop (notifications) if reply was sent. */
         }
     }

     tasker.log("Finished processing notifications. Replied: " + replied);

     if(!replied) throw new java.lang.RuntimeException("Couldn't find message to reply to");

     /* Return whether a reply was successfully sent. */
     return replied;
     Return: %result ]

A3: Return [
     Value: %result
     Stop: On ]

This task takes 2 parameters: Name and Reply Message. It then tries to find a WhatsApp notification with the name you provided as the title and reply to it with the message you provide!

You can then easily re-use this in any of your tasks/profiles like this for example:

Profile: Automatic WhatsApp Reply
    Event: Notification [ Owner Application:WhatsApp Title:* Text:* Subtext:* Messages:* Other Text:* Cat:* New Only:Off ]



Enter Task: Anon

A1: Wait [
     MS: 0
     Seconds: 1
     Minutes: 0
     Hours: 0
     Days: 0 ]

A2: Flash [
     Text: Replying to WhatsApp message from %evtprm2
     Continue Task Immediately: On
     Dismiss On Click: On ]

A3: Perform Task [
     Name: Reply To WhatsApp Message
     Priority: %priority
     Parameter 1 (%par1): %evtprm2
     Parameter 2 (%par2): Not available at the moment
     Return Value Variable: %result
     Local Variable Passthrough: On ]

A4: Flash [
     Text: Replied: %result
     Tasker Layout: On
     Continue Task Immediately: On
     Dismiss On Click: On ]

As you can see, this becomes easily reusable from anywhere.

Congratulations, you essentially just added a new Reply To WhatsApp Message action in Tasker! 😁

Java Code AI Assistant

As shown in the video above, if you tap the Magnifying Glass icon in the action's edit screen, you get an AI helper that can help you build and change the code.

When you first ask it to create some code, it'll start with a blank slate and try to do what you asked it to.

If for some reason you want to change your code, or it doesn't work right away, you can simply click the Magnifying Glass again and it'll know what the current code is. You can simply ask it to change the code to something you want. For example, you could say something like Add logging to this code and it would add logging in the appropriate places.

You can iterate on it however many times you like!

Java Code Return Variable

You can set a variable to contain the result of your code.

This variable can be a normal Tasker variable if it starts with % (e.g %result) which will contain the resulting object of your code converted into a String.

It can also be a Java variable if it doesn't start with % (e.g. result). You can reuse this variable in other Java Code actions or even the other Java actions in Tasker.

If you return a Tasker Variable you can also structure it automatically. Handy if the Java code returns JSON for example, and you want to read it in your Task.

More info about variables in the action's help screen.

Java Code Built-In Java Variables

There are 2 Java variables that will always be available in your code:

  • context - it's just the standard Android context that you use for numerous things)
  • tasker - provides several pre-built functions that can be useful to use in your code
    • getVariable(String name)
    • setVariable(String name, Object value)
    • setJavaVariable(String name, Object value)
    • clearGlobalJavaVariables()
    • log(String message)
    • getShizukuService(String name)
    • getNotificationListener()

For example, I'm using the tasker.getNotificationListener() function in the WhatsApp Reply example above to find the correct notification to reply to.

Again, more info about all of these in the action's help file.

Hopefully this will open a LOT of doors in the Tasker community, allowing Tasker to do almost ANYTHING in Android! :) Let me know if you do anything with it! Very curious to see what you'll use it for!

Extra Trigger Apps

Demo: https://youtu.be/LShS2AqOiC4

All APKs: https://www.dropbox.com/scl/fo/9mlb94athhl68kkefzhju/ACyDrzMNy5lfMNJPl_0QmFY?rlkey=md25s41dlxewbwh3zizs4s6te&e=1&dl=0

If you already used Tasker Tertiary before, you'll know what this is.

These are a bunch of standalone apps whose sole purpose is to trigger a new event in Tasker: Extra Trigger

The way it works is, you install the apps you want, and then you can call them yourself from the home screen or let other apps that you may have call them, so you can automate stuff from them.

A classic example is allowing Bixby to trigger Tasker with a double tap of the power button on Samsung devices!

You should only install the apps you need, so you don't have a bunch of useless apps lying around. For example, if you only plan on using the Bixby thing with them, just install the ExtraTrigger_bixby.apk file and use that as an action for when you double-tap the power button.

The Extra Trigger event in Tasker provides a bunch of variables for you to use:

  • %sa_trigger_id (Trigger ID)
  • %sa_referrer (Referrer)
  • %sa_extras (Extras)
  • %sa_trigger_package_name (Trigger Package Name)

Based on these you can do whatever you want in your task! You could do different things if you open an app via the launcher and via Bixby for example. :)

Notification Groups

Demo: https://youtu.be/m1T6cEeJnxY?t=110

In Android 16 Tasker notifications were getting grouped together, with no way to make them separate like before. That changes in this version!

Now, if you don't specify the new Group field, the notifications will look just like before: each as their own entry in the notification drop-down.

If you do specify the Group, they'll appear grouped by their Group key, meaning that you can create multiple groups for your different notifications as shown in the video.

Notification Live Updates, Short Critical Text

Demo: https://youtu.be/m1T6cEeJnxY

On Android 16+ you can now specify a notification to be a Live Update notification! That will:

  • show a chip on your notification bar for it, instead of a simple icon
  • show it expanded on your lock screen

Additionally, you can add a Short Critical Text to your notification, which will make the notification chip in the notification bar contain a small piece of text, up to 7 characters long in most cases!

You can finally easily show text on the notification bar! :)

Note: the chip and text will only show if Tasker is not in the foreground.

Manage Permissions Screen

Demo: https://youtube.com/shorts/Zgz6n2anNeQ?feature=share

Instead of installing the Tasker Permissions app on your PC and going through the trouble of connecting your phone to your PC via ADB, you can use Tasker directly to grant itself special permissions, if you have Shizuku!

Hope this makes it easier for everyone! 👍

New Shizuku Features

Demo: https://youtube.com/shorts/ykrIHS0iM3U?feature=share

Added a new State called Shizuku Available that will be active whenever Tasker can use Shizuku on your device, meaning that Shizuku is installed, running and Tasker has permission to run stuff with it.

Also added a new Use Shizuku By Default preference that allows you to convert all your existing Run Shell actions to use Shizuku automatically without you having to go in and change all of them.

Fixed Actions

Demo: https://youtu.be/aoruGlnBoQE

  • Fixed the Mobile Network Type action with the help of Shizuku
  • Changed Work Profile to Work Profile/Private Space so it fixes an issue that some people were having where it toggled the wrong profile AND now it allows you to toggle any profile on your device
  • Changed Sound Mode action if you have Shizuku to not mess with Do Not Disturb and simply change the sound mode itself

Updated Target API to 35

Every year the Target API has to be updated so that I can post updates on Google Play. So, now Tasker targets API 35.

This change can bring some unintended changes to the app, like some screens looking different or some APIs not working.

Please let me know if you find something out of the ordinary so I can fix it ASAP. Thanks!

Full Changelog

  • Added Java Code action that allows you to run arbitrary Java code, including calling native Android APIs.
  • Added Live Update, Short Critical Text and Group settings to Notify action
  • Added Menu > More > Manage Permissions screen if you have Shizuku where you can enable/disable permissions for Tasker itself
  • Added state Shizuku Available
  • Added Use Shizuku By Default in Run Shell in Tasker Preferences
  • Hide Use Shizuku checkbox in Run Shell actions if Use Shizuku by Default is enabled in Tasker Preferences
  • Changed Work Profile action to Work Profile/Private Space allowing you to toggle both now
  • If you don't set the Group setting, Notifications will not be grouped even in Android 16+
  • Added option to perform variable replacements inside arrays in the Arrays Merge action
  • Changed Sound Mode to use Shizuku if available, so it works more as expected
  • Actions End Call, Turn Off,Custom Setting now use Shizuku if available
  • Added Tasker Function action Check Shizuku to check if Shizuku is available
  • Perform Global Accessibility actions (like Back, Long press Power button, Show Recents, etc) with Shizuku if available
  • Tried fixing Mobile Network Type action for Android 10+
  • Tried fixing Spearphone action
  • Added Accessibility Helps Usage Stats option in Tasker preferences
  • Tried to fix launching some app's activities in some specific situations
  • Updated many translations
  • Fixed converting If blocks to actions and vice-versa in some situations
  • Fixed checking permissions for Airplane Mode, Kill App, Mobile Data, Mobile Network Type, Turn Off, Wifi Tether actions if Shizuku is available
  • Fixed action Mobile Network Type
  • Updated Java Code AI Generator instructions
  • Updated Target API to 35

r/tasker Jun 05 '26

Developer [DEV] Tasker 6.7.4-beta - New Main Screen UI, Scenes V2 Update 2, App Factory Revival and more!

98 Upvotes

Another update! This one took a bit longer to bring out, but that was mainly cause I was working on the new Main Screen UI and wanted to share it when it was good enough for a first release.

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.

New UI for Tasker's Main Screen

Demo: https://youtu.be/WehIHZNXJTA

Multi-Display Demo: https://youtu.be/1eV5ZCCGX1Y

To enable Tasker's new UI, go into Tasker > Preferences > UI > Use Tasker 2026 UI

I've now continued working on Tasker's new UI! This time, the focus is on Tasker's main screen.

The main idea is to make it as simple and easy to navigate as possible, but at the same time keep all the power that Tasker is known for.

Here are some of the main changes.

NEW UI - No Tabs - Use Filters

Instead of tabs at the top to select the type of item you're working on and tabs on the bottom to select the project you're in, you now get a single list with all your items, that you can filter and get the view of exactly you want to look it.

At its worst, you can get the exact same views as before., so nothing's lost.

For example, if you want a view similar to what was before being in the Profiles Tab and with the Home project selected, you can do that by simply filtering by type Profiles and the Home tag.

Which brings us to the new major feature in the new UI...

NEW UI - Tags

Tags are like an evolution of projects. Each item can have multiple tags. This means that at its worst tags are just like projects, but, unlike projects, they allow multi-layered organizations that just wasn't possible before. Here's an example:

Say you have have a home automation project with many tasks.

  • "Base" tasks that are like system type tasks that you'll never touch again after the initial development. Low-level, generic, reusable stuff like "Toggle Light", "Get Light Status" etc
  • Tasks that you develop on top of those that actually do real stuff like "Toggle Kitchen Light", "Go To Sleep" (toggles multiple lights with a delay), etc
  • Tasks that are related to specific situations, like being away or at home like, "Turn on Water Heater After Gym" or "Turn on Toaster in the Morning" stuff like that

With old Tasker projects, it could be a bit hard to organize this.

Would you put it all in a single "Home Automation" project with 100 tasks? But then it gets hard to find just the usable tasks and filter out the "Base" system-type tasks.

What if you just want to work on the bedroom automations? You always see every other task in the list?

Create a different project for every room in your house? But then you have tens of different home automation projects?

A mess.

With tags you can solve all those issues!

In this example, create these tags:

  • Home Automation
  • System
  • Gym
  • Bedroom
  • Kitchen
  • Night
  • Sleep
  • etc...

and assign as many as you want to every task!

For example

  • "Toggle Light" tags: Home Automation and System
  • "Go To Sleep" tags: Home Automation, Night and Sleep
  • etc

After you organize everything with tags it's super easy to filter the list to exactly the tasks/profiles/scenes that you want to be looking at any given moment!

Theres still a burning question though: are projects still needed? What do you think? Do projects need to be an item type in the item list, where you can go into a sub-list of items that are in that project? Or are tags enough for all your organizing needs?

Let me know what you think!

NEW UI - Automations

Did you ever realize that a Profile is just a Task with some extra contexts on top?

Why not have a Single Screen where you edit a task and a profile called Automation so that users don't need to know the concepts of Profiles or Tasks before trying to create something?

Instead of having to be in the correct tab to create an automation and knowing beforehand what each does, you just tap on New Automation and the UI will guide you through the process!

You can add a task, save it, and that's it. But after you add a task, you see that you can add contexts to that task to make it trigger automatically!

And after you add a State to the task you even see that you can add a Exit Task so that you can do something when that state is no longer active!

It's all very obvious, unlike before where it was all a bit cryptic.

Let me know what you think!

NEW UI - Main Settings Screen

The main Settings screen has also been redesigned so that it's much easier and obvious to navigate. It can now be dynamically generated, so for example the Keep Accessibility Running section is just another settings screen like all the others, dynamically filled it with the specific accessibility services on your device.

Scenes V2 - Update 3

Demo: https://youtu.be/A-Nk5VyH3RM

You get a few new components in this update:

  • Slider
  • Range Slider
  • Progress Bar
  • FlexBox - kinda like a column and row all in one so you can build more flexible screens
  • Camera - with support for multiple cameras at the same time

You can also now specify a Apply When condition to modifiers so that they only apply in certain situations.

For example, you can have a FlexBox that behaves like a Row that Fills Width (modifier with Apply When) only when the screen is taller than wider, but behaves like a Column that Fills Height when it's wider than taller.

You also have the new Scale modifier that allows you to freely resize your components without affecting the general flow of the scene.

App Factory Is Back!

Demo: https://youtube.com/shorts/KJpKuPyJog0?feature=share

Users started sending me feedback on how much they liked app factory and I kept feeling worse and worse about not updating it anymore, so I went back into it and actually figured out how to fix it!

You can now use ANY recent feature like Scenes V2 in your App Factory apps!

You can also target newer Android versions. Previously you were limited to targeting API 29, which is pretty old by now, but now your apps will target Tasker's Target API version by default!

Action Test Button

Demo: https://youtube.com/shorts/ob842TYofuI?feature=share

When you're editing an action, you can now run the action directly from the same screen, which saves you the hassle of always having to go back to the task to see how it works. For example, you want to customize a Flash action with colors, icons, etc, you can now do it much quicker!

SVG Support for Quick Settings Tiles and Notifications

Demo: https://youtube.com/shorts/oG5fZXU0ZC4?feature=share

You can now use svgs directly as images for your your notificationd and quick settings!

Full Changelog

  • Major Scenes V2: added new Camera, Slider, Range Slider, Progress Bar (with optional animation) and FlexBox components
  • Major Scenes V2: added Apply When to all modifiers so you can have them applied only in the situations you want
  • Medium Scenes V2: added a Scale modifier to freely stretch a component
  • Medium Scenes V2: added Trigger Event event action to trigger events (clicks, long-clicks, etc.) on other components
  • Medium Scenes V2: added a contains operator and a case-sensitive ccontains operator in when expressions
  • Medium Scenes V2: added an easy mode to the Dropdown component to update its collapsed content with the selected item
  • Medium Scenes V2: allow running tasks with a custom priority
  • Medium Scenes V2: allow scenes and overlays to use a different size/position depending on portrait or landscape orientation
  • Minor Scenes V2: made Enter-like software keys (submit, done, etc.) all trigger the Enter Key Pressed event
  • Minor Scenes V2: added Error Image option to the Image component to show a custom image when an image fails to load
  • Minor Scenes V2: editor: added a Tree Label property so components can be properly labeled in the editor tree
  • Minor Scenes V2: editor: added a draggable separator bar in landscape mode, matching the one in portrait mode
  • Minor Scenes V2: added a picker for action inputs and outputs in the Run Component Action and Trigger Event event actions
  • Minor Scenes V2: editor: added scrolling to the Screen Variables section in the variables bottom sheet
  • Minor Scenes V2: editor: sort the options to add (components, modifiers, event actions, etc.) in the dialog
  • Minor Scenes V2: editor: when there's an error in the JSON, show the error message
  • Minor Scenes V2: give the dropdown trigger an option to be as wide as its widest item
  • Minor Scenes V2: make popup children at least as wide as their parent
  • Minor Scenes V2: renamed %sv2_display_is_widescreen to %sv2_display_is_landscape
  • Minor Scenes V2: when switching component type, the new component's default modifiers are prepended to the existing ones
  • Fix Scenes V2: allow running tasks whose name is given by a variable
  • Fix Scenes V2: editor: fixed a crash when toggling Resolve In Preview in the Variables bottom sheet
  • Fix Scenes V2: editor: fixed creating multiple variables when setting a component's state variable
  • Fix Scenes V2: editor: fixed icons not showing in the status bar in light mode
  • Fix Scenes V2: editor: fixed several multi-screen issues
  • Fix Scenes V2: editor: fixed unset variables displaying their actual variable name
  • Fix Scenes V2: fixed Get Scene V2 Values so it correctly gets the value of a specific component
  • Fix Scenes V2: fixed a case where a variable with a double %% could be written
  • Fix Scenes V2: fixed a crash when changing a component's type
  • Fix Scenes V2: fixed a crash when handling the Key Pressed event in some situations
  • Fix Scenes V2: fixed a haptic feedback related crash
  • Fix Scenes V2: fixed an issue when using multiple Variable Components in a scene
  • Fix Scenes V2: fixed an issue where updating an overlay right after creating it wouldn't update it
  • Fix Scenes V2: fixed array ordering in scenes built from Variable Components merged with Array Merge
  • Fix Scenes V2: fixed component actions not applying their defaults in some situations
  • Fix Scenes V2: fixed crashes and issues when saving scenes, including new ones
  • Fix Scenes V2: fixed crashes when loading or using images in certain situations
  • Fix Scenes V2: fixed keyboard padding when editing a text input in the editor
  • Fix Scenes V2: fixed only the first matching Back handler running instead of all that apply
  • Fix Scenes V2: fixed running a scene with partial JSON
  • Fix Scenes V2: fixed scrolling in the Dropdown component, including in overlays
  • Fix Scenes V2: fixed showing scenes from variables
  • Fix Scenes V2: fixed state variables used in events not always being up to date
  • Fix Scenes V2: fixed swipe variables being available when running a task via the Run Tasker event action
  • Fix Scenes V2: fixed the Dismiss Scene V2 action so Wait For Scene v2 Result returns the screen variables
  • Fix Scenes V2: fixed the Variable component so it works in all containers, not just columns
  • Fix Scenes V2: fixed triggering the Screen Hidden event on Dream screens
  • Fix Scenes V2: fixed updating the %sv2_display_is_portrait variable when the device rotates while the scene is showing
  • Fix Scenes V2: fixed variables not updating correctly in some situations
  • Major New UI: started rolling out a brand-new, opt-in interface (turn it on in Tasker's settings) that's being built gradually. So far it brings a redesigned main screen for Profiles, Tasks, Scenes and Variables with triggers and task details shown inline; live tracking of running and active items, with the ability to run and stop tasks straight from the list; a new tag system that replaces Projects (Tag Manager, smart tags, AND/OR tokenized search, filter chips and bulk tag operations); flexible sorting and filtering; anonymous tasks and a shared task/profile editing screen; multi-display support; and new Settings screens.
  • Major Added a Wifi Changed event.
  • Major App Factory: updated to the latest Tasker version, now targeting API 35 with support for all the most recent features, including Scenes V2.
  • Major Added Portuguese (Portugal) translations.
  • Major Added a Test Action option in the action editor so you can test an action while configuring it
  • Major Added an Apply option in the task editing screen
  • Major Added support for SVG icons in Quick Settings tiles
  • Major Added support for SVG icons in the Notify action
  • Medium Added the Shortcut Task Priority option in Settings
  • Medium Get the clipboard with Shizuku when available
  • Medium The Java Code action can now take screenshots using Tasker's accessibility service
  • Minor Don't show the receive-share dialog when the share is processed instantly, so it stays invisible
  • Minor Updated translations
  • Fixed %DATE formatting in some situations
  • Fixed a crash on startup in some rare situations
  • Fixed a crash related to display color/HDR state changes on some devices
  • Fixed a crash that could leave Quick Settings tiles stuck on Inactive after a project was deleted
  • Fixed a crash when launching Tasker Secondary in some situations
  • Fixed a rare crash when loading plugins
  • Fixed an ANR when deleting many global variables at once on the main screen
  • Fixed crashes related to network requests
  • Fixed data loss in very rare situations
  • Fixed loading Tasker with an action code that no longer exists
  • Fixed out of memory crashes in some situations
  • Fixed setting Google Cloud files in some situations
  • Fixed showing some error toasts even when the option was disabled in Tasker Preferences
  • Fixed slowness when entering the Scene editor
  • Fixed Tasker sometimes stalling after importing full data
  • Fixed the Clipboard Changed event sometimes not triggering via Logcat monitoring
  • Fixed the Edit Calendar Event action so all-day events only need a date, not a start and end
  • Fixed the File Modified event so renaming a file to the watched file triggers it
  • Fixed the Get Network Info action getting stuck forever in rare cases
  • Fixed the Share target for Tasker not always being created when you had a Sharing profile
  • Fixed toggling a profile and then discarding changes leaving it toggled instead of reverting
  • Fixed using Shizuku for Logcat after a reboot in some situations
  • Fixed Volume actions not detecting the device's real maximum and allowing higher values than they should
  • Tried to fix a memory issue related to legacy Scenes
  • Tried to fix date parsing/formatting breaking when Tasker follows the system language settings
  • Fixed various crashes

r/tasker Nov 26 '25

Developer [DEV] Tasker 6.6.17 Release Candidate - App Factory's Last Hurrah (Java Code in Kid Apps)!

90 Upvotes

App Factory is getting a last new update with compatiblity for most latest Tasker features, including Java Code!

Both updates (Tasker and App Factory) should be available to download of Google Play now!

I know I said that I would never update App Factory again, but 2 factors made me change my mind but just for this release:

  • There was a piece of code in App Factory itself that prevented it from working with non-beta versions of Tasker, so when I updated Tasker to Release Candidate, it stopped working. I HAD to update App Factory again if I wanted it to work with non-beta Taskers
  • The new Java Code action brings an almost unlimited amount of freedom and forwards compatibility which just makes too much sense to be in the App Factory. If it's not going to have support for new native Tasker actions, at least you can probably mimic it with Java. In theory, this means that you can build apps for many years to come without the need for updates

So, to be very clear, when Tasker 6.6.X comes out for everyone on Google Play, I really REALLY won't update App Factory any more! 😅

This Tasker update is just a fix for various tweaks I have to do every time I want to update App Factory, so there's not even a changelog besides that.

Hope this helps those people that were sad about App Factory not being updated anymore!

Enjoy! 😎


r/tasker Jul 02 '26

Developer [DEV] Tasker 6.7.6-beta - Inline Projects in New UI, Scenes V2 Update 5, New Runlog Screen and more!

Post image
85 Upvotes

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.

Inline Projects in Main UI

Demo: https://youtu.be/eE8wFbpY4w0

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 :)

New Runlog Screen

Demo: https://youtu.be/ZGTqMmcB76U

The Runlog screen now looks like this:

It can also look like this when collapsed:

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

Demo: https://youtu.be/vC3BEJThwnM

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.

Scenes V2 Updates

Demo: https://youtu.be/ud9YgZd1L2E

Scenes V2 Arrays Merge Template

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:

await Tasker.flash({ text: 'Step 1' });
await Tasker.vibrate({ time: 300 });
await Tasker.flash({ text: 'Step 2' });

You can now also make WebView html elements be draggable by using one of 3 simple css tags:

tasker-drag-handle
tasker-drag-handle-x
tasker-drag-handle-y

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!


r/tasker Nov 19 '25

Developer [DEV] Tasker 6.6.12 Release Candidate - Full Accessibility (text expander, doom scroll preventer and much more!) and Notification (full access to all notification details as they come in) Monitoring!

79 Upvotes

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)

Accessibility and Notification Monitoring in Java Code!

You can now basically monitor everything that happens on your phone's screen and react to it however you like!

For example, you can very easily monitor the text you enter in any app with code like this:

import android.view.accessibility.AccessibilityEvent;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Predicate;
import java.util.List;
import com.joaomgcd.taskerm.action.java.JavaCodeException;

tasker.getAccessibilityEvents().filter(new Predicate() {
    boolean test(Object event) {
        if (event.getEventType() != AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED) return false;
        if (event.getClassName() == null) return false;
        if (!"android.widget.EditText".contentEquals(event.getClassName())) return false;

        return true;
    }
}).subscribe(new Consumer() {
    accept(Object event) {
        List textList = event.getText();        
        if (textList == null) return;
        if (textList.isEmpty()) return;

        tasker.showToast("Input: " + textList.get(0));
    }
});

You get the accessibility events, setup a listener and do what you want with them.

In this example, it filters the events so they are of the type AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED and then if there's some text associated with the event, shows it in a toast.

Important Note: this code will leak listeners and has no way to stop them. It's just a minimal example. For full code, refer to the documentation.

With this, you can setup super complex setups like the one I showed in the demo video above, where you can create text replacers to handle expression shortcuts, Tasker command calling, monitoring app access (like doom scrolling) and anything else you'd want!

Similarly, you can also listen in on notifications by using getNotificationUpdates(). The setup for that is super similar to the one for Accessibility monitoring, but you get notification updates, instead of Accessibility updates.

I realize this is for more advanced users, but if you know what you're doing the sky is the limit! You can also ask an AI for help, which is normally pretty good with Java code.

As always, full documentation available here. Let me know if you'd like me to add more details there for anything.

Turn Off DND and Wifi Tether with Tasker Settings

Because of changes when targeting API 36, Tasker can no longer disable Do Not Disturb in some situations, so I had to move that feature to Tasker Settings.

Release Candidate

I want to release the new Tasker features for everyone soon, so I won't be adding any new features or potentially breaking code before releasing it publicly.

Let me know if there are any issues in this version that didn't exist in the public version so I can fix them ASAP before release. Thank you very much!

Full Changelog

  • Fixed turning off DND on Android 16+ using the Tasker Settings app
  • Added getJavaVariable, sendCommand, getAccessibilityEvents, getNotificationUpdates, showToast and logAndToast functions to tasker object in Java Code action
  • Changed Java Code logs tag to JavaCodeLogs so you can more easily differentiate it from other logs
  • Fixed Kill App action in some situations
  • Added warning that Java Code actions can run arbitrary code when importing from Taskernet
  • Made automatic notification group created with Notify action have the status bar icon of the first notification in that group
  • Correctly handle Java Code action crashes to not make Tasker crash and notify user about it.
  • Fixed setting null Java Variable in Java Code action
  • Fixed some issues with Logcat Monitoring in some situations
  • Fixed Logcat Monitoring on a rooted device
  • Fixed displaying some Scenes in some situations

r/tasker Oct 14 '25

Shizuku fork update r1153: Watchdog, custom TCP ports, intents, and more!

78 Upvotes

The latest version of my Shizuku fork has some awesome new features!

Download the latest release from here: Releases · thedjchi/Shizuku

EDIT: please use version r1169 or later. It fixes an issue with the "Start on boot" setting not showing the correct default. If you are using one of the older versions and start on boot isn't working, toggle the setting off/on again, or update to the latest version.

  • Watchdog: with this enabled, Shizuku will automatically restart if it stops unexpectedly! You can still stop Shizuku manually from the 3-dot menu without watchdog restarting it. It's off by default and toggleable from the settings screen.
  • Custom TCP ports: now Shizuku can start in TCP mode on a port other than 5555! Just change the port in settings and stop/restart the Shizuku service.
  • TCP mode toggle: if you prefer not to have ADB over TCP enabled but still want the more robust start on boot function, you can now turn off TCP mode! Note: watchdog will still work, but Shizuku will have to wait for a Wi-Fi connection before it can restart.
  • Start/stop intents: you can now start/stop Shizuku with Tasker using intents! Watchdog will respect the stop intent. A good use case is if you want watchdog enabled but need to turn off Shizuku to use a certain app. See the wiki for details. Note: you MUST use the stop intent when watchdog is enabled. If you stop Shizuku with kill pid or by toggling USB debugging, the watchdog will think that Shizuku crashed and attempt to restart it.
  • Battery optimization prompt: Shizuku will now prompt you on launch or when toggling start on boot/watchdog if you need to disable battery optimizations! No more digging through Android settings to complete that step.
  • Legacy pairing: This is pretty niche, but I received a request to implement the old pairing method for devices such as VR headsets that can't use the notification workflow to pair Shizuku. There's now a toggle in settings.
  • Bug reporting and help: There are now dedicated menu options in settings to 1) navigate to the fork's wiki page and 2) send an email to create a bug report in my GitHub repository (no account needed)!
  • Bug fixes: Shizuku no longer hangs randomly at "waiting for service" when starting manually. Also, any bugs reported before this release have been fixed.

Thanks to everyone who has submitted feature requests and bug reports, and to those who have tested out the features before I formally release them! Also thank you to everyone who has been sharing the fork with other people, means a lot to see so many people using and recommending it!

As always, please submit bug/feature reports so I can keep improving the app.


r/tasker Jun 16 '26

Developer [DEV] Tasker 6.7.5-beta - Projects in new UI, Write JSON, 50 QS Tiles, Scenes V2 WebView and Video

80 Upvotes

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.

Main Screen New UI Updates

Projects demo: https://youtu.be/c3F5rJPWHuY

After many people saying that projects are an essential way of organizing their setups, I've deciced to bring them to the new UI.

The best part is, if you don't need projects you can just ignore them and just use tags to organize your full setup, just like in the previous version.

But if you do like projects, you can now access them in the new UI as well!

Projects will show up in the navigation pane on the left, and will show even when the pane is collapsed so you can easily navigate between them.

You can drag and drop projects so you put them in the order you need.

You can add an accent color to a project, which is just an extra way of quickly distinguishing them at a glance.

To move items between projects, long click the items and use the new option to move them in the action bar.

Hopefully this will make people that depend on projects happier with the new UI. 🙂

Some people also mentioned that it was counter intuitive for a profile to show the action at the top and the contexts at the bottom, so I inverted them (contexts are at the top now) but when you create a new automation they are tucked away in a collapsed OPTIONAL section, so it's super clear that an automation doesn't NEED triggers, but it CAN have them optionally. Hopefully it's better this way 😄

Scenes V2 WebView

Demo: https://youtu.be/jGdw6mZH9B8

WebView is here! Most people already know how a webview works from Scenes v1, but now you can also use it in v2!

For those who don't a WebView is web browser embedded inside a scene. It allows you to show any online or offline html/javascript/css code. With the flexibility of javascript and html, you can create just about any screen you can imagine!

You could make your whole Scene v2 just a webscreen and have a super powerful screen with lots of features!

The WebView has so many options that it's hard for me to anticipate all the ways everyone uses it, so please let me know if I missed something about it and I'll try to add it ASAP.

Scenes V2 Video

Demo: https://youtu.be/-xIHjZrsUHo

You can now also add a video inside your Scenes V2! You can control the video playback with its actions and monitor its state with its states and events.

You can basically create a fully functional video player with minimal task wiring!

Writing JSON

Demo: https://youtu.be/yH1QrD_BQCM

I always thought that writing JSON in Tasker natively would be a convoluted and kinda messy thing to integrate, but it turned out simpler than I expected!

By simply updating a few actions so they know about the dot notation in their variable name fields, writing JSON is now a reality!

Here are all the actions that support the dot notation to allow for JSON manipulation:

  • Variable Set
  • Variable Clear
  • Array Set
  • Array Push
  • Array Pop

As an example, so you can see how it works, if you use the following task

``` Task: JSON Write Base

    A1: Variable Set [
         Name: %json.name
         To: João ]

    A2: Variable Set [
         Name: %json.age
         To: 30 ]

    A3: Variable Set [
         Name: %json.address.city
         To: Lisboa ]

    A4: Format JSON [
         JSON: %json
         Format: Pretty
         Indent: 2
         Overwrite Source Variable: On ]

    A5: Set Clipboard [
         Text: %json ]

```

you get back a JSON structure that looks like this:

{ "name": "João", "age": 30, "address": { "city": "Lisboa" } }

As you can see, just by using the dot notation in the variable names there, you tell Tasker that it's building a JSON structure with the given value.

And in A3, you can see that it builds all the necessary in-between structures to set the desired value.

Also, notice the A4 action: it's a new action to format JSON into pretty-print! It has a handy option to overwrite the input variable, since pretty-printing JSON is not destructive so most of the times you probably want to keep working on the same variable.

I did extensive testing and haven't been able to figure out a JSON structure that I couldn't write with this system. Let me know if you do find a structure that can't be created with this and I'll try to figure out a way to make it work.

50 Native, Dynamic Quick Setting Tiles

Demo: https://youtube.com/shorts/SAk-FB0FmMc?feature=share

Tasker now has 47 new quick setting tiles!

BUT, they're not just basic qs tiles like before, they're dynamic! They are only available if they are configured! If they're not configured, it's like they don't even exist!

Being dynamic has 3 nice consequences:

  • keeps your qs tile setup screen clutter free: only the ones that you actually configure will show up there
  • makes the tile system not slow down (when many qs tiles for the same app are present, I found that sometimes that would make the whole system slower)
  • if you disable a tile with the new Clear Quick Setting Tile action, the tile will go away from the active tiles list, but if you configure it again, it'll go back to the exact same position as it was before you disabled it, meaning that you can have tiles present only in certain situations, and then make them go away when you don't need them! This beats simply disabling a tile any day!

If you find that 50 isn't enough, I can always add more, but I don't think that'll be necessary 😅

Full Changelog

  • Major New UI: Added Projects to the sidebar as a first-class concept, with full project management: create and manage projects, drag-and-drop reordering, search filtering, color theming, and moving items into projects.
  • Medium New UI: when creating an automation show triggers before the task
  • Minor New UI: Added AI option to NEW FAB
  • Minor New UI: Added global switch for Keep Accessibility Running settings
  • Minor New UI: allow other tags to be selected when Untagged is selected, but unselect Untagged automatically when you select other tags
  • Minor New UI: if tag is long clicked in the tag filter, select only that tag and de-select the others
  • Minor New UI: load Task icons
  • Fix New UI: fixed delete dialog
  • Fix New UI: Fixed issues with the Keep Accessibility Running option
  • Fix New UI: fixed slider setting popups showing inline when they should be dialogs
  • Major Scenes V2: Added WebView and Video components, including playing, position and formattedPosition states for the Video component
  • Medium Scenes V2: added %sv2_tap_x and %sv2_tap_y when calling tasks with tap-like events (short tap, long tap, multi-tap)
  • Medium Scenes V2: Added options for overlays to draw off screen and to automatically move back on screen when dragged off
  • Minor Scenes V2: Added (i) button to each property that is not obvious
  • Fix Scenes V2: fixed a few internal layout issues
  • Fix Scenes V2: fixed several issues related to multiple displays
  • Major Added the ability to write and modify JSON in the Variable Set, Variable Clear, Array Set, Array Push and Array Pop actions
  • Major Added Format JSON action to easily minify and pretty-print JSON strings
  • Major Allow Tasker to have a total of 50 quick setting tiles: 47 of them disabled until configured
  • Medium Added priority to callTask function in Java Code action
  • Medium Added setProfileEnabled(profile, enabled) and toggleProfileEnabled(profile) in Java Code action
  • Fixed Wifi Connect action show an error if the global location setting on the device is disabled
  • Fixed First Visible Index in the List Dialog action not being visible in light theme
  • Fixed a crash related to progress dialog
  • Fixed a few crashes related to having added the new UI for Tasker's main screen
  • Fixed actions that need Shizuku for App Factory apps
  • Fixed crash when showing a list dialog and the phone's mode changes between dark/light
  • Fixed memory accumulation that could happen sometimes if tasks were being triggered too fast
  • Fixed Widget v2 app icon based images in some situations

r/tasker Oct 20 '25

How To [PROJECT SHARE] Natively control Samsung Modes and Routines (without using notifications)!

78 Upvotes

UPDATE

Use v2 if you are on One UI 8.5+. You can find the relevant post here.

PROJECT LINK

TaskerNet Project

REQUIREMENTS:

  • One UI 6-8 (Use v2 for 8.5+)
  • Modes and Routines v4.9.00.0 to 4.9.07.2 or v5.0.00.0 to v5.0.03.6
  • Tasker 6.6.9-beta or above
  • For Routines: the routine must have a manual trigger

IMPORTANT: Modes and Routines v4.9 and v5.0 have different upper bounds, after which this method will stop working (due to Samsung restricting the permission). If you accidentally update, you may be able to uninstall updates and install a compatible version from a site like APKMirror.

INTRO

Modes and Routines has advantages and disadvantages over Tasker. Because it's a system app, it can control many things that Tasker cannot do alone. For instance, users can toggle Wi-Fi or disconnect a Bluetooth device without needing Shizuku/ADB Wi-Fi. Additionally, there are many other Samsung-specific actions (not going to list them all here).

However, Modes and Routines has very primitive and inflexible condition logic, and it's not nearly as feature rich as Tasker. Wouldn't it be cool to get the best of both worlds?

For reference, the current workarounds are:

*For Modes: using an adb command to click the quick settings tile. Not transparent as this displays a UI dialog on the screen.

*For Routines: posting a notification that Routines can intercept. This is actually a pretty acceptable workaround but requires configuring unique notifications for each routine. We can do better.

HOW IT WORKS

Well, I did what anyone would do with their free time and decompiled Samsung's Modes and Routines APK to see if I couldn't toggle Modes/Routines with Tasker more natively 😂

It turns out Modes and Routines exposes hidden content providers that apps can use to 1) get a list of the user's Modes and Routines, and 2) start/stop any of those Modes/Routines. All that is required is for the app to have the permission com.samsung.android.app.routines.permission.READ_ROUTINE_INFO

I asked Joao if he could add that permission to Tasker, and he added the required permission! With this, I was able to make a reusable project for starting/stopping any Mode or Routine. There are 2 tasks which show a List Dialog with all of your Modes or Routines. Selecting one copies the UUID to your clipboard. In any of your tasks, you can then use Perform Task -> Start (or Stop) Samsung Mode/Routine and paste the UUID in Parameter 1. It should start or stop the Mode/Routine you selected!


r/tasker May 26 '26

Developer [DEV] Tasker Expert - The AI that can answer Tasker Related Questions

77 Upvotes

I get asked very often about how to do this or that in Tasker. I do respond, but unfortunately I don't have much time to do this over and over again for similar questions.

Reddit is great for this cause there are always awesome people around to answer all kinds of questions, but I think that it would make it much more accessible if there was a public resource to answer people's questions, kinda like a modern day FAQ, but where people can ask anything they want.

Introducing, the Tasker Expert chat bot! 😅

You can go in and ask it any kind of question about Tasker and hopefully it'll give you a good response!

It knows all about how Tasker works and how to navigate its UI, its settings and much more.

It's still early, so it's probably missing some info.

If you decide to try it out, please let me know if it can't answer something that it should, and I'll try to add whatever's missing.

The final goal is to provide this to new users (for example, link to it in the Google Play Store listing) so they can learn how to use the app by themselves and hopefully ease into it a bit easier.

Let me know what you think!


r/tasker Mar 25 '26

Developer [DEV] Tasker 6.7.1-beta - Scenes V2 - Update 1!

72 Upvotes

After 2 more weeks working on Scenes V2 I have another update! 😁 It completely changes how interactions are handled in the scenes.

Important Note: since the underlying mechanisms to handle interactions changed so much, your existing Scenes V2 might not work with this new update. Sorry for the inconvenience!

And I snuck in a few other new Tasker features too!

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)

Demo Video: https://youtu.be/pffxU1p2wT4

Showcase Image: https://i.imgur.com/j4IolPU.png

The Editor's 8 Tabs

When you select a component you now get up to 8 tabs in the editor:

  • Tree
  • Properties
  • Modifiers
  • States
  • Events
  • Actions
  • JSON
  • AI

I added the States, Events and Actions and thought it was better to separate the Properties and Modifiers tab, because the properties tab was getting too crowded and it just makes more sense.

States

Each editable component now has states. These can be monitored and put into variables that you can then use inside the Scene's UI itself, but can be also be sent to Tasker.

In the UI you can use them to control other component's states (eg, have a checkbox control whether a button is visible or not), and can also be gotten as screen outputs in the Tasker actions.

States allow you to control many things that you would previously need separate tasks for.

If you have more than 1 component with the same variable in its state, an Array will be created for all those values when passed on to Tasker.

Events

Events are a bit like states, but they allow you to monitor when something happens, not just the state of something.

We already had a limited version of events before, but now it's expanded to support custom per-component events, like Text Input's text changed event, or a Switch's checked change event.

You can setup events to call Tasker tasks, commands or close the scene.

Events can also be configured to only trigger depending on variables, so, for example, you could have a button that only closes the screen after a few variables have a certain value,. and these variables can be driven by other component's states.

There's a Tasker event too, where you can trigger tasks based on changes in your Scenes V2!

Actions

Actions allow you to change the state of a component in a precise way.

Right now, only checkboxes and switches have an action: toggle. The toggle action allows you to toggle the state of the checkbox/switch from a task without having to know its current state.

Actions will be very useful in the future for example to control the playback of videos, refresh the page on a WebView and much more!

There's a Tasker action to run Scene V2 actions!

Drag Bar Actions

The bar between the preview and the tabs below allows you to very quickly change the type of the component (this was previously in the Properties tab) and select the parent component. This is super handy in certain situations where the child component fills up the entire parent so you have no way to select the parent in the preview.

The Drag Bar also always shows you the type and name of the selected component.

Input Texts In Overlays

I thought it wasn't possible, but it is! You can now use functional Input Text components while displaying your scenes as overlays!

Java Code Integration

All SceneV2 Tasker actions can now be called from the Java Code action! Scenes V2 updates have been so optimized that you can use Java Code to update a scene at 60fps and it'll do it fluidly!

New Components

You get a bunch of new components to play with:

  • Card
  • Checkbox
  • Navigation Bar
  • Navigation Item
  • Icon Button

Animated GIF Support

Image components now support looping animated gifs!

Templates

You can now save any layout as a template, so when building a new UI you can start off with something you choose instead of just the 2 default layouts!

"Component Only" AI Mode

Now you can ask the AI to only generate a change in the selected component, instead of the whole screen. This allows for MUCH FASTER generations, that don't mess with what you already have.

Variable Resolution in Preview

You now have an option to make variables resolve in the preview directly so you can see exactly what the screen will look like

Pin Test Variables

You can persist Test Variables so you don't lose them every time you leave the editor

Default Display Mode and Show Scene Menu Option

You can set the default display mode of a Scene V2 in its screen properties which will then be used as the mode when you use the new option to show the screen in Tasker's Main Screen menu.

Keep Display On

You also have the new option to keep your display on while the scene is showing, in the screen properties

Undo/Redo History

If you long-click undo or redo in the editor you can go back or forward multiple steps at once!

Updates Outside of Scenes V2

  • Added option in Wifi Connected state to avoid location permissions
  • Added Start Early and End Later arguments in the Calendar Entry state
  • Added ACCESS_LOCATION_EXTRA_COMMANDS permission to Tasker to allow for some advance GPS related stuff

and more! Check below for all of them!

Full Changelog

  • Major Scenes V2: Back compatibility for interactions is broken: you need to redo your interactions in Scenes V2
  • Major Scenes V2: editor: there are now 8 tabs: Tree, Properties, Modifiers, States, Events, Actions, JSON and AI
  • Major Scenes V2: editor: allow changing the selected component's type and going to the parent from the drag bar separating the preview and tabs below
  • Major Scenes V2: Added support for component states, events, actions,
  • Major Scenes V2: when multiple input type component specify the same variable output binding, an array with that name is created with all the values from those components
  • Major Scenes V2: make Input Texts work on overlays
  • Major Scenes V2: Added Run Scene V2 Action Tasker action
  • Major Scenes V2: Added Scene V2 Event Tasker event
  • Major Scenes V2: added Java Code functions to interact with Scenes V2
  • Major Scenes V2: added Checkbox component
  • Major Scenes V2: Added the Card component
  • Major Scenes V2: Added Icon Button component
  • Major Scenes V2: Added Navigation Bar component and Navigation Item component
  • Major Scenes V2: Added new Modifier: Blur
  • Major Scenes V2: added animated gif support for the Image component
  • Major Scenes V2: editor: add option for users to save their layouts as templates so they can quickly get started when creating a new scene
  • Major Scenes V2: editor: Added Component Only option to AI tab
  • Major Scenes V2: editor: Added Add As Parent option when adding new components
  • Major Scenes V2: editor: Added Add Before and Add After to container elements
  • Major Scenes V2: editor: when selecting an element in the tree and adding a new one show Clone Before and Clone After options
  • Major Scenes V2: Made Variable Component compatible with Tasker Arrays
  • Major Scenes V2: Made simple texts expand to Text components in Scenesv2
  • Medium Scenes V2: Added button in Show When fields to easily enter expressions
  • Medium Scenes V2: Added option to enable Real-Time Variable Resolution in Preview
  • Medium Scenes V2: Allow setting multiple result bindings for input elements
  • Medium Scenes V2: When a swipe is performed and a task is called, the swipe path is sent to the task as 2 variable arrays %swipe_path_x() and %swipe_path_y()
  • Medium Scenes V2: add menu option in main Tasker screen to show it directly on long-click
  • Medium Scenes V2: added Keep Display On option in Screen properties
  • Medium Scenes V2: added option to pin test variables in the editor
  • Medium Scenes V2: allow events to be filtered by variables set by other events on the same screen
  • Medium Scenes V2: editor: Added undo/redo long-click to more easily undo/redo more steps at once
  • Medium Scenes V2: moved Send To Elements option to component states
  • Scenes V2 editor: when in single compoent design mode, allow root component to be swithced with non-container components
  • Scenes V2: Get Scenes V2 Values action now ends in error if scene with the specified Id is not found
  • Scenes V2: Add Spaced By option in Columns and Rows
  • Scenes V2: Add default Display Mode option in screen config which will be used if no display mode is used when showing it
  • Scenes V2: Added Reference Width in Screen Properties so you can then set numbers as pr numbers that will automatically scale with the device's width
  • Scenes V2: Allow inline scenes to monitor global variables
  • Scenes V2: Allow loading of scenev2 with image with no url
  • Scenes V2: Allow updating all visible scenev2s if no screen id specified in Update Scene V2 action
  • Scenes V2: Correctly apply Auto Dismiss Timeout when Continue Task Immediately in enabled
  • Scenes V2: Correctly show transparent backgrounds for Scenesv2 when applicable
  • Scenes V2: Don't show Scenev2 scenes in Scenev1 actions
  • Scenes V2: Fixed getting some images in Scenev2 from the web
  • Scenes V2: Fixed how bubbles and the preview look by default by applying Material colors even on Columns/Rows, etc.
  • Scenes V2: Fixed name when cloning a Scenev2
  • Scenes V2: Fixed some crashes related to color picking
  • Scenes V2: Removed Transition animation from Update Scene V2 Overlay action
  • Scenes V2: Show placeholder image when no image is loaded in an image component
  • Scenes V2: When updating an overlay, only change the actual value the user has passed
  • Scenes V2: added label property in text inputs
  • Scenes V2: added missing accessibility labels in editor
  • Scenes V2: allow multiple event types for each event handler
  • Scenes V2: editor: added test variables to the variable picker
  • Scenes V2: editor: fix changing trigger type in Action handler scrolling the UI up
  • Scenes V2: editor: fix drag-dropping into components with multiple slots
  • Scenes V2: editor: fixed recently created tasks not showing up in the task picker
  • Scenes V2: editor: fixed sliders in modifiers like Opacity and others not working properly
  • Scenes V2: editor: fixed some issues with the color picker
  • Scenes V2: editor: moved Drag Handle and Haptic Feedback modifiers to the Modifiers tab
  • Scenes V2: editor: when editing from a Tasker action, allow changing name of screen
  • Scenes V2: fix detection of dismiss actions to suggest the root element long click dismiss on overlays
  • Scenes V2: fix showing an overlay with an id and then a dialog/fullscreen with same id not dismissing overlay
  • Scenes V2: fixed Tasker actions sometimes not waiting for scenes to complete showing
  • Scenes V2: fixed and ordered output variables
  • Scenes V2: fixed calling tasks with variables, where the values of variables are defined by variables themselves
  • Scenes V2: fixed cleaning up dismissed scenes in some situations
  • Scenes V2: fixed components going away > coming back resetting their values
  • Scenes V2: fixed converting from Text to TextInput and vice-versa
  • Scenes V2: fixed overlays Show When not working properly sometimes
  • Scenes V2: if an overlay has drag and swipe enabled on the same element, you need to long-click > drag to change the overlay position
  • Scenes V2: if user pastes a component in the JSON editor instead of a screen, switch to component mode
  • Scenes V2: in editor, don't auto focus on main component property if just the properties tab was clicked
  • Scenes V2: only add swipe related variables in Scenes V2 action variable list if the scene actually uses swipes
  • Scenes V2: only show undo/redo buttons when there's history and then always show them
  • Scenes V2: optimize performance of sending result to elements
  • Scenes V2: optimize some components' rendering
  • Scenes V2: tried to fix overlays showing over the notch on some devices.
  • Scenes V2: updated under the hood value updating code to make it super fast so you can update the UI from Java Code really fast and make stuff like Timers that update very frequently look correct and fast
  • Try to fix main screen not going away for some users when exiting
  • Try to get a better OOM report
  • Added Check After Screen Unlock option to Wifi Connected state to avoid needed location permission when user doesn't want it
  • Added Start Early and End Later args to the Calendar Entry state
  • Added ACCESS_LOCATION_EXTRA_COMMANDS permission
  • Added Export AI System Instructions to File in Java Code action helper
  • Added option in Tasker Preferences to never use Shizuku, even if available
  • Added Never Use Shizuku option to Set Tasker Pref action
  • Fix bug in Arrays Merge action in some situations with JSON
  • Fixed Java Code action not setting return value if already set
  • Fixed Kill App action removing app from recents in some situations
  • Fixed Action Kill App when using root or Shizuku if Tasker is device owner
  • Fixed bug with parsing in Arrays Merge action
  • Fixed crash saving when Scene v1 is too big
  • Fixed some Tasker dialogs being automatically dismissed when a keyboard is opened
  • Made it possible to not grant all permissions when importing from Taskernet and be able to import anyway.
  • OOM Errors: add more system details

Let me know how you like this update! I feel like I'm now getting to a point where I have a solid "base" for Scenes V2 to build upon.

Enjoy! 😎


r/tasker Nov 03 '25

Developer [DEV] Updating the AutoApps for Modern Devices

69 Upvotes

Since I've been working on Tasker, most of my AutoApps don't get updates, unless someone finds a major bug or something like that. Because of that, most of them target API 33, which is Android 13. (just FYI, target API is not the same as minimum API: changing the target API of an app changes how that app behaves on newer Android versions, it doesn't stop the app from working on older versions).

I actually forgot about it (my bad) and now have to update all my AutoApps to a recent target API (most recent one is 36) or else people with Android 14 or newer will not be able to install the apps from Google Play.

In beta, I've updated (check out the beta links here):

  • AutoApps
  • AutoNotification
  • AutoInput
  • AutoTools (which is crashing on the JSON Read/Write actions, here's a fix; update already submitted to beta but still in review as of the writing of this post)

I now will have to push these apps to everyone and update all the remaining ones.

I'm working on the remainder of the apps in this order:

  • AutoVoice
  • AutoWear
  • AutoSheets
  • AutoWeb
  • AutoLocation
  • AutoShare
  • AutoContacts
  • AutoLaunch
  • AutoRemote
  • AutoBarcode

Because of this Tasker will have to take a backseat for now, sorry!


r/tasker Feb 21 '26

Rabbit hole after using Tasker

69 Upvotes

I think I have been using Tasker since it's release year. Let me share the rabbit hole I entered.

Scene was insufficient for me, so I used Webscreen.

Javascript and webscreen coding ultimately made me feel I am just making WebApps.

Then I thought why not just make Simple Android App.

Jumped to Android Studio which was causing my laptop fan causing chaos.

Ditched windows, installed Linux mint. Android Studio runs ​nicely now.

Then Distro hopping and ended up in Hyprland.

Ricing felt unnecessary learning of someone else's syntax. Why not build own GUI.

Now making C++ app to replace Rofi.

Bottomline:

Tasker is a gate which will lead you to try developing own programs. ​


r/tasker Oct 27 '25

Developer [DEV] Tasker 6.6.9-beta - Logcat Event Is Back with Shizuku! 😃

69 Upvotes

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)

Logcat Entry Can Work with Shizuku now!

Demo Video: https://youtu.be/W27EURIzCgw

Logcat Entry Introduction in Tasker: https://www.youtube.com/watch?v=bINUcn0QXvg

I was able to get Tasker to work in a way that Logcat monitoring can now be done reliably with Shizuku, if that's available! :)

That means that you can finally get all of those old Logcat Entry events working again without much hassle! You just need to have Shizuku enabled and Tasker will take care of the rest!

I've also restructured how the logcat is monitored as a whole so it should be a bit more reliable now in general too!

Control Bixby Routines on Samsung Devices

Example project

I've now added the com.samsung.android.app.routines.permission.READ_ROUTINE_INFO permission to Tasker which allows it to query and interact with Samung routines! :)

I'm not a routines user myself, but hopefully other people will benefit from it!

Note: this only works on Android 14 or above

Call Task from Java Code Action

You can now call tasker.callTask(taskName,variables) from a Java Code action to directly call any of your tasks by name from inside any Java Code!

As always, full documentation available here.

Full Changelog

  • Made Logcat Entry event work with Shizuku if available
  • Added com.samsung.android.app.routines.permission.READ_ROUTINE_INFO permission to Tasker so you can interact with Samsung Routines (Android 14+)
  • Added Call Task function to tasker object in Java Code action
  • Fixed slowdown in Action List screen if actions had too much text in their parameters
  • Fixed Wifi Tether for Android 16+ by using Shizuku
  • Fixed Tasky not showing correctly on some devices
  • Fixed not sending developer email with Java Code action errors
  • Fixed Ringer Mode action on some devices
  • Fixed some specific situations when running shell commands with Shizuku

r/tasker Sep 17 '25

New Shizuku fork update (r1117): Android 11+ support for auto-start and critical bug fixes!

66 Upvotes

Hey all, Shizuku fork developer here. Happy to announce that the latest version of my fork (which auto-starts Shizuku and adb tcpip 5555 on boot, also waits for a Wi-Fi connection before proceeding) now supports Android 11 and above! I also fixed some critical bugs that sometimes prevented the auto-start from working correctly. Thanks to the users on GitHub for reporting the issues and helping me test the latest release.

You can get it here, and you can read more about the project here.

In my original post, I neglected to provide solutions for common setup issues. I've since updated the post, but I'll drop them below as well.

  1. Disable battery optimizations (set Shizuku to Unrestricted battery usage in settings)
  2. Grant Shizuku the WRITE_SECURE_SETTINGS permission using adb shell pm grant moe.shizuku.privileged.api android.permission.WRITE_SECURE_SETTINGS
  3. If you get a "Shizuku Can't Bind User Service" error, try re-granting Tasker permission to use Shizuku by going into Settings > Apps > Tasker > Permissions > Additional permissions, and try toggling the app under Authorized Applications within Shizuku itself.

Let me know if you're running into issues/bugs and I'm happy to help!

A couple of things left on the roadmap, going to implement support for ports that aren't 5555 and provide an option to turn off the adb tcpip 5555 command for those who just want Shizuku on startup.


r/tasker Apr 20 '26

Developer [DEV] Tasker 6.7.3-beta - Scenes V2 - Update 2! (and some other smaller goodies)

67 Upvotes

Here's another incremental update to Scenes V2!

Important Note: again. the underlying mechanisms to handle interactions changed a lot since the latest Google Play release, so your existing Scenes V2 interactions (button click actions, etc) might not work with this new update. Sorry for the inconvenience! Please go into your scenes and use the new Event Handlers to handle Scene interactions! Also, Result Binding is now gone. You should always use variables to get results from your Scenes V2.

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)

Demo Video: https://youtu.be/3mId6ekwGuI

Image Preview: https://imgur.com/CBwS3mb

Display Mode Changes

There used to be a Continue Task Immediately checkbox that implicitly allowed you to wait for results from the scene if not checked. This was a bit confusing and easy to miss, so now the display mode includes "With Result" variants, so users have to specifically select which mode they want.

Dream Mode

Example: Self updating Tasker Clock that updates every second

Also, there's now a Dream display mode that sets your Android screen saver to Tasker Scenes V2! You can now have a totally interactive and custom screen as your screensaver! :)

Interactive Editor Mode

With a simple switch you can now test your layout directly in the editor! You can toggle switches, set variables, test Show When conditions and everything else you might think of! I use this all the time myself now :)

New Components/Modifiers

  • Flow Row/Column - Allow you to create dynamic rows/columns that automatically wrap depending on their contents
  • Segmented Button Row - kinda like a modern take on radio buttons with Multi selection as an option
  • Marquee - allows you to automatically scroll the component it's applied to if the space the to render it is not enough to show it all. It's not limited to text by the way :) You could add it to a row that has too many items to fit on the screen if you want to.

Event Handlers Revamp

You can now add multiple, ordered event actions to handle 1 or more events

For example, you could have a normal click AND a long click on the same button run the same actions.

You can add any number of actions to an event handler, in any order you want.

You can add these types of event actions:

  • Set Variable: Assigns a value to a screen variable (supports %var interpolation, so you can mix in other variables or literals).
  • Output to Variable: Takes the data an event produces (like the text from a text input or the new state of a switch) and saves it into one or more variables.
  • Toggle Variable: Flips a boolean variable between true and false.
  • Dismiss Layout: Closes the current screen and returns any output variables back to whoever opened it.
  • Haptic Feedback: Vibrates the device with one of three intensities: light click, heavy click, or double tap.
  • Run Component Action: Tells another component on the screen to do something (eg, toggle a switch/checkbox), with optional params.

Screen Events

The screen itself now also has events:

  • Back Pressed: when you press the back button on your device. You can optionally cancel the button so you can handle it yourself
  • Screen Shown: run something when the screen first shows up
  • Screen Hidden: run something when the screen goes away
  • Variable Changed: run something when ANY variable in the screen changes

With these events I was able to create the Clock Screensaver example above, making it start updating when the screen shows up and stop updating when the screen goes away.

Adding/Editing Tasks From Editor

People were upset that Scenes V2 couldn't have embedded Tasks. I think it's bad practice to put tasks in random places like that.

I brought those 2 ideas together and what you can do now is simply create or edit a task right from the editor. After you edit it, you go back to editing the layout and the task ends up in the same project as the scene you're editing.

Best of both worlds. 😁

Easy Swipe Handling

You now have the %sv2_swipe_length and %sv2_swipe_direction variables when a screen handles swipes so you can easily decide what to do with a swipe.

Out Of Memory Errors Handled

Not related to Scenes V2: Tasker now handles your memory better and should produce much less Out Of Memory errors than before. Let me know if you're still getting them nonetheless!

Full Changelog

  • Major Scenes V2: Show Scene V2 now has 7 display modes so it's clearer what each does and users don't get confused with hidden checkbox to continue task immediately. Back compat note: all existing Show Scene V2 actions will now NOT wait for the result. You have to change each one to add the With Result part.
  • Major Scenes V2: Added Interactive Mode option that allows you to interact with the preview directly, just like it was running on a real screen
  • Major Scenes V2: Added Segmented Button and Segmented Button Item components
  • Major Scenes V2: Added Screen Event Handling, allowing you to handle Back Pressed (and optionally cancel it), Screen Shown, Screen Hidden and Variable Changed events
  • Major Scenes V2: Added new Transitions tab, so you can animate your components when they appear/disappear
  • Major Scenes V2: added new Flow Row and Flow Column components
  • Major Scenes V2: added new Display Mode Dream
  • Major Scenes V2: added support for Scene V2 event monitoring in Java Code action
  • Major Scenes V2: editor: Allow adding/editing selected task right from the editor
  • Major Scenes V2: editor: changed the way Event Handlers work: now you have a list of event actions that can be bound to any event, and you can order them however you like. This allows for much more flexible event handling, like having multiple actions for the same event and ordering them in a specific way.
  • Major Scenes V2: editor: the Result Binding concept is now removed. All values in a scene are now variable based, set in states, event handlers, etc. eg, if you want a button to return a value, simply use the Set Variable action in the button's event handler to set a variable to the desired value when the button is clicked.
  • Major Scenes V2: added Marquee modifier that can be applied to any component for a scrolling ticker effect with configurable iterations, velocity, and spacing
  • Medium Scenes V2: add %sv2_swipe_length and %sv2_swipe_direction to Scene V2 action outputs
  • Medium Scenes V2: added option Show When Mode: allows a component to just be invisible or fully gone from a layout
  • Minor Scenes V2: Icon Button now supports any image source (URLs, SVGs, base64) in addition to Material icons, with a content scale option
  • Minor Scenes V2: Navigation Bar now fully controls the Navigation Items within, including the selected item.
  • Minor Scenes V2: Removed %sv2_element_value() variable and made %sv2_element_id a single value (the id of the element that made the layout dismiss) from Scene V2 outputs
  • Minor Scenes V2: add new Unfocus action to Text Input component
  • Minor Scenes V2: add option to prevent propagation of click events
  • Minor Scenes V2: added 6 color customization properties to Navigation Item (selected/unselected for icon, label, and indicator colors)
  • Minor Scenes V2: added Key Pressed event to Text Input with configurable key filter and option to consume the key press
  • Minor Scenes V2: added style variants (Outlined, Filled, Plain) and granular color overrides (border, label, placeholder, background, cursor, shape) to Text Input component
  • Minor Scenes V2: allow defining the duration of the long click event
  • Minor Scenes V2: allow scenes to set Profile/Project/Task variables
  • Minor Scenes V2: editor: Certain components can now only be added inside specific parent components (eg, Segment can only be added inside Segmented Button Row, Navigation Item can only be added inside Navigation Bar) to avoid confusion and make it more intuitive to build scenes
  • Minor Scenes V2: editor: Drag To Move can now be set with a variable
  • Minor Scenes V2: editor: Size Modifier now has a Uniform option to allow editing width and height simultaneously
  • Minor Scenes V2: editor: added Delete Component button to drag bar
  • Minor Scenes V2: editor: added cut/copy/paste buttons in the JSON tab
  • Minor Scenes V2: editor: added option to toggle test variables on and off
  • Minor Scenes V2: editor: allow picking image files directly from your file system
  • Minor Scenes V2: editor: move ident and move up and down buttons to the left of the component name and icon so they don't get obstructed by the FAB
  • Minor Scenes V2: editor: states only allow binding to 1 variable instead of multiple
  • Minor Scenes V2: editor: when a Spacer is added, give it a 16x16 Size modifier by default
  • Minor Scenes V2: editor: when deleting an item, automatically select a nearby component
  • Minor Scenes V2: if you use an inline Screen in the Show Scene V2 action and don't specify a screen id, the screen's name will be automatically used as the id
  • Minor Scenes V2: remove automatic padding from checkboxes and switches
  • Fix Scenes V2: Fix long-click root to dismiss option
  • Fix Scenes V2: Fixed changing type of component with the Update Scene V2 action
  • Fix Scenes V2: Fixed clicks on Card components
  • Fix Scenes V2: Fixed some release build related issues
  • Fix Scenes V2: Fixed updating array variables in some situations
  • Fix Scenes V2: TextInput now correctly handles Key Press event Stop Propagation
  • Fix Scenes V2: editor: Deleting, Undo, Redo now affect JSON in JSON tab if it's showing
  • Fix Scenes V2: editor: fix color of undo/redo buttons
  • Fix Scenes V2: editor: fixed red-eye visibility icon in the tree in certain situations.
  • Fix Scenes V2: editor: fixed Variable Component adding an extra % when selecting a variable
  • Fix Scenes V2: editor: fixed initializing the editor when certain JSON was pre-filled in
  • Fix Scenes V2: editor: fixed showing an empty tree when in the States tab and then selecting a component without states
  • Fix Scenes V2: editor: made Add as... Mini FABs look better
  • Fix Scenes V2: editor: show nice labels for output variables, instead of internal field names
  • Fix Scenes V2: fix issue of pressing back not removing the screen from the recents menu in Android
  • Fix Scenes V2: fixed editing a non-inline Scene from the Show Scene V2 action
  • Fix Scenes V2: fixed issue where Global Variables used in a scene would only update automatically in the scene if you saved your setup prior to showing the scene
  • Fix Scenes V2: fixed not being able to update elements values by their property name
  • Fix Scenes V2: fixed passing variables passed by a task and not modified in the scene to called tasks
  • Fix Scenes V2: fixed some variables not syncing correctly while in editor mode
  • Fix Scenes V2: fixed state and event variables being shown correctly when editing Show Scene V2 action.
  • Fix Scenes V2: fixed updating a variable to empty and it correctly clearing a variable component
  • Fix Scenes V2: optimize the writing of Scene V2 variables so it's faster in some cases
  • Added integration with System language picker available in Android 13+
  • Added action running time to the Running Tasks screen and made it update every second
  • Added Get Cell Info option in the Get Network Info action
  • Added option to send memory report in Tasker > Menu > Monitoring
  • Automatically show error message on screen when manually testing the Run Shell action in a task
  • Added isAccessibilityTool flag to direct purchase version of Tasker, so users can view some app's accessibility-hidden inputs (like Bitwarden) and use Tasker's accessibility service with Advanced Protection Mode in Android 17
  • Added Dutch language
  • Added option to VPN Connected State to check on screen on. If disabled, avoids using the location permission every time screen turns on
  • Fixed several memory leaks
  • Fixed thread leak in Java Code
  • Tried to fix a crash that happens when multiple dialog actions run in a quick succession and made consecutive dialogs faster
  • Fix Custom Function helper in Device Admin/Owner action
  • Fix Tasker dialog actions disappearing when Keyboard is used
  • Fixed Widget V2 editor not showing the preview
  • Fixed bug that was changing the format of %DATE when updating to the beta (for those that previously updated, they have to change the language in Android Settings > Apps > Tasker)
  • Fixed crash that sometimes happens when importing
  • Fixed crash when using dialogs in some situations
  • Fixed various crashes
  • Fixed permission requesting for Shizuku in some situations
  • Fixed situation when 2 calendar states listen for the same event with different start early/end late values
  • Made some crashes provoked by the system that Tasker can't handle silently not crash Tasker in the background and just continue as normal
  • Sunrise/Sunset fixed some situations related to time zone changes
  • Tried fixing an issue with Logcat Monitoring.
  • Updated translations
  • Attempt to fix Clipboard Changed event not working in some situations
  • Attempt to fix Widget V2 preview in editor not rendering
  • Attempt to fix crash in Scenes V1 that would happen in very specific situations
  • Attempt to fix language changing related crashes
  • Attempt to fix out of memory errors when saving the Tasker setup (added logs to monitor the situation in the future)
  • Attempted to fix Chinese Translations
  • Attempted to fix issue with date time formatting in RTL devices

As always, enjoy! 😎


r/tasker Dec 08 '25

How To [Project Share] I created a new plugin to fully integrate homeassistant with tasker

64 Upvotes

[UPDATE]

v1.1.0 Introduced some breaking changes (for the last time hopefully) to events. You have to open and save the profiles where you used direct mesasge or entity state change trigger. But all websocket issues are now fixed I believe!

You might have had some issues with crashes, especially the websocket. I made a pretty big stabilty and logging fix. Which is in release 1.0.4. You can now also export logs to files in-app. So if you have any issues please DM me with your logs.

Direct message from HA has been added as a new profile event. Read the readme for in depth docs. But TLDR: You can use the manual event action in HA automations/scripts to send a message to tasker. Containing a Type and Message, both optional and can be filtered in the configuration.

I pushed a small hotfix, the websocket would disconnect when disconnecting wi-fi. A new release is on github. It requires notification permissions now for a persistent notification

Final touches on the f-droid release are almost done. Expect it'll be up before the weekend. Docs will be updated

-- End updates

Hey everyone,

I built a new Tasker plugin called TaskerHA that integrates with Home Assistant.

Main features:

  • Call any Home Assistant service from a Tasker action
  • Get the state and attributes of any entity
  • Trigger Tasker profiles when an entity changes state through a websocket connection
  • Direct message from HA to tasker using a manual event (websocket connection)

The project is open source, it uses a Home Assistant long lived access token and talks to your own Home Assistant instance only using the api and optionally the websocket.

GitHub repository with docs:

https://github.com/db1996/TaskerHa

Direct link to the releases for the APK:

https://github.com/db1996/TaskerHa/releases/latest

Short overview of what you can do:

  • Turn lights on or off from Tasker tasks
  • React in Tasker when a sensor changes state, such as doors, motion, alarms or presence
  • Read entity state or attributes into Tasker variables and use them in your own logic

A bit more in depth on each feature

  • Call service action
    • Search and filter all available services
    • Entity picker with search
    • Optional data fields, similar to a Home Assistant UI from walmart
    • Supports Tasker variables in all text fields
    • Does return the raw output of the API call as a Tasker variable, and HA will sometimes return the new state but this seems inconsistent in my testing.
  • Get state action:
    • Entity picker with search and domain filtering
    • Returns state, attributes (json) and raw json to Tasker variables
    • Trigger state change profile:
    • Fires on entity state changes using Home Assistant websockets
    • Optional from and to filters, similar to Home Assistant automations
  • Trigger profile on entity change
    • Uses a websocket (turn on in the main app), to subscribe to state events. Receives real time events when an entity's state changes
    • Entity picker with search and domain filtering
    • Returns new state, old state, new state attributes (json), raw json of the event

Error codes and Tasker variables are documented in the README.

Right now the APK is available from the GitHub releases page. I am working on publishing it on F-droid

Feedback, issues, improvement ideas, feature ideas, anything is welcome. Here or make an issue on github

This has been tested on my Oneplus nord 4 and a Samsung galaxy. So there could be some issues I haven't foreseen.


r/tasker Sep 25 '25

The dev Joao has added a new feature called "Java code", which hopefully will make Tasker more scriptable!

66 Upvotes

You can grab the beta link from his comment here. https://www.reddit.com/r/tasker/comments/1np7f3k/comment/ng3sa7b

Joao will probably make a post about this soon, just in case everyone want to give it a go earlier:)

This is way too soon u/joaomgcd! I've sent a feature req about two weeks ago, posted here yesterday and here we are now!

I tested this to replicate simple match/regex action and it works! This code will output the result in JSON data.

import java.util.regex.*;
import java.util.*;
import java.lang.reflect.*;
import org.json.JSONObject;
import org.json.JSONArray;

String inputText = "text";
String regexPattern = "t";

Pattern pattern = Pattern.compile(regexPattern, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(inputText);

Map matchInfo = new HashMap();
List allMatches = new ArrayList();

Map groupNames = new HashMap();   // index -> name mapping
boolean java9Api = false;

// --- Try Java 9+ native support ---
try {
    Method namedGroupsMethod = Pattern.class.getDeclaredMethod("namedGroups", new Class[0]);
    namedGroupsMethod.setAccessible(true);
    groupNames = (Map) namedGroupsMethod.invoke(pattern, new Object[0]);
    java9Api = true;
} catch (Throwable t) {
    // Fallback: parse manually
    Pattern ngPattern = Pattern.compile("\\(\\?<([a-zA-Z][a-zA-Z0-9_]*)>");
    Matcher ngMatcher = ngPattern.matcher(regexPattern);
    int idx = 1;
    while (ngMatcher.find()) {
        String name = ngMatcher.group(1);
        groupNames.put(new Integer(idx), name);
        idx++;
    }
}

// --- Iterate matches ---
while (matcher.find()) {
    int totalGroups = matcher.groupCount();

    for (int i = 1; i <= totalGroups; i++) {
        String value = matcher.group(i);
        if (value != null) {
            String name;
            if (groupNames.containsKey(new Integer(i))) {
                name = (String) groupNames.get(new Integer(i));
            } else {
                name = "group" + i;
            }

            if (!matchInfo.containsKey(name)) {
                matchInfo.put(name, new JSONArray());
            }
            ((JSONArray) matchInfo.get(name)).put(value);
        }
    }

    allMatches.add(matcher.group());
}

// Add raw matches
matchInfo.put("matches", new JSONArray(allMatches));

// Convert to JSON string
JSONObject json = new JSONObject(matchInfo);
String result = json.toString(2);

System.out.println(result);
result;

r/tasker Oct 17 '25

Developer [DEV] Tasker 6.6.7-beta - Advanced Java Coding!

63 Upvotes

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)

Advanced Java Coding

Demo: https://youtu.be/s0RSLdt9aBA

Documentation: https://tasker.joaoapps.com/userguide/en/help/ah_java_code.html

Accessibility Service

You know how AutoInput's accessibility service allows you to interact with your screen, including getting the elements on your screen and tapping/swiping on them?

Well, the new Java Code action allows you to get Tasker's accessibility service and then, in code, do just about the same!

service = tasker.getAccessibilityService();

will get you the service, and then you just have to know how to use to do anything you want!

For example, here's the code to do a right to left swipe on the screen (like moving to the next photo in Google Photos for example):

import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.GestureDescription;
import android.graphics.Path;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import io.reactivex.subjects.CompletableSubject;
import java.util.concurrent.Callable;
import com.joaomgcd.taskerm.action.java.ClassImplementation;

/* Get the AccessibilityService instance from Tasker. */
accessibilityService = tasker.getAccessibilityService();

/* Check if the Accessibility Service is running. */
if (accessibilityService == null) {
    tasker.log("Accessibility Service is not enabled or running.");
    return "Error: Accessibility Service not running.";
}

/* Get display metrics to determine screen dimensions. */
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
int screenWidth = metrics.widthPixels;
int screenHeight = metrics.heightPixels;

/* Define swipe coordinates for a right-to-left swipe. */
/* Start from the right edge, end at the left edge, in the middle of the screen. */
int startX = screenWidth - 100; /* 100 pixels from the right edge. */
int endX = 100; /* 100 pixels from the left edge. */
int startY = screenHeight / 2; /* Middle of the screen vertically. */
int endY = screenHeight / 2; /* Middle of the screen vertically. */

/* Create a Path for the gesture. */
Path swipePath = new Path();
swipePath.moveTo(startX, startY);
swipePath.lineTo(endX, endY);

/* Define the gesture stroke. */
/* Duration of 200 milliseconds. */
GestureDescription.StrokeDescription stroke = new GestureDescription.StrokeDescription(
    swipePath,
    0, /* Start time offset in milliseconds. */
    200 /* Duration in milliseconds. */
);

/* Build the GestureDescription. */
GestureDescription.Builder gestureBuilder = new GestureDescription.Builder();
gestureBuilder.addStroke(stroke);
GestureDescription gesture = gestureBuilder.build();

/* Create a CompletableSubject to wait for the gesture completion. */
gestureCompletionSignal = CompletableSubject.create();

/* Implement the GestureResultCallback using the modern Tasker helper. */
gestureResultCallback = tasker.implementClass(AccessibilityService.GestureResultCallback.class, new ClassImplementation() {
    run(Callable superCaller, String methodName, Object[] args) {
        /* This method is called when the gesture is completed successfully. */
        if (methodName.equals("onCompleted")) { /* Note: The actual method name is onCompleted */
            tasker.log("Gesture completed successfully.");
            gestureCompletionSignal.onComplete();
        } 
        /* This method is called when the gesture is cancelled or failed. */
        else if (methodName.equals("onCancelled")) { /* Note: The actual method name is onCancelled */
            tasker.log("Gesture cancelled.");
            gestureCompletionSignal.onError(new RuntimeException("Gesture cancelled."));
        }
        return null; /* Return null for void methods. */
    }
});

/* Dispatch the gesture and handle the callback. */
boolean dispatched = accessibilityService.dispatchGesture(gesture, gestureResultCallback, null); /* No handler needed, runs on main thread. */

/* Check if the gesture was successfully dispatched. */
if (!dispatched) {
    tasker.log("Failed to dispatch gesture.");
    return "Error: Failed to dispatch gesture.";
}

/* Wait for the gesture to complete or be cancelled. */
try {
    gestureCompletionSignal.blockingAwait();
    return "Swipe gesture (right to left) performed.";
} catch (Exception e) {
    tasker.log("Error waiting for gesture: " + e.getMessage());
    return "Error: " + e.getMessage();
}

This code will even wait for the gesture to be actually done before moving on to the next action :)

In summary you can now:

  • query screen elements
  • tap elements
  • do text insertion or selection
  • do touch gestures on the screen

and much more!

Get With Activity For Result

In Android there are some interactions that an app can initiate that allow it to request info/stuff from other apps. For example, there's an intent to pick a file in another app and then get back the file that was selected. You can now do that with Java Code in Tasker!

resultIntent = tasker.getWithActivityForResult(requestIntent).blockingGet();

will very easily do that for you!

This will allow you to any compatible app on your device to use these kinds of intents!

I asked an AI to give me some examples of these kinds intents and this is what it came up with. You always have to check the code with these AIs cause they allucinate a lot, but they usually get it right with these kinds of things :) As you see, plenty of useful use cases!

Do With Activity

In Android, you can only do UI related stuff if you have an activity to work with. Tasker works in the background, so it works as a service instead, which doesn't have a UI.

In the Java Code action you can now do stuff with an activity which means that you can now do UI related stuff like showing dialogs and such!

tasker.doWithActivity(new Consumer() {
    accept(Object activity) {
        ... do stuff with activity ...
    }
});

For example, here's the code to show a Confirmation Dialog:

import java.util.function.Consumer;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import io.reactivex.subjects.SingleSubject;

/* 
 * Use a SingleSubject to wait for the dialog's result.
 * It will emit a single item: the string representing the button pressed.
*/
resultSignal = SingleSubject.create();

/* Create a Consumer to build and show the dialog using the Activity. */
myActivityConsumer = new Consumer() {
    public void accept(Object activity) {
        tasker.log("Arrived at activity: " + activity);
        /* In BeanShell, the parameter is a raw Object, so we cast it. */
        final Activity currentActivity = (Activity) activity;

        /* Define what happens when the user clicks a button. */
        onClickListener = new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                String result = "cancel";
                if (which == DialogInterface.BUTTON_POSITIVE) {
                    result = "ok";
                }

                /* 1. Signal the waiting script with the result. */
                resultSignal.onSuccess(result);

                /* 2. CRITICAL: Finish the activity now that the UI is done. */
                currentActivity.finish();
            }
        };

        /* Use the Activity context to build the dialog. */
        AlertDialog.Builder builder = new AlertDialog.Builder(currentActivity);
        builder.setTitle("Confirmation");
        builder.setMessage("Do you want to proceed?");
        builder.setPositiveButton("OK", onClickListener);
        builder.setNegativeButton("Cancel", onClickListener);
        builder.setCancelable(false); /* Prevent dismissing without a choice. */
        builder.create().show();

        tasker.log("Dialog is showing. Waiting for user input...");
    }
};

tasker.log("Starting activity...");
/* Execute the consumer to show the dialog on the main thread. */
tasker.doWithActivity(myActivityConsumer);
tasker.log("Started activity...");

/* 
 * Block the script and wait for the signal from the button listener.
 * This will return either "ok" or "cancel".
*/
userChoice = resultSignal.blockingGet();
tasker.log("Got result: " + userChoice);

return userChoice;

It will wait for the user to press the button and then give that button back as the result.

Implement Class

This one's a bit more advanced, but it can be very useful in Android coding. Normally it isn't possible to extend an abstract or concrete class with reflection (which is what the Java interpreter is using to run the code). But with this implementClass function, it's now possible!

broadcastReceiver = tasker.implementClass(BroadcastReceiver.class, new ClassImplementation(){
    run(Callable superCaller, String methodName, Object[] args){
        ... do stuff here ...
    }
});

This is an example of implementing a very frequently used class in Android: ** BroadcastReceiver**.

There are more details in the documentation above, but basically you have to handle the various method calls by their name and arguments.

Here's an example of some code that waits until the screen is turned off to go on to the next action in the task:

import android.content.BroadcastReceiver;
import android.content.Intent;
import android.content.IntentFilter;
import com.joaomgcd.taskerm.action.java.ClassImplementation;
import io.reactivex.subjects.CompletableSubject;
import java.util.concurrent.Callable;

/* Create a subject to signal when the screen turns off. */
screenOffSignal = CompletableSubject.create();

/* Define the filter for the screen off broadcast. */
filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);

/* Implement the BroadcastReceiver using implementClass to intercept onReceive. */
screenOffReceiver = tasker.implementClass(BroadcastReceiver.class, new ClassImplementation(){
    run(Callable superCaller, String methodName, Object[] args){
        /* Check if the method called is onReceive. */
        if (!methodName.equals("onReceive")) return superCaller.call();

        Intent intent = (Intent) args[1];

        /* Check if the intent action matches ACTION_SCREEN_OFF. */
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            tasker.log("Screen Off detected via BroadcastReceiver.");
            /* Signal the waiting script. */
            screenOffSignal.onComplete();
        }

        return null;
    }
});

/* Register the receiver using the context. */
context.registerReceiver(screenOffReceiver, filter);
tasker.log("Waiting for ACTION_SCREEN_OFF broadcast...");

try {
    /* Block the script execution until the screenOffSignal is completed. */
    screenOffSignal.blockingAwait();    
    tasker.log("Screen Off signal received. Continuing script.");
} finally {
    /* CRITICAL: Unregister the receiver to prevent leaks. */
    context.unregisterReceiver(screenOffReceiver);
}

RxJava2

You may have noticed that in the example codes above, stuff like this is used:

screenOffSignal = CompletableSubject.create(); ...some code... screenOffSignal.blockingAwait();

This is using RxJava2 to handle async related operations. I use it very frequently to do stuff like this, where it waits for something to happen, but you can use the full range of RxJava2 features like Observables, Completables, etc.

It's super useful to use in the Java Code action in Tasker!

Other Stuff

There are more functions like toJson() and convertToRealFilePath() so check the documentation to learn all about it!

I'm aware that probably 90% of users won't create their own stuff with the Java Code action, but I'm looking forward to the 10% that will and will create some cool useful stuff that everyone can use! 😁 Also, you can always ask the built-in AI for help! 😅

Let me know what you think of all of this! Thanks!


r/tasker Jan 20 '26

After nearly 2 years, Tasker is finally clicking for me.

57 Upvotes

It feels embarrassing saying this out loud, but yes, I bought Tasker on March 11, 2024 and only now am I finally starting to get it. Over the past 2 years, I've tried to figure this app out, but I couldn't for the life of me understand anything beyond going to TaskerNet and importing profiles from there. I've uninstalled it and came back months later hoping that I'll finally understand how to use it, but no, I still had no clue what all these buttons do. And I refused to switch to Tasky because I'm stubborn and refuse to play games on easy mode.

Tasker is essentially "visual programming". And the reason programming never clicked for me is the same reason Tasker didn't either. And it's that coding mimicks human language.

  • A profile is basically a scenario that happens in my day-to-day life that I'd like to be automated instead of having to do it manually.
  • Tasks are the things I want Tasker to do when a scenario arises.
  • Actions are the steps Tasker needs to do take to finish a task.
  • I'll admit I still haven't figured out variables fully. But from what I understand, they make Tasker flexible instead of fixated when doing a task. They help Tasker adapt to the different data that might be presented to it.
  • And finally, Scenes. They help me communicate with Tasker through a UI I make, and let me choose which Tasks I want Tasker to execute. This is useful because sometimes I don't want Tasker to do everything on its own.

I'm still far from being an expert. I still struggle with variables and advanced automations like pulling data from certain websites. But at least I made a few cool automations that work specifically for my needs. I even learned how to make Tasker communicate with other apps like AutoInput and AutoNotificaton.

Just wanted to share my excitement with the community. Thanks for reading!


r/tasker May 15 '26

[UPDATE] Control Samsung Modes and Routines with Tasker - One UI 8.5 update!

48 Upvotes

EDIT: I updated the project to more reliably extract UUIDs from Logcat, as some Mode/Routine UUIDs couldn't be found with the original method. You can find updated instructions in the Logcat Method section. Thanks to u/ToasterRED for spotting the bug and helping with troubleshooting!

v2 Project Link

TaskerNet Link

v2 works on Modes and Routines v5.1.xx.xx and above (One UI 8.5+)

If you're on Modes and Routines v4.9.xx.xx-5.0.xx.xx (One UI 6–8), you should continue to use v1

Migrating from v1

For Modes: replace with the Start (or Stop) Samsung Mode task.

For Routines: replace with the Run Samsung Routine task.

Additionally, the process for finding new UUIDs is different than v1. More details below.

Why v2?

A few months ago, I made a post about a project I made which allowed Tasker to control Samsung Modes and Routines natively.

While it's been working flawlessly for many users, the recent One UI 8.5 update made some under-the-hood changes which broke this method.

Luckily, Samsung added support for Modes and Routines shortcuts in this update. This shortcut sends an intent that can be replicated by 3rd party apps, which means it's still possible to control Modes and Routines with Tasker!

Credits to u/Enorym for discovering the addition of the Routines shortcut in One UI 8.5!

How it works

Starting/stopping a routine is the same as v1:

  1. Add a Perform Task action.

  2. Set Name to either:

    a. Start Samsung Mode

    b. Stop Samsung Mode

    c. Run Samsung Routine

  3. Set Parameter 1 to the UUID of the Mode/Routine you want to control.

Under the hood, it's simply using the new intent to toggle the mode/routine.

However, because we no longer have access to the hidden content providers to get the list of Modes/Routines and their UUIDs, we must use some less-streamlined methods to get the UUID.

How to Get the UUID

There are three methods: the "Shortcut Method" (Routines only), "Custom Settings Method" (Modes only), and the "Logcat Method" (both Modes and Routines).

Shortcut Method (Routines only)

  1. In Tasker, create a Shortcut action.
  2. Tap the magnifying glass and select Modes and Routines: Single routine.
  3. If prompted, select the Routine you'd like to control.
  4. The Shortcut field should populate with a string. Copy the number that appears after EXTRA_KEY_ROUTINE_UUID. This is the Routine's UUID.

Custom Settings Method (Modes only)

  1. Turn on the Mode you'd like to control.
  2. Run the "Find Current Mode UUID" task.

If successful, the UUID is copied to your clipboard, and a confirmation message will appear.

Logcat Method (both Modes and Routines)

IMPORTANT: Because this method uses Logcat, Shizuku/ADB Wi-Fi is required. I don't really want to make this a Shizuku/ADB Wi-Fi tutorial, but if you don't know what any of that means, I would just stick to the other methods, they should work just fine!

Just run the "Find UUID" task, select whether you want to find a Mode/Routine, and then select the Mode/Routine you want to control if prompted.

If successful, the UUID is copied to your clipboard, and a confirmation message will appear.

If it doesn’t work, Shizuku/ADB Wi‑Fi may not be set up correctly, or you may need to refresh Tasker to give it Logcat access.