Skip to content
Robust Alfred
Workflows Searches About
Source ↗ (opens in a new tab)

Workflows

⌘F

System

Audio

Switch the default audio output and input device from Alfred.

Version 0.1.1

Bluetooth

Connect and disconnect Bluetooth devices from Alfred.

Version 0.1.2

Miscellany

The macOS odds and ends Alfred leaves out.

Version 0.4.0

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.

Version 0.2.0

Writing

Emoji

Search emoji by name or keyword and paste the one you pick.

Version 0.1.0

Text

Convert text case and style it in fancy Unicode fonts.

Version 0.1.1

Productivity

Calculator

Work out sums, percentages, units and currencies, typed the way you'd say them.

Version 0.1.0

Claude

Chat with Claude from Alfred, through Claude Code.

Version 0.1.0

Events

List your upcoming Calendar events from Alfred.

Version 0.2.1

Outline

Search Outline from Alfred.

Version 0.6.0

Signal

Find a Signal contact or group by name and open the chat.

Version 0.1.1

Slite

Search Slite and ask its AI from Alfred.

Version 0.1.0

Development

RubyGems

Search RubyGems from Alfred.

Version 0.1.0

Smart home

Home Assistant

Search, toggle and trigger Home Assistant entities from Alfred.

Version 0.1.0

Music Assistant

Search, play and control Music Assistant from Alfred.

Version 0.1.0

No Results Try a different search.

Source ↗ (opens in a new tab)

Use one of the following keywords:

KeywordWhat it does
audoPick the output device; keep typing to filter
audiPick the input device; keep typing to filter

The following mappings are available on results:

KeyAction
↩Switch to the device
⌘CCopy 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:

KeywordWhat it does
btList paired devices, connected first; keep typing to filter
bttTurn Bluetooth on or off

The following mappings are available on results:

KeyAction
↩Connect the device, or disconnect it if connected
⌘CCopy 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:

TypedAnswer
=2^10 + 5!1,144
=what's 5 plus 3?8
=12% of 809.6
=80 - 20%64
=20% off 8064
=20 is what % of 5040%
=10 km in miles6.213712 miles
=5 ft 10 in to cm177.8 cm
=how many seconds in a day86,400 seconds
=30c to f86 °F
=100 dollars in eurosThe amount in euros
=€50 to £The amount in pounds
=100 usdThe amount in your usual currencies
=monday in 3 weeksThat Monday's date
=30 days from todayThe date
=when is christmasThe date and its weekday
=days until 25 decThe number of days
=week numberThis week's ISO week number
=unix 1700000000The moment, in your time zone
=time in tokyoThe time there
=5pm ldn in sf17:00 in London as San Francisco time
=9:30 jfk09:30 at JFK as your time
=time diff india5 hours 30 minutes ahead
=in 4 hoursThe 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.

KeyAction
↩Insert the answer into the frontmost app
⌥↩Insert the number alone, unrounded
⇧↩Insert the question and answer
⌘CCopy 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).

KeywordWhat it does
clAsk Claude Opus a question
clhAsk Claude Haiku
clsAsk Claude Sonnet
cloAsk Claude Opus
clfAsk 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:

KeyAction
↩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.

KeywordWhat it does
emBrowse 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:

KeyAction
↩Paste the emoji into the frontmost app
⇧↩On an emoji with skin tones, list it in each to paste the one you pick
⌘CCopy 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).

KeywordWhat it does
evList events now and in the hours ahead; keep typing to filter by title, calendar or location

The following mappings are available on results:

KeyAction
↩Open the event in Calendar
⌘↩Join the meeting if it has a link, otherwise open its location in Maps
⌘CCopy 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:

KeywordWhat it does
haList every entity; keep typing to filter
halList lights
hasList switches
hafList fans
haaList automations
hafilterOpen the Filter Builder: show or hide domains and entities in the browser

The following mappings are available on results:

KeyAction
↩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
⇧ / ⌘YQuick Look a camera's still frame, media art or a person's photo
⌥Show the entity id and raw state
⌘CCopy the entity id
⌘LShow 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:

FilterShows
!sensor.*, sensor.kitchen_powerEverything but sensors, except the kitchen power one
!light.kitchen_*, light.kitchen_ledsEvery light but the kitchen ones, except the LEDs
!*, light.*, switch.garageOnly 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:

KeywordWhat it does
tdmToggle dark mode
thfShow or hide hidden files in Finder
cafKeep the Mac awake; caf 30m for a timed session
ipThis Mac's local and public IP address
Restart AlfredQuit Alfred and open it again
Quit AlfredQuit Alfred without reopening it
Restart FinderRelaunch the Finder
Restart DockRelaunch the Dock, Mission Control and Spaces
Reload WorkflowMake Alfred re-read a workflow, e.g. after editing it
Clear Workflow CacheDelete a workflow's caches, never its data

The following mappings are available on results:

KeyAction
↩Run the command, or insert the address into the frontmost app on an ip result
⌘CCopy 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:

