Skip to content

Latest commit

 

History

History
948 lines (712 loc) · 40.4 KB

changelog.md

File metadata and controls

948 lines (712 loc) · 40.4 KB
layout title nav_order page_id
default
Changelog
130
changelog

Bunch Release Notes

{% include news.html %}

{% docdiff %}


{% available 182 %}

1.4.18 (182) : {% icon new %} Set quit browsers: true in frontmatter to always quit browsers opened with browser:url syntax on close : {% icon fix %} Arc browser URLs failing

{% endavailable %}


{% available 180 %}

1.4.17 (180) : {% icon new %} BUNCH_DIR available as a variable for conditions and file paths : {% icon imp %} Fix Xcode warnings : {% icon fix %} Account for changes in the way Visual Studio Code identifies itself when quitting : {% icon fix %} Clicking a bunch with modifier keys, e.g. Cmd-Click to edit, wasn't working : {% icon fix %} Expand tilde in paths passed to url handler snippet and AppleScript "run snippet" : {% icon fix %} Outdated images in welcome screen : {% icon fix %} Sanity check for open every: key, disallow day/times : {% icon new %} Add Arc browser prefix (arc:) for browser-specific url : {% icon fix %} Expand tilde in paths passed to url handler snippet and AppleScript "run snippet"

{% endavailable %}


{% available 177 %}

1.4.16 (177) : {% icon new %} Add Arc browser prefix (arc:) for browser-specific url launching : {% icon fix %} Account for changes in the way Visual Studio Code identifies itself when quitting : {% icon fix %} Clicking a bunch with modifier keys, e.g. Cmd-Click to edit, wasn't working

{% endavailable %}


{% available 173 %}

1.4.13 (173) : {% icon fix %} Failure to recognize a shell script as a binary and then removing the binary from the command

{% endavailable %}


{% available 170 %}

1.4.12 (172) : {% icon fix %} Recognize multi-word shortcut names : {% icon fix %} Refreshing bunches lost open state : {% icon fix %} Failure to load Bunches on first launch : {% icon fix %} Heredoc shell scripts crashing Bunch

{% endavailable %}


{% available 168 %}

1.4.12 (168) : {% icon fix %} Bunch remembering to open Bunches that were actually closed before exit

{% endavailable %}


{% available 168 %}

1.4.12 (168) : {% icon fix %} Bunch remembering to open Bunches that were actually closed before exit

{% endavailable %}


{% available 167 %}

1.4.12 (167) : {% icon fix %} Crash with displaying a script command window when output is empty : {% icon fix %} First Bunch open after launch has long delay when Parallel launching is disabled : {% icon fix %} Interpret /usr/bin/env shebang even when external script is executable

{% endavailable %}


{% available 166 %}

1.4.11 (166)

: {% icon fix %} (hide desktop) command not functioning : {% icon imp %} Programatically opening System Preferences is broken on Ventura. Best I can currently do is open System Settings, but can't focus a pane (e.g. Notifications). Keeping an eye on this. : {% icon fix %} Bunch didn't recognize symlinks for Bunch folders : {% icon fix %} Switching between Bunch folders would cause all Bunches to show up in a "Bunches" submenu

{% endavailable %}


{% available 163 %}

1.4.10 (163) : {% icon fix %} Bunch didn't recognize symlinks for Bunch folders : {% icon fix %} Switching between Bunch folders would cause all Bunches to show up in a "Bunches" submenu

{% endavailable %}


{% available 163 %}

1.4.10 (163) : {% icon new %} AppleScript commands to copy or save a new Bunch with running apps : {% icon new %} Added canary and firefoxdev as browser prefixes : {% icon new %} Target specific Chrome profiles using chrome[Profile Name]:http://... : {% icon new %} (shortcut NAME) command for running macOS Shortcuts : {% icon fix %} Fixed variable assignment using shell script heredoc syntax : {% icon imp %} The (shortcut) command now accepts input and outputs any response for use in variables : {% icon fix %} Attempt to fix issue where spaces in Bunch directory path caused menu issues or were unable to be selected in the dropdown : {% icon fix %} Newline character in (shortcut) input : {% icon fix %} Replace global variables before processing frontmatter conditionals

{% endavailable %}


{% available 148 %}

1.4.9 (148) : {% icon imp %} /opt/homebrew/bin is now included in the default path for M1 users using shell scripting : {% icon fix %} Allow closing all Finder windows with XX (and on close with !!Finder)

{% endavailable %}


{% available 143 %}

1.4.8 (143) : {% icon fix %} Variable keys passed from URL handler were running into case sensitivity issues : {% icon fix %} When launching or quitting a tag, %\tag was not ignoring the action on close : {% icon fix %} Don't inherit tags when nesting Bunches : {% icon fix %} Variables defined in a snippet call file line work with conditional logic within the snippet : {% icon fix %} Allow retries when sending AppleScript commands for things like : {% icon fix %} Ensure relaunch of Finder after hiding/showing desktop icons : {% icon fix %} Modifier key mismatch in Select Editor tooltip

