Link Search Menu Expand Document
1.4.0 (β75)
Fix for preferences not being dismissed

1.4.0 (β74)
Added welcome splash ”sequence“
Added a Preference pane
Added new formats for 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 (text, popup button)
Add % for Hyper key as a modifier key in key combo strings
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 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 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]
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]
quits apps: always frontmatter key to allow a Bunch to quit apps even if they’re open in other Bunches [documentation]
“Quit Apps Open in Other Bunches” preference, global version of quits apps: always frontmatter [documentation]
If app can’t be activated, send a launch signal
Better “close all windows” handling for XX lines
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

1.4.0 (β68)
Syntax for opening Finder windows in tabs
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 (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 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
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
Change menu display title with frontmatter
Set arbitrary snippet variables with frontmatter
“from script” and “from file” allow dynamic frontmatter
Mark a Bunch as a startup bunch with frontmatter
Schedule bunches to open and close at specified days and times using frontmatter
Tag search for files to open
Full Spotlight search for files to open
Launch files in their default app by using “Default” as app name
(notify) command to trigger notification center
(sleep) commands (sleep, sleep display, sleep screensaver)
Indent snippets 4 spaces/1 tab to have them wait for all apps in the Bunch to launch or quit
< snippets can have a delay ~5
!< snippets will run on close
!< snippets can have a delay ~5
« Embedded snippets
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, including “load as snippet” and interactive Bunch URL
Smarter shell script loading, better script shebang handling, binary detection
Documentation updates

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)

New snippet url method (see docs)
New x-success and x-delay parameters for all URL methods
New AppleScript method run snippet to mirror url handler
Allow default values for variables (${var:default})
Don’t freak out if variable placeholders are included in snippets but values are not provided when importing

Bugfix release

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 checkmark
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

Update help links to new mini-site

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 checkmark
AppleScript command “process text” to process raw Bunch commands

Fix for delayed apps not quitting on close

Better at maintaining “open” checkmarks
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

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

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

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

Fix for issues when changing Bunch Folder preference

Add Microsoft Edge to browser-specific url options

Allow urls to be opened in a specific browser.

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

(wallpaper [path]) command to specify desktop images

Ability to import “snippets” with variables for repeatable bunch actions

$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

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

New commands dark mode and dark mode off
Optimizations and fixes

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

Better reporting for Workflow errors
More dependable implementation for “@@” (hide all apps)

Fix for AppleScript “Corrupted Dictionary” errors

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?

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

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)

Preferences->”Run in Menu Bar” option
Preferences->”Launch at Login” option

Use & workflowname to run automator workflows
Use $ shell command to run shell scripts/commands
Menu command to clear checkmarks 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

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

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)

Toggle Bunches mode, checkmark opened Bunches, click checkmarked Bunch to close
Single Bunch Mode
Quit Apps in Bunch… submenu
Bunch commands (hide dock) (show dock)

@@ alone on a line will hide all apps

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

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)

Add @focus syntax
Add *AppleScript syntax

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

Remove cruft from app menus
Add “Show Bunches in Finder” to Dock and File menus