Workflows
System
Audio
Switch the default audio output and input device from Alfred.
Bluetooth
Connect and disconnect Bluetooth devices from Alfred.
Miscellany
The macOS odds and ends Alfred leaves out.
Timers
Set a timer for a while from now, or an alarm for a time on the clock, with a note about what it is for.
Writing
Productivity
Calculator
Work out sums, percentages, units and currencies, typed the way you'd say them.
Claude
Chat with Claude from Alfred, through Claude Code.
Events
List your upcoming Calendar events from Alfred.
Outline
Search Outline from Alfred.
Signal
Find a Signal contact or group by name and open the chat.
Slite
Search Slite and ask its AI from Alfred.
Development
Smart home
No Results Try a different search.
Use one of the following keywords:
| Keyword | What it does |
|---|---|
audo | Pick the output device; keep typing to filter |
audi | Pick the input device; keep typing to filter |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Switch to the device |
| ⌘C | Copy the device's name |
The current device is listed first, with an orange icon; the others are grey. Switching reports as a notification, once the change is confirmed.
Use one of the following keywords:
| Keyword | What it does |
|---|---|
bt | List paired devices, connected first; keep typing to filter |
btt | Turn Bluetooth on or off |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Connect the device, or disconnect it if connected |
| ⌘C | Copy the device's address |
The icon next to each device will be blue when connected and grey otherwise. Paired devices are listed even when Bluetooth is disabled; selecting one will first turn on Bluetooth.
Type = and a question, with or without a space after it:
| Typed | Answer |
|---|---|
=2^10 + 5! | 1,144 |
=what's 5 plus 3? | 8 |
=12% of 80 | 9.6 |
=80 - 20% | 64 |
=20% off 80 | 64 |
=20 is what % of 50 | 40% |
=10 km in miles | 6.213712 miles |
=5 ft 10 in to cm | 177.8 cm |
=how many seconds in a day | 86,400 seconds |
=30c to f | 86 °F |
=100 dollars in euros | The amount in euros |
=€50 to £ | The amount in pounds |
=100 usd | The amount in your usual currencies |
=monday in 3 weeks | That Monday's date |
=30 days from today | The date |
=when is christmas | The date and its weekday |
=days until 25 dec | The number of days |
=week number | This week's ISO week number |
=unix 1700000000 | The moment, in your time zone |
=time in tokyo | The time there |
=5pm ldn in sf | 17:00 in London as San Francisco time |
=9:30 jfk | 09:30 at JFK as your time |
=time diff india | 5 hours 30 minutes ahead |
=in 4 hours | The time then |
Places can be cities, countries, airport codes (jfk) or zones (pst,
cet, utc).
The subtitle shows how your question was read, so you can tell when it was read wrong.
| Key | Action |
|---|---|
| ↩ | Insert the answer into the frontmost app |
| ⌥↩ | Insert the number alone, unrounded |
| ⇧↩ | Insert the question and answer |
| ⌘C | Copy the answer |
What ↩ inserts isn't kept in your clipboard history.
Alfred's own advanced calculator also answers to =. Turn it off under
Alfred Preferences → Features → Calculator, or pick another keyword (see
Configuration).
| Keyword | What it does |
|---|---|
cl | Ask Claude Opus a question |
clh | Ask Claude Haiku |
cls | Ask Claude Sonnet |
clo | Ask Claude Opus |
clf | Ask Claude Fable |
Each keyword asks in a new chat, and its model is the newest of its kind. ⌘↩ asks in the previous chat instead, with the keyword's model; with no question typed, it shows that chat.
The answer is written into the chat as it comes. In the chat:
| Key | Action |
|---|---|
| ↩ | Ask the follow-up typed under the chat |
| ⌘↩ | Copy the chat as Markdown |
| ⇧↩ | Stop the answer being written |
| ⌥↩ | Continue the chat in Claude Code, in your terminal |
| ⇧⌥↩ | Continue the chat in the Claude desktop app |
Continued elsewhere, the chat is a Claude Code session like any other: it has Claude Code's tools and your settings, and works in the workflow's data folder. What is said there isn't shown back in Alfred, though Claude remembers it. ⌥↩ uses the terminal chosen in Alfred's Features → Terminal.
| Keyword | What it does |
|---|---|
em | Browse every emoji; keep typing to filter |
The filter matches the name, the gemoji shortcode and Unicode's own keywords for each emoji, the ones the macOS emoji picker searches: laugh finds 😂, celebrate finds 🎉, +1 finds 👍. Each row shows the emoji as its icon, its name as the title and its shortcode as the subtitle.
The first time you open the list, the workflow draws each emoji's icon on your Mac, in every skin tone, which takes a few seconds.
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Paste the emoji into the frontmost app |
| ⇧↩ | On an emoji with skin tones, list it in each to paste the one you pick |
| ⌘C | Copy the emoji without pasting |
The workflow also has an unbound Hotkey trigger: set a key combination on it in Alfred Preferences to open the list from anywhere. Ideal if you want to replace the default macOS emoji picker.
Every emoji appears once, in the skin tone chosen in the workflow's configuration (see Configuration).
| Keyword | What it does |
|---|---|
ev | List events now and in the hours ahead; keep typing to filter by title, calendar or location |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Open the event in Calendar |
| ⌘↩ | Join the meeting if it has a link, otherwise open its location in Maps |
| ⌘C | Copy the meeting link, or the Calendar link when there's none |
Events happening now come first, marked Now. Each event's icon is a tile in its calendar's colour, with a glyph for its kind: a meeting, a birthday, all day, in person, or anything else. Cancelled events and ones you've declined are dimmed.
After configuration, use one of the following keywords:
| Keyword | What it does |
|---|---|
ha | List every entity; keep typing to filter |
hal | List lights |
has | List switches |
haf | List fans |
haa | List automations |
hafilter | Open the Filter Builder: show or hide domains and entities in the browser |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Toggle a light, switch, fan, input boolean, humidifier or siren |
| ↩ | Run an automation or script, activate a scene, or press a button |
| ↩ | Open or close a cover or valve |
| ↩ | Open a camera's live stream in the browser |
| ⇧ / ⌘Y | Quick Look a camera's still frame, media art or a person's photo |
| ⌥ | Show the entity id and raw state |
| ⌘C | Copy the entity id |
| ⌘L | Show the name, id and state in large type |
Entities you can only read, like sensors, locks and media players, are listed but do nothing on ↩. Unavailable entities aren't listed. A notification reports each change: a toggle once the entity's state shows it ("Turned on Kitchen Lamp"), anything else once Home Assistant accepts it.
The Filter chooses which entities are listed, by patterns matched
against their id. A pattern starting with ! hides what it matches; one
without shows it again. Of the patterns matching an entity, the longest wins,
and a tie hides. For example:
| Filter | Shows |
|---|---|
!sensor.*, sensor.kitchen_power | Everything but sensors, except the kitchen power one |
!light.kitchen_*, light.kitchen_leds | Every light but the kitchen ones, except the LEDs |
!*, light.*, switch.garage | Only lights and the garage switch |
hafilter opens the Filter Builder, which lists every entity by domain, with
buttons to show or hide a whole domain or a single entity. They write the
Filter, which you can also edit by hand, then copy into
configuration.
Use misc to browse every command in one list, with each one's current state
and keyword. Keep typing to filter. Each command also has its own keyword:
| Keyword | What it does |
|---|---|
tdm | Toggle dark mode |
thf | Show or hide hidden files in Finder |
caf | Keep the Mac awake; caf 30m for a timed session |
ip | This Mac's local and public IP address |
Restart Alfred | Quit Alfred and open it again |
Quit Alfred | Quit Alfred without reopening it |
Restart Finder | Relaunch the Finder |
Restart Dock | Relaunch the Dock, Mission Control and Spaces |
Reload Workflow | Make Alfred re-read a workflow, e.g. after editing it |
Clear Workflow Cache | Delete a workflow's caches, never its data |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Run the command, or insert the address into the frontmost app on an ip result |
| ⌘C | Copy the address on an ip result |
On its own, caf starts a session that lasts until you run it again. Give it a duration (caf 30m, caf 1h30m, or a bare caf 30 for minutes) for a timed one. While the Mac is kept awake, a cup icon sits in the menu bar, showing the time left, and Let the Mac Sleep in its menu ends the session.
ip asks api.ipify.org for the public address, so it needs a network connection.
Actions report what they did as notifications, once the change is confirmed.
After configuration, use one of the following keywords:
| Keyword | What it does |
|---|---|
map | Show what each player is playing, with its album art; play or pause it. Keep typing to filter by player, track, artist or album |
mav | Show each player's volume as a bar, and what it's playing |
mav 40 | Set a player's volume to 40% |
mav ++ | Turn a player's volume up 5% per + (-- turns it down) |
maq | Show the queue playing now, in order from the current track |
maqp | Show the previous track in the queue |
maqn | Show the next track in the queue |
mas | Search your library for artists, albums, tracks, playlists and radio |
masa | Search your library and connected services, like Spotify |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Pause the player if it's playing, otherwise play it (map) |
| ↩ | Set the volume you typed, previewed on the bar (mav) |
| ↩ | Play the track (maq, maqp, maqn) |
| ↩ | Play a find in place of the queue; on an artist, list their albums newest first with release dates (mas, masa) |
| ⌥↩ | Add a find to the queue (mas, masa) |
| ⇧ / ⌘Y | Quick Look the album art |
| ⌘↩ | Show it in Music Assistant; a player shows with its queue a tap away |
| ⌘C | Copy the name |
Players that are playing are listed first. An idle player shows what it last
played, with its album art dimmed. In map, speakers grouped or
synced together share one row. With several queues playing, maq shows the
one map lists first. Each change reports as a notification, once the
player confirms it.
A find plays on the player playing now (else paused, else the one you last played a find on). Turn on Player under configuration to choose the player each time instead.
After configuration, use one of the following keywords to search:
| Keyword | What it does |
|---|---|
out | Search by document title |
outc | Search by document content |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Open the document in your browser |
| ⇧ or ⌘Y | Quick Look a preview of the document |
| ⌘C | Copy the document URL |
| Keyword | What it does |
|---|---|
gem | Search gems by name or description |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Open the gem's page in your browser |
| ⌘↩ | Open the gem's homepage |
| ⌥↩ | Open the gem's changelog |
| ⇧ or ⌘Y | Quick Look the gem's description and links |
| ⌘C | Copy the gem's URL |
| Keyword | What it does |
|---|---|
sig | Pick a chat; keep typing to filter by name |
The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Open the chat in Signal Desktop |
| ⌘C | Copy the contact's phone number or username |
The top nine chats in Signal's sidebar open at once. Other contacts take a few seconds, as Signal looks up their number first. Groups and contacts with only a username open only from the top nine, so pin them in Signal to keep them there.
After configuration, use:
| Keyword | What it does |
|---|---|
sl | Search note titles and content |
sla | Ask Slite's AI a question about your notes |
Asking needs Slite's AI features on your plan.
| Keyword | What it does |
|---|---|
case text | List every case style of the text |
fancy text | List every fancy style of the text |
Each row shows the transformed text, with the style's name below it. The following mappings are available on results:
| Key | Action |
|---|---|
| ↩ | Paste the result into the frontmost app |
| ⌘C | Copy the result without pasting |
Both lists are also Universal Actions: select text anywhere, run Change case to… or Fancify text to…, and pick a style to replace the selection.
Every style also has its own keyword, which pastes the text typed after it in that style without picking from a list:
| List | Keyword | Hello world becomes |
|---|---|---|
case | upper | HELLO WORLD |
case | lower | hello world |
case | title | Hello World |
case | camel | helloWorld |
case | pascal | HelloWorld |
case | snake | hello_world |
case | screaming | HELLO_WORLD |
case | kebab | hello-world |
case | alternating | hElLo WoRlD |
fancy | bold | 𝐇𝐞𝐥𝐥𝐨 𝐰𝐨𝐫𝐥𝐝 |
fancy | italic | 𝐻𝑒𝑙𝑙𝑜 𝑤𝑜𝑟𝑙𝑑 |
fancy | script | ℋℯ𝓁𝓁ℴ 𝓌ℴ𝓇𝓁𝒹 |
fancy | double | ℍ𝕖𝕝𝕝𝕠 𝕨𝕠𝕣𝕝𝕕 |
fancy | mono | 𝙷𝚎𝚕𝚕𝚘 𝚠𝚘𝚛𝚕𝚍 |
fancy | fullwidth | Hello world |
fancy | squared | 🅷🅴🅻🅻🅾 🆆🅾🆁🅻🅳 |
fancy | circled | Ⓗⓔⓛⓛⓞ ⓦⓞⓡⓛⓓ |
fancy | strike | H̶e̶l̶l̶o̶ w̶o̶r̶l̶d̶ |
fancy | upside | plɹoʍ ollǝH |
Use one of the following keywords:
| Keyword | What it does | Example |
|---|---|---|
timer | Set a timer | timer 5m take the pizza out |
alarm | Set an alarm | alarm 7:30 wake up |
Lengths and times can be written the way you'd say them:
| Typed | Means |
|---|---|
45s | Forty-five seconds |
5m, 5min | Five minutes |
2h | Two hours |
1h30m | An hour and a half |
90 | Ninety minutes; a bare number is minutes |
7:30, 7:30am | 07:30 |
19:45, 7:45pm | 19:45 |
7am | 07:00 |
Pending timers are listed in the menu bar, where selecting one cancels it. They don't survive a restart.
Requirements
- Claude Code, signed in: run
claudein a terminal once
Requirements
Requirements
- Music Assistant 2.7 or later
Requirements
How to install
-
Download the workflow
-
Clear the quarantine flag
The workflow isn't notarized yet, so macOS blocks it until you run this in Terminal:
Or open it anyway, then approve it under System Settings → Privacy & Security → Open Anyway.
-
Open the downloaded file
Alfred imports it.
-
Set it up
See Configuration for its settings and permissions.
-
Run this in Terminal
-
Set it up
See Configuration for its settings and permissions.
Permissions
- Bluetooth — to list, connect and disconnect devices. Allow Alfred under System Settings → Privacy & Security → Bluetooth; the workflow shows an item pointing there if access is missing.
Settings
In Alfred Preferences → Workflows, select Robust Calculator and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Keyword | What you type before a question, with no space after it, so keep it a symbol: a word like calc would also catch "calculus". | = |
| Currencies | The currencies an amount is shown in when you don't say which, as codes. Empty: your Mac's currency, then USD, EUR and GBP. | None |
Settings
In Alfred Preferences → Workflows, select Robust Emoji and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Skin tone | The skin tone of every emoji that has one. | ✋ Default |
Permissions
- Accessibility — to paste into the frontmost app. Alfred asks for it when it is first set up, under System Settings → Privacy & Security → Accessibility.
Settings
In Alfred Preferences → Workflows, select Robust Events and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Calendars | Comma-separated calendar names to include. Leave empty to show events from all calendars. | None |
| Look-ahead (hours) | How many hours ahead to list events. Ongoing events are always included. | 12 |
| All-day events | Show all-day events (e.g. holidays). Turn off to hide them — handy when a multi-day event would otherwise sit atop every list. | On |
| Cancelled events | Show cancelled events and ones you've declined (their tiles are dimmed). Turn off to hide them. | On |
| Private events | Show private events as Private instead of their title. Turn off to show the title. | On |
Permissions
- Calendars — to read your events. Alfred asks the first time you type
ev; you can change it under System Settings → Privacy & Security → Calendars.
Settings
In Alfred Preferences → Workflows, select Robust Home Assistant and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Server URL | Where your Home Assistant server answers: the address you open it at, port included. | None |
| API key | A long-lived access token. Create one in Home Assistant under your Profile → Security → Long-lived access tokens. | None |
| Filter | Which entities are listed. Build it with hafilter. | !sensor.*, !binary_sensor.*, !device_tracker.* |
Permissions
- Automation — to toggle dark mode through System Events. macOS asks the first time; allow Alfred under System Settings → Privacy & Security → Automation.
Settings
In Alfred Preferences → Workflows, select Robust Music Assistant and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Server URL | Where your Music Assistant server answers: the address you open its web interface at, port included. | None |
| API key | A long-lived access token. Create one in Music Assistant under Settings → Profile. | None |
| Player | When playing something you found, ask which player to play it on. Otherwise it plays on the player playing now. | Off |
Settings
In Alfred Preferences → Workflows, select Robust Outline and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Outline URL | Base URL of your Outline instance. Use the default for Outline Cloud, or your own URL if self-hosted. | https://app.getoutline.com |
| API key | An Outline API key. Create one in Outline under Settings → API Keys. | None |
Permissions
- Keychain — to read the key to Signal's database, which Signal keeps in your Keychain as Signal Safe Storage. macOS asks the first time; choose Always Allow, or it asks every time.
- Accessibility — to press Signal's ⌘1–⌘9 shortcuts. Allow Alfred under System Settings → Privacy & Security → Accessibility.
Settings
In Alfred Preferences → Workflows, select Robust Slite and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| API key | A Slite API key. Create one in Slite under Settings → API. | None |
Permissions
- Accessibility — to paste into the frontmost app. Alfred asks for it when it is first set up, under System Settings → Privacy & Security → Accessibility.
Settings
In Alfred Preferences → Workflows, select Robust Timers and click Configure Workflow.
| Setting | What it does | Default |
|---|---|---|
| Alert sound | The macOS alert sound played when a timer goes off, alongside its notification. | Glass |
Permissions
- Notifications — to show a timer going off. They arrive through Alfred, so allow Alfred under System Settings → Notifications.
0.1.1 - 2026-10-03
Fixed
- Notifications no longer bring Alfred to the front.
0.1.0 - 2026-09-29
Added
- audo lists output devices and audi input devices, current first, with an icon for each device's type; ↩ switches to one, ⌘C copies its name.
- Switching reports as a notification, and only claims success once the change is confirmed.
0.1.2 - 2026-10-03
Fixed
- Notifications no longer bring Alfred to the front.
0.1.1 - 2026-09-29
Changed
- Errors are worded the same across Robust Alfred workflows: when Bluetooth doesn't answer in time the hint is now just Try again., and an unknown command's notification says how to fix it. Quoted text uses curly quotes.
- A device that's no longer paired now suggests reopening the list, as Robust Audio does for a device that's gone.
0.1.0 - 2026-09-28
Added
- bt lists paired devices, connected first, with battery levels and a device-type icon; ↩ connects or disconnects one, ⌘C copies its address.
- Connecting turns Bluetooth on first if it's off.
- btt turns Bluetooth on or off.
- Actions report their progress as notifications, and only claim success once the change is confirmed.
0.1.0 - 2026-11-07
Added
- = works out sums, percentages, units and currencies, typed in symbols or plain English (what's 20% off 80?, how many cm in a foot, 100 dollars in euros); the subtitle shows how the question was read.
- An amount of money on its own is shown in your usual currencies.
- Dates: monday in 3 weeks, 30 days from today, when is christmas, days until 25 dec, week number and Unix time (unix 1700000000).
- Times elsewhere: time in tokyo, 5pm ldn in sf, time diff india and in 4 hours, by city, country, airport code or zone.
- ↩ inserts the answer into the frontmost app, ⌥↩ the number alone and ⇧↩ the question and answer; ⌘C copies the answer.
- Settings for the keyword and the currencies amounts are shown in.
0.1.0 - 2026-10-16
Added
- Ask Claude a question with
cl; the answer is written into Alfred as it comes. It is answered through Claude Code, on your Claude plan, with no tools. clandcloask Opus,clhHaiku,clsSonnet andclfFable: the newest model of each kind.- Each keyword asks in a new chat; ⌘↩ asks in the previous chat instead, or shows it when no question is typed.
- Type a follow-up under the chat and press ↩ to continue it. An answer still being written when Alfred closes is there when you come back to the chat.
- In the chat, ⌘↩ copies the chat as Markdown, and ⇧↩ stops an answer, keeping what was written.
- ⌥↩ continues the chat in Claude Code in your terminal, and ⇧⌥↩ in the Claude desktop app, on the same session.
- The chat's footer names the model that last answered, e.g. "Opus 5.5".
- A message saying how to install Claude Code when it isn't found, and what Claude Code said when it couldn't answer, such as not being signed in.
0.1.0 - 2026-10-03
Added
- em lists every emoji, filtered as you type by name, shortcode or Unicode's keywords (laugh finds 😂); ↩ pastes the one you pick, ⌘C copies it.
- The first open draws each emoji's icon on your Mac, with a row counting them off.
- An unbound Hotkey trigger opens the list from anywhere.
- A skin tone setting lists every emoji that has skin tones in the one you choose, and ⇧↩ on one lists all its skin tones to pick from.
0.2.1 - 2026-11-02
Fixed
- ⌘↩ joins the video call even when the event's notes list other links first.
0.2.0 - 2026-10-27
Added
- Private events show as Private instead of their title. Turn off Redact private events in Configure Workflow to show the title.
0.1.0 - 2026-10-25
Added
- ev lists your Calendar events now and in the next 12 hours, events happening now first and marked Now; keep typing to filter by title, calendar or location. A change in Calendar shows the next time you open it.
- ↩ opens an event in Calendar; ⌘↩ joins its meeting, or opens its location in Maps; ⌘C copies the meeting link.
- Each event's icon is a tile in its calendar's colour, with a glyph for a meeting, birthday, all-day or in-person event. Cancelled events and ones you've declined are dimmed.
- Configure Workflow chooses the calendars, how far ahead to look, and whether to show all-day and cancelled events.
0.1.0 - 2026-10-24
Added
- ha lists your Home Assistant entities, read fresh each time; keep typing to filter. hal, has, haf and haa list only lights, switches, fans and automations.
- ↩ toggles a light, switch, fan, input boolean, humidifier or siren; runs an automation or script; activates a scene; presses a button; opens or closes a cover or valve; or opens a camera's live stream. Entities you can only read are listed but do nothing, and unavailable ones aren't listed.
- Each row shows the entity's state as you'd say it:
21.4 °C,Not home, an automation as Enabled or Disabled. - ⇧ shows a camera's still frame, media art or a person's photo; ⌥ shows the entity id and raw state, and ⌘C copies the id.
- The Filter chooses which entities are listed by id pattern:
!sensor.*hides sensors, andsensor.kitchen_powershows one again; the longest matching pattern wins. Sensors, binary sensors and device trackers are hidden by default. - hafilter opens the Filter Builder, a page of every entity: buttons show or hide a whole domain or a single entity, and the Filter they write can be edited and copied.
- A notification reports each change. A toggle, or a cover opening or closing, only claims success once the entity's state shows it ("Turned on Kitchen Lamp"), and says so if it doesn't within 5 seconds; a scene, script, automation or button reports once Home Assistant accepts it.
Changed
- This replaces the standalone Robust Home Assistant under a new bundle ID and setting names, so Alfred installs it alongside an older copy. Remove the old one, then set Server URL, API key and Filter again.
0.4.0 - 2026-10-03
Added
- A timed caf session counts down beside its menu bar icon, exactly as Robust Timers does.
Changed
- The caf menu bar icon is drawn by the workflow itself rather than a script, so it appears sooner and uses less memory.
- A timed session's time left keeps ticking while the menu is open, and reads as the countdown beside the icon does.
- The icon appears before the notification, and goes the moment a session ends.
Fixed
- Notifications no longer bring Alfred to the front.
0.3.0 - 2026-10-03
Changed
- ↩ on an ip address now inserts it into the frontmost app instead of copying it. ⌘C still copies.
0.2.0 - 2026-10-01
Changed
- caf reads a length the way Robust Timers does, so caf 1h30m and caf 2min work too, and one it can't read is reported in the same words.
- A timed session's time left rounds up to the minute (25m, not 24m), and a length under an hour keeps its seconds (1m 30s).
- The menu bar icon counts a timed session down to the second, as Robust Timers' does.
0.1.1 - 2026-09-29
Changed
- Errors are worded the same across Robust Alfred workflows. A missing Automation permission reads Alfred has no Automation access, a failed command macOS command failed, and an unknown command's notification now says how to fix it. Quoted text uses curly quotes.
- The No workflows installed and No local IP rows no longer show a caution icon: they're empty, not errors.
0.1.0 - 2026-09-27
Added
- misc lists every command with its current state and keyword.
- tdm toggles dark mode, and thf shows or hides hidden files in Finder.
- caf keeps the Mac awake, indefinitely or for a set time (caf 30m), with a menu bar icon showing the time left and a way to end the session.
- ip shows this Mac's local and public IP addresses; ↩ copies one.
- Restart Alfred, Quit Alfred, Restart Finder and Restart Dock.
- Reload Workflow makes Alfred re-read a workflow; Clear Workflow Cache deletes a workflow's caches, never its data.
- Actions confirm what they did with a notification.
0.1.0 - 2026-10-18
Added
- map shows what each Music Assistant player is playing, with its album art, those playing first; ↩ pauses a player that is playing and plays any other. Speakers grouped or synced together share one row, and an idle player shows what it last played, its art dimmed.
- mav shows each player's volume as a bar, and what it's playing; type a
percentage (
mav 40), or a+or-per 5% step (mav ++), to preview the new level, and ↩ sets it. - maq shows the queue playing now, in order from the current track, with album art; ↩ plays a track.
- maqp and maqn show the previous and next track in the queue; ↩ plays it.
- mas searches your library, and masa connected services too, for artists, albums, tracks, playlists and radio. ↩ plays a find in place of the queue and ⌥↩ adds it to the queue; ↩ on an artist lists their albums, newest first with release dates. A find plays on the player playing now, or on one you choose each time if you turn that on.
- ⌘↩ shows a row's player, album, artist or track in Music Assistant, or opens Music Assistant on a row without one.
- Each change reports as a notification, and only claims success once the player confirms it.
0.6.0 - 2026-10-18
Changed
- An Outline URL without
https://orhttp://is explained the way every Robust workflow explains it.
0.5.0 - 2026-10-05
Changed
- When Outline is limiting requests, the error says so (Outline is limiting requests) rather than showing HTTP 429.
- An answer that isn't Outline's (e.g. Outline URL points at another site) shows Unexpected response from Outline rather than Could not reach Outline.
Fixed
- A failed search is tried again the next time you search, rather than showing the same error for the next 30 seconds.
- Document previews no longer put a space between bold or linked text and the punctuation after it.
- Quick Look shows raw HTML in a document as text, and drops links that aren't to the web or an email address, so a document can't run code in the preview. Images show as links to them rather than loading.
- A search cache that can't be read or written shows an error instead of searching forever.
0.4.2 - 2026-09-29
Changed
- Errors are worded the same across Robust Alfred workflows. A missing setting names its field as Configure Workflow shows it (Missing setting: Outline URL), an Outline that doesn't answer in time says Outline didn't respond, and quoted text uses curly quotes.
Fixed
- An install whose parts are out of step shows an error instead of quietly running a title search.
0.4.1 - 2026-09-27
Fixed
- The workflow's web address points at its source, rather than a repository that no longer exists.
0.4.0 - 2026-09-27
Added
outcsearches document content, asoutdid before.- Results show where a document lives, including its parent documents (e.g. "Misc / Foobar"), instead of only its collection.
- Results preview the start of a document's text when Outline returns no matching snippet.
Changed
outsearches document titles only.
0.3.0 - 2026-07-13
Changed
- Renamed the workflow to Robust Outline.
0.2.1 - 2026-07-13
Added
- The Outline logo as the workflow icon.
0.2.0 - 2026-07-13
Changed
- New bundle ID,
me.schembri.robust-alfred.outline. Alfred installs this version alongside 0.1.0 rather than replacing it; remove the old one.
0.1.0 - 2026-07-13
Added
- Search Outline with
out; ↩ opens the document, ⌘C copies its URL. - Quick Look (⇧ or ⌘Y) previews a document's content.
- Results show the collection a document belongs to.
- A "Searching…" item while results load, and an error item with a fix-it hint for missing configuration, a rejected API key, or an unreachable instance.
0.1.0 - 2026-11-06
Added
- Search RubyGems with
gem; ↩ opens the gem's page, ⌘↩ its homepage and ⌥↩ its changelog; ⌘C copies its URL. - Quick Look (⇧ or ⌘Y) shows the gem's description and links to its homepage, source, documentation and changelog.
- Results show each gem's latest version and description.
- A "Searching…" item while results load, and an error item when RubyGems can't be reached.
0.1.1 - 2026-10-03
Fixed
- Notifications no longer bring Alfred to the front.
0.1.0 - 2026-10-03
Added
- sig lists your Signal contacts and groups with their round avatars, in Signal's sidebar order, leaving out archived chats, filtered as you type by name; ↩ opens the chat in Signal Desktop, ⌘C copies the contact's phone number or username.
- The top nine chats open at once with Signal's ⌘1–⌘9; other contacts open through their phone number.
0.1.0 - 2026-10-05
Added
- Search Slite with
sl, across note titles and content; ↩ opens the note, ⌘C copies its URL. - Ask Slite's AI a question with
sla; the answer shows in Alfred with numbered citations, and links to the notes they cite at the end. ⌃↩ copies it as Markdown, ⌘↩ opens it in your browser, where a Copy answer button copies it too. - Results show where a note lives (e.g. "Engineering / Runbooks") and the text that matched.
- A "Searching…" item while results load, and an error item with a fix-it hint for a missing or rejected API key, rate limiting, an unreachable Slite, or an answer the workflow can't read.
- While an answer is being written,
slacounts the seconds; an answer Slite takes longer over is collected from its thread. Asking shows when Slite Ask is turned off, when your plan's AI answers run out (and when they reset), and when Slite gives up on an answer.
0.1.1 - 2026-10-03
Fixed
- Notifications no longer bring Alfred to the front.
0.1.0 - 2026-10-03
Added
- case lists case conversions of the text you type, and fancy lists Unicode styles; ↩ pastes the one you pick, ⌘C copies it.
- Change case to… and Fancify text to… Universal Actions list the same styles for selected text, and replace the selection with the one you pick.
- A keyword for every style, which pastes the text typed after it in that
style: camel hello world pastes
helloWorld.
0.2.0 - 2026-10-03
Added
- The menu bar icon shows a countdown to the soonest timer: minutes, to the nearest (a 10m timer reads 10m, not 9m), then minutes and seconds for the last five minutes.
Changed
- The menu bar icon is drawn by the workflow itself rather than a script, so it appears sooner and uses less memory.
- The menu's countdowns keep ticking while it is open, and read as the one beside the icon does.
- A new timer shows in the menu bar at once — before its notification — and one that goes off leaves it the moment its time is up.
Fixed
- Setting a timer while another is pending no longer makes the menu bar icon blink out and back.
- A timer going off no longer takes focus from the app you are in.
0.1.0 - 2026-10-01
Added
- timer sets a timer for a while from now (timer 5m take the pizza out), and alarm one for a time on the clock (alarm 7:30 wake up).
- As you type, the row says what ↩ would set and when it rings.
- Pending timers count down in a menu bar icon; selecting one cancels it.
- A timer going off shows a notification with its note and plays an alert sound, which can be changed or turned off.