{% endavailable %}


1.4.7 (139) : {% icon fix %} Variable keys passed from URL handler were running into case sensitivity issues


1.4.7 (139) : {% icon fix %} Variable keys passed from URL handler were running into case sensitivity issues

{% available 136 %}


1.4.6 : {% icon new %} (quit everything except ...) command to quit all running Dock apps (with an optional exception list) ([documentation]({{ site.baseurl }}/docs/bunch-files/commands/quit-everything/)) : {% icon new %} "file PATH contains" logic condition to check file contents for text string : {% icon new %} "file PATH exists" logic condition : {% icon new %} "title prefix" frontmatter applies a string before the Bunch, or all affected Bunches if used in @tag/folder.frontmatter : {% icon new %} "ignore if/unless" frontmatter can control whether a Bunch displays in the menu. Accepts UUID or any logic condition recognized by Bunch : {% icon imp %} "schedule if/unless" now accepts any logic condition. Instead of a trigger file like it had, use file TRIGGER_FILE exists. : {% icon fix %} Fix an error with opening files in apps called by bundle identifier : {% icon fix %} Long directory names breaking preference window layout (#148) : {% icon fix %} Calling "toggle" via URL handler not respecting single bunch mode (#149) : {% icon fix %} Crash when completing script with error on Bunch close (#152) {% endavailable %}


1.4.5

: {% icon new %} Fancy new icon design by Felippe van Eekhout : {% icon new %} Add "Untagged" submenu to tags menu : {% icon new %} Refresh all browsers AppleScript command : {% icon new %} Add "Untagged" submenu to tags menu : {% icon new %} [Heredoc support for shell commands]({{ site.baseurl }}/docs/bunch-files/scripts/shell-scripts/#heredoc) : {% icon new %} [Snippet syntax support for script lines]({{ site.baseurl }}/docs/bunch-files/scripts/shell-scripts/#snippet) ($ <file#fragment) : {% icon new %} [Heredoc support for variable assignments]({{ site.baseurl }}/docs/bunch-files/variables/#heredoc) : {% icon new %} [Snippet syntax support for variable assignment]({{ site.baseurl }}/docs/bunch-files/variables/#snippet) (var = <file#fragment) : {% icon new %} [Submenu with bunches listed by tag]({{ site.baseurl }}/docs/using-bunch/organizing-bunches/#tags) : {% icon new %} [AppleScript "open/close/toggle/list bunches tagged"]({{ site.baseurl }}/docs/integration/applescript/#tags) : {% icon new %} [URL handler for open/close/toggle commands accepts "tag=X" as optional replacement for "bunch=X"]({{ site.baseurl }}/docs/integration/url-handler/#tags) : {% icon imp %} Move tag menus into section of main menu instead of Tags submenu : {% icon imp %} Allow (display) and ~delay syntax for heredoc scripts : {% icon imp %} Move tag menus into section of main menu instead of Tags submenu : {% icon imp %} Variable placeholders no longer require removing spaces from variable names : {% icon imp %} Better truncation of long script paths/names in running scripts menu : {% icon fix %} Don't register var_name = ${old_var} as a shell script assignment : {% icon fix %} Remove "tag:" key from folder frontmatter : {% icon fix %} Action buttons on script error dialogs not opening Bunch Log : {% icon fix %} Remove single and double quotes from ends of frontmatter values


1.4.4 : {% icon new %} Create menus from YAML, JSON, text, or executable script files ([Documentation]({{ site.baseurl }}/docs/bunch-files/interactivity/external-files/)) : {% icon imp %} Better replacement of variable placeholders that are populated mid-stream : {% icon imp %} Rewrite of Do Not Disturb handling on Big Sur and later : {% icon imp %} Improved variable (re)assignment inside of conditional logic blocks : {% icon bug %} Fix case sensitivity when replacing variable placeholders


1.4.3 : {% icon bug red %} Reversible commands not reversing when closing a bunch : {% icon bug red %} Do Not Disturb not disabling : {% icon bug red %} If Bunches are open when changing the "Toggle Bunches" preference to OFF, register them as closed so they can be opened again : {% icon bug red %} If a Bunch is open when it's changed to toggles: false, reset its open state so it can be opened again : {% icon bug red %} If a multiple choice dialog sets a variable in an opens-only Bunch, reset the variable after opening so the dialog appears again next time


1.4.1 : {% icon imp %} Allow variable placeholders in "run before/after" frontmatter scripts : {% icon imp %} Allow Coherence X apps to function properly if referred to by bundle identifier (e.g. com.BZG.CoherenceMyApp) : {% icon imp %} Remove superfluous log statements : {% icon bug red %} Empty comment lines stopping processing


1.4.0 (β110) : {% icon imp %} Attempt to quit an app even if it's not immediately located among running apps : {% icon bug red %} Don't convert app name to value of localizedName property, fixes issues with iTerm. Trying too hard is detrimental, apparently. : {% icon bug red %} Don't automatically quit Finder if included in a Bunch


1.4.0 (β109)

: {% icon new %} Allow !!!Triple Negative to quit an app when closing a Bunch without launching on open : {% icon new %} space:all parameter for (display) command to cause a display window to join all spaces : {% icon imp %} Special handling for "FileMaker Pro 18 Advanced" : {% icon imp %} Switch to using mdfind as backup app locator : {% icon imp %} Convert some Info-level log messages to Debug-level for cleaner log output


1.4.0 (β108)

: {% icon new %} Frontmatter keys for running scripts before/after opening a Bunch, and before/after closing : {% icon new %} Variables can hold values with newlines : {% icon new %} Perform pre-defined transformations on variable values (url encode, shell escape, raw newlines, newlines for typed strings) : {% icon imp %} Percent encode newlines : {% icon imp %} Do some translating on built-in frontmatter keys to allow for some variations in syntax : {% icon imp %} URL encoding of variables now encodes question marks and other symbols not allowed in URL paths : {% icon imp %} Limit length of info logging messages to 50 characters : {% icon imp %} Process variable assignments in document order : {% icon imp %} Process variable assignment dialogs inline with other variables, allowing dynamically-assigned variables to be used in dialogs : {% icon bug red %} Remove Bunch-specific frontmatter keys from variables passed to Waiting Snippets : {% icon bug red %} Prevent backslash escapes from disappearing from values during variable assignment : {% icon bug red %} Don't change case when logging commands : {% icon bug red %} Make variables available prior to processing shell script variable assignments


1.4.0 (β107) : Breaking change: fragment ID syntax no longer accepts a single dash before the square brackets, must have at least 2 or use a different symbol : Everything after closing square bracket in fragment id lines is ignored : Whitespace is allowed anywhere in a fragment id line, as long as the first character is one of the accepted divider symbols (#->=) : Fragment id divider syntax now accepts > and = as divider lines : Better searching for apps NSWorkspace doesn't recognize as apps by name : If Bunch Item type is Unknown, consider it an app name that wasn’t found and make an attempt to launch it anyway : if VarName condition with no operator will return true if VarName is defined and contains ANY content other than false or no. : {% icon bug red %} Make if VarName conditions case insensitive : {% icon bug red %} Process snippets within conditions


1.4.0 (β105) : Walk back change to force-hiding apps before @focus lines


1.4.0 (β104) : Add AppName syntax to indicate an app should activate/foreground on launch. By default apps now won’t activate, unless they’re receiving keystrokes : (hide/show menu bar) command : Allow #clear as window background color : Use better async app launch method on 10.15+ : Slightly more reliable hiding and focusing of apps, including forcing any apps before an @focus line to launch hidden (previously just relied on activateHidingOthers) : Better formatting of long scripts in Running Scripts menu : Allow setting actual window background color for (display) windows : {% icon bug red %} A Bunch with no frontmatter or non-comment items in the Bunch folder was causing the entire menu to be empty : {% icon bug red %} Remove Bunch default keys from frontmatter when inherited by child Bunches (launched by another Bunch) : {% icon bug red %} (input source) command now performs all actions on main thread (crasher)


1.4.0 (β103) : Allow #clear as a background color for Quick Look display windows : Allow migration of Bunch Beta prefs back to stable channel : Add (hide menu bar) command


1.4.0 (β102) : {% icon bug red %} Variables set in parent Bunch are now available to Waiting Snippets : {% icon bug red %} Allow HTML display command to handle non-HTTP url schemes : Fixes for Example Bunch


1.4.0 (β101) : Special handling for Visual Studio Code when attempting to quit the app : (input source XXX) command to switch keyboard input source : {% icon bug red %} Change "Clear Checkmarks" shortcut to Control-Option-Command-R : {% icon bug red %} Don't trigger screen commands on wake from sleep if parent Bunch isn't open : Create checkbox dialogs to handle optional launching of multiple apps/snippets in one dialog : Present dialogs in the order they’re listed in the Bunch


1.4.0 (β99) : {% icon bug red %} Running an AppleScript file with a * line wasn't actually running anything


1.4.0 (β98) : If/Else [logic parsing]({{ site.baseurl }}/docs/bunch-files/logic/) : Allow direct key = value variable assignment in snippets. : Direct variable assignments are parsed before snippets are loaded : If/then blocks can set/change variables before next block is processed : All Snippets (including Waiting Snippets) inherit their parent's frontmatter so variables carry forward : Allow [global variable assignments]({{ site.baseurl }}/docs/bunch-files/variables/#global) that persist across launches and are available in all Bunches : {% icon bug red %} Don't parse = in URLs as a variable assignment : {% icon bug red %} Notification issue when assigning a variable with an AppleScript and the script fails : {% icon bug red %} from script variable assignments becoming empty : {% icon bug red %} Allow spaces and underscores in var = $ script assignments : {% icon bug red %} Variable placeholders don't have to be lowercased to match : {% icon bug red %} If processing a script as AppleScript fails, attempt to execute as shell script (JXA scripts executed with * script items return error) : {% icon bug red %} Allow arguments to be passed when assigning variables with script results : {% icon bug red %} Don't strip underscores from variable keys in key_name = $"Query" assignments : {% icon bug red %} Bug with running AppleScript commands in serial execution


1.4.0 (β93) : Reduce error messages in log (move to debug level) : Handle 2 and 3-character app names (sorry VLC)


1.4.0 (β92) : {% icon bug red %} Handle edge case where running applications includes an app that doesn't return an app name : {% icon bug red %} Error checking for string manipulation functions


1.4.0 (β91) : Url handler method for opening Preference pane in the GUI (x-bunch://prefs) : Add user agent setting to HTML display windows to allow forcing Desktop or Mobile views regardless of window size (ua:desktop) : Fully activate an app when @focusing it : Update all internal links to point to bunchapp.co : {% icon bug red %} Replace deprecated preference storage methods : {% icon bug red %} Spelling error in preferences (Thanks Jay) : {% icon bug red %} Directly close preference view rather than relying on a notification


1.4.0 (β88) : Only run interactive dialogs to assign a variable if the variable isn't already defined (allow frontmatter to override dialogs) : Remove "Working" highlight on menu item after 10 seconds as a fallback : Crash caused by (notify) command


1.4.0 (β87) : {% icon bug red %} Double trimming brackets on on-quit commands : {% icon bug red %} Edge case where canceling a multiple choice dialog left Bunch with an empty string


1.4.0 (β86) : Stop stripping underscores from variable names. Why did I think that was a good idea? I forget. : Assigning variables from dialogs when no frontmatter has previously been defined : Null logging when frontmatter wasn't changed : Don't let a Bunch quit itself in Single Bunch Mode when forced open from the menu


1.4.0 (β85) : {% icon bug red %} Subfolder name appearing in menu item titles : {% icon bug red %} URL handler calling open or close wasn't ignoring current state


1.4.0 (β84) : get preference [key] AppleScript command for retrieving various preference settings : list open bunches AppleScript command to list only open Bunches : list bunches returns an AppleScript list instead of a string : Remove some frivolous debug logging statements. It's the economy. : 10 second timeout for actions in sequential execution mode. The economy again. : When calling other Bunches via Bunches or handlers, allow matching subfolder and Bunch by display titles or any combination of title and display title : Allow Bunches with the same name in different subfolders : Include subfolder in log identifier : All Bunch name matching is case insensitive : Code refactoring to do a better job of catching bugs early


1.4.0 (β83) : !X syntax for inserting pauses [in key commands]({{ site.baseurl }}/docs/bunch-files/keystrokes/#combopause) and [typed strings]({{ site.baseurl }}/docs/bunch-files/keystrokes/#typedpause) : (display) command accepts chrome:none for windows with no title bar or buttons : {% icon bug red %} Force apps to foreground before sending key combos : {% icon bug red %} Pause Bunch item processing while sending key commands for better consistency : Bring all windows to foreground when Unhiding All Windows : Automatically resolve tildes (~) in shell command arguments to user's home directory : Waiting Snippet waits for up to 10 seconds for presence of main window before considering an app launched.


1.4.0 (β82) : Display and screen command, UUID matching for selective scheduling, various fixes : (display) command parameters can now be in any order. This involved some changes to the syntax, please [see the documentation]({{ site.baseurl }}/docs/bunch-files/commands/display/). : New (screen) command for creating a full-screen, solid color window with optional transparency for hiding all windows below it. [See docs for usage.]({{ site.baseurl }}/docs/bunch-files/commands/screen/) : Support for schedule if and schedule unless frontmatter for [excluding Macs from scheduling]({{ site.baseurl }}/docs/bunch-files/scheduling-bunches/#selective) based on trigger file or UUID : startup frontmatter can be one or more UUIDs to start only on matching Macs : startup unless frontmatter can be one or more UUIDs : Copy UUID button in preferences for use with schedule if, schedule unless, and startup : Bunches can be organized in subfolders, which will create submenus in the main Bunch menu : Allow folder.frontmatter to [set properties of submenu]({{ site.baseurl }}/docs/using-bunch/organizing-bunches/#frontmatter) : Allow folder.frontmatter to [pass keys to all Bunches in a subfolder]({{ site.baseurl }}/docs/bunch-files/frontmatter/#folderfrontmatter) : Rename Save to Done in Preferences : More complete emoji handling : Add keyboard shortcut for Open Log (⇧⌘L) : Wait for Bunch commands and script items when executing sequentially : {% icon bug red %} Regression in schedule handling : {% icon bug red %} Fixes for changing Bunch Folder preferences and storing recents


1.4.0 (β80) : If a background color is set for a display text file but no foreground, pick a contrasting color : If a background color is specified for text or HTML display windows, change the window to dark mode appearance if the color is less than 50% brightness : Enable edit menu commands (copy/paste/etc.) in display commands windows : Don't cut top off scrolling quick look previews : Allow text preview/file watching of any file with a text mime-type, not just .txt and .log : {% icon bug red %} Ensure all window updates happen on the main thread : {% icon bug red %} Quick Look windows via display command set to wallpaper level were empty


1.4.0 (β80) : Set variables [with script results]({{ site.baseurl }}/docs/bunch-files/variables/#script) : Remove option to run in Dock


1.4.0 (β79) : Extra .01s delay when sending key combos to improve app responsiveness in some cases : Complete refactoring to make "Bunch Items" their own custom object : Move what can be truly executed in the background from async on main thread to a background thread : Give Quick Look previews in display command their own positionable window : Window titles for text and html display windows : {% icon bug red %} Attempt to fix Preference layout on 10.13 : {% icon bug red %} Open-only Bunches not launching


1.4.0 (β78) : Quick fix to clean up some debug logging


1.4.0 (β77) : Major overhaul of shell command runner : [Task monitors]({{ site.baseurl }}/docs/bunch-files/scripts/shell-scripts/#monitoring-scripts) for shell scripts launched by a Bunch : [(display) command]({{ site.baseurl }}/docs/bunch-files/commands/display/) for positionable floating windows containing local HTML, web sites, text or log files, or other file types as Quick Look previews : Specify [multiple days/times in scheduling frontmatter]({{ site.baseurl }}/docs/bunch-files/scheduling-bunches/), e.g. open on: M W F 8am, T Th 10am : Assign a [global keyboard shortcut]({{ site.baseurl }}/docs/using-bunch/keyboard-control/) for opening Bunch menu in menu bar mode : Assign keyboard shortcuts for each Bunch using [shortcut: frontmatter]({{ site.baseurl }}/docs/bunch-files/frontmatter/#shortcuts) : More keyboard shortcuts for internal commands : Make default keyboard shortcuts for opening Bunches single numbers without modifiers (like ⌘) : Use ${variables} inside of Bunches (like you would in Snippets), populated by frontmatter keys or manually when calling a Bunch from a Bunch. [Documentation]({{ site.baseurl }}/docs/bunch-files/variables/) : [ignores state: frontmatter]({{ site.baseurl }}/docs/bunch-files/frontmatter/#behavior) to allow open bunches to reopen, closed bunches to re-close : Command-Option click to force close (menu bar mode) : Command-Shift click to force open (menu bar mode) : Header on Bunch menu shows what action modifier key clicks will perform (menu bar mode) : Remove "Close Items In" menu in menu bar mode in favor of Command-Option click : [menu divider frontmatter]({{ site.baseurl }}/docs/bunch-files/frontmatter/#dividers) key that adds a menu separator before or after the Bunch in the menu the Bunch in the menu : Allow [sending global keyboard shortcuts]({{ site.baseurl }}/docs/bunch-files/keystrokes/#sending-global-key-combinations) (not tied to specific app) : URL handler [reveal method]({{ site.baseurl }}/docs/integration/url-handler/#urlhandlerreveal) : URL handler [edit method]({{ site.baseurl }}/docs/integration/url-handler/#urlhandleredit) : URL handler can now match display titles as defined in frontmatter (case insensitive, emoji insensitive) when specifying Bunches : Add Accessibility Permission screen to startup splash : Add Accessibility Permission button to preferences with observer for current state : Persist NSTask for caffeinate command (awake) so it can be terminated without killall` : Default Bunch Editor preference to TextEdit so there's something assigned during setup : Add Hide/Unhide All Windows option in menu bar mode : Set default notification style to Alerts automatically : "Working" state for status bar item (yellow), toggled for long-running scripts, when waiting for input or counting down to scheduled open/close : Rename "Set" to "Add" in Bunch Folder preferences : Gentler watching of Bunch folder for changes, more thorough refresh : Light up status item (green) to notify that changes have been detected in the Bunch folder : Notifications Preferences shortcuts in preferences : Default to menu bar application, show Dock if preferred : Reduce transparency on preference window to improve legibility : Better image/text contrast for Welcome splash and Preferences : {% icon bug red %} file watchers not deallocating : {% icon bug red %} Don't make preference window float above all other windows if running in Dock mode : {% icon bug red %} allow Bunch main menu to appear when run in Dock Mode : {% icon bug red %} Remove notification and stop timer when countdown clicked : {% icon bug red %} F1-F12 not working as {keyboard combos}

: {% icon bug red %} Process variables before importing snippets so that placeholders can be used for snippet fragments (<snippet#${fragmentvar}) : {% icon bug red %} Keyboard focus for popups buttons and text fields in interactive dialogs : {% icon bug red %} Scheduled open/close being invalidated after opening : {% icon bug red %} Allow keyboard focus for popup buttons and text fields in interactive dialogs : {% icon bug red %} Shell scripts in sequential mode fully wait for previous task to complete : {% icon bug red %} Close Items in wouldn't close if the Bunch wasn't open, now forces


1.4.0 (β75) : Fix for preferences not being dismissed


1.4.0 (β74) : Added welcome splash sequence : Added a [Preference pane]({{ site.baseurl }}/docs/using-bunch/preferences/) : Added [new formats for comments]({{ site.baseurl }}/docs/bunch-files/comments/), // and block comments /* ... */ : Allow comments on same line as Bunch items : Fixed infinite loop if referenced snippet file is not found : Accept more Unicode characters in key combo strings (, , , etc.) : Slow down automated typing by a couple milliseconds/key stroke : "Bunch Editor" preference : Allow Command-Clicking an app in the menu to open it in an editor : You can now [assign variables on the fly using dialogs]({{ site.baseurl }}/docs/bunch-files/#variables) (text, popup button) : Add % for Hyper key as a modifier key in [key combo strings]({{ site.baseurl }}/docs/bunch-files/keystrokes/) : Activate all windows of target app before sending keystrokes : Bear with me... if a Bunch opens another Bunch when it closes, don't quit apps that the other Bunch opens anyway : Run all keystroke sequences on main thread, improved reliability and no crashes : Multiple issues affecting marking Bunches open/closed in the controller : Do a full close of open Bunches (including re-opening !closed Bunches) when switching in Single Bunch Mode : Handling of !!Bunch.bunch launch-on-close : Default url handler x-success delay to 1 instead of 5 : Allow multiple files (comma separated) when calling snippet url handler : Allow fragments to be called per file in url snippet handler using hashes (encoded as %23) : Descriptive titles for URL Handler calls in log : Watch from file: frontmatter files and automatically refresh the Bunch when changed : URL handler for open, close, and toggle allows multiple target Bunches separated by comma : Allow url handler to set arbitrary frontmatter keys using query string : Bunches with schedules now have tooltips on hover showing next open/close time : Fixed Raw URL handler not processing raw text : Ignore frontmatter lines with empty key or value : Fixed scheduled dates in logs off by 15 seconds : Various glitches with Bunch scheduling : Close Items In... menu not working : Fix for delayed launches in parallel Bunches (~5)


1.4.0 (β72) : Complete rewrite of [keystroke functionality]({{ site.baseurl }}/docs/bunch-files/keystrokes/) for macOS 10.15+


1.4.0 (β71) : Fixed @Focused apps failing to quit


1.4.0 (β70) : You can now type strings within key combo syntax by surrounding with double quotes, e.g. {@n (tab)3 "typing an email\\n\\n-Brett" @$d} : More [interactivity]({{ site.baseurl }}/docs/bunch-files/interactivity/) with multiple-choice dialogs and snippet branching : Restored missing "Launch Items in Parallel" preference


1.4.0 (β69) : Better handling of Accessibility permissions requests : (stay awake) command to keep Mac awake while a Bunch is open (or for a set period of time , e.g. (stay awake 60)) [[documentation]({{ site.baseurl }}/docs/bunch-files/commands/awake/)] : Fixed menu ordering for real : toggles: false frontmatter key to only allow a Bunch to open, never close, not affecting the state of apps it contains or the menu. [[documentation]({{ site.baseurl }}/docs/bunch-files/frontmatter/#behavior)] : quits apps: always frontmatter key to allow a Bunch to quit apps even if they're open in other Bunches [[documentation]({{ site.baseurl }}/docs/bunch-files/frontmatter/#behavior)] : "Quit Apps Open in Other Bunches" preference, global version of quits apps: always frontmatter [[documentation]({{ site.baseurl }}/docs/using-bunch/preferences/)] : If app can't be activated, send a launch signal : Better "close all windows" handling for [XX lines]({{ site.baseurl }}/docs/bunch-files/apps/#closingwindows) : If natural language interval has no s, m, h, or d, assume seconds (e.g. (sleep 120) assumes (sleep 120s)) : For real fixed [menu ordering]({{ site.baseurl }}/docs/bunch-files/frontmatter/#sortorder)


1.4.0 (β68) : Syntax for [opening Finder windows in tabs]({{ site.baseurl }}/docs/bunch-files/apps/#findertabs) : single bunch mode: ignore frontmatter key to exclude a Bunch from be affected by Single Bunch Mode : Menu ordering fixed : Force dialogs to remain above other app's windows : Fix hang when hiding all apps


1.4.0 (β67) : "New Bunch With Open Apps" command : Option to [execute Bunch items in parallel]({{ site.baseurl }}/docs/bunch-files/sequence/) (all at once) : "Recent Bunch Folders" in Preferences submenu : Better log messages for shell script errors : Move initial Bunch Folder location to ~/Documents/Bunches : Change wording of menu item from "Quit Apps In..." to "Close Items in..." : Changed "No" button in Optional Snippets dialog to "Cancel" so Escape key works : Offer relaunch dialog if log detail level is changed : Sort preferences in Bunch menu in Dock mode : %{} variable placeholder url encodes replacement : $BUNCH_PHASE [environment variable]({{ site.baseurl }}/docs/bunch-files/scripts/shell-scripts/#argsandenv) for shell scripts to determine whether the Bunch is opening or closing : Improved: shell script parsing and execution : Fixed: Users couldn't set log level to Debug : Offer "relaunch" dialog if log level is changed : ?"Optional Snippet" queries now work with on-close !<Snippets too : Repeating syntax for key commands {@n (right)10} : Ask the user if they want to close open Bunches when switching to a new Bunch folder


1.4.0 (β66) : Allow frontmatter from script to wait for input, allowing [scripts with dialogs]({{ site.baseurl }}/docs/integration/advanced-scripting#password) : Only run frontmatter from script when opening, not when pre-loading tasks : Allow startup frontmatter to accept value of ask, offer yes/no dialog before loading : Better error handling for recursive nesting (Bunchception)


1.4.0 (β65) : Sort menu by display title (ignoring emoji) : "menu order" frontmatter to force menu display order


1.4.0 (β62) : Don't lowercase notify command text


1.4.0 (β61) : Introduced [frontmatter]({{ site.baseurl }}/docs/bunch-files/frontmatter) : Change menu display title with frontmatter : Set [arbitrary snippet variables]({{ site.baseurl }}/docs/bunch-files/frontmatter/#arbitrarykeys) with frontmatter : "from script" and "from file" allow [dynamic frontmatter]({{ site.baseurl }}/docs/bunch-files/frontmatter/#dynamicfrontmatter) : Mark a Bunch as a startup bunch with frontmatter : [Schedule bunches]({{ site.baseurl }}/docs/bunch-files/scheduling-bunches) to open and close at specified days and times using frontmatter : [Tag search]({{ site.baseurl }}/docs/bunch-files/spotlight-searches#tagsearch) for files to open : [Full Spotlight search]({{ site.baseurl }}/docs/bunch-files/spotlight-searches#spotlightsearch) for files to open : [Launch files in their default app]({{ site.baseurl }}/docs/bunch-files/apps/#defaultapp) by using "Default" as app name : (notify) command to [trigger notification center]({{ site.baseurl }}/docs/bunch-files/commands/notify/) : (sleep) commands ([sleep, sleep display, sleep screensaver]({{ site.baseurl }}/docs/bunch-files/commands/sleep/)) : Indent snippets 4 spaces/1 tab to have them [wait for all apps in the Bunch to launch or quit]({{ site.baseurl }}/docs/bunch-files/snippets/#waitingsnippet) : < snippets can have a delay ~5 : !< snippets will run on close : !< snippets can have a delay ~5 : << [Embedded snippets]({{ site.baseurl }}/docs/bunch-files/snippets#embeddedsnippets) : [Bunch Log]({{ site.baseurl }}/docs/using-bunch/bunch-log) with customizable log levels : Detect shebang and execute appropriate binary for non-executable shell scripts : Attempt at smarter app hiding : Update example Bunch : New features for the [Bunch CLI]({{ site.baseurl }}/docs/integration/cli), including "load as snippet" and interactive Bunch URL : Smarter shell script loading, better script shebang handling, binary detection : Documentation updates


1.3.6 : Preference option to restore previously open Bunches when launching : Close launched Bunches when closing Bunch : Use !Name.bunch to close a bunch within a Bunch : Avoid infinite loops when opening/closing Bunches within Bunches (a Bunch can't call itself)


1.3.5 : New snippet url method ([see docs]({{ site.baseurl }}/docs/integration/url-handler/#urlhandlersnippet)) : New x-success and x-delay parameters for all URL methods : New AppleScript method run snippet to mirror url handler : Allow [default values]({{ site.baseurl }}/docs/bunch-files/snippets/#defaultvalues) for variables (${var:default}) : Don't freak out if variable placeholders are included in snippets but values are not provided when importing


1.3.4 : Bugfix release


1.3.3 : Launch Bunches on startup with *.startup files : On/Off images for Bunches in menu bar mode : Allow Bunches to be launched like applications : If a Bunch is launched by another Bunch, affect its check mark : Keyboard shortcuts in menu bar menu : Snippet files not found when they absolutely do exist : Better handling if a fragment isn't matched : When a Bunch causes errors, gracefully ignore and continue processing other bunches


1.3.2 : Update help links to new mini-site


1.3.1 : Handle Do Not Disturb commands on Big Sur : Add syntax for confirm dialog when loading snippets, e.g. <test.snippet ?"Load this snippet?" : Allow Option-click on checked Bunch to clear check mark : AppleScript command "process text" to process raw Bunch commands


1.3.0 : Fix for delayed apps not quitting on close


1.2.9 : Better at maintaining "open" check marks : Reduce delay when storing and changing wallpaper : Add option to delay a launch or command with ~X at the end of line : Big Sur Dock Icon


1.2.8 : add (audio mute) and (audio unmute) commands : allow separate input/output muting and volume commands : improved method for setting output volume


1.2.7 : Allow !! to launch apps when closing a Bunch : Better error handling for unreadable Bunch files : Allow sections in snippets that can be called individually


1.2.6 : New audio commands for switching inputs, outputs, and setting volume


1.2.5 : Fix for issues when changing Bunch Folder preference


1.2.4 : Add Microsoft Edge to browser-specific url options


1.2.3 : Allow URLs to be opened in a specific browser.


1.2.2 : Change escape codes for up and down from "\\p" and "\\n" to "\\u" and "\\d" : Add \\h delete, \\a home, \\e end escape codes : Allow leading and trailing space for [ typed string ] commands : Allow system key names in key commands, e.g. {@up} : Allow Unicode characters for arrow keys, e.g. {@↑} : Allow hyphenated long-form commands, e.g. {opt-left opt-left cmd-shift-up} : Make about panel appear in foreground when running in menu bar mode


1.2.1 : (wallpaper [path]) command to specify desktop images


1.2.0 : Ability to import "snippets" with variables for repeatable bunch actions


1.1.9 : $BUNCH_DND environment variable for shell scripts, shows current Do Not Disturb state : $BUNCH_DOCK environment variable for shell scripts, shows current Dock visibility : $BUNCH_DESKTOP_ICONS environment variable for shell scripts, shows whether Desktop icons are visible


1.1.8 : Send key commands using {@~w} in app file params : Type key sequences using [type this out] in app file params : Improve hiding all apps (@@)


1.1.7 : New commands dark mode and dark mode off : Optimizations and fixes


1.1.6 : Run commands when closing a Bunch: !(hide dock) : Dock positioning commands: !(dock [left|right|bottom]) : Launch At Login preference handling : Fixes Dock show/hide commands being reversed


1.1.5 : Better reporting for Workflow errors : More dependable implementation for "@@" (hide all apps)


1.1.4 : Fix for AppleScript "Corrupted Dictionary" errors


1.1.3 : AppleScript improvements that will be invisible to the naked eye. Or really any end user. : Donate button twice in the menu bar version. Nobody needs that much prodding. I mean, you're going to pitch in or you're not, right?


1.1.2 : Bunch can be automated with AppleScript : URL method setPrefs to change certain preferences from script : Bind bunch menu item states to a property so they're always up-to-date


1.1.1 : Additional environment variables for shell scripts : Updated Example.bunch with all the latest goodness : A script line (*&$) preceded by ! will only run that script when closing the Bunch : Status item submenu with Check For Updates (and Donate)


1.1.0 : Preferences->"Run in Menu Bar" option : Preferences->"Launch at Login" option


1.0.10 : Use & workflowname to run automator workflows : Use $ shell command to run shell scripts/commands : Menu command to clear check marks in toggle/single bunch mode (force launched Bunches to launch again) : Url method raw for directly loading any Bunch-formatted file or directly passing bunch commands as a string : (dnd on) and (dnd off) commands for Do Not Disturb : Watch bunch folder for changes and refresh automatically : Opening or closing a Bunch via url command now toggles launched state in Dock menu when Toggle Bunches is active


1.0.9 : Add close method to url handler : Add toggle method to url handler : Allow url handler methods to toggle Bunch state in Dock Menu : Show an alert when commands fail to make it easier to diagnose and fix Bunches : Add LaunchBar, Alfred, and CLI scripts to documentation


1.0.8 : Add percent (%) before app name to ignore it when closing a Bunch : Add XX as a filename to close all windows for the app
: Desktop icons commands: (hide desktop) and (show desktop)


1.0.7 : Toggle Bunches mode, check mark opened Bunches, click check marked Bunch to close : Single Bunch Mode : Quit Apps in Bunch... submenu : Bunch commands (hide dock) (show dock)


1.0.6 : @@ alone on a line will hide all apps


1.0.5 : New URL handler x-bunch: : Ability to change location of Bunches folder


1.0.4 : Allow URL schemes (in addition to HTTP) : Test if app is running or hidden before launching, hiding, quitting : Use NSWorkspace instead of AppleScript where possible : Allow _ suffix to hide app (experimental)


1.0.3 : Add @focus syntax : Add *AppleScript syntax


1.0.2 : Improve launch speed : Allow ![app name] to quit an app : Build for older macOS versions : Sort Bunches alphabetically in Dock menu


1.0.1 : Remove cruft from app menus : Add "Show Bunches in Finder" to Dock and File menus