Adds a menu-bar popover for running and watching your flows without opening the app, and makes the AI flow builder noticeably more useful — generated flows now include markdown notes anchored to the nodes they explain.
Menu-bar popover — run any flow, watch its node-graph light up live as it executes, and filter by status, trigger, or node type, all from the menu bar.
AI builder writes notes — built flows now include explanatory notes with markdown styling (bold, code, headings), anchored next to the node they describe, on a cleaner sloped layout.
Drag-and-drop file input — drop a file from Finder onto an Input trigger to set it to file mode with the full path filled in.
Map Keys picker now offers the remapped keys the node actually emits.
Fixes a duplicated Headers label in the API Request node inspector.
v1.21.0
June 16, 2026Minor
Adds Run Watchflow — call your other saved flows from inside a flow and watch them run as live previews on the canvas — alongside a smarter Flow Builder, a toolbar update indicator, and a menu-bar stability fix.
Run Watchflow node. Run up to three saved flows inline. Each renders as a live, dimmed preview branching off the node, with three outlets: Flow (the embedded subflow), Done (its result — handed through directly for one flow, or namespaced per flow when several run), and Pass-through (your original input). Recursion, depth, and fan-out guards plus live playback.
Smarter Flow Builder. Answers explanatory questions conversationally instead of forcing a 'modify?' prompt, and always builds a runnable flow with a trigger.
Custom arguments flow into subflows and appear in the variable picker.
Update status moved to its own toolbar pill, and the sidebar W mark pulses whenever something's running.
Home table view gains a grouping toggle and clearer Active/Draft language.
Fixes a menu-bar crash by replacing the SwiftUI menu-bar item with a stable AppKit status item.
v1.20.1
June 14, 2026Patch
Fixes the macOS app icon still showing the old wave logo in Stage Manager, Finder, and Mission Control.
Updates the bundled app icon to the current node-mark, so Stage Manager, Finder, and Mission Control no longer display the old wave logo.
v1.20.0
June 14, 2026Minor
Workflows can now reliably use the JSON that AI and other nodes produce — individual fields are addressable downstream — and the Math node can no longer crash the app on unexpected input.
Upstream JSON is usable downstream: AI, Agent, Apple Notes, Apple Reminders, and API Request nodes now emit real objects and arrays, so you can reference specific fields with dot-notation and array indexing (e.g. {{result.count}}, {{results.0.snippet}}) in any node config or condition.
AI responses wrapped in a markdown json code fence are now parsed automatically.
The Math node no longer crashes the app on non-numeric input — it fails that node cleanly instead.
The Notification node now has an output, so you can chain steps after it.
The Variables panel surfaces an upstream node's actual nested fields after a run, making them easy to insert.
Settings is reachable from the UI — a gear button on the Home toolbar and a Settings… item in a flow's More menu (⌘, still works).
The first-run welcome tour no longer reappears for users who already have flows.
v1.19.0
2026-06-14Minor
Adds a Bluetooth Scan action node — check which of your Mac's paired devices are connected right now and branch on it with a plain true/false.
New Bluetooth Scan action — reads your Mac's paired/connected device table on demand (a fast local read, not a radio sweep). Pick a target device and get a targetDeviceConnected true/false you can wire straight into a Condition.
Live "Choose a Device" picker — lists your devices with connected ones pinned first, so you select by name instead of a Bluetooth address.
Two outlets — Done fires once with the rollup (device count, comma-joined names, the booleans); Each Device fans out downstream once per device, with each device's details available in the variable picker.
"Include paired but offline" toggle — widen the scan from connected-only to every paired device along with its connection state.
Docs for the new node are on watchflows.app.
v1.18.0
June 14, 2026Minor
Introduces the AI Flow Builder — describe a workflow in plain English and watch Watchflows build it on the canvas — plus Keep Mac Awake controls, a selectable app icon, and file-type sorting.
AI Flow Builder — Describe what you want in a chat on the canvas and Watchflows builds, validates, and animates the flow into place against any configured AI provider (local or cloud). Follow-up messages refine the flow while preserving your manual edits. On by default.
Keep Mac Awake & Allow Sleep nodes — Hold your Mac awake for the length of a flow (or a set timeout), with a menu-bar status, live countdown, and one-click "let it sleep now."
Selectable app icon — Choose a Light, Dark, or System app icon; the in-app brand mark follows your choice.
Sort files by type — File and Directory triggers now expose fileExtension and fileType, so "organize my Downloads by type" is a two-node flow.
Cleaner results for AI agents (MCP) — Flows run through the MCP server return just the answer, not the full execution trace.
Fixes — Timeline folds long runs of blank log lines; AI Agent default prompts return the answer, not a process recap; nodes drop under the cursor by their title bar; copy toast reads correctly in light mode.
v1.17.0
June 13, 2026Minor
Adds AI Agents (MCP): connect Claude, Cursor, Codex, and other MCP clients to run your workflows as tools — opt-in, local, and token-secured. Opening an already-running flow now shows its live progress on the canvas.
New: AI Agents (MCP). Let Claude, Cursor, Codex, and other MCP clients discover and run your flows. Off by default — turn it on in Settings → AI Agents.
Each exposed flow is its own named tool with explicit, typed inputs, so the agent never has to guess what to pass.
One-click Connect. Wires up Claude Desktop directly and gives copy-paste snippets for Claude Code, Cursor, Windsurf, VS Code, and Codex.
Flows return a clean result back to the calling agent — pick exactly which node's output to hand back.
Menu-bar quick-toggle to turn AI Agent access on or off at a glance.
Canvas live progress when you open a flow that's already running (background or agent-triggered).
v1.16.0
June 12, 2026Minor
Redesigns the Home empty state, the first screen before you've built anything, with a live preview and a one-click path to your first flow.
New Home empty state with a live ghost preview of a sample mini-flow on the canvas.
A prominent "Build your first flow" button so a brand-new canvas gets you going in one click.
A playful slot-reel hover animation on the starter cards.
v1.15.0
June 12, 2026Minor
Adds Bluetooth device events to the System Event trigger, run flows when a device connects or disconnects, with rich device details for downstream nodes.
Adds Bluetooth Device Connected and Bluetooth Device Disconnected options to the System Event trigger
Events carry typed device details, name, address, kind (headphones, keyboard, mouse…), transport (classic/BLE), paired status, and vendor/product IDs, for use in conditions and downstream nodes
Device Name Filter and Paired Devices Only options scope which devices fire; Paired Devices Only is on by default so events match what the Bluetooth menu shows
Disconnect events settle for 3 seconds, so AirPods auto-switching between your Apple devices won't fire spurious events
The first time you arm a Bluetooth flow, macOS shows a one-time Bluetooth permission prompt
v1.14.0
June 12, 2026Minor
Fixes vision-model support for local AI providers, vision-capable models like Gemma on LM Studio now work with images, and makes the AI node's image input strictly opt-in.
AI nodes now verify vision support with your provider (Ollama, LM Studio) instead of a fixed model list, so vision-capable models work even when Watchflows doesn't recognize the name.
Models whose vision support can't be verified are sent the image anyway with a warning in the execution log, instead of being blocked.
The AI node's Image field is now strictly opt-in: leave it empty and no file is attached. Flows that relied on the old auto-attach behavior should pick {{filePath}} in the Image field, the execution log shows a hint when that applies.
The LM Studio provider accepts an optional API key for token-protected servers.
The inspector now shows the runtime default an empty picker field will use when the flow runs.
An empty canvas now shows a ghost pipeline hinting where to start.
v1.13.0
June 12, 2026Minor
Redesigns the Home screen around a flow gallery and table with live run activity, and refreshes the entire app with a new uniform color palette.
New Home screen: flow gallery and table views with run sparklines, "Running now" sections, pipeline previews, and a remodeled sidebar with library/trigger filters and recent runs
Finder-style multi-select in the table view: shift+click ranges, ⌘-click toggles, bulk delete, and "New Folder with N Flows" from the selection
New "Soft jewel" color palette across canvas nodes, Home cards, sidebar, inspector, and docs, uniform color weight with white header text everywhere
Bulk deletes are now batched (deleting many flows no longer hangs the app), and deleting an armed flow now stops its trigger watchers
Fixes shift+click range selection breaking when flows started or finished runs mid-selection
Fixes the Discord invite link on the site (now permanent)
v1.12.0
June 12, 2026Minor
Adds stackable rename operations with a step-by-step pipeline editor, plus a new Image Metadata (EXIF) node, and fixes timer duration badges, a sidebar freeze, and more.
Rename File now stacks operations, slugify, add date, find & replace, regex, and more, in a pipeline editor that previews the filename after every step
New Image Metadata (EXIF) node reads capture date, camera, lens, and GPS from photos (e.g. rename photos by the date they were taken)
Timer nodes keep their measured durations when viewing a past run, start/stop pairs show matching times, and sub-second readings are now accurate
Fixes a freeze (spinning beachball) caused by an infinite layout loop in the sidebars
The workflow switcher now spans the full sidebar width
v1.11.0
June 11, 2026Minor
Workflows no longer re-trigger themselves: a flow that renames or moves files in its own watched folder now runs once instead of looping, and runaway loops are auto-paused with a warning.
A workflow's own file actions (rename, move, zip, delete, …) no longer re-fire its trigger, other workflows watching the same folder still fire normally
Adds a loop circuit breaker: a workflow caught re-triggering itself repeatedly is automatically paused, with a notification and a record in Recent Activity
AI-generated file names are cleaned up automatically, wrapping quotes, labels like "Filename:", and stray newlines are stripped, and colons become dashes so Finder displays names correctly
v1.10.1
June 11, 2026Patch
Fixes a runaway loop where a workflow moving files into a subfolder of its own watched folder re-triggered itself and renamed the file endlessly.
The "Watch Subdirectories" toggle is now enforced, with it off, files inside subfolders no longer fire the trigger
Move File no longer renames a file (Example-1.dmg, Example-1-1.dmg, …) when it is already at the destination, it now completes as a no-op
Fixes a related edge case where moving a file onto itself with Overwrite on could delete the file
v1.10.0
June 11, 2026Minor
Adds a back-to-home button to the canvas toolbar so you can leave a flow without opening the sidebar.
Adds a leading back chevron to the canvas toolbar that returns to Home, with tooltip and accessibility label
Adds a View → Back to Home menu command with Cmd+[ (standard macOS Back idiom; disabled while on Home)
Removes the redundant sidebar header chevron so a single, stronger affordance owns navigation
v1.9.0
June 11, 2026Minor
Adds the ability to disable nodes without removing them from a flow, select and press D, right-click, or use the switch in the inspector.
Disable/enable nodes: a disabled node passes payloads through unchanged and performs no work, handy for testing a flow without side effects (or without spending AI tokens)
Disabled conditions continue down the Yes branch; disabled loops run zero iterations; disabled triggers don't fire
The D key now toggles disable, use Delete or Backspace to delete (changed from v1.8.0)
Flows whose triggers are all disabled refuse to arm and tell you why, instead of showing as Active while unable to run
Duplicate and paste preserve a node's disabled state
VoiceOver now reads node cards on the canvas, including their disabled state
v1.8.0
June 10, 2026Minor
Adds canvas quality-of-life: right-click to add nodes anywhere, a quick d keyboard shortcut, and {{variable}} templates in the While node's condition, plus clearer trigger controls.
Right-click (or control-click) on empty canvas opens the add-node menu; the chosen node is placed at the click point
Press d with nodes selected to delete them (Delete/Backspace still work). Superseded in a later release: d now disables/enables the selection; use Delete/Backspace to delete
While node: the condition value now supports {{variable}} templates, re-evaluated each iteration; the condition field accepts nested dot-paths like data.done
The home screen's master trigger switch is now labeled "All Triggers" with help text, and arming a flow while globally paused reliably re-arms your other enabled flows
Removed the Integrations settings tab, it held an ElevenLabs key field that no node used
v1.7.0
June 10, 2026Minor
Adds a variable picker to the Condition node, pick payload fields from a dropdown and use {{variable}} templates in comparison values, plus a new Rename File action.
Condition node: the field to compare is now picked from a dropdown of upstream variables instead of free-typed, with a custom-key option for nested paths like body.message
Condition node: comparison values now support {{variable}} templates, matching the rest of the app
New Rename File action, rename a file in place
Docs site: node pages gain search, related-node links, and card-grid navigation
Internal groundwork for the upcoming AI Flow Builder (no user-facing changes yet)
v1.6.1
June 9, 2026Patch
Usability tweaks to the For Each and Zip nodes, pick variables from dropdowns instead of typing key names.
For Each, "Array Key" / "Item Variable" are now "Loop Over" and "Each Item As", and "Loop Over" is a variable-picker dropdown so you choose the list to iterate (e.g. a files array) instead of typing its key.
Zip, the Source field is now a variable picker too, matching Unzip's Archive Path.
For Each, renaming "Each Item As" now updates the downstream variable picker to match, so the renamed item variable is selectable instead of silently missing.
v1.6.0
June 9, 2026Minor
Adds Zip and Unzip nodes, compress, extract, and re-package archives inside a workflow, with per-file fan-out so each extracted file can be routed on its own.
Unzip node, extracts a .zip and exposes two outlets: Contents (the whole archive once) and File (runs downstream once per extracted file), so you can route each file by type.
Zip node, compresses a file or folder into a .zip. An Append mode adds files to an existing archive, so a fan-out can accumulate many files into one zip.
File-handling nodes now work with files in iCloud Drive and other cloud folders, which were previously refused.
Test Input on Zip and Unzip, run the node on its own from the inspector with a file you pick, no upstream node needed.
Variable-picker fixes, bare-key references resolve correctly, and the menu no longer shows a confusing duplicate placeholder.
New documentation pages for both nodes.
v1.5.0
June 9, 2026Minor
Enables light mode, which was previously gated off during testing, with a full contrast pass across the canvas, sidebars, and inspector.
Adds a light mode across the app chrome and canvas that follows your system appearance.
Light-mode contrast pass for the canvas and left sidebars, including border treatment on the canvas navigation.
Time-series viewer node now renders as a light card in light mode (log/terminal consoles stay dark).
Adds a {{ variable picker to file-path fields in the inspector.
Widens the node sidebar resize range.
Fixes a photo-scratch cleanup race so later nodes don't lose their working file.
v1.4.0
June 9, 2026Minor
Adds first-class PDF handling, extract text (with automatic per-page OCR fallback) and run AI vision over PDF pages, plus native image support for Anthropic and Google vision models.
PDF handling, new Extract Text (PDF) node: pulls text from any PDF, born-digital or scanned, with automatic per-page OCR fallback for pages with no text layer; supports dual-outlet fan-out and AI vision over rendered page images.
Native Anthropic & Google vision, AI nodes now serialize images in each provider's native format for Claude and Gemini models, alongside the existing OpenAI-compatible path.
Fix: Photo Added working copies, two enabled workflows reacting to the same new photo each get their own working copy, so one flow can no longer delete the image out from under another mid-run (previously surfaced downstream as "File not found").
Docs, corrected AI/utility node help links, refreshed the AI vision docs, and noted the one-emitter-per-workflow limitation on the emitter nodes.
v1.3.0
June 8, 2026Minor
Adds a Photo Added trigger and on-device OCR, and lets the AI node analyze images with a vision model, so workflows can react to new photos, read text from them, and classify what's in them. Also hardens file and web-fetch safety.
Add a Photo Added trigger that fires when a new photo enters your Photos library, including photos synced from iPhone via iCloud, and hands downstream actions a usable file.
Add an Extract Text (OCR) node that reads text from an image, fully on-device.
The AI node can now analyze images: attach a photo and a prompt to a vision-capable model (local via Ollama/LM Studio, or OpenAI-compatible) to describe or classify it. Apple HEIC photos are handled automatically, and local models keep the image on your Mac.
New "Download iCloud originals" option on Photo Added for photos stored only in iCloud.
Safer file handling: Move File now validates its source path, and web fetches refuse internal/loopback addresses.
v1.2.2
May 17, 2026Patch
Adds multi-flow bundle import, bring in many workflows from a single file, plus at-a-glance AI and failure indicators on Home, and a public releases page.
Import multiple workflows at once from a single bundle file (previously one workflow per file)
Home now flags AI-using flows and shows per-flow failure counts at a glance
New public releases page at watchflows.app/releases (linked in-app), kept current automatically by the release pipeline
v1.2.1
May 12, 2026Patch
Polish pass on the destructive-action UX shipped in v1.2.0, inspector layout and canvas card cleanup.
Inspector sidebar pins the node header at the top and shows the destructive banner directly beneath it.
Canvas card drops the 2pt left-edge accent strip on destructive nodes; the corner badge alone signals destructiveness.
v1.2.0
May 12, 2026Minor
Adds Google Analytics 4 to the marketing site and a first-class destructive-action UX system across the app. The app itself remains analytics-free.
Marketing site now reports anonymized page-level traffic via Google Analytics 4, including a purchase event on the thank-you page (Google Signals off, IP anonymization on).
Privacy page documents what GA4 collects on the marketing site and confirms the app stays telemetry-free.
Destructive nodes (Delete File, Move to Trash, API DELETE, Run Script with destructive heuristics, AI Agent) are now marked as destructive across every UX surface, canvas badge, library palette, inspector banner, and inline hint rows.
Move to Trash gains a permanent toggle that bypasses the recoverable Trash path (off by default).
Arming a workflow that contains a destructive node now triggers a confirmation alert every time, with no per-session suppression.
/land now flips the merged spec frontmatter from approved to done automatically and pushes the change.
v1.1.1
May 10, 2026Patch
Fixes the execution log silently dropping multi-line node values such as AI markdown results and file contents.
Execution log now renders every line of multi-line node values (AI results, file contents) instead of truncating after the first newline.
Per-line cap stays at 200 characters; pathological payloads cap at 50 lines with a clear overflow indicator.
v1.1.0
May 10, 2026Minor
Adds OpenRouter as a first-class AI provider, fixes a provider-edit clobber bug, and rewrites the marketing landing page. Internal release-flow tooling gets a major refactor (wiggum / land / run skills).
OpenRouter is now a first-class AI provider option, pick it from the provider picker and Watchflows attributes traffic on your OpenRouter dashboard.
All four required-API-key providers (OpenAI, Anthropic, Google, OpenRouter) now show a Get a key link directly in the provider sheet.
Editing an existing AI provider now preserves your saved default model instead of silently overwriting it with the alphabetical-first model in the list.
Reasoning-model detection now handles vendor-prefixed model IDs (e.g. openai/gpt-5, openai/o3-mini) correctly across any compatible endpoint.
Marketing site landing page rewritten around concrete outcomes (auto-name screenshots, sort downloads, draft replies) with a new capability band and template gallery.
Internal release-flow tooling reshaped: /wiggum opens a PR and exits, /run launches a Debug build for manual testing, and /land merges and cleans up after CI is green.
v1.0.15
May 8, 2026Patch
Replaces the gentle-reminder update pill with one driven by a real availability check against the appcast.
The Relaunch to update pill now appears only when an actual newer version is on the appcast, not on a fixed timer.
v1.0.14
May 8, 2026Patch
Adds a Share menu to the workflow detail toolbar and removes a stale toolbar code path.
Workflow detail view gains a Share menu in the toolbar.
Removes the unused CanvasToolbarView code path.
v1.0.13
May 7, 2026Patch
Adds the ambient Relaunch to update pill in the sidebar footer (Claude-style, soft prompt rather than a modal).
Sidebar footer shows a small Relaunch to update pill when an update is staged, including a 5-second post-launch kick so it surfaces promptly after relaunch.
v1.0.12
May 7, 2026Patch
Internal hardening release: better test coverage and several small production-side fixes uncovered along the way.
Stripe recover endpoint now sanitizes the email parameter before lookup.
License timestamp validation tightened to reject out-of-bounds values.
Keychain operations surface OS errors more cleanly.
Behind the scenes: significant trigger and executor test coverage expansion.
v1.0.11
May 7, 2026Patch
Settings panes get a uniform layout pass and several integration polish fixes; debug builds and tests are now isolated from production data.
Settings: uniform hero dimensions, per-pane gradient variation, License pane three-card grid, and an Integrations pane that always renders a hero.
Webhooks: new global master toggle plus a panel surfacing LAN authentication eligibility.
Debug builds and test runs no longer touch your real flows, database, license, or other production data, they get their own bundle ID, App Support folder, and UserDefaults.
v1.0.8
May 3, 2026Patch
License and trial-start storage moves out of the macOS keychain into App Support files so updates do not invalidate the license.
License code and trial-start timestamp now live in Application Support files instead of the keychain, survives app updates without the system treating the new binary as a different signer.
v1.0.7
May 3, 2026Patch
Settings polish: removes the sidebar toggle and tightens top inset on every pane.
Settings sidebar toggle removed; the sidebar is always shown.
Top inset reduced uniformly across every Settings pane.
v1.0.6
May 3, 2026Patch
Fixes a stuck License activation sheet, it now has a real dismiss path.
License activation sheet now dismisses correctly after activation.
v1.0.5
May 3, 2026Patch
Stops the Move-File feedback loop that fired endlessly when a Directory Changed trigger watched the same folder a Move File action wrote into.
Directory Changed trigger now defaults to the current user's Downloads folder for safer first-run behavior.
Move File action becomes a no-op when source and destination resolve to the same path.
User Input trigger applies a 5-second dedup window so echo trigger fires no longer pile up.
v1.0.4
May 3, 2026Patch
Major launch hardening pass: security fixes across webhook, file, AppleScript, AI provider, and import paths; Calendar trigger removed; trial-expiry gate and refund policy in place; new public download for the trial.
Security: webhook listener defaults to the strictest registration mode; OpenURL scheme allowlist; AppleScript escaping covers newlines and control characters; path-traversal guards added to file executors and agent tools; Run Script argv filter; webhook two-pass auth with constant-time compare.
Security: Google AI API key moves from URL parameter to header; AI provider config migrates into the keychain; .watchflow file imports now go through a trust gate.
Calendar trigger and EventKit dependency removed.
Trial expiry gate: workflows stop executing once the 14-day trial is over; the refund policy on the marketing site is updated accordingly.
Marketing site gains a public Download free trial button on the homepage and pricing page.
Test runs and recent-activity cleanup are properly isolated from real flows; recent-activity entries cascade-delete with their parent flow.
BuiltInNodes registration is now idempotent and thread-safe.
v1.0.3
April 28, 2026Patch
Settings UX overhaul (sidebar IA, hero panes, polish across General / AI Providers / License / Webhooks / Integrations) plus a CI Xcode pin bump.
Settings rebuilt around a NavigationSplitView with a sidebar IA and a reusable hero header on every pane.
New panes built out: General (updates toggle), AI Providers (card grid + provider sheet), License (state-driven hero), Webhooks (with port comma fix), Integrations.
Help menu item renamed to Open Documentation.
Calendar usage descriptions added so the system actually prompts the user for permission.
CI Xcode pin bumped to 26.1.1 to match the local SDK linkage.
v1.0.2
April 27, 2026Patch
Fixes broken in-app links to watchflows.app pages and adds a verification target so it cannot regress.
Restores the .html suffix on every in-app link to a watchflows.app page so they resolve correctly.
Adds a make verify-site-links target that asserts every watchflows.app URL referenced from Swift maps to a real site file.
v1.0.1
April 26, 2026Major
Initial public release of Watchflows for macOS, visual workflow automation that runs locally, treats AI as a first-class node type, and ships with the full sign / notarize / auto-update pipeline.
Visual canvas for building workflows from triggers, conditions, actions, and AI nodes.
Triggers cover system events, file changes, app events, time-based schedules, and webhooks.
AI nodes work with local models (Ollama, LM Studio) and any OpenAI-compatible endpoint, with structured-output validation.
Local-first: no account required, no telemetry from the app, credentials in the macOS keychain.
Sold direct from watchflows.app: 14-day free trial, then a 9 one-time license delivered via signed Ed25519 code.
Sparkle 2 auto-updates from the public appcast keep installs current end-to-end.