This is the changelog for the early access builds of PHP Monitor. You can gain access to these builds by sponsoring the project on a monthly basis on GitHub for as low as $5 per month.
You also get early access to a private repository, and I will prioritize issues opened by you if you are sponsor.
Release Notes
EAP 26.05.4 (2015) - Jul 11, 2026
- Fixed some concurrency issues that could lead to crashes related to Valet and Homebrew.
EAP 26.05.3 (2010) - Jun 27, 2026
- Improved compatibility of the self-updater with macOS Golden Gate.
- Updated list of default integrations (added Zed and Ray).
EAP 26.05.2 (2006) - Jun 14, 2026
- The previous patch already ensured that
brew trust is handled correctly, but this release now adds official support for Homebrew 6.
- The various warnings have been updated and the alert notifying you about only "Homebrew 4 and 5 are supported" has been removed.
EAP 26.05.1 (2005) - Jun 13, 2026
- PHP Monitor will now warn you if the required taps aren't trusted via
brew trust if you are running Homebrew 6.0 or a 5.x build that supports it. There's an automatic fix via PHP Doctor, and you will be notified to address this when you use PHP Version Manager, if one or both taps are untrusted (#333).
- Removed the "Hide icons in menu" preference, and standardized menu icons like in the previous version of macOS (Sequoia) and the upcoming version (Golden Gate), following conventions (#332).
- PHP Monitor Self-Updater has been updated so it doesn't stop downloading the update after timing out the internal
curl command on slower connections, and incorrectly reporting the "failed checksum" alert. On slow connections, you will be able to see a progress window now, too (#331).
EAP 26.05 (1997) - Jun 6, 2026
- Generating helper files now checks for the "PHP Monitor" auto-generation message before it overwrites files.
- Handling if updating automatic PATH fails has been improved, you can now update the PATH manually.
- Fixed a small bug related to terminal output in the onboarding wizard.
EAP 26.05 (1996) - Jun 5, 2026
- Automatic service discovery is now disabled by default, to avoid clogging up the menu.
EAP 26.05 (1995) - May 30, 2026
- Added automatic service discovery: this automatically displays common Homebrew services if those are installed. The following Homebrew packages are checked:
mailhog, postgresql, mysql, mariadb and redis (#326).
- This feature is currently enabled by default and can be disabled in Settings. It's also possible to add additional services like before using
config.json (see FAQ for more information).
- Made various improvements and bugfixes to the previous build's onboarding flow, mostly related to failure states.
EAP 26.04 (1975) - May 4, 2026
- Fixed an issue with an upcoming version of Homebrew, which removes a known JSON field that prevents the app from starting (#329).
- Lowered the timeout for
$PATH discovery to 3 seconds (down from 10s) which should speed up startup time.
This release includes fixes that were backported to v26.03.2 after a report about Homebrew's JSON output changing in an upcoming release, which is a change that can affect whether PHP Monitor can start correctly.
EAP 26.04 (1970) - April 29, 2026
- A new onboarding setup flow has been added. If this is the first time you're using the app, you will be guided through various setup steps if necessary. This will guide you from installing Homebrew to setting up Valet (#317).
- When you first launch PHP Monitor, permission to show you notifications will only be requested when the app shows you the welcome screen.
- The helper files are now updated for all possible PHP versions. If certain versions of PHP are not installed, the script you're sourcing will let you know.
- Renamed "Onboarding" strings to "Welcome Screen" now that there's an actual onboarding flow.
- Fixed an issue where checking if an app is installed could timeout and crash PHP Monitor.
- Fixed an issue where the determined shell wasn't cached at startup.
EAP 26.03.1 (1930) - April 17, 2026
- Fixed an issue where an invalid configured login shell could cause incorrect shell behavior during startup.
- PHP Monitor now safely falls back to
/bin/zsh when the configured shell is unavailable or inaccessible.
- PHP Doctor now reports invalid shell configurations more clearly, and avoids showing misleading helper PATH warnings when the real issue is the shell itself.
- Fixed an issue with missing translation keys for certain error scenarios.
EAP 26.03 (1926) - April 4, 2026
- Shell command output streaming and timeout handling has been hardened, reducing the chance of race-condition related crashes during long-running tasks.
- Removing PHP versions and extensions now handles timeout/failure scenarios gracefully and reports that the operation took too long, instead of crashing.
EAP 26.02.3 (1915) - March 31, 2026
- Fixed an issue where a slow shell could prevent PHP Monitor from starting correctly.
- Fixed an issue where invalid symlinks for sites and proxies could cause the app to crash. If you moved or deleted the original folder that you linked prior, this would occur.
- Fixed an issue where parsing nginx configuration files with multi-byte characters present could cause the app to crash.
EAP 26.02.2 (1913) - March 21, 2026
- Fixed two cooperative thread pool starvation cases caused by synchronous command execution in an async function, potentially leading to the app running out of available threads, which crashed the app.
- Fixed a deep directory from visually breaking the Link Folder modal (#321).
EAP 26.02.1 (1911) - March 7, 2026
- Fixed an issue where some preferences set in
config.json would not be correctly loaded.
- This is exactly why I do new releases over the weekend. Sometimes a silly bug slips through, and hopefully by the time Sunday evening rolls around, I have been alerted of any crucial bugs.
EAP 26.02 (1910) - March 7, 2026
- Add "Copy Domain URL" to context menu in Domains window.
- Fixed a couple of polish issues with previous EAP releases.
EAP 26.02 (1900) - March 3, 2026
- 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.
- Added a setting that lets you hide icons in the menus (like before macOS Tahoe). This setting is disabled by default, even on older versions of macOS.
- Certain integrity checks at startup now have automatic fixes, which can easily be applied by clicking "Automatically Fix". This should make onboarding a little easier.
- If you want to execute these fixes yourself, you can still press the "I Fixed It" button. Keep in mind, some steps may not have an automatic fix.
- As part of this update, a new alert is used for the initial "environment checks". If a fix is available and you choose to execute it, you will be informed about progress and the success status.
- When the app starts and an alert is displayed, the other "timeout" alert for slow startup will be not be displayed. The timeout alert only applies to slow starts where no user interaction would otherwise indicate something has gone potentially wrong.
- The "Add Domain" flow with "Add Link" and "Add Proxy" has been reworked with SwiftUI and been given a visual update.
- The "Search" placeholder in the Domains window is now localized for all languages.
- Various translations have been updated, and when changing the preferred language, open windows will re-open in the same location and with the same dimensions prior to switching languages.
- Improved how custom exports (environment variables) are set.
- If
COMPOSER_HOME has been customized, that custom folder is now used everywhere.
- The new approach is more secure, and is also tested now.
- Fixed an issue with startup where PHP Monitor would not correctly pick up a newly linked PHP installation if the user (or via an automatic fix) the PHP version was unlinked when the app started.
- Administrative scripts now log their error output if something goes wrong.
EAP 26.02 (1870) - February 13, 2026
- 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.
- A fresh boot of the app would often have the menu lag behind by just a second and display incorrect information. Subsequent async updates of the menu remain functional as before.
- "Allow third-party integrations" now requires explicit user approval the very first time.
- 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. (This only applies to new users, or users who haven't changed the default setting – which used to be set to true, which was a potential security issue.)
- 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.
- Various hardening of potentially exploitable tweaks which are possible via
config.json.
- I have no reason to suspect that this was ever exploited, but now there's more safeguards in place to avoid crashes and potential script injection, just to be safe.
- The app now correctly respects the language override when specified in Settings.
- The Settings window now correctly updates if a value changed after user interaction.
- This can occur with the "notify about TLD" alert and also now with the approval of third-party integrations.
- Addressed various translation quality issues for every language.
- Certain duplicate string keys have been resolved, certain missing translations were added, and escape sequence issues were also addressed for the majority of all available languages.
- Addressed a crash issue caused by a malformed URL via the
phpmon:// protocol due to force unwrapping after splitting a string.
- 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.
EAP 26.01 (1845) - January 21, 2026
- Addressed various crash issues caused by race conditions.
- The central
Container instance is now @unchecked Sendable which will avoid certain crashes.
- The status bar item in the menu bar is now disabled until the startup procedure is finished.
- Fixed various issues with test suite reliability; for example, incorrect PHP versions would be detected due to changes made to the
Container initialization in previous versions of the app. This and various other inconsistency issues have now been resolved.
- The UI tests have also been improved to wait for the startup procedure to complete before evaluating and interacting with UI elements. This makes them more reliable.
EAP 25.12.1 (1825) - December 23, 2025
- Fixed a crash when an invalid
composer.json file was present in a project folder.
- Fixed a crash caused by a race condition when executing shell commands.
EAP 25.12.1 (1820) - December 13, 2025
- Fixed rare crashes related to concurrency in regard to PATH information and PHP configuration files.
EAP 25.12 (1810) - December 6, 2025
- 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.
EAP 25.12 (1800) - December 5, 2025
- 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.
- Updated Chinese localization.
EAP 25.12 (1795) - December 3, 2025
- Additional apps are now detected by default, and their icons are now displayed.
- 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).
- Addressed a potential timing issue with
PhpEnvironments that could crash the app.
- This has been addressed with a new
Locked helper which leverages NSLock. To be used with care, but it should fix at least this rare issue where a timing issue could occur if accessing some cached information happens at exactly the same time the PHP versions are being updated.
- Addressed a potential timing issue with various SwiftUI views that could crash the app at launch.
- I'm not even sure this actually fixes things, but
@MainActor has been added to all static instantiator methods intended for the different SwiftUI-based menu views (HeaderView, StatsView and ServicesView), since instantiating an NSHostingController must occur on the main thread.
- 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 was made possible by making changes to
NVAlert, my separate Swift Package. It now contains a new urgency setting when an alert is being displayed, which is being used throughout PHP Monitor now.
- 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.
- This is actually a rather big change that got rid of lots of very similar code, and reworks the entirety into something that is much more maintainable.
- The debounce mechanism for listening for config file modifications or
homebrew/bin directory observation has been modified to better avoid duplicate work, too.
- The
homebrew/bin directory observer is now suspended when PHP Version Manager takes action, preventing the app from doing constant (background) work in attempting to re-scan PHP versions, while Homebrew is still busy installing dependencies.
- Added better API throttling by generating a random UUID and sending it when checking for updates. 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.
EAP 25.11.1 (1735) - November 21, 2025
- Fixed an issue with PHP Monitor being unable to start on Macs with Intel processors with Homebrew located in
/usr/local/homebrew.
- Instantiating the
Container instance on Intel actually did some Filesystem checks, which failed when Paths isn't ready.
- However, this was a silly mistake: some paths never include a
~. Calling replacingTildeWithHomeDirectory will no longer crash if there is no ~ in the string, which would have happened in the past if the Paths instance wasn't ready (like on Intel when initializing the Container).
- Now, the crash is prevented, but a
fatalError is still thrown if Paths happens to be unavailable if an actual ~ needs to be replaced. (This is now the correct behaviour, yay.)
EAP 25.11.1 (1730) - November 21, 2025
- 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.
- In practice, this error should be super rare and will likely only occur as part of various edge cases in regard to Homebrew configuration and/or state.
- If the
shivammathur/php tap is installed, then brew info shivammathur/php/php --json is invoked to determine the PHP version alias.
- Otherwise, the information in PHP Version Manager will be incorrect during the window that Homebrew PHP and the tap's PHP version alias are out of sync. This is usually when a new version of PHP is released, but not yet available in
homebrew-core.
- The check that occurred to resolve the sync issue between
php and shivammathur/php/php is no longer required, as the shivammathur/php/[email protected] formulae are always installed via PHP Version Manager, and have been for some time now.
- Tweaked the wording for the crash reporter message, which is intended to guide users to GitHub in case the app keeps crashing, like it did this morning before the release of v25.11.
- The text now includes: "If the crash keeps happening at a specific point in time, you may want to check GitHub's issue tracker to see if a fix is not in the works. If the app keeps crashing prior to initialization, you may need to update PHP Monitor manually."
- This addition does need to be localized for different languages.
- A few translations were missing. These have been added.
- Added missing string for troubleshooting in Indonesian and Italian, a missing string for "Domains" in Indonesian. Also added various missing strings in Bengali (various "close" button prompts).
EAP 25.11 (1715) - November 21, 2025
- 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.
EAP 25.11 (1710) - November 20, 2025
- 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.
EAP 25.11 (1705) - November 17, 2025
- Fixed a crash issue when fetching Homebrew services data. I've also ensured that opening the menu won't always trigger a service data refresh: there's now a 2 second debounce to avoid too many concurrent refreshes if you open and close the menu quickly.
- The crash issue was reported several times and previously thought to have been addressed, but there was still a race condition issue with
await withTaskGroup(of:) that has been resolved now.
ValetServicesManager has been reworked to have a separate actor (ValetServicesDataManager) that handles data retrieval. Broadcasting updated service data has also been addressed in this update.
- Addressed two potential crash causes in the command and shell handling.
- Running commands via
RealShell now properly closes file handlers proactively to avoid hitting the limit. You can check the limit by running ulimit -n.
- Running commands via
RealShell now checks the process termination status. If the process was terminated due to an uncaught signal (likely a crash!) then the output will be empty because reading the file handler could crash the app. This could occur on development versions of PHP and bring down the app.
EAP 25.11 (1700) - November 14, 2025
- 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.)
- Added preliminary support for PHP 8.6. The same notice that you can read above about updating or patching Valet applies here, too.
- 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.
- 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.
- 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.
EAP 25.10.2 (1695) - November 10, 2025
- 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. A 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.
EAP 25.10.1 (1690) - November 9, 2025
- 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.
EAP 25.10 (1685) - November 7, 2025
- Fixed a crash issue when adding a linked domain or proxy fails.
- Fixed a timing issue with task cancellation when reloading services.
- Fixed a timing issue with my
delay(seconds:) helper method.
- 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.
EAP 25.10 (1681) - November 6, 2025
- Added the expired certificate check for domains to PHP Doctor, so if any expired domains exist the warning will be reported at launch without needing to open the Domains list.
- Attempting to fix this automatically via PHP Doctor will open the Domains window with the alert to fix the issue. If Valet is unavailable, this check does not apply, so keep that in mind.
EAP 25.10 (1677) - November 4, 2025
- Fixed an issue with the SSL lock/unlock icon not appearing on macOS Sequoia and older.
EAP 25.10 (1675) - November 3, 2025
- Fixed an issue with Swift Concurrency and the
RealShell implementation of pipe() and attach() that could cause crashes under certain circumstances.
- 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.
I was able to track down some rare crashes related to RealShell and Swift Concurrency problems. It's likely fixed now, but I've also included a more robust crash reporting solution which will help me track down any other potential crash causes.
EAP 25.10 (1665) - November 1, 2025
- 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.
- 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.
EAP 25.10 (1650) - October 16, 2025
- No new features, but various reliability improvements and parallelization of the entire test suite due to underlying architectural changes (introduction of a dependency injection container). Due to the nature of this major change, testing the app extensively is required prior to this month's release.
EAP 25.09 (1605) - September 30, 2025
- Some changes were made to how the update mechanism reports to the update server.
EAP 25.09 (1601) - September 27, 2025
- Small update to verify if the new update mechanism works correctly.
EAP 25.09 (1600) - September 26, 2025
- Every 24 hours after launch, the app will look for an updated version if it hasn't been terminated yet. This is for all you people who never turn off the app or your computer!
- If a background update check that occurs via the background fails, the app will periodically try again incrementally.
- The app now contacts the phpmon domain in order to check for updates and sends information about the current version and operating system for more accurate update checks. If your operating system is no longer supported, this endpoint will report the last compatible version (in the future).
EAP 25.09 (1590) - September 12, 2025
- The app has been updated for the new design in macOS Tahoe. Some issues with buttons have been addressed.
EAP 25.08 (1588) - August 31, 2025
- The app will now show a little confirmation message after Valet has been upgraded with additional information and instructions to run
valet install if encountering problems.
EAP 25.08 (1585) - August 27, 2025
- The app now checks if there is a newer version of Valet available at launch, and displays if an upgrade is available below the driver.
- If displaying information about the driver is disabled, this check is disabled.
- If a newer version of Valet is available, you can install it. If due to the global
composer.json the installation of this version of Valet is not possible, you will be notified about this.
EAP 25.08 (1581) - August 24, 2025
- The icon for EAP and DEV releases has been updated to avoid squircle jail on macOS Tahoe.
EAP 25.08 (1580) - August 18, 2025
- A new preference has been added to toggle displaying the app driver (Standalone Mode, Valet) in the menu. (The default is to display it.)
- Installing PHP versions and extensions via Homebrew 6.4 or newer now uses the
HOMEBREW_DOWNLOAD_CONCURRENCY=auto environment variable, which should significantly speed up installations and upgrades.
- Some recommendations made by PHP Doctor can now be automatically addressed:
- Any missing taps can be installed automatically.
- In case Xdebug is missing
xdebug.mode, you can have that fixed automatically.
- PHP Monitor helpers not included in PATH? Have it added to your
.zshrc automatically. This only works if your chosen shell is /bin/zsh (the default).
- The deployment targets across the board (at a project level, app level and updater level) have been correctly set to macOS 13.5.
EAP 25.07 (1565) - July 28, 2025
- Fixed an issue where securing or unsecuring a domain would fail if a given folder was in use for multiple domains. If you serve a single folder locally as
cdn.mydomain.test and www.mydomain.test, securing would fail for the domain that came alphabetically last. This has been resolved if you are running Valet 3 or newer.
EAP 25.07 (1560) - July 23, 2025
- Fixed an issue where the timeout message would be triggered incorrectly.
- PHP Monitor will now internally log how quickly the app boots. This information may be relevant for crash logs.
- The Valet version number is now displayed in the menu. The app will now always display whether Valet is being used (and which version) or not (in case of Standalone Mode).
EAP 25.06 (1556) - June 27, 2025
- Updated the PHP Monitor icon again, this time with a new EAP icon.
- PHP Monitor will now detect Tempest projects using
tempest/framework.
EAP 25.06 (1550) - June 20, 2025
- Updated the PHP Monitor icon for the main app and the PHP Monitor Self-Updater.
EAP 25.06 (1545) - June 19, 2025
- Added icons to PHP Monitor's main menu and to the context menu in the Domains List.
EAP 25.06 (1540) - June 17, 2025
- Bumped minimum required version of macOS to 13.5.
- Fixed visibility of spinning indicator when PHP Monitor's domain list window is taking longer than 0.5 sec to complete a task.
- Switched to new versioning system using year and month combination in preparation for a future release later this year.
- Updated certificate for signing this and future builds.
EAP 7.2 (1535) - March 22, 2025
- Improved the accuracy of the status message that is being displayed when PHP Monitor is tasking
brew to install or update packages.
- Replaced Twitter profile link with a new link to my Bluesky profile.
- Added missing historical sponsors to the about screen. Many thanks!
- Updated copyright information.
EAP 7.1.1 (1530) - March 1, 2025
- Fixed missing translations for some languages.
- Added translations for Spanish and Indonesian (generated using LLMs). Based on traffic to my website, I will be adding addtional language support (based on country of origin). If you notice an issue with one of these translations, please get in touch.
- The
phpmon-dev formula will be marked as deprecated starting with this release. This does not affect you if you are using the regular or EAP version of PHP Monitor.
EAP 7.1 (1525) - November 25, 2024
- Fixed an issue with upgrading formulae when installed via the
shivammathur/php tap.
- Added additional text and button to clarify an upgrade will also keep the old PHP version (e.g. when upgrading PHP 8.3 to 8.4) installed.
- Temporarily unavailable formulae are marked as such.
EAP 7.1 (1520) - November 15, 2024
- Homebrew PHP formulae are now consistently sourced from the
shivammathur/php tap.
- Adds support for PHP 8.5 (dailies).
- Updated cut-off date to November 2025 for PHP 8.5.
- If PHP Monitor seems to stall or hang when starting up due to issues with Homebrew, an alert should be displayed that may be helpful.
EAP 7.1 (1516) - October 31, 2024
- Adjusted the cut-off date for the "brew formulae out-of-date" message when using PHP Version Manager. This is now set to late November, since PHP 8.4 should be stable by then. This prevents the message from popping up incorrectly, which it will for older version of PHP Monitor. (Oops!)
- Installed extensions now appear at the top of the list of the Extension Manager (#274).
- Installing and removing extensions now scrolls to the extension afterwards, and animates this. This is done to emphasise that the operation succeeded.
EAP 7.1 (1505) - August 25, 2024
- Individual sites or proxies (domains in general) can now be favorited by right-clicking on the domain, and choosing "Favorite Domain" or "Unfavorite Domain". Favorited domains will always appear at the top.
EAP 7.1 (1500) - August 21, 2024
- PHP Monitor now uses the
NVAlert and NVAppUpdater packages. I felt that it was time to remove this generic code from the app, with the intent to improve decoupling.
- Fixed an issue where a non-sendable Timer could cause certain operations to stall or fail.
- Updated copyright information.
EAP 7.0.4 (1490) - June 28, 2024
- PHP Monitor Self-Updater is built as part of the main target build process.
- Chinese translations added (by @guanguans, via #285).
- Fixed an issue with Bedrock projects not being recognized correctly. (#287)
- Added the context actions for a selected site to PHP Monitor's main menu. This will allow you to customize the menu hotkeys if needed via System Settings. (#289)
- The PHP-FPM process will be automatically restarted after installing or removing extensions. This will ensure certain extensions always work after installing them, like Imagick and Redis, without requiring you to perform the restart manually. (#292)
EAP 7.0.3 (1460) - April 9, 2024
- Some minor UI fixes have been made in the PHP compatibility popover if you have many PHP versions.
- Automatic site isolation suggestions for older versions of PHP has been added to the PHP compatibility popover if your installation of Valet supports it.
EAP 7.0.2 (1455) - March 20, 2024
- If no domains are available in the domains list (due to not having any domains or due to your search operation being too specific), a custom view will be displayed to encourage you to add a domain.
- Both the PHP Version Manager and PHP Extension Manager windows can now be freely resized instead of being restricted to a fixed size.
EAP 7.0.2 (1450) - March 15, 2024
- In this build, resolving PHP upgrades happens based on the formula name. This avoids issues where available PHP version upgrades would not be detected correctly (based on the installed version).
- The "busy" overlay that used to be transparent is now opaque to avoid displaying outdated and incorrect info while PHP Monitor upgrades your PHP versions.
- Made some visual improvements to PHP Version Manager. Now the PHP logo is used as the icon in the view, and the "upgrade all" button has been made more enticing.
EAP 7.0.1 (1425) - February 12, 2024
- Fixed a critical issue with extensions not being detected on Intel Mac systems under some circumstances.
- Added an alert that instructs you to run
brew tap shivammathur/extensions if the list of extensions is empty.
EAP 7.0 (1422) - January 25, 2024
- Fixed an issue where the dropdown in PHP Extension Manager would reset to the currently linked PHP version after installing or removing an extension, which would also update the list of extensions again (which was annoying behaviour, at the very least, if not a bug).
EAP 7.0 (1420) - January 21, 2024
- Fixed an issue where managing extensions for the non-linked PHP installation would report that certain extensions present on the linked PHP installation were installed (when they were not). A quick workaround for this issue was to only install extensions for the globally linked PHP version, but this is now fixed.
EAP 7.0 (1415) - January 9, 2024
- You can now choose a custom display language for PHP Monitor via Settings. (You will need to restart the app to make sure all translations are correctly loaded, but you can preview this change by checking the main menu, which will always be correctly translated.)
- It is now possible to toggle specific extensions on a per PHP version basis via the Domains list. To toggle an extension, right-click on a site that is currently using a different PHP version. You will then be toggling extensions for that version of PHP.
- When the app boots, the integrity of the PHP symlinks are checked to ensure that all symlinks correctly link to the correct PHP version. If any links to an incorrect PHP version, then those outdated or incorrect symlinks will be removed, which avoids a variety of issues with PHP Monitor and Homebrew.
EAP 7.0 (1400) - November 30, 2023
- "PHP Version Manager..." is now listed as "Manage PHP Versions...".
- Added the PHP Extension Manager (accessible via "Manage PHP Extensions...") which allows you to manage PHP extensions for any of the usable PHP versions.
- You can filter extensions with the search field, and switch between which PHP version you'd like to manage extensions.
- You can now install and remove extensions and their dependencies with one click. These operations are managed by Homebrew, and may install other dependencies.
There are some restrictions related to managing extensions. You cannot remove extensions that are dependencies of other extensions (without removing the dependent first), and you cannot manage external extensions, i.e. extensions that were installed via pecl.
6.2.2 (1350) - November 24, 2023
- PHP Monitor can now handle situations where you've already updated Homebrew, but not the PHP package, which may still be stuck on an older version.
- Fixes an issue when upgrading the
php formula to PHP 8.3.
- Fixes an issue where PHP 8.3 was incorrectly reported as being installed when that isn't the case. This also had an impact on various other features throughout the app, including services.
- Pressing 'Upgrade All' will now seamlessly upgrade your version of PHP 8.2 to PHP 8.3, while also retaining the PHP 8.2 installation.
- A French translation was submitted by the community and was added in this build.
6.2.1 (1346) - November 2, 2023
- Added threading fix that prevents the truck icon of PHP Monitor from getting stuck. This was an annoying bug that has been around for some time, so I'm happy to finally have squashed it.
- Fixed an issue where toggling extensions off and on again would not work correctly under certain circumstances. This has now been resolved.
- After the official release of PHP 8.3 (on November 23), this release will automatically be marked as "stable" and no longer have the "experimental" flag in the PHP Version Manager.
6.2 (1340) - October 27, 2023
- This is the release version of PHP Monitor 6.2. It received a minor version bump and some changes were made to the filesystem watchers to make them more reliable.
- Fixed an issue with some windows not coming to the front after selecting a menu item if another application had the focus (on macOS Sonoma only). Windows are now brought to the front by using
window?.orderFrontRegardless(), which should resolve this problem.
EAP 6.2 (1335) - October 23, 2023
- PHP Monitor now generates scripts compatible with Fish in
~/.config/phpmon/bin if your default shell environment is Fish (usually located in /usr/local/bin/fish or /opt/homebrew/bin/fish). For more details on how to use these, please see the associated issue.
EAP 6.2 (1330) - October 7, 2023
- Fixed an issue where the type of projects in the Domains window would not be detected correctly.
- Added detection of Laravel Herd, which may conflict with a standalone Laravel Valet installation (installed with
composer global install laravel/valet).
During startup of PHP Monitor, the app will now require you to terminate Laravel Herd. You can start Laravel Herd afterwards, but this is currently not supported. This is a temporary solution, as I will try to ensure that PHP Monitor and Herd can integrate better.
EAP 6.2 (1320) - September 17, 2023
- You can now edit the maximum memory limit, max POST size and the maximum upload size with PHP Monitor.
- Note: I'm still tackling a small bug where the menu bar icon may get stuck on the truck icon. You can fix this by opening PHP Monitor and pressing Command-R to reload the menu, which should refresh the icon in your menu bar.
6.1 (1306) - September 7, 2023
- Fixed a duplicate domain from appearing in the Domains List if it is located in the Sites directory, but also designated as the default domain.
EAP 6.1 (1305) - September 6, 2023
- Preliminary macOS Sonoma support. Let me know if something is broken on your system!
- The app has been translated to some languages. This particular release comes in the following languages: English, Dutch, Vietnamese, German and Portuguese (Portugal).
- It is now possible to install PHP 8.3 (daily builds) via PHP Version Manager's GUI.
- While these builds aren't available to install via the GUI, you can still install PHP 8.4 daily builds by running
brew install [email protected], and PHP Monitor will detect them.
- If the various limits (memory, max upload, max POST) cannot be read, a warning is now displayed that can help you resolve this issue.
- When sorting domains in the Domains List, the domain name is now used instead of the full absolute path.
6.0.1 (1252) - May 30, 2023
- Fixed an issue where in Standalone Mode, PHP Monitor would crash trying to load service information if you had previously used brew services and need password entry to run sudo brew services commands.
- Fixed an issue where the user could prompt a crash in PHP Monitor by using a third-party integration. In Standalone Mode, PHP Monitor no longer responds to various third-party interactions if that functionality is not available.
6.0 (1250) - May 27, 2023
- PHP Version Manager will no longer allow running operations (install, upgrade, remove, repair) if the app is busy for some reason (i.e. version switching). You will be told to wait until the app is no longer busy before the action will be executed.
- It is no longer possible to open the sites window when in Standalone Mode by using the Sites menu item. This menu item is no longer available in the main menu if running in Standalone Mode.
- Added current and past public GitHub Sponsors to credits in About PHP Monitor.
EAP 6.0 (1245) - May 24, 2023
- Fixed various bugs related to file and folder ownership when removing a PHP version via PHP Version Manager.
- Fixed various bugs related to async task handing when Homebrew is done with its installation(s) and/or upgrade(s). This is when PHP Guard restores the previous PHP version, and this was incorrectly dispatched asynchronously so PHP Monitor would indicate that it was ready (too quickly) when this wasn't the case.
- Fixed an issue with PHP Version Manager displaying an outdated label when performing an install or upgrade operation.
- Fixed an issue where taking ownership of the server binary would not happen and uninstalling a PHP version would fail if Valet was actively being used.
- Fixed an issue where failing to uninstall a PHP version would display an error message that contained a raw dumped Swift struct instead of a descriptive formula identifier.
EAP 6.0 (1240) - May 22, 2023
- If an empty byte count is returned for memory, upload and max POST size limits, an indicator will be displayed to make it clear that the value could not be read.
- Various bugfixes: Removed unneeded environment manager code and improved Laravel Valet checks when switching between PHP version if Valet is not installed (for Standalone Mode).
EAP 6.0 (1235) - May 18, 2023
- Added a Repair button to PHP Version Manager, which is displayed if a PHP installation is detected as being broken due to missing binaries (links). Pressing this button will attempt to repair all broken PHP versions at once.
- Added a message to the PHP Version Manager if a PHP installation is broken.
- The notification that is displayed when you install a new update has been modified for EAP and DEV builds, which will now note which build specifically the app was updated to.
- If Homebrew is installed in
/usr/local/homebrew and the /usr/local/Cellar folder does not exist, the folder /usr/local/homebrew is used as the base directory for resolving paths internally inside of PHP Monitor. This is only an issue on x86 Macs (running Intel). Newer Mac hardware is not affected.
EAP 6.0 (1230) - May 13, 2023
- Fixed a few bugs related to reloading the main menu while the PHP Version Manager is busy installing or upgrading PHP formulae.
- PHP Version Manager will now offer to upgrade all PHP versions at once.
- PHP Version Manager will now automatically attempt to repair broken PHP installations once an install or upgrade command has been given.
- PHP Version Manager will be released as a part of PHP Monitor 6.0 but will be marked as a beta feature until I consider it stable and reliable enough. There are still certain issues with Valet that may need to be ironed out.
- Fixed an issue with menu items being unavailable if PHP Monitor was busy.
EAP 6.0 (1215) - April 22, 2023
- A menu item has been added that is only visible when Standalone Mode is enabled. You can click it to learn more about what Standalone Mode does. If you see this menu item, the app is running with limited functionality.
- If Standalone Mode is enabled, some preferences that only apply to Valet in the Settings menu will no longer be displayed, since they are not relevant.
EAP 6.0 (1210) - April 4, 2023
- A warning has been added if you are not running Homebrew 4.0, since running older (or newer) versions of Homebrew are not officially supported.
- The PHP Version Manager now shows the full version number for up-to-date PHP installations.
- You must now confirm the deletion of an installed version of PHP before the uninstallation will start.
- It is no longer possible to press the refresh button if you've already pressed it and PHP Monitor is already busy executing commands.
EAP 6.0 (1205) - March 27, 2023
- EAP builds now have access to a changelog when an update is available.
- Added missing dialog when PHP is unlinked for menu bar item "What's This?".
- Improved terminology consistency for PHP Version Manager ("Manage PHP versions...").
EAP 6.0 (1200) - March 24, 2023
- Initial release for GitHub Sponsors.
- Adds Standalone Mode, which allows you to use PHP Monitor without Valet.
- Adds Instant Homebrew Response, which allows PHP Monitor to instantly respond to changes to the linked version of PHP.
- Adds PHP Version Manager, which allows you to install, update or remove PHP versions.
- Also includes various bug fixes and improvements.