KeywordWhat it does
mapShow what each player is playing, with its album art; play or pause it. Keep typing to filter by player, track, artist or album
mavShow each player's volume as a bar, and what it's playing
mav 40Set a player's volume to 40%
mav ++Turn a player's volume up 5% per + (-- turns it down)
maqShow the queue playing now, in order from the current track
maqpShow the previous track in the queue
maqnShow the next track in the queue
masSearch your library for artists, albums, tracks, playlists and radio
masaSearch your library and connected services, like Spotify

The following mappings are available on results:

KeyAction
↩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)
⇧ / ⌘YQuick Look the album art
⌘↩Show it in Music Assistant; a player shows with its queue a tap away
⌘CCopy 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:

KeywordWhat it does
outSearch by document title
outcSearch by document content

The following mappings are available on results:

KeyAction
↩Open the document in your browser
⇧ or ⌘YQuick Look a preview of the document
⌘CCopy the document URL
KeywordWhat it does
gemSearch gems by name or description

The following mappings are available on results:

KeyAction
↩Open the gem's page in your browser
⌘↩Open the gem's homepage
⌥↩Open the gem's changelog
⇧ or ⌘YQuick Look the gem's description and links
⌘CCopy the gem's URL
KeywordWhat it does
sigPick a chat; keep typing to filter by name

The following mappings are available on results:

KeyAction
↩Open the chat in Signal Desktop
⌘CCopy 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:

KeywordWhat it does
slSearch note titles and content
slaAsk Slite's AI a question about your notes

Asking needs Slite's AI features on your plan.

KeywordWhat it does
case textList every case style of the text
fancy textList 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:

KeyAction
↩Paste the result into the frontmost app
⌘CCopy 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:

ListKeywordHello world becomes
caseupperHELLO WORLD
caselowerhello world
casetitleHello World
casecamelhelloWorld
casepascalHelloWorld
casesnakehello_world
casescreamingHELLO_WORLD
casekebabhello-world
casealternatinghElLo WoRlD
fancybold𝐇𝐞𝐥𝐥𝐨 𝐰𝐨𝐫𝐥𝐝
fancyitalic𝐻𝑒𝑙𝑙𝑜 𝑤𝑜𝑟𝑙𝑑
fancyscriptℋℯ𝓁𝓁ℴ 𝓌ℴ𝓇𝓁𝒹
fancydoubleℍ𝕖𝕝𝕝𝕠 𝕨𝕠𝕣𝕝𝕕
fancymono𝙷𝚎𝚕𝚕𝚘 𝚠𝚘𝚛𝚕𝚍
fancyfullwidthHello world
fancysquared🅷🅴🅻🅻🅾 🆆🅾🆁🅻🅳
fancycircledⒽⓔⓛⓛⓞ ⓦⓞⓡⓛⓓ
fancystrikeH̶e̶l̶l̶o̶ w̶o̶r̶l̶d̶
fancyupsideplɹoʍ ollǝH

Use one of the following keywords:

KeywordWhat it doesExample
timerSet a timertimer 5m take the pizza out
alarmSet an alarmalarm 7:30 wake up

Lengths and times can be written the way you'd say them:

TypedMeans
45sForty-five seconds
5m, 5minFive minutes
2hTwo hours
1h30mAn hour and a half
90Ninety minutes; a bare number is minutes
7:30, 7:30am07:30
19:45, 7:45pm19:45
7am07: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 claude in a terminal once

Requirements

  • Home Assistant

Requirements

  • Music Assistant 2.7 or later

Requirements

  • Signal Desktop

How to install

  1. Download the workflow

  2. 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.

  3. Open the downloaded file

    Alfred imports it.

  4. Set it up

    See Configuration for its settings and permissions.

  1. Run this in Terminal

  2. 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.

SettingWhat it doesDefault
KeywordWhat you type before a question, with no space after it, so keep it a symbol: a word like calc would also catch "calculus".=
CurrenciesThe 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.

SettingWhat it doesDefault
Skin toneThe 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.

SettingWhat it doesDefault
CalendarsComma-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 eventsShow 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 eventsShow cancelled events and ones you've declined (their tiles are dimmed). Turn off to hide them.On
Private eventsShow 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.

SettingWhat it doesDefault
Server URLWhere your Home Assistant server answers: the address you open it at, port included.None
API keyA long-lived access token. Create one in Home Assistant under your Profile → Security → Long-lived access tokens.None
FilterWhich 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.

SettingWhat it doesDefault
Server URLWhere your Music Assistant server answers: the address you open its web interface at, port included.None
API keyA long-lived access token. Create one in Music Assistant under Settings → Profile.None
PlayerWhen 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.

SettingWhat it doesDefault
Outline URLBase URL of your Outline instance. Use the default for Outline Cloud, or your own URL if self-hosted.https://app.getoutline.com
API keyAn 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.

SettingWhat it doesDefault
API keyA 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.

SettingWhat it doesDefault
Alert soundThe 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.
  • cl and clo ask Opus, clh Haiku, cls Sonnet and clf Fable: 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, and sensor.kitchen_power shows 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:// or http:// 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

  • outc searches document content, as out did 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

  • out searches 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, sla counts 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.