- Chinese translations contributed by @guanguans (via #285).
- Updated the credits so that all translators are now also listed
separately, since the GitHub issue has been closed.
- Make spinner view opaque to hide incorrect info
when refreshing PHP installations
- Resolve each PHP installation to a Homebrew version
- Fix an issue where certain PHP upgrades don't show up
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).
This commit introduces a new diagnostics feature which is executed
when the app boots. When the app boots, the integrity of the PHP
symlinks are checked to ensure that all symlinks correctly link to
a valid PHP version. If any links to an incorrect PHP version,
then those outdated or incorrect symlinks will be removed.
For example, if `php@8.2` links to `../Cellar/php/8.3.0` then that is
an obvious reason for that symlink to be purged because it links to
the incorrect version. (This example behaviour has been noted in #270.)
This occurs prior to the rest of the startup process, so this way
no incorrect PHP versions can pop up in the version switcher, and
no incorrect PHP version is reported as being installed when
managing installed PHP versions.
In order to make this possible, I've added a new `sync()` method to the
Shellable protocol, which now should allow us to run shell commands
synchronously. Back to basics, as this was how *all* commands were
run in legacy versions of PHP Monitor.
The advantage here is that there is now a choice. Previously, you'd
have to use the `system()` helper that I added.
Usage of that helper is now discouraged, as is the synchronous
shell method, but it may be useful for some methods where waiting
for the outcome of the output is required.
(Important: the `system()` helper is still required when determining
what the preferred terminal is during the initialization of the
`Paths` class.)
Dictionary key order in Swift isn't a thing, so the process is
now a two-pronged approach: 1) check for specific apps, 2) check for
specific broad frameworks after no other matches were made.
Previously, detection would only work correctly some of the time.
Also cleaned up the `getNotableDependencies()` method.
It was necessary to do some summer cleaning. Here's what's changed:
* First, I'm taking a new modular approach to Swift-based components
that are part of PHP Monitor.
* I've fixed the naming of various parts of the app. I plan on doing
an even deeper check in the future. The following are affected:
- "PHP Formulae Status" is now known as "PHP Version Manager".
- "Warnings List" is now known as "PHP Doctor".
- The associated window controllers have also been updated.
(I've also added a new module: "PHP Config Editor". We'll see what that
brings in the future... but the main purpose will be to edit key PHP
configuration values without needing to go to the .ini files.)