Skip to content

Releases: nicoverbruggen/phpmon

v26.02.1

07 Mar 21:46

Choose a tag to compare

PHP Monitor 26.02 is a major update that adds a variety of useful quality of life additions, various improvements to harden security and lays the foundation for upcoming improvements for a better onboarding experience, the first part of which is now available in this release.

What's New in 26.02

Automatic Startup Fixes

  • During the startup procedure, various steps now include a one-click fix for various problems, with a progress view that displays what commands are being executed.
  • This is the first part of a two-stage overhaul of the onboarding experience of PHP Monitor, which should make the app easier to use for new users.

Command History

  • Via the menu bar item, it is now possible to open the Command History menu (or at boot, by adding the --ch parameter when launching the app via the terminal).
  • This window displays all of the last few hundred commands executed by the app, and how long each command took to execute. Useful for auditing purposes, or to identify performance bottlenecks.

Other additions

  • You can now copy the URL of a selected domain via the context menu. To do this, select a domain in the list, and right click "Copy Domain URL".
  • Switching to a different language in Settings no longer requires a restart.
  • Various translations have been updated, and open windows will re-open in the same location and with the same dimensions prior to switching languages.

What's Changed

Settings

  • The Settings window now correctly updates if a setting value is changed after user interaction elsewhere in the app.
  • The app now correctly respects the language override when specified in Settings.
  • You can now disable icons for menu items everywhere in PHP Monitor. This makes the app behave like it did on previous versions of macOS.

