Simon 3.0b1 released

I'm very happy to announce the first public beta release of Simon version 3!

As discussed in my previous blog post, I've been working on Simon 3.0 (nee 2.6) since May. It really is worthy of the major upgrade designation.

This update of Simon has been in private testing (by myself and a small group of alpha testers) for months, and I have some external time constraints, so I'm planning on having a very short public beta cycle this time — maybe only a matter of days. So I would really appreciate everyone downloading and putting Simon 3.0b1 through its paces as quickly as possible. Everything seems fine from our testing, but you never know what will turn up when a wider group of people start using it.

Note that although Simon 3 will be a paid upgrade, all licensed users can use version 3.0b1 without needing to buy an upgrade (and in fact the upgrade license isn't available quite yet). If you're not sure you'll upgrade, I recommend making a copy of your Simon data, as certain changes made in version 3 won't be backwards compatible to version 2.5.7.

If you haven't bought Simon yet, this is your last chance to get it at the old prices! The prices will be increasing in version 3, but everyone who buys now (and since September 1, 2010) will be eligible for a free upgrade. Don't delay!

I haven't updated the Simon website yet (that's this week's mission), but the new Simon Help is online — the same content as in the help book bundled with the app.

Anyway, without further ado, download Simon 3.0b1 now!

Here are the rather long release notes, detailing all the exciting changes:

Please Note:

  • Simon 3 will be a paid upgrade from Simon 2 (after the beta period).
  • Simon now requires a minimum of Mac OS X 10.5 (Leopard).

Monitor window:

  • Renamed the Notifications log as Activity, and extended it to support logging when tests start checking, and the various steps during the check (starting, stopping, service result, each filter, notifications, etc), plus other actions on tests, e.g. editing, pausing, etc.
  • Added an optional Location column to the tests table. It can be shown via the View Options sheet. It shows the URL, domain, or other properties of the service, where available.
  • Added a File > Save Log... command to enable saving the current log information to a tab-delimited text file. It saves just the selected lines if there are at least two selected, otherwise all lines. (You can already copy selected lines, too.)
  • Sorting on the Status column now sorts so checking is at the top, followed by failure, changes, recovery, and paused at the bottom (with time-sensitive statuses in chronological order).


  • Redesigned the editor windows (New / Edit Test, New / Edit Service, etc) to use separate pages instead of disclosures for each section. The old layout had grown too tall over time, so that it no longer fit on a small screen with all sections disclosed. The new layout is tidier and simpler, without losing any functionality.
  • The editor windows can now be freely resized and zoomed as desired.
  • Added a Summary page, that includes the name and a new Comments field, plus an overview of the values from the other pages. Click the prompt before each item to go directly to that item.
  • The Username and Password fields are now only shown on the Service page when the service wants them.
  • Rows can now be inserted in the notifiers, auto-pause, etc lists, rather than just adding to the end (and they'll scroll if too long for the window).
  • Fixed an issue where the services in the pop-up menu in the New / Edit Test window could appear out of alphabetical order.
  • Clicking the Edit Service..., New Notifier..., etc buttons in the Edit Test window now directly opens the corresponding editor, rather than opening its list window first.
  • When creating a new test, service, etc, now remembers the last-chosen service in the Edit Test window, and last-chosen service, filter, notifer & report kind in the those editors.
  • In the Edit Test window, the pop-up menus to choose the service, filter, notifer & report now show the new Comments text as a tooltip for each menu item, and on the chosen item, as a handy way to quickly see a description of each item.


  • Added a new Filters feature, replacing the old Smart Change Detection feature in the Edit Test window. The Block filter performs the same function as that old feature, plus several other filters are supported to do other analysis of test output, and you can write custom scripts to create additional filters.
  • Added a Filters window listing the available filters, and enabling adding, editing or deleting them.
  • Added an Edit Filter window to add and edit filters, much the same as the Edit Notifier etc windows. It includes options to configure how the filter is used, plug-in-specific controls, and auto-pause settings.
  • Added a Block filter plug-in to support the old Smart Change Detection functionality. It extracts a block of text between specified start and end text.
  • The Block filter also supports new options to search from the start or the end of the input text, and search for a specific occurrence of the text, e.g. start from the 3rd occurrence from the end of the text.
  • Added a Find filter plug-in. This is as easy or powerful as you want: it supports both simple text matching and regular expression searches.
  • The Find filter plug-in can find one occurrence, find a specific occurrence (like for the Block plug-in), find all occurrences (outputting them separated by your choice of delimiter), or find & replace those possibilities, outputting something else for the match(es) -- especially useful with regular expression searches.
  • For simple text matching mode, the Find plug-in supports finding Contains, Starts With, Whole Words, and Ends With. For regular expression mode, it has a helpful menu of regular expression operators to help build expressions, including a dynamically-updating list of capture group markers for replacements.
  • Find-based filters can even result in a failure if the text was or wasn't found, if desired -- useful to detect text that mustn't or must be there.
  • Added a Format filter plug-in. This enables the combination of values from the service and filters, via an insert variable menu, along with your own text. Handy to append the output of multiple filters, wrap something in quote marks, and other uses.
  • Added a Number filter plug-in. This expects the input text to be a valid number, so is typically used after a Find or Block filter to narrow down the text. It converts the text to a number, optionally ignoring specified characters, and with a customizable decimal separator so you can match the format of the text. Then it compares that number against either a fixed number, or the number from the previous check, plus or minus some delta. It can compare using "is", "is not", "is greater than", "is less than", "is in range" or "is not in range". It then results in either a change or failure, as desired. So you can use this to detect if a disk is getting full, a price has changed by a specified threshold, a file count has changed, or many other uses.
  • Added an Override filter plug-in. You can use this to alter the status of a test from Unchanged, Changed, Failure, or from a success status (the first two), or any status, into a different status, including automatically detecting if a change occurred. You can also alter the output text or error message, including using variables (similar to the Format plug-in).
  • Extended the Script plug-in to work as a filter, too. This enables you to create your own custom filters using AppleScript, Perl, PHP, Python, Ruby, or unix shell scripts.
  • Added a checkbox to the Script filter editor to control whether to merge or override the result of the script with the status of the service and any previous filters.
  • Added a VariablesCSV variable, that outputs a comma-separated list of all other variable names. Potentially useful when debugging your scripts.
  • Added several default filters as useful examples to get you started with these powerful new features.

Services and Notifiers:

  • Enhanced the Web (HTTP) service plug-in to include checkboxes in the Cookies table: checked cookies automatically update their values (as before). Cookies with blank values are now also supported; they are not sent. New cookies are recorded automatically. So you can prevent a cookie from being recorded by listing it with an unchecked box, e.g. to send the same value every time. Session cookies are now recorded as unchecked with blank values (so are not sent or updated).
  • Updated the Twitter service and notifier plug-in to use xAuth (a form of OAuth) to log in to the Twitter server, since they no longer support the old-style "basic" authentication.
  • Added a FileMaker Server service, which simply checks that it can connect to a FileMaker Server, and gives an error if not.
  • Added an Internet Access service, which lists applications/processes that are using internet access. You could use this with a Change filter to see when such apps launch or quit, or with a Find filter to confirm that a desired or undesired app is listed.
  • Reworded the TestStatusPhrase variable to eliminate the word "just", since the event may have occurred a while ago, if it is an ongoing failure.
  • Script-based services and notifiers now use UTF8 encoding (instead of ASCII) for the script source, to prevent issues with special characters in AppleScripts.
  • The new VariablesCSV variable is available for services and notifiers, too.
  • Notifiers have access to the new filter variables, too.


  • Updated the report variables to reflect the Activity log change. The old variables will continue to work, but there is now an Activity block, and new Type, Status and Details variables.
  • Separated the Pause and Resume commands in the menu and toolbars, so it is easier to pause or resume all tests when there is a mixture of paused and active tests.
  • The Pause interval is now remembered as a default for next time, even across launches of Simon.
  • Added optional support for Wi-Fi hotspots. When enabled, Simon tries to fetch a known value when it is first launched or after the Mac wakes from sleep, and goes into a "hotspot" mode if it receives something unexpected -- probably a hotspot login page. This will avoid having false failures when you have an internet connection but need to log in to the hotspot. This feature is disabled by default, but can be enabled via a new General preference if you have Simon on a laptop.
  • Removed the Copy to Test function from the Preview and Source windows, since it is incompatible with the new filters features. You can easily copy selected text and paste into whichever field of whichever filter.
  • Improved handling of sorting all table columns.
  • Clicking the window zoom boxes will now zoom the windows to ideal sizes.
  • The Dock icon now displays a "static" animation while the License Assistant is displayed, to help remind that the tests are awaiting a response.
  • Changed the Dock icon and status menu to show the number of Unviewed marked items, rather than the number of items with the indicated status, and to draw the yellow unviewed badge in the upper-right corner over the status triangle, instead of behind, to fit with normal badging conventions.
  • The Unviewed marker is now used for failures and recoveries as well as changes.
  • Fixed an issue with loading test data that could result in losing data if one of the plug-ins has a problem setting itself up.
  • Added a new license level, and renamed them from "Basic", "Standard" and "Enterprise" to "Bronze", "Silver", "Gold" and "Platinum".
  • Added a help book, using the standard Apple Help Viewer. The help is also available online.
  • Significantly reformatted the help, to fit with the normal help book styles, and updated for the changes in this release.
  • Many other behind-the-scenes improvements made possible by dropping Tiger support.