Translations

  • Switching languages to a non-system language now works correctly again (#319).
  • Added missing translations for various languages due to recent updates (or translations which were simply not filled via the automated approach used last time).
  • Addressed various translation quality issues for every language.

Third-party integrations

  • Usage of the phpmon:// protocol is always routed to PHP Monitor, but the app will now no longer respond to such requests without prior explicit user permission.
  • You are prompted to approve integrations the very first time another application uses the phpmon:// protocol, but only the first time.
  • Due to this, in Settings, you will find that "Allow third-party integrations" is now turned off by default. If you approve integrations when prompted, the "Allow third-party integrations" setting will be turned on.

Bug fixes

  • The current state of the Homebrew services are now loaded as part of the startup procedure, preventing the app from displaying incorrect info when opening the menu for the first time.
  • Hardened checks for config.json, as a maliciously or incorrectly formatted config.json could crash the app.
  • Addressed a crash issue caused by a malformed URL via the phpmon:// protocol due to force unwrapping after splitting a string.
  • Invalid characters are stripped from third-party apps added via config.json.
  • Custom environment variables are now set via task.environment instead of simply appended.
  • Addressed a crash issue caused by reloading a PHP configuration file that is no longer valid.
  • Addressed a crash issue caused by a race condition related to Homebrew service loading.
  • Addressed a crash issue caused by a race condition related to shell command execution when a command is terminated.

Big thanks to everyone who submitted their crash reports!


Patch History

v26.02.1

  • Fixed an issue where some preferences set in config.json would not be correctly loaded. (#320)

How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the latest release. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v26.01...v26.02.1

v26.02

07 Mar 16:59

Choose a tag to compare

PHP Monitor 26.02 is a major update that adds a variety of useful quality of life additions, various improvements to harden security and lays the foundation for upcoming improvements for a better onboarding experience, the first part of which is now available in this release.

What's New in 26.02

Automatic Startup Fixes

  • During the startup procedure, various steps now include a one-click fix for various problems, with a progress view that displays what commands are being executed.
  • This is the first part of a two-stage overhaul of the onboarding experience of PHP Monitor, which should make the app easier to use for new users.

Command History

  • Via the menu bar item, it is now possible to open the Command History menu (or at boot, by adding the --ch parameter when launching the app via the terminal).
  • This window displays all of the last few hundred commands executed by the app, and how long each command took to execute. Useful for auditing purposes, or to identify performance bottlenecks.

Other additions

  • You can now copy the URL of a selected domain via the context menu. To do this, select a domain in the list, and right click "Copy Domain URL".
  • Switching to a different language in Settings no longer requires a restart.
  • Various translations have been updated, and open windows will re-open in the same location and with the same dimensions prior to switching languages.

What's Changed

Settings

  • The Settings window now correctly updates if a setting value is changed after user interaction elsewhere in the app.
  • The app now correctly respects the language override when specified in Settings.
  • You can now disable icons for menu items everywhere in PHP Monitor. This makes the app behave like it did on previous versions of macOS.

Translations

  • Switching languages to a non-system language now works correctly again (#319).
  • Added missing translations for various languages due to recent updates (or translations which were simply not filled via the automated approach used last time).
  • Addressed various translation quality issues for every language.

Third-party integrations

  • Usage of the phpmon:// protocol is always routed to PHP Monitor, but the app will now no longer respond to such requests without prior explicit user permission.
  • You are prompted to approve integrations the very first time another application uses the phpmon:// protocol, but only the first time.
  • Due to this, in Settings, you will find that "Allow third-party integrations" is now turned off by default. If you approve integrations when prompted, the "Allow third-party integrations" setting will be turned on.

Bug fixes

  • The current state of the Homebrew services are now loaded as part of the startup procedure, preventing the app from displaying incorrect info when opening the menu for the first time.
  • Hardened checks for config.json, as a maliciously or incorrectly formatted config.json could crash the app.
  • Addressed a crash issue caused by a malformed URL via the phpmon:// protocol due to force unwrapping after splitting a string.
  • Invalid characters are stripped from third-party apps added via config.json.
  • Custom environment variables are now set via task.environment instead of simply appended.
  • Addressed a crash issue caused by reloading a PHP configuration file that is no longer valid.
  • Addressed a crash issue caused by a race condition related to Homebrew service loading.
  • Addressed a crash issue caused by a race condition related to shell command execution when a command is terminated.

Big thanks to everyone who submitted their crash reports!


Patch History

No patches yet.


How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the latest release. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v26.01...v26.02

v26.01

24 Jan 14:09

Choose a tag to compare

PHP Monitor 26.01 is a stability-focused release that addresses several timing and initialization issues.

What's New in 26.01

  • PHP Monitor's menu bar item now remains inactive until the app has fully started up, ensuring all features are ready before you interact with the app.

What's Changed

  • Resolved multiple race conditions that could cause unexpected behavior during startup.
  • Improved how long-running shell commands are handled, preventing potential timeouts and crashes.

Big thanks to everyone who submitted their crash reports!


Patch History

No patches yet.


How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the latest release. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.12.1...v26.01

v25.12.1

23 Dec 11:32

Choose a tag to compare

PHP Monitor 25.12 comes with better app integrations, improvements to how alerts are displayed, and various fixes.

What's New in 25.12

  • Additional apps are now detected by default, and their icons are now displayed in the context menu when right-clicking a domain in the Domains window.
    • WebStorm, VSCodium, Tower, SourceTree, Ghostty were added. You can still add your own, as always. Consult the FAQ for more information on how to do that.
    • The context menu for a selected domain now displays icons for each of the detected third-party applications.
  • Certain alerts invoked via timers (i.e. background update notification, Fix My Valet, some startup notifications) will now no longer steal focus but will instead bounce the Dock icon.
    • On macOS, bouncing the Dock icon is called "a request for attention" and it has a separate API. That is now being leveraged by NVAlert.
    • Most importantly, this will prevent PHP Monitor from stealing focus 24 hours after launch, which may be annoying. It also makes it so that the alert window can easily be found (it may get lost otherwise, see #314).

What's Changed

  • Various fixes related to concurrency or timing issues that could crash the app under rare conditions or when unexpected output was returned:
    • Addressed a potential timing issue with PhpEnvironments that could crash the app.
    • Addressed a potential timing issue with various SwiftUI views that could crash the app at launch.
    • Addressed a potential crash issue when reading data from handle (output) via RealShell.
    • Improved the robustness of the filesystem watchers by rewriting FSNotifier for Swift Concurrency (as much as possible) and reusing it everywhere. This component is now also tested.
    • Fixed a rare crash issue when running php -v when receiving invalid output.
    • Fixed a rare crash issue when running a brew command when receiving invalid output, or when the command times out.
    • (Big thanks to everyone who submitted their crash reports!)
  • All alerts in the app will now cause the app icon to be displayed in the Dock, and will be visible in Mission Control. This will make it easier for alerts to be found if they are not displayed on top of other windows.
  • Added suspension mechanism to config watchers so using PHP Configuration Editor doesn't cause multiple events to fire.
  • The menu is now dismissed correctly when opening the PHP Configuration Editor via the main menu.
  • An explicit menu reload has now been added when a preference is updated via the PHP Configuration Editor.
  • Improved checking for termination status correctness when executing commands or running processes.
  • Updated Chinese localization to address clarity (see #313).
  • Added better API throttling by generating a random UUID and using it when checking for updates. Please note that this UUID is not used for tracking! For more information about this mechanism, please look at the privacy policy.
  • The list of sponsors has been updated in the "About PHP Monitor" window, and a link to the Privacy Policy has been added.

Patch History

Version 25.11.1

  • Fixed a crash when an invalid composer.json file was present in a project folder.
  • Fixed rare crashes related to concurrency in regard to PATH information and PHP configuration files.
  • Fixed a crash caused by a race condition when executing shell commands when waiting for output.

How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the latest release. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.12...v25.12.1

v25.12

06 Dec 12:00

Choose a tag to compare

PHP Monitor 25.12 comes with better app integrations, improvements to how alerts are displayed, and various fixes.

What's New in 25.12

  • Additional apps are now detected by default, and their icons are now displayed in the context menu when right-clicking a domain in the Domains window.
    • WebStorm, VSCodium, Tower, SourceTree, Ghostty were added. You can still add your own, as always. Consult the FAQ for more information on how to do that.
    • The context menu for a selected domain now displays icons for each of the detected third-party applications.
  • Certain alerts invoked via timers (i.e. background update notification, Fix My Valet, some startup notifications) will now no longer steal focus but will instead bounce the Dock icon.
    • On macOS, bouncing the Dock icon is called "a request for attention" and it has a separate API. That is now being leveraged by NVAlert.
    • Most importantly, this will prevent PHP Monitor from stealing focus 24 hours after launch, which may be annoying. It also makes it so that the alert window can easily be found (it may get lost otherwise, see #314).

What's Changed

  • Various fixes related to concurrency or timing issues that could crash the app under rare conditions or when unexpected output was returned:
    • Addressed a potential timing issue with PhpEnvironments that could crash the app.
    • Addressed a potential timing issue with various SwiftUI views that could crash the app at launch.
    • Addressed a potential crash issue when reading data from handle (output) via RealShell.
    • Improved the robustness of the filesystem watchers by rewriting FSNotifier for Swift Concurrency (as much as possible) and reusing it everywhere. This component is now also tested.
    • Fixed a rare crash issue when running php -v when receiving invalid output.
    • Fixed a rare crash issue when running a brew command when receiving invalid output, or when the command times out.
    • (Big thanks to everyone who submitted their crash reports!)
  • All alerts in the app will now cause the app icon to be displayed in the Dock, and will be visible in Mission Control. This will make it easier for alerts to be found if they are not displayed on top of other windows.
  • Added suspension mechanism to config watchers so using PHP Configuration Editor doesn't cause multiple events to fire.
  • The menu is now dismissed correctly when opening the PHP Configuration Editor via the main menu.
  • An explicit menu reload has now been added when a preference is updated via the PHP Configuration Editor.
  • Improved checking for termination status correctness when executing commands or running processes.
  • Updated Chinese localization to address clarity (see #313).
  • Added better API throttling by generating a random UUID and using it when checking for updates. Please note that this UUID is not used for tracking! For more information about this mechanism, please look at the privacy policy.
  • The list of sponsors has been updated in the "About PHP Monitor" window, and a link to the Privacy Policy has been added.

Patch History

None yet.


How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the latest release. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.11.1...v25.12

v25.11.1

21 Nov 20:29

Choose a tag to compare

PHP Monitor 25.11 is ready for Homebrew 5 and PHP 8.5 (and the in-development version, PHP 8.6). This update also comes with updated translations, including new ones for Arabic, Bangla, Hindi, Italian, Japanese and Turkish. Oh, and thanks to your bug reports I've been able to address a couple of crashes!

What's New in 25.11

  • PHP Monitor is ready for the upcoming release of PHP 8.5. You will likely need to update Valet if you wish to use this version. (Early adopters may need to manually patch Valet.)
  • PHP Monitor is now officially compatible with Homebrew 5. The warning that you received when opening PHP Version Manager when running Homebrew 5.0 has been removed.
  • Added preliminary support for PHP 8.6. The same notice that you can read above about updating or patching Valet applies here, too.
  • Missing translations were mostly generated via a local LLM. Please open a PR if you believe the tone or content of the translations can be improved. These were changed:
    • New translations for new features were added to: Dutch, German, Spanish, Indonesian, Portuguese, Vietnamese and Chinese localization files.
    • The following new languages were added: Arabic, Bangla, Hindi, Italian, Japanese, Turkish. These were generated from scratch. If you notice an issue, please open a PR.
    • Note: I consider none of the languages to be officially supported, I can only guarantee that the English localization is exactly as intended. I've done my best to make things as flexible as possible, but some layout issues may occur when using a non-English translation.

What's Changed

  • Improved the robustness of the filesystem notifiers, in cases where a notifier cannot get an open file descriptor. Instead of crashing, these filesystem notifiers will now fail gracefully and the error will be logged.
    • In rare cases this may mean that the reactive functionality of PHP Monitor may not work correctly due to limitations on how many open file descriptors are allowed per process, or if there are permission issues with the paths PHP Monitor is trying to monitor.
    • You can check the file descriptor limit with ulimit -n. You may bump into this hard limit if you have many versions of PHP with many extensions.
  • Fixed a concurrent crash issue if the cached PHP installations weren't ready yet but the menu was being refreshed.
    • Some menu items may always use the short PHP version name if this occurs, even if you have chosen to always display the full version number. Pressing Command-R when the menu is open will reload the menu and resolve this issue.
  • Addressed a potential crash cause with shell handling if the RealShell instance would be reloaded. This can no longer happen. Instead, the $PATH is updated and reloaded correctly, avoiding issues with long-running shell scripts or invocations of valet, brew, and such.
  • API requests for crash reporting and checking for updates have been improved.
  • Fixed an issue that caused PHP Monitor to be unable to determine the php alias and crashing when no PHP aliases were found in the output of brew info php --json. The stable version number is now determined differently.

Patch History

Version 25.11.1

  • Fixed an issue with PHP Monitor being unable to start on Macs with Intel processors.
  • Determining the PHP alias now occurs at startup, which is a process that is not permitted to fail. If this fails, the app will not continue and you will be notified.
  • If the shivammathur/php tap is installed, then brew info shivammathur/php/php --json is invoked to determine the PHP version alias.
  • A few translations were missing. These have been added.

How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the latest release. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.10...v25.11.1

v25.11

21 Nov 11:24

Choose a tag to compare

A patched version of this release is now available, you should probably download that instead:
https://github.com/nicoverbruggen/phpmon/releases/tag/v25.11.1


PHP Monitor 25.11 is ready for Homebrew 5 and PHP 8.5 (and the in-development version, PHP 8.6). This update also comes with updated translations, including new ones for Arabic, Bangla, Hindi, Italian, Japanese and Turkish. Oh, and thanks to your bug reports I've been able to address a couple of crashes!

What's New in 25.11

  • PHP Monitor is ready for the upcoming release of PHP 8.5. You will likely need to update Valet if you wish to use this version. (Early adopters may need to manually patch Valet.)
  • PHP Monitor is now officially compatible with Homebrew 5. The warning that you received when opening PHP Version Manager when running Homebrew 5.0 has been removed.
  • Added preliminary support for PHP 8.6. The same notice that you can read above about updating or patching Valet applies here, too.
  • Missing translations were mostly generated via a local LLM. Please open a PR if you believe the tone or content of the translations can be improved. These were changed:
    • New translations for new features were added to: Dutch, German, Spanish, Indonesian, Portuguese, Vietnamese and Chinese localization files.
    • The following new languages were added: Arabic, Bangla, Hindi, Italian, Japanese, Turkish. These were generated from scratch. If you notice an issue, please open a PR.
    • Note: I consider none of the languages to be officially supported, I can only guarantee that the English localization is exactly as intended. I've done my best to make things as flexible as possible, but some layout issues may occur when using a non-English translation.

What's Changed

  • Improved the robustness of the filesystem notifiers, in cases where a notifier cannot get an open file descriptor. Instead of crashing, these filesystem notifiers will now fail gracefully and the error will be logged.
    • In rare cases this may mean that the reactive functionality of PHP Monitor may not work correctly due to limitations on how many open file descriptors are allowed per process, or if there are permission issues with the paths PHP Monitor is trying to monitor.
    • You can check the file descriptor limit with ulimit -n. You may bump into this hard limit if you have many versions of PHP with many extensions.
  • Fixed a concurrent crash issue if the cached PHP installations weren't ready yet but the menu was being refreshed.
    • Some menu items may always use the short PHP version name if this occurs, even if you have chosen to always display the full version number. Pressing Command-R when the menu is open will reload the menu and resolve this issue.
  • Addressed a potential crash cause with shell handling if the RealShell instance would be reloaded. This can no longer happen. Instead, the $PATH is updated and reloaded correctly, avoiding issues with long-running shell scripts or invocations of valet, brew, and such.
  • API requests for crash reporting and checking for updates have been improved.
    • Sending a crash report now uses URLSession.shared with a shorter timeoutInterval on the request, as opposed to creating a (wasteful) new URLSession instance.
    • Checking if a newer version of the app exists now happens natively via URLSession and URLRequest instead of handing this off to curl.
    • This new RealWebApi abstraction will be used in the future for important notices, and for bug reports. In the future, extended analytics is also on the table, but that will be an opt-in thing.
  • Fixed an issue that caused PHP Monitor to be unable to determine the php alias and crashing when no PHP aliases were found in the output of brew info php --json. The stable version number is now determined differently.

Patch History

None yet.


How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the app. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.10.2...v25.11

v25.10.2

10 Nov 12:09

Choose a tag to compare

PHP Monitor 25.10 comes with major architectural upgrades, automatic checks for domain certificate expiry and automatic crash reporting (opt-in) in case the app crashes. Oh, and there's a couple of subtle bug fixes.

What's New in 25.10

  • Major architectural overhaul:
    • Migrated away from various shared static singletons (e.g. Shell.shared) to a new Container-driven architecture.
    • This has led to various reliability improvements and the parallelization of the entire unit test suite.
    • Further architectural improvements are planned for the future.
  • Automatic notification about expired certificates:
    • The first time the domains list is opened after restarting the app, each domain's certificate expiry is now checked.
    • This expired certificate check for domains was also added as part of PHP Doctor, so if any expired domains exist, the warning will be reported at launch without needing to open the Domains list.
    • A new popover is now available by pressing on the lock icon for each domain in the Domains list.
    • If there are any expired certificates, PHP Monitor will now offer to renew those certificates by unsecuring and re-securing affected domains.
  • Automatic crash reporting:
    • Added PLCrashReporter as a new dependency, which keeps track of whether the app has crashed and if there is still a pending crash report to be sent.
    • If a pending crash report can be sent, it can be sent via the public API endpoint after asking the user if it's okay to send this crash report. This means it should be easier than ever to send me your crash reports!

What's Changed

  • Fixed an issue with the PHP version compatibility popover positioning itself incorrectly on macOS Tahoe.
  • Updated the text of the cut-off message when PHP 8.5 releases on November 20th. An update for PHP Monitor should become available soon after this release.
  • Fixed an issue with Swift Concurrency and the RealShell implementation of pipe() and attach() that could cause crashes under certain circumstances.
  • Added a retry mechanism to the reloadServicesStatus method of ValetServicesManager in case parsing the JSON returned from brew services info --all --json commands fails. There was also a potential timing issue here that should now be resolved, too.
  • Fixed a potential crash issue when adding a linked domain or proxy fails. I've never seen this crash in practice, but in theory this should make the app more robust. You will not be notified if this fails, but it should be obvious.
  • Fixed a timing issue with task cancellation when reloading services.
  • Fixed a timing issue with the custom delay(seconds:) helper method.

Patch History

Version 25.10.2

  • A workaround has been added to ignore invalid Homebrew output when running brew info php --json.
  • Added extra check for valid brew info php --json output during startup. This could previously just crash the app shortly after launch if Homebrew did not output valid JSON. The workaround fixes this, but if the JSON is entirely invalid this will now show an alert prior to fully booting the app.
  • Checking if the PHP binary exists and the PHP installation is not broken now happens regardless of whether Valet is installed.
  • Loading custom preferences now happens when the startup checks have all passed.

Version 25.10.1

  • Fixed a timing issue when starting up the app that could lead to a race condition, crashing the app immediately. This is probably an issue that has been around for some time, but was difficult to track down and quite rare.
  • Fixed an issue with the Packagist check, which would prevent you from being notified about certain Valet upgrades. Since the latest version is always listed first via Packagist's API, some of the sorting logic has been removed that was causing this to break.

How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the app. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.09...v25.10.2

v25.10.1

09 Nov 11:53

Choose a tag to compare

PHP Monitor 25.10 comes with major architectural upgrades, automatic checks for domain certificate expiry and automatic crash reporting (opt-in) in case the app crashes. Oh, and there's a couple of subtle bug fixes.

What's New in 25.10

  • Major architectural overhaul:
    • Migrated away from various shared static singletons (e.g. Shell.shared) to a new Container-driven architecture.
    • This has led to various reliability improvements and the parallelization of the entire unit test suite.
    • Further architectural improvements are planned for the future.
  • Automatic notification about expired certificates:
    • The first time the domains list is opened after restarting the app, each domain's certificate expiry is now checked.
    • This expired certificate check for domains was also added as part of PHP Doctor, so if any expired domains exist, the warning will be reported at launch without needing to open the Domains list.
    • A new popover is now available by pressing on the lock icon for each domain in the Domains list.
    • If there are any expired certificates, PHP Monitor will now offer to renew those certificates by unsecuring and re-securing affected domains.
  • Automatic crash reporting:
    • Added PLCrashReporter as a new dependency, which keeps track of whether the app has crashed and if there is still a pending crash report to be sent.
    • If a pending crash report can be sent, it can be sent via the public API endpoint after asking the user if it's okay to send this crash report. This means it should be easier than ever to send me your crash reports!

What's Changed

  • Fixed an issue with the PHP version compatibility popover positioning itself incorrectly on macOS Tahoe.
  • Updated the text of the cut-off message when PHP 8.5 releases on November 20th. An update for PHP Monitor should become available soon after this release.
  • Fixed an issue with Swift Concurrency and the RealShell implementation of pipe() and attach() that could cause crashes under certain circumstances.
  • Added a retry mechanism to the reloadServicesStatus method of ValetServicesManager in case parsing the JSON returned from brew services info --all --json commands fails. There was also a potential timing issue here that should now be resolved, too.
  • Fixed a potential crash issue when adding a linked domain or proxy fails. I've never seen this crash in practice, but in theory this should make the app more robust. You will not be notified if this fails, but it should be obvious.
  • Fixed a timing issue with task cancellation when reloading services.
  • Fixed a timing issue with the custom delay(seconds:) helper method.

Patch History

Version 25.10.1

  • Fixed a timing issue when starting up the app that could lead to a race condition, crashing the app immediately. This is probably an issue that has been around for some time, but was difficult to track down and quite rare.
  • Fixed an issue with the Packagist check, which would prevent you from being notified about certain Valet upgrades. Since the latest version is always listed first via Packagist's API, some of the sorting logic has been removed that was causing this to break.

How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the app. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.09...v25.10.1

v25.10

07 Nov 13:12

Choose a tag to compare

PHP Monitor 25.10 comes with major architectural upgrades, automatic checks for domain certificate expiry and automatic crash reporting (opt-in) in case the app crashes. Oh, and there's a couple of subtle bug fixes.

What's New

  • Major architectural overhaul:
    • Migrated away from various shared static singletons (e.g. Shell.shared) to a new Container-driven architecture.
    • This has led to various reliability improvements and the parallelization of the entire unit test suite.
    • Further architectural improvements are planned for the future.
  • Automatic notification about expired certificates:
    • The first time the domains list is opened after restarting the app, each domain's certificate expiry is now checked.
    • This expired certificate check for domains was also added as part of PHP Doctor, so if any expired domains exist, the warning will be reported at launch without needing to open the Domains list.
    • A new popover is now available by pressing on the lock icon for each domain in the Domains list.
    • If there are any expired certificates, PHP Monitor will now offer to renew those certificates by unsecuring and re-securing affected domains.
  • Automatic crash reporting:
    • Added PLCrashReporter as a new dependency, which keeps track of whether the app has crashed and if there is still a pending crash report to be sent.
    • If a pending crash report can be sent, it can be sent via the public API endpoint after asking the user if it's okay to send this crash report. This means it should be easier than ever to send me your crash reports!

What's Changed

  • Fixed an issue with the PHP version compatibility popover positioning itself incorrectly on macOS Tahoe.
  • Updated the text of the cut-off message when PHP 8.5 releases on November 20th. An update for PHP Monitor should become available soon after this release.
  • Fixed an issue with Swift Concurrency and the RealShell implementation of pipe() and attach() that could cause crashes under certain circumstances.
  • Added a retry mechanism to the reloadServicesStatus method of ValetServicesManager in case parsing the JSON returned from brew services info --all --json commands fails. There was also a potential timing issue here that should now be resolved, too.
  • Fixed a potential crash issue when adding a linked domain or proxy fails. I've never seen this crash in practice, but in theory this should make the app more robust. You will not be notified if this fails, but it should be obvious.
  • Fixed a timing issue with task cancellation when reloading services.
  • Fixed a timing issue with the custom delay(seconds:) helper method.

How to install or upgrade

If you have an existing PHP Monitor.app in your Applications folder you can use the built-in updater. (Click on the icon in your menu bar, and choose "Check for updates..." to initiate this process, or wait for a notification.)

If you haven't installed PHP Monitor yet, you can click here to download the app. Place the app in your Applications folder and you may want to consult the README file for some more information.


Full Changelog: v25.09...v25.10