1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-08-08 04:20:07 +02:00

Compare commits

..

972 Commits

Author SHA1 Message Date
80bcbd085e 🚀 Version 25.07 2025-07-28 11:23:01 +02:00
ca65fca77d 🐛 Fix issue with securing domains
If you serve a single folder locally multiple times, e.g. as
`cdn.mydomain.test` and `mydomain.test`, securing would fail
for domain that came alphabetically last.

This has been resolved if you are running Valet 3 or newer by
leveraging the `valet secure $domain` syntax.
2025-07-28 11:22:23 +02:00
96975f8e57 ♻️ Clean up startup timers 2025-07-24 12:32:22 +02:00
729c1e8f2f Add driver to main menu 2025-07-23 17:24:54 +02:00
e94377ebb1 🐛 Prevent timeout message from showing incorrectly 2025-07-23 16:49:54 +02:00
769779970b 🔧 Bump build for EAP 2025-06-27 21:05:19 +02:00
2a27989a96 Detect Tempest framework 2025-06-27 20:59:26 +02:00
79430f7581 🚀 Version 25.06 2025-06-27 19:35:10 +02:00
76f585a50e 🍱 Updated icon asset 2025-06-21 20:38:36 +02:00
1bbc77967b 🍱 New EAP icon for new build 2025-06-20 16:00:58 +02:00
1e4e2afe68 🔧 Bump build 2025-06-20 15:21:14 +02:00
3caf90b0cd 🔧 Update schemas 2025-06-20 15:19:57 +02:00
445acffa4c 🍱 Further design tweaks 2025-06-20 12:56:58 +02:00
e90c068e95 🍱 Tweak design of icon, unify 2025-06-20 12:18:57 +02:00
c9428c300c 🍱 Apply fill to icon 2025-06-20 11:41:02 +02:00
807d9c55a4 🔧 Bump build for EAP 2025-06-19 13:29:52 +02:00
ca167537cf 🍱 Add icons to context menu 2025-06-19 13:28:58 +02:00
8ae2031ba5 🍱 Add icons to main menu 2025-06-19 12:50:04 +02:00
ec0ad13ad0 🔧 Bump build for EAP 2025-06-17 12:12:37 +02:00
9988b775c9 🐛 Add spinner back to domain list 2025-06-17 12:01:25 +02:00
8e24851014 🍱 Add icon w/ Icon Composer 2025-06-10 19:45:43 +02:00
c1d90cb909 🔧 Plan for version 25 later this year
PHP Monitor 25 will use a new numbering scheme, following the format:

25.06 = 25 . 06 . 0
        M    m    p

(Minor, minor and patch.)

So what was supposed to be PHP Monitor 7.3 will now be version 25, with
the minor version number decided by the release month.

The cut-off date for PHP Monitor 7.2 is currently 2025-11-30, so I have
time but I'd prefer to have two releases out this year:

- One release migrating to the new numbering scheme
- One release with full support for macOS 26

Since I plan on only doing maintenance releases with no patches except
when bugs pop up, the major/minor version notation combination should
suffice.

With this release, the minimum supported version of macOS will become
macOS Ventura 13.5.

That means that support is dropped for Monterey and Ventura's older
builds. Since Homebrew is also changing with built-in service management
I think it's time to drop support for these older versions of macOS,
which I no longer intend to test for.

Older versions of PHP Monitor will, of course, remain functional, but
since Homebrew is an ever-changing thing, I cannot guarantee nothing
will break in those older versions with the newer API.
2025-06-10 18:33:50 +02:00
4827c4a44b 🚀 Version 7.2 2025-03-22 12:05:54 +01:00
201554b237 🔧 Bump version to 7.2 2025-03-22 11:33:52 +01:00
e4bf6a9655 📝 Bump build, update credits and add sponsors 2025-03-22 11:32:59 +01:00
f9ea654ffc 🔧 Tweak brew output parsing
Improved the accuracy of the brew output. Often, when multiple console
messages were returned, the progress prompt in the PHP version manager
would display the earliest found step, not the latest, thus unfortunately
misrepresenting the progress of the installation steps.

This fixes that by reversing the return order, but also extracts
relevant information from the commands, too, so that contextual info
is now included (for pouring, installing and downloading steps).

(This makes it a little bit more transparent for the end user to find
out what is taking up all this time. I wish that Homebrew was faster,
too, but there's a reason I'm not using statically compiled PHP for
this project. Either way, this is a nice QoL change.)
2025-03-22 11:15:47 +01:00
8677628850 🔧 Bump build for new EAP release 2025-03-01 12:59:09 +01:00
e09b0156df 📝 Update README 2025-03-01 12:58:36 +01:00
41a83b1d91 🔨 Update .gitignore 2025-02-28 13:20:32 +01:00
a9e97b0bc9 🌐 Add Indonesian translations
These translations were added via a locally ran LLM.
If you identify any mistakes, please get in touch!
2025-02-21 13:27:39 +01:00
e4e12799ef 🌐 Add Spanish translations
These translations were added via a locally ran LLM. I know some Spanish, but
if you identify any mistakes, please get in touch!
2025-02-20 19:54:04 +01:00
4e25fffa7d 🌐 Add missing translations 2025-02-20 19:21:25 +01:00
3e319cd50f 🚀 Version 7.1 2024-11-26 15:24:18 +01:00
595dc8c028 Add info about test failures 2024-11-26 15:22:03 +01:00
f7b1679e97 🐛 Serial dispatch queue for test FS 2024-11-26 14:17:06 +01:00
9f1761d68e Checked and updated tests 2024-11-26 13:44:08 +01:00
871480d70c 📝 Updated README.md, SECURITY.md 2024-11-26 12:56:38 +01:00
2b1c1c12f8 Add info button for PHP upgrades 2024-11-25 16:43:19 +01:00
a22346ed35 🐛 Fix issue with formulae upgrades for tap 2024-11-25 14:04:17 +01:00
e3fa34d4f9 🔨 Adjust URL for unavailable PHP (wiki) 2024-11-25 13:40:02 +01:00
3d225ea79f ✍️ Clarify text about upgrading PHP (EN only) 2024-11-22 19:09:10 +01:00
d2cd387c18 Add button that redirects to wiki 2024-11-22 18:23:28 +01:00
48bb782e33 🚧 WIP: Changes related to unavailable formulae 2024-11-22 17:42:28 +01:00
9710ffa8da 🚧 WIP: Handle temporarily unavailable formulae 2024-11-22 13:26:09 +01:00
46408f5ee5 Indicate DEV builds in PHP Version Manager 2024-11-15 16:43:59 +01:00
2c39f1db8b 🔧 Upgrade checks for Xcode 16.1 2024-11-15 16:10:25 +01:00
f20286cbd9 Notify user if startup takes too long (> 30s) 2024-11-15 16:03:44 +01:00
f1fe42e563 Updated constants for PHP 8.4 & 8.5 support
Thankfully, these changes are simple. Before releasing, I will be
testing the new build, though.

Here's what constants I changed, and why:

- Homebrew PHP formulae are now consistently sourced from the
  `shivammathur/php` tap. This should make the transition to new PHP
  releases a little bit easier, but I need to verify this works without
  issues before publishing this update.

- Bumped the PHP formulae cutoff date to Nov 30, 2025.
  At this point, PHP 8.5 should be released.

- Added support for pre-release (daily) versions of PHP 8.5.
2024-11-15 15:22:53 +01:00
94abfe4b49 🐛 Fix crash bug (oops) 2024-10-31 22:51:49 +01:00
9778fd5c7b 🚀 Version 7.0.6 2024-10-31 22:43:03 +01:00
dba2ce5bf3 🚀 Version 7.0.5 2024-10-31 22:15:11 +01:00
4644c1ada4 👌 Move cut-off date to PHP 8.4 release day 2024-10-31 22:14:53 +01:00
cef19243ee 🔧 Bump build 2024-10-31 21:59:42 +01:00
b319ecab59 👌 Move cut-off date to PHP 8.4 release day 2024-10-31 21:56:13 +01:00
a47b139d92 👌 Cleanup 2024-08-31 22:14:56 +02:00
e026ecf60d ♻️ Various extension list improvements (#274)
Installing and removing extensions now scrolls to the extension afterwards, and animates this. This is done to emphasise that the operation succeeded.
2024-08-31 15:57:08 +02:00
3c0a4a6142 🌐 Updated localization 2024-08-26 15:04:37 +02:00
87ebb20284 ♻️ Use alternate cell identifier for favorite 2024-08-25 16:21:16 +02:00
d60c26c9b2 UserDefaults-backed storage for Favorites 2024-08-25 14:35:11 +02:00
5c9c51f580 Mark domain as favorite (UI only)
Please note that this functionality is currently not persistent.
As such, reloading the domain list will reset any changes you have made.
2024-08-25 13:35:27 +02:00
0c320074da ♻️ Avoid using non-Sendable Timer 2024-08-06 14:15:37 +02:00
e3ea712a99 Ensure all tests run and pass 2024-07-16 18:38:56 +02:00
4db478ca64 👌 Update copyright information 2024-07-16 18:30:56 +02:00
3064a07d69 📦 Use NVAppUpdater and NVAlert packages 2024-07-16 18:29:11 +02:00
f3e1b4de6f 🚀 Version 7.0.4 2024-06-28 11:47:25 +02:00
a3226b632f 🐛 Restart PHP-FPM after managing extensions
This is done to prevent issues like #292.
2024-06-28 11:37:01 +02:00
652878d97f 👌 Remove unused WIP class 2024-06-28 11:14:20 +02:00
032610ad5c 🌐 Add localization for "Actions" 2024-06-28 11:12:55 +02:00
2c2627dc9f Add AppMenu class for easy access to main menu 2024-06-27 21:23:59 +02:00
62587bdf65 WIP: Add context menu to main menu 2024-06-11 18:53:55 +02:00
5e9dae78f5 🐛 Fix Bedrock project detection (#288) 2024-06-06 21:30:06 +02:00
949ba5b559 🔧 Build self-updater as part of main target
The self-updater is now a requirement for the main app to be able to be
built. You no longer need the existing binary. This makes it easier for
anyone to just try out the app locally and makes reproducible builds
also possible.

(This is done because the self-updater code will soon be moved to a
separate package, and I want to make this entire updater process
as simple as possible.)

In order to avoid the self-updater app from appearing as a product when
archiving a build, SKIP_INSTALL is set to true. This avoids a variety
of annoying issues including the archive appearing under "Other Items".
2024-05-31 23:54:42 +02:00
ce88f897ef 🌐 Added Chinese translations, credits
- 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.
2024-05-02 10:24:47 +02:00
fa9b51aaab 🚀 Version 7.0.3 2024-04-10 13:07:58 +02:00
b8affad5ee 📝 Updated SECURITY.md 2024-04-10 13:07:30 +02:00
41e5f5b4c3 🔧 Bump build for EAP release 2024-04-09 12:33:55 +02:00
79f6a60a16 👌 Cleanup dependencies for site isolation 2024-04-03 14:50:05 +02:00
06bc4ddb9a 👌 Improve removing indirect dependency
Mind you, the interaction with the domain list controller also needs to
be abstracted away, but this is fine, for now.
2024-04-03 14:11:45 +02:00
bf728a24f0 👌 Fix PHP version suggestions in popover
- If your Valet installation supports using site isolation, that will
  be displayed as the suggestion. If not, the traditional "Switch to
  PHP" options will be available.

- Overflowing buttons have been fixed. Three columns are now used with
  a LazyVGrid, to prevent text from being unreadable.
2024-04-02 15:25:06 +02:00
b7cad3af62 👌 Fix Swift 5.10 concurrency warnings 2024-03-30 17:40:09 +01:00
4a3dee3c50 🚀 Version 7.0.2 2024-03-30 17:14:04 +01:00
9d5a0ed745 🔧 Xcode upgrade check 2024-03-20 13:46:56 +01:00
b3b509409a Fix test 2024-03-20 10:47:52 +01:00
4934f35d0b 🍱 Bump width of no results view 2024-03-19 14:23:19 +01:00
92e7418158 👌 Cleanup 2024-03-19 14:22:10 +01:00
52ea64db40 👌 Use base translation for no domain results 2024-03-19 14:20:34 +01:00
f66e9b7340 Add UnavailableContentView to domains 2024-03-19 14:10:08 +01:00
2bf28fe247 👌 Allow resizable windows 2024-03-16 00:32:05 +01:00
c6e4f785bc 🍱 Use PHP icon for phpman 2024-03-15 23:38:12 +01:00
94fe7df3bd 🍱 Custom button for "upgrade all" 2024-03-15 23:18:09 +01:00
f373621a4a 👌 Polish PHP installation management
- 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).
2024-03-15 22:09:59 +01:00
5104a865fb 🚀 Version 7.0.1 2024-02-12 18:28:45 +01:00
7b10973330 🔧 Bump build 2024-02-12 16:33:01 +01:00
bc208bddf9 👌 Notify if list of extensions is empty (#275) 2024-02-12 16:30:18 +01:00
321b4aaf8b 🐛 Fix extension detection on Intel (#275) 2024-02-12 15:26:48 +01:00
b26fc3bc4b 🚀 Version 7.0 2024-02-11 21:35:40 +01:00
f758c5d63a 👌 Cut off bottom of marketing screenshot 2024-02-10 16:18:58 +01:00
c7510d778d 🍱 Update marketing screenshot 2024-02-10 16:17:24 +01:00
70c5aadb7f 🔧 Bump build for PHP Monitor EAP 2024-01-25 13:48:39 +01:00
a731f15cf7 🐛 Prevent PHP dropdown from resetting 2024-01-21 14:42:06 +01:00
ab4c436202 🔧 Bump build for PHP Monitor EAP 2024-01-21 14:23:52 +01:00
c0231690d4 🐛 Fix alternative installation check 2024-01-21 14:22:51 +01:00
988e9d3351 👌 Cleanup and add comments 2024-01-13 13:24:06 +01:00
2f119d4332 Fix even more tests 2024-01-13 13:22:21 +01:00
d83c629a7b Fix some tests 2024-01-13 12:46:33 +01:00
e7d98dbeae 🔧 Bump build for PHP Monitor EAP 2024-01-09 21:24:50 +01:00
f3d5946743 🌐 Localize extension management (for domains) 2024-01-09 21:20:43 +01:00
7728a1125c 📝 Update README to reflect php = PHP 8.3 2024-01-09 21:00:06 +01:00
3612351df7 📝 Update README to reflect php = PHP 8.3 2024-01-09 20:59:52 +01:00
8e912151fb Allow toggling extensions via site list 2024-01-09 20:55:16 +01:00
3a2209e604 🌐 Add translations for language choice 2024-01-09 20:06:40 +01:00
1f0b56cab6 Language choice, prompt user to restart app 2024-01-09 20:01:08 +01:00
e08d970edd 🏗️ WIP: Load preferred language strings 2024-01-09 19:44:29 +01:00
32c757e711 🏗️ WIP: Language override option 2024-01-09 19:28:39 +01:00
480cdb94ae 🏗️ WIP: Language picker, fix SelectPreferenceView 2024-01-09 18:58:02 +01:00
7fbcac5dc2 👌 Check symlinks after PHP version modification 2023-12-27 14:47:21 +01:00
4edb5f5015 👌 Use generated asset catalog symbol extensions 2023-12-27 13:03:24 +01:00
294f84ccb2 👌 Further cleanup 2023-12-27 12:57:08 +01:00
155b57eb9e 🐛 Add incorrect PHP symlink purge (#270)
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.
2023-12-27 12:40:35 +01:00
a459f015e1 🌐 Added translations for extension manager
(These were generated using OpenAI's API.)
2023-11-30 17:31:35 +01:00
27676f13f4 🔧 Fix build number 2023-11-30 17:14:36 +01:00
b4b2d7052f 🌐 Replace untranslated text w/ keys 2023-11-29 18:59:50 +01:00
6d25cf585e 🌐 Localize extension manager (English only) 2023-11-29 18:55:36 +01:00
ba04c94c05 👌 Cleanup UI code 2023-11-29 18:42:14 +01:00
13447ba533 Disallow installation if dependent exists 2023-11-29 18:35:31 +01:00
6f2e8f4b20 Check cutoff date for PHP version management 2023-11-27 21:39:41 +01:00
dc860074ef Parse extension dependencies 2023-11-27 21:38:38 +01:00
f586b8fcbe Allow choosing which PHP version to manage 2023-11-27 00:33:45 +01:00
94714c3e7a Extension manager responds to PHP change 2023-11-27 00:07:47 +01:00
904d05bdce 👌 Cleanup, fix loading issue 2023-11-26 23:51:39 +01:00
ec30bee72b Ask for confirmation before removing extensions 2023-11-26 22:39:44 +01:00
2fe3a4b7eb Perform cleanup when removing extensions 2023-11-26 22:03:25 +01:00
a7d5950aa0 Test synchronous shell output 2023-11-26 21:48:40 +01:00
e8306289ce Load extension info for all 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.)
2023-11-26 21:26:48 +01:00
ff61d8c52e 🚀 Version 6.2.2 2023-11-24 23:30:12 +01:00
da41673855 Fix broken tests 2023-11-24 23:29:25 +01:00
5bda727981 🔧 Bump version 2023-11-24 22:58:04 +01:00
23cf575026 ⬆️ Upstream PHP 8.3 upgrade changes to v7.0 2023-11-24 22:57:33 +01:00
d3053b8fe3 Allow for seamless upgrade to PHP 8.3
The older version (8.2 in most cases) that becomes obsolete will also
be reinstalled and the app will attempt to switch to the last active
version as well. It is likely that PHP Monitor will have to repair
your older PHP installations after upgrading the `php` formula, but
this too should be a seamless process.
2023-11-24 22:26:33 +01:00
7159ca8612 🐛 Correctly handle mismatches when upgrading PHP 2023-11-24 20:23:12 +01:00
141c06d14b 🐛 Update PHP alias 2023-11-24 18:35:36 +01:00
94c84aaab3 👌 Tweak text 2023-11-22 21:37:11 +01:00
9ca16e72d5 Show external extensions 2023-11-22 21:29:51 +01:00
67a00f979a 📝 TODO items as warnings 2023-11-21 22:37:28 +01:00
1e4c45dcbd 🍱 Tweak UI of extension list 2023-11-21 22:36:05 +01:00
87c44f3ae3 Allow installation and removal of extensions (#266) 2023-11-21 22:18:28 +01:00
f39732a0e6 🏗 WIP: UI for searchable extensions 2023-11-21 20:03:50 +01:00
3b78ac43d7 👌 Fixed various lint issues 2023-11-21 18:19:17 +01:00
1f19b81530 🔀 Merge branch 'dev/6.x' into dev/7.x 2023-11-21 18:12:10 +01:00
d714d7ad4c 👌 Install additional taps
The following taps are now automatically installed:

- `shivammathur/php`
- `shivammathur/extensions`
2023-11-21 18:11:18 +01:00
4dce6c033e 🌐 French localization fixes, onboarding size fix 2023-11-21 17:41:47 +01:00
72a8a1e382 🔧 Tweak which formulae to install for PHP 8.3 and PHP 8.0
- Since PHP 8.0 is now EOL, it will be installed via the tap.
- Since PHP 8.3 is now stable, it will be installed without the tap.
2023-11-21 17:41:41 +01:00
07b17f3f84 🌐 French localization fixes, onboarding size fix 2023-11-21 17:40:53 +01:00
7f0f7ff3e9 🔧 Tweak which formulae to install for PHP 8.3 and PHP 8.0
- Since PHP 8.0 is now EOL, it will be installed via the tap.
- Since PHP 8.3 is now stable, it will be installed without the tap.
2023-11-21 17:15:36 +01:00
c7c143c760 🌐 Added French translation
With contributions from @tplesnar and @nhedger
2023-11-21 17:12:44 +01:00
ee050af364 🌐 Added French translation
With contributions from @tplesnar and @nhedger
2023-11-21 17:12:29 +01:00
f7e2551587 🏗 WIP: Adjust extension manager view 2023-11-21 17:11:28 +01:00
cc0cc21e5f 🏗️ WIP: Cleanup 2023-11-13 17:44:11 +01:00
883ea05bd1 🏗️ WIP: Extension manager UI (rough) 2023-11-13 13:14:27 +01:00
641bddfce7 Add UI test for PHP config editor 2023-11-07 18:21:14 +01:00
2f7223fba5 🔥 Remove unused ProgressWindowView 2023-11-07 18:08:12 +01:00
3b23ce7805 👌 Even more cleanup 2023-11-07 18:04:13 +01:00
a634d083a6 ⬆️ Adopt #Preview, cleanup PHP Version Manager 2023-11-07 17:56:38 +01:00
9a3dd2fa22 🐛 Fix extensions toggle (#265) 2023-11-02 17:26:46 +01:00
8790b30706 🚀 Version 6.2.1 2023-11-02 17:17:40 +01:00
c42188b717 🔧 Bump build 2023-11-02 17:07:42 +01:00
cc251686f9 🐛 Fix extensions toggle (#265) 2023-11-02 13:33:24 +01:00
6fd6241567 🔧 Start of v7.x branch, updated version number 2023-11-01 12:35:24 +01:00
c8ab2e67f6 ♻️ Various refactoring 2023-11-01 12:33:34 +01:00
f82ab913c6 Detect which extensions are available 2023-10-31 20:40:11 +01:00
58943148fa 🏗️ WIP: Detect which extensions are available 2023-10-30 20:21:50 +01:00
8a46b9d374 Experimental versions can graduate to stable 2023-10-30 19:56:32 +01:00
a62ebcff92 🐛 Ensure isBusy is isolated to main thread
There was an issue where updating a configuration file (including .ini)
or having an action occur that marked PHP Monitor as busy would prevent
the icon from updating correctly. This happened because access to the
busy boolean state variable could happen from various threads.

Since adding main thread isolation to the variable, you must access
`PhpEnvironments.shared.isBusy` via the main thread, therefore ensuring
that the busy state that is read from the app is always synchronized
and accurate whenever it is checked, making it so that going from
busy to no longer busy can no longer fail.

(It was possible for work in another thread to complete and fail to set
the icon to "not busy" because the work was done faster than the icon
could be set to busy.)
2023-10-30 19:34:36 +01:00
541378f3f9 🔧 Mark PHP 8.3 as stable for official release 2023-10-29 12:36:19 +01:00
e6f1d7e834 📝 Update SECURITY.md 2023-10-29 12:35:09 +01:00
20d19f2f92 🚀 Version 6.2.0 2023-10-27 17:10:43 +02:00
91bc347e57 🐛 Fix tests, fix issue with window to front 2023-10-26 19:31:55 +02:00
e05300b25b 🔧 Bump build 2023-10-26 18:55:21 +02:00
1ae7a20870 👌 Adjust error message 2023-10-26 17:14:23 +02:00
5594130ccd 👌 Cleanup filesystem watcher code 2023-10-24 18:24:18 +02:00
b9c7cdb3cc Generate Fish-friendly scripts (#264) 2023-10-20 17:34:19 +02:00
00b4760b85 🔧 Bump build to 1330 2023-10-07 13:02:56 +02:00
9a35014d2a Warn about Laravel Herd running & conflicts
It's perfectly possible to run Laravel Valet (standalone) and Laravel
Herd side-by-side or mix usage, but it's not recommended and/or
supported (especially since Herd recommends migrating away from regular
Valet and may terminate Valet's services).

To avoid issues, PHP Monitor won't work if Herd is currently running.
It's totally fine to relaunch Herd after PHP Monitor's done starting
up, since the check only happens at launch.

Also, PHP Monitor warns about the PATH changes in `~/.zshrc` after 
installing Laravel Herd, because that may impact the usage of
PHP aliases/global PHP version in terminal provided by PHP Monitor.
2023-10-07 13:02:22 +02:00
7cba25b52e 👌 Cleanup 2023-10-03 20:40:59 +02:00
c6c3996c7b 🐛 Fixed detection order (#263)
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.
2023-10-03 20:37:47 +02:00
03c96a1d16 👌 Fixes after upgrading to Xcode 15 2023-09-19 12:40:43 +02:00
a6fa4b240f Allow editing of limits 2023-09-13 18:13:51 +02:00
7e78026d06 🏗️ WIP: PHP Config Editor
- Has UI height rendering issues (w/ SwiftUI)
- Needs debounce on UI elements
- Cannot currently persist modified settings
- Cannot display On/Off settings
- Cannot display regular text settings
2023-09-12 19:26:10 +02:00
d5888c1c7a 🚀 Version 6.1.0 2023-09-10 11:15:14 +02:00
e40b9fe45a Add UI test for PHP version manager 2023-09-10 11:14:38 +02:00
f5d0ad20cd 🔧 New EAP build 2023-09-07 19:17:36 +02:00
0615927f2f 📝 Update README.md 2023-09-07 19:16:41 +02:00
3d1806c094 📝 Update SECURITY.md 2023-09-07 19:16:07 +02:00
8a57557074 🐛 Avoid duplicate site insertion (#261) 2023-09-07 18:55:54 +02:00
19f4819450 🌐 Formal Dutch, initial TL pass (je -> u) 2023-09-06 19:07:16 +02:00
aa8309dd9a 🌐 Localization fixes
- Adds a fallback for missing keys
- Make type column resizable on domains
- Localized "Open with" text in context menu
- Updated some Dutch translations
2023-09-06 18:53:26 +02:00
7977a4e177 🏗️ WIP: Reading of bitsize config entries 2023-09-04 18:39:32 +02:00
51c100f6fe 👌 Ensure all fields error out (#258) 2023-09-01 01:11:38 +02:00
aebfc9dd09 👌 Domain column now sorts based on name (#259) 2023-09-01 01:09:59 +02:00
f9acbd34d0 👌 Various fixes
- Fixed issue with Version Manager
- Separate behaviour for previews for Version Manager
- Remove verbose logging when previews are in use

(Note: The latter change may break various other previews. Will need to
investigate this particular issue.)
2023-09-01 01:01:06 +02:00
eb566bb523 Allow pre-release builds to be installed 2023-08-31 19:05:40 +02:00
528f213f17 Finalized initial config UI without bindings 2023-08-30 21:05:37 +02:00
f8e6aa988e 🏗️ Mapping more PHP configuration values 2023-08-30 20:20:08 +02:00
93e841735e 🏗️ SwiftUI and config views 2023-08-30 19:59:21 +02:00
cb28243181 🔧 Bump build, fix layout issue for prefs 2023-07-29 20:45:20 +02:00
fc68e37458 🌐 Updated translations
- Portuguese translations provided by @joseborges
2023-07-29 20:40:55 +02:00
ae6736102a 🏗️ Further experiments with SwiftUI 2023-07-25 19:53:37 +02:00
3ef1a6e60d 🏗️ Example of what a preference view might be 2023-07-25 19:24:04 +02:00
5e7c7bc903 🔧 Always use module name PHP_Monitor 2023-07-25 19:06:47 +02:00
94f3c1c7c5 📝 Fix FAQ ("PHP Version Manager") 2023-07-20 18:18:30 +02:00
20aad90ba9 📝 Update README 2023-07-20 18:17:37 +02:00
8bd85d8354 📝 Add info about Laravel Herd 2023-07-20 18:14:21 +02:00
90b068d200 ♻️ Modular approach 2023-07-18 19:56:09 +02:00
943b5aa6af ♻️ Code reorganization
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.)
2023-07-18 19:52:15 +02:00
4bf475bae2 👌 Remove appcast since it is no longer expected 2023-07-09 15:22:47 +02:00
125b9bb198 Add message about failing to load info (#258) 2023-07-07 20:10:41 +02:00
72cbf6996d 🔧 Removed usage of Base Internationalization 2023-06-26 21:29:28 +02:00
e7cc940f65 🌐 Updated translations
- German translations provided by @dsturm
- Vietnamese update provided by @xuandung38
2023-06-26 21:23:00 +02:00
c8323a8c27 🔧 Bump build to 1300, remove launch language 2023-06-26 14:45:06 +02:00
6805855f03 🌐 Add translations for preferences tabs 2023-06-26 14:43:45 +02:00
db101f5a66 🔧 Bump to version 6.1 2023-06-26 14:33:37 +02:00
2302d5a5ee 🌐 Consistency in Dutch translations (WIP) 2023-06-26 14:33:29 +02:00
5cfb0f452c 🌐 Localized columns in domains list 2023-06-26 14:31:57 +02:00
7da20b4f20 🌐 Updated localization 2023-06-26 14:14:37 +02:00
f1b037ce26 🌐 Localization
- Dutch WIP by me (project now runs debug with Dutch localization)
- Vietnamese provided by @xuandung38
- Added `phpman.services` status to TL
2023-06-26 10:43:45 +02:00
e59347ed7f 📝 Update README 2023-06-02 21:31:51 +02:00
206dff289f 🚀 Version 6.0.1 2023-05-30 17:26:09 +02:00
02f579fe81 🐛 Don't load services info when standalone (#253) 2023-05-30 17:04:03 +02:00
2a74b11462 🐛 Ensure Valet check occurs (#252) 2023-05-29 20:45:05 +02:00
371f98b875 🚀 Version 6.0 2023-05-28 10:28:02 +02:00
7955c777e7 📝 Updated credits w/ sponsors
The list of sponsors includes a list of all public sponsors.

(Private sponsors have been omitted from the list.)
2023-05-27 12:46:39 +02:00
5c9b06d83b 👌 Missing localized strings 2023-05-27 12:43:31 +02:00
3c7bed0a9b 🔧 Bump build number for release version 2023-05-27 12:11:59 +02:00
54f83a0aed 🐛 Prevent operations when PHP Monitor is busy 2023-05-27 11:57:41 +02:00
b041ca37be 🐛 Disable Sites menu item when Standalone 2023-05-27 11:53:11 +02:00
2b2b027317 📝 Update README 2023-05-26 21:27:36 +02:00
cdbd959159 👌 Update strings 2023-05-26 20:49:18 +02:00
6fc613ac4c 🐛 Own /bin and /sbin folders specifically 2023-05-24 19:29:38 +02:00
8240b676c1 🐛 Own the entire Homebrew formula directory 2023-05-24 19:19:13 +02:00
cbebf75b48 🐛 Fix error message, check sbin folder ownership 2023-05-24 19:17:41 +02:00
40c24793f5 🐛 Show "Please wait" text when running command 2023-05-24 19:08:41 +02:00
6a921d8e3e 🐛 Use PHP Guard when removing a PHP version 2023-05-24 19:05:58 +02:00
a3368effec 🐛 Fix async issue when PHP Guard reset kicks in
Whenever PHP Guard is used to reset the PHP version when a different PHP
version is installed using the PHP Version Manager, it would previously
kick its version switching process off asynchronously as a separate task
which meant that the app would go into "ready" state too soon. Now this
is considered a blocking task that the app will wait for (async) before
turning the app back into its "ready" state again.
2023-05-24 18:59:49 +02:00
7f4c6878e4 📝 Update README 2023-05-22 20:12:49 +02:00
82626b7174 🔧 Bump build for new DEV build 2023-05-22 17:14:21 +02:00
326e5c58e2 🐛 Empty byte count now returns a warning symbol 2023-05-19 11:49:50 +02:00
2848b4dcd2 🔥 Cleanup and Valet checks after version switch 2023-05-18 12:45:13 +02:00
a8cf6daa94 👌 Check for /usr/local/homebrew directory (#251)
For this to work, Homebrew cannot be installed in /usr/local, which
means that the /usr/local/Cellar folder will be missing and the folder
/usr/local/homebrew will exist.
2023-05-17 20:22:22 +02:00
c4749673c9 🔧 Bump build number for EAP 2023-05-17 20:13:13 +02:00
20a0059f73 👌 Alter update notification for DEV & EAP 2023-05-17 20:10:41 +02:00
402e65f82d ⬆️ Apply recommendations about dead code stripping 2023-05-17 20:02:57 +02:00
29d17b3880 Ensure all UI tests pass 2023-05-15 19:44:50 +02:00
7f04dd5fcb Fix tests 2023-05-15 19:15:02 +02:00
0fe9281e3c 🔧 Fix deploy targets for tests 2023-05-15 19:06:58 +02:00
f88035b425 ♻️ Rename PhpEnv to PhpEnvironments 2023-05-15 19:04:05 +02:00
2b7bb3f352 👌 Show repair button in version manager 2023-05-14 12:04:25 +02:00
c7ee4b8838 Update README, check for broken formulae 2023-05-14 11:47:35 +02:00
ab993efbde 🐛 Ensure quit menu item is always available 2023-05-13 13:09:28 +02:00
c6f49de70c 🔧 New build 2023-05-13 13:06:01 +02:00
8b79dc44d0 🏗 Avoid dependents check for reinstall 2023-05-11 22:42:56 +02:00
458b952787 🏗 Keep track of Homebrew error log 2023-05-11 22:21:44 +02:00
67ec63212c 🏗 WIP: Cleanup 2023-05-11 22:08:42 +02:00
104f3a7d8c 🐛 Fix a bug related to installing PHP versions 2023-05-11 21:20:22 +02:00
d2304323fe ♻️ Use new InstallAndUpgradeCommand 2023-05-11 21:11:38 +02:00
76d078735c 🏗 Allow switching silently, add operation title 2023-05-11 20:16:07 +02:00
1eeba747cf 🏗 Copy logic from InstallPhpVersionCommand 2023-05-10 19:55:40 +02:00
64c259d804 🏗 HomebrewOperation now allows (attempted) repair of broken PHP 2023-05-10 19:24:11 +02:00
b307251f81 🏗 Health check in UI 2023-05-06 21:03:13 +02:00
bf610b6c4e 🏗 PHP installation health check 2023-05-06 12:52:10 +02:00
518fb16f23 🏗 Cleanup 2023-05-02 20:17:12 +02:00
24ef7eacfe 🏗 Show banner to update all versions 2023-04-30 10:30:00 +02:00
050c154894 🏗 WIP: Use BrewFormula struct for operations 2023-04-28 14:42:51 +02:00
18496de104 🏗 WIP: Change the way Homebrew operations run 2023-04-28 14:22:05 +02:00
a21418a608 🏗 WIP: Keep track of and restore linked PHP version 2023-04-26 19:49:22 +02:00
f9ee63ddf6 🏗 WIP: Separate code into PhpGuard class 2023-04-25 21:00:02 +02:00
b7de54dfa7 🏗 WIP: Rework folder ownership operations 2023-04-23 12:01:30 +02:00
2d0deed4fd Add "Standalone Mode" menu item 2023-04-22 10:13:16 +02:00
4b1fc1a5ce 👌 Improve visibility of Standalone Mode 2023-04-22 10:08:53 +02:00
227131bd7e 📝 Update info about using PHP Manager 2023-04-17 18:42:42 +02:00
f48a265bbf 🔧 New bug report format 2023-04-17 18:12:36 +02:00
0c3b68734c 🔧 New bug report format 2023-04-12 13:48:22 +02:00
7e5cbadc09 👌 Various improvements to PHP Version Manager
- 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. This check is only displayed once per cold app boot.

- The PHP Version Manager now shows the full version number for
  up-to-date PHP installations (mostly important for patch version).

- You must now confirm the deletion of an installed version of PHP
  before PHP Monitor will uninstall that version.

- It is no longer possible to press the refresh button if the app
  is already busy checking for updated PHP versions
2023-04-04 20:50:51 +02:00
9f608439fc 🏗 WIP: Upgrade command dry-run check 2023-04-03 20:15:13 +02:00
8b0aeef2e6 🚀 Version 5.8.1 2023-03-29 18:05:03 +02:00
aa406434d0 🔧 Bump build 2023-03-29 18:04:27 +02:00
4bca47a6d9 Add early access release notes 2023-03-27 19:37:47 +02:00
c5e8c4c4a6 Add helpful dialog for What's This 2023-03-27 18:51:17 +02:00
85d7c8f9a3 🏗 Added #warning for disabled notifications 2023-03-25 12:42:45 +01:00
4c7361e635 🔧 Bump PHP Monitor Self-Updater 2023-03-24 01:05:15 +01:00
6413287606 👌 Fix updater bundle logic, skip release notes 2023-03-24 01:03:19 +01:00
ff8eb4fa04 👌 Use app colors for status 2023-03-24 00:47:27 +01:00
6b72d4da65 👌 Disallow installation of linked PHP 2023-03-24 00:40:53 +01:00
b456fdc65c 🐛 Valet specific file checks 2023-03-24 00:30:53 +01:00
0e3c9a5a68 Added new target, did some testing 2023-03-24 00:21:45 +01:00
7cf8d4697f 👌 Add icon for early access builds 2023-03-23 20:05:30 +01:00
34e5a97155 👌 Avoid sponsor messages on EAP 2023-03-23 19:57:24 +01:00
ff2c2c9b69 🐛 Fix unsafe usage of try for path handling 2023-03-23 19:09:32 +01:00
d320c49092 👌 Avoid force unwrapping try (may crash) 2023-03-23 19:08:39 +01:00
966033e052 🐛 Prevent crash upon parsing invalid Valet directories
This fixes #247, which can be caused when certain folders are not
accessible for some reason. This can occur due to network reasons,
but also because the linked folder in question is iCloud Drive.
2023-03-23 18:00:45 +01:00
4e095a5ae5 👌 Fixed build URL 2023-03-23 15:17:11 +01:00
6aff283d08 👌 Sync global & window busy indicator 2023-03-22 21:58:50 +01:00
9c8da2aa1c Mark as busy 2023-03-22 21:49:55 +01:00
5755d608f8 👌 Add updater for Early Access builds 2023-03-22 21:47:55 +01:00
29fcc66cba Added EAP target 2023-03-22 21:43:20 +01:00
3a826b7e51 🏗 WIP: Remove command 2023-03-21 22:15:05 +01:00
2d8ad9e9bc 🏗 WIP: Move commands to separate files 2023-03-21 21:13:35 +01:00
64b3c4e9bb ♻️ Refactor Brew commands 2023-03-21 21:09:20 +01:00
f3b3dcf449 👌 Various UI improvements 2023-03-20 16:37:27 +01:00
0bdbc0a056 👌 Make PHP version manager previewable 2023-03-19 23:48:12 +01:00
4f11f3d8d3 🏗 WIP: Async formulae 2023-03-19 21:54:49 +01:00
e1eb61859e Display window, load info for all PHP versions 2023-03-19 19:02:34 +01:00
2939a2ab28 🏗 WIP: Add overlay UI 2023-03-19 16:51:46 +01:00
08dcfb36f4 🏗 WIP: Formulae manager UI changes 2023-03-19 14:00:15 +01:00
f8b605f749 👌 Parse upgradable versions 2023-03-18 02:11:57 +01:00
8f1304308d 🏗 WIP: Parsing version updates 2023-03-17 20:38:21 +01:00
7e04f8b881 👌 More UI workshopping 2023-03-17 17:57:31 +01:00
9dae03a04e Homebrew version validation, UI workshopping 2023-03-17 17:40:30 +01:00
78c24555f7 👌 Bring window to front, avoid crashing 2023-03-16 21:09:21 +01:00
41af058661 👌 Improved logging, HOMEBREW_NO_INSTALL_UPGRADE 2023-03-16 19:26:24 +01:00
7c192730e1 📝 Update SECURITY 2023-03-15 20:09:32 +01:00
bb56e33ee8 📝 Update SECURITY 2023-03-15 20:09:10 +01:00
84902f3a42 🔀 Merge additional tests into MainMenuTest 2023-03-15 20:07:35 +01:00
8775e70178 📝 Update README 2023-03-15 20:06:43 +01:00
de4cefd1b9 📝 Valet 4 has been released 2023-03-15 20:03:36 +01:00
ebb04001d0 👌 Check if ownership needs to be taken 2023-03-15 19:37:32 +01:00
bd23f65668 👌 Ensure removal occurs after permissions fix 2023-03-15 19:16:49 +01:00
22295ed55a 📝 Wrote about problems with PHP version removal 2023-03-14 22:19:25 +01:00
2bd5b8f79e Ensure Valet configuration files exist 2023-03-14 22:10:48 +01:00
34e9e3f829 👌 Improve progress view 2023-03-13 23:23:22 +01:00
016f36a8fd 🏗 WIP 2023-03-13 21:24:36 +01:00
862add8512 🏗 WIP: Ensure unsupported PHP can be removed 2023-03-13 21:21:29 +01:00
6dabcd7668 🏗 WIP: Properly install formula 2023-03-13 21:11:56 +01:00
7b7a5e5236 👌 Did someone say "out of range"? 2023-03-13 21:08:24 +01:00
a6aecff557 🏗 WIP: Fix omission of php formula 2023-03-13 21:04:18 +01:00
81ed154db1 🏗 WIP: Discern installation status
Depending on the installation status, PHP Monitor should be able to
find out which versions of PHP can be installed and removed.
2023-03-13 21:03:13 +01:00
e0b574b33d 🏗 WIP: Experiments, progress view 2023-03-11 13:08:48 +01:00
f414c723e4 Open additional windows 2023-03-06 22:11:44 +01:00
f3ef1da2bf Click through the preferences panes 2023-03-06 22:01:58 +01:00
f7c716096c Fix issue with php-config binary being missing 2023-03-04 00:37:45 +01:00
54630c222b Fix issue with php-config binary being missing 2023-03-04 00:37:02 +01:00
1fc63e0471 🔀 Merge branch 'dev/5.8-tests' into dev/6.0 2023-03-04 00:29:57 +01:00
127d5f4494 Improve tests 2023-03-03 23:11:40 +01:00
13ee618d5c 🚀 Version 5.8.0 2023-03-03 16:49:38 +01:00
ed1d7f8aed Test improvements 2023-03-03 16:49:17 +01:00
063a729d67 🐛 Fix user initiated issue 2023-03-03 15:28:34 +01:00
d1498eb070 🐛 Fix issue with parsing CaskFile 2023-03-03 14:44:15 +01:00
7a02fb8a1a 🏗 WIP 2023-03-03 00:48:48 +01:00
b925262620 🏗 WIP 2023-03-02 20:53:39 +01:00
aaa814ac9c 🏗 WIP: Respond directly to PHP binary changes 2023-03-02 20:27:30 +01:00
870868bacf 🔀 Merge branch 'dev/5.8' into dev/6.0 2023-03-02 16:30:58 +01:00
e149a2500e 📝 Updated README 2023-03-02 16:27:26 +01:00
aef7d4021c 🔧 Bump build 2023-03-01 19:22:26 +01:00
a25f8c9748 👌 Use same cleanup code as used on 5.8 branch 2023-03-01 19:21:40 +01:00
050c489158 🐛 Prevent upgrade file removal from crashing the app 2023-03-01 19:20:13 +01:00
61af6e2dc0 🔀 Merge branch 'dev/5.8' into dev/6.0 2023-03-01 19:18:12 +01:00
130bf38dd9 👌 Clean up HOMEBREW_DIR/Caskroom directory
Only when using the self-updater, of course.

Also include a description that reflects this cleanup scenario.
2023-03-01 19:17:18 +01:00
a6c3f0ceba 🍱 Use classic DEV channel icon 2023-02-27 19:16:15 +01:00
defb6e357a 🔀 Merge branch 'dev/5.8' into dev/6.0 2023-02-27 19:13:12 +01:00
f274e9e004 👌 Updated IAP for accessing formulae.brew.sh 2023-02-27 19:08:04 +01:00
a07881a987 👌 Fix copy of missing config check 2023-02-27 19:04:50 +01:00
ae9863b962 👌 Use classic DEV channel icon again 2023-02-26 23:28:24 +01:00
d679c7e75c 👌 Tweak onboarding for Valet-less users 2023-02-26 22:56:23 +01:00
47d921547f 👌 Move Valet-specific check to Valet class 2023-02-26 22:28:40 +01:00
bc22129399 👌 Improve logic in InternalSwitcher 2023-02-26 15:25:06 +01:00
98fcb686bf 👌 Avoid certain things when Valet-less 2023-02-26 15:23:10 +01:00
715b674929 Fix tests 2023-02-26 15:02:43 +01:00
089ebe7b4e 👌 More strict Valet check, remove print 2023-02-26 15:02:29 +01:00
608525209b Remove unused test that caused failing suite 2023-02-26 14:50:31 +01:00
c7eb1d5ce5 Fix tests 2023-02-26 14:49:18 +01:00
81eb2fee90 👌 Tweak logging 2023-02-26 12:41:16 +01:00
2eea15aac2 👌 Improve WarningListView and modify body 2023-02-25 15:57:39 +01:00
eb664477f9 👌 Improve async PHP Doctor 2023-02-25 15:48:01 +01:00
e1adcbcde6 👌 Improve PHP Doctor w/ async code
- This fixes an issue with PHP Doctor's "Scan Again" button not working.
- This also adds a new check which verifies if "php.ini", "php-fpm.conf"
  and "php-fpm.d/valet-fpm.conf" exist (all required files).
2023-02-24 19:41:10 +01:00
cb504cc3f0 🔧 Bump build 2023-02-24 19:37:41 +01:00
7c08a2fdfe 👌 Improve PHP Doctor w/ async code
- This fixes an issue with PHP Doctor's "Scan Again" button not working.
- This also adds a new check which verifies if "php.ini", "php-fpm.conf"
  and "php-fpm.d/valet-fpm.conf" exist (all required files).
2023-02-24 19:36:12 +01:00
3f14754177 📝 Update README to reflect #239 2023-02-21 18:18:23 +01:00
2f47610c85 🔧 Use macOS 12.4 deployment target 2023-02-21 02:27:03 +01:00
b5758dfca7 🔧 Use macOS 12.4 deployment target 2023-02-21 02:26:45 +01:00
2d4112708e ♻️ PHP Guard changes 2023-02-20 18:16:39 +01:00
cc6324b692 ♻️ PHP Guard changes 2023-02-20 18:15:12 +01:00
15d75a7f98 🔧 Bump build 2023-02-17 17:21:13 +01:00
32a44524ef 🐛 Ensure checkbox shows correct initial state 2023-02-17 17:20:05 +01:00
c7c5311ff9 🐛 Ensure checkbox shows correct initial state 2023-02-17 17:19:56 +01:00
26a097ed07 On macOS 13 and newer, add "Start at login" (#210) 2023-02-15 20:37:24 +01:00
c93f047909 🔧 Bump build 2023-02-15 20:32:56 +01:00
f82a2120f7 🔧 Add display name 2023-02-15 20:32:37 +01:00
857cba9f45 On macOS 13 and newer, add "Start at login" (#210) 2023-02-15 20:24:01 +01:00
b0de0c04c6 🚀 Version 5.7.4 2023-02-14 18:53:32 +01:00
ec49257bcc 🔧 Bump build 2023-02-13 17:43:52 +01:00
5fc159ae5a 🐛 Adjusted for new Homebrew JSON output (#235) 2023-02-13 17:38:46 +01:00
9c6a21008a 🐛 Adjusted for new Homebrew JSON output (#235) 2023-02-13 17:38:09 +01:00
f27e07fc78 🔧 Bump build 2023-02-13 17:30:37 +01:00
9fceab3e2e 🐛 Adjusted for new Homebrew JSON output (#235) 2023-02-13 17:30:01 +01:00
67a91e1211 👌 Fix warnings and update schemes 2023-02-11 20:48:14 +01:00
babb734c25 👌 Do not load identity asynchronously 2023-02-11 20:47:17 +01:00
5dffbf57d1 👌 Do not load identity asynchronously 2023-02-11 20:46:05 +01:00
21a1d6576e 🔧 Bump build 2023-02-10 19:36:42 +01:00
6456741880 Add support for wildcard constraints (#224) 2023-02-10 19:31:20 +01:00
b08912ce11 Add support for wildcard constraints (#224) 2023-02-10 19:31:07 +01:00
f6d2f09b8d 👌 Improve first launch onboarding experience 2023-02-07 22:02:45 +01:00
7285d24ef3 👌 Improve first launch onboarding experience 2023-02-07 22:02:34 +01:00
ac60c66bb9 🐛 Add missing strings for update 2023-02-06 19:33:41 +01:00
03fdf23f0a 🚀 Version 5.7.3 2023-02-06 19:15:25 +01:00
412b7bad5c 🐛 Fix generated script (#231) 2023-02-06 19:13:49 +01:00
9a7575790a 🔧 Bump build 2023-02-06 19:12:34 +01:00
a36487f6e0 🐛 Fix generated script (#231) 2023-02-06 19:10:24 +01:00
cd5cbccb04 🐛 Fix generated script (#231) 2023-02-06 19:10:10 +01:00
e7e8658ea6 📝 Update README about new updater 2023-02-05 18:53:35 +01:00
20291bf034 📝 Update README about new updater 2023-02-05 18:53:24 +01:00
762527ece9 👌 Add quotes around paths 2023-02-05 18:43:13 +01:00
2c40f433d3 Add updater to project
If you want to see the source code to the updater, you can find it here:
https://github.com/nicoverbruggen/phpmon-updater

Starting with version 6.0, the code of the updater will be included
in this repository.
2023-02-05 18:37:18 +01:00
5ac4817048 👌 Add built app to .gitignore 2023-02-05 18:17:07 +01:00
300880f3e5 ♻️ Reworked updater 2023-02-05 18:00:37 +01:00
78e682688b 🏗 Improved version comparison 2023-02-05 17:18:09 +01:00
208a430066 🏗 Parse CaskFile using regex 2023-02-05 13:16:04 +01:00
5c92d47ff0 Parse CaskFile, WIP for new AppUpdater 2023-02-04 22:13:43 +01:00
121a227510 👌 Create the updater directory to prevent crash 2023-02-04 14:47:19 +01:00
f8642b21e6 🏗 Test build 2023-02-02 19:50:41 +01:00
b182218cad Notify about installed update 2023-02-02 19:46:07 +01:00
0bb3e5c173 📝 Update information about build 2023-02-02 19:34:18 +01:00
e541dced4a Add Self-Updater to gitignore 2023-02-02 19:32:11 +01:00
04c6cef277 🔥 Remove signed Self-Updater from repository 2023-02-02 19:31:12 +01:00
6d1ea4e93b Add timeout for updater 2023-02-02 19:27:58 +01:00
4fd48baf63 Use concurrency for updater 2023-02-02 19:22:52 +01:00
1260022d51 Working self-updater (needs refactor) 2023-02-02 12:20:12 +01:00
ca72b79924 🏗 Initial working version of the updater
This class is in dire need of a refactor, however.
2023-02-02 12:14:30 +01:00
1a17a275d4 🏗 Add instructions for next step 2023-02-02 02:02:21 +01:00
202f9ed9d1 🏗 Add 'Install Update' button to UI 2023-02-02 01:57:38 +01:00
881d863bb8 👌 Add notarized updater & include in target 2023-02-02 01:35:41 +01:00
ef37876508 🍱 Update icon for self-updater 2023-02-02 01:23:48 +01:00
0c52720e55 🏗 Cleanup zip and manifest 2023-02-02 01:18:30 +01:00
744ec95630 🏗 Do not make assumptions about zip contents 2023-02-02 01:14:53 +01:00
69ff907f4a 🏗 Read release manifest 2023-02-02 01:04:20 +01:00
57c90c216f 🏗 Download and validate checksum 2023-02-02 00:47:53 +01:00
8df126a7b0 🏗 Working proof-of-concept updater if zip exists 2023-02-01 20:12:04 +01:00
173206bed9 🏗 Let self-updater quit PHP Monitor first 2023-02-01 19:31:04 +01:00
8fa270fd54 🏗 Allow self-updater to launch PHP Monitor 2023-02-01 19:22:20 +01:00
92509b5a84 🏗 Rename Affinity asset 2023-02-01 19:06:59 +01:00
c609022c9b Add target and app for self-updater 2023-02-01 18:23:59 +01:00
bbbbe7555b 🔀 Merge branch main into dev/6.0 2023-01-31 18:24:08 +01:00
1216fe4974 🐛 Avoid duplicate verbose mode output 2023-01-31 18:20:44 +01:00
147407666d 🔥 main branch cleanup
After the last merge, there was one file I accidentally included that
doesn't need to be here: the legacy ServicesManager class! In order to
ensure that 5.7, 6.0 and `main` branches are somewhat in order and
easy to merge, I have now removed this file.
2023-01-31 18:15:00 +01:00
f9363dd35b 🔀 Merge branch 'dev/5.7' into dev/6.0
This merge brings all of the changes from 5.7 into the 6.0 branch,
while avoiding the need for cherry picking now that the conflicts
have been resolved.
2023-01-31 18:11:04 +01:00
7be6a335df 👌 Add system_quiet helper 2023-01-31 18:06:47 +01:00
b39b4dc58b 🐛 Avoid duplicate verbose mode output 2023-01-31 17:32:37 +01:00
3ceded3456 🐛 Avoid duplicate verbose mode output 2023-01-31 17:32:31 +01:00
4568f03a65 🚀 Version 5.7.2 2023-01-30 19:54:09 +01:00
2eda8d6382 📝 Update about verbose logging 2023-01-30 19:24:46 +01:00
6d89f94c92 🐛 Fix version parsing (#227) 2023-01-30 19:19:01 +01:00
ff2eff2a75 👌 Remove unneeded print() statement 2023-01-30 19:18:31 +01:00
339eafd34d Extra verbose logging
You can start extra verbose logging by running: `touch ~/.config/phpmon/verbose`

Once this file exists, you can find the latest log in: `~/.config/phpmon/last_session.log`.
2023-01-30 19:18:00 +01:00
6115ef02de Add test to validate Valet version number with deprecations 2023-01-30 19:16:45 +01:00
dd330fecce 🔧 Bump build 2023-01-30 19:12:03 +01:00
aaa7c636db 👌 Remove unneeded print() statement 2023-01-30 19:11:47 +01:00
ff75fb7be3 🐛 Fix version parsing (#227) 2023-01-30 19:11:08 +01:00
4d7b01831b Extra verbose logging
You can start extra verbose logging by running: `touch ~/.config/phpmon/verbose`

Once this file exists, you can find the latest log in: `~/.config/phpmon/last_session.log`.
2023-01-30 19:10:52 +01:00
8fcaa34cbb 🔧 Extra CLI mode (--cli) 2023-01-30 13:08:28 +01:00
0fceb852bb Add test to validate Valet version number with deprecations 2023-01-30 13:08:23 +01:00
9fb5f33770 🔧 Extra CLI mode (--cli) 2023-01-30 13:07:37 +01:00
2f658ee569 🚀 Version 5.7.1 2023-01-29 15:00:09 +01:00
ad179a325a 🔧 Bump build 2023-01-29 14:59:52 +01:00
5fa1836693 🐛 Fix services not shutting down (#225) 2023-01-29 14:58:20 +01:00
4baeaea85f 🐛 Fix services not shutting down (#225) 2023-01-29 14:58:09 +01:00
9e25254ec8 🚀 Version 5.7 2023-01-26 20:49:47 +01:00
24aecb3148 ♻️ Cleanup 2023-01-26 20:45:34 +01:00
e623207844 🔧 New build 2023-01-26 20:32:39 +01:00
f60ecb877c ♻️ Cleanup 2023-01-26 20:30:00 +01:00
25f824defd Correctly parse .valetrc files 2023-01-24 19:48:25 +01:00
7936d14440 🏗 WIP: Add test for feature to be implemented 2023-01-24 19:48:25 +01:00
c3261b8873 🏗 WIP: Parsing .valetrc file 2023-01-24 19:48:25 +01:00
66393094b0 Correctly parse .valetrc files 2023-01-24 19:47:28 +01:00
b5d2fef184 🏗 WIP: Add test for feature to be implemented 2023-01-20 16:42:50 +01:00
44bc07c9dc 🏗 WIP: Parsing .valetrc file 2023-01-20 16:36:56 +01:00
5923be099f 👌 Update copyright message 2023-01-19 18:11:25 +01:00
f92a3f545a 🐛 Fix bug related to "?" not showing up 2023-01-19 18:11:08 +01:00
93790f3951 👌 Update copyright message 2023-01-19 18:09:42 +01:00
d3b1afe9fd 🐛 Fix bug related to "?" not showing up 2023-01-19 18:03:00 +01:00
2fa50a7dc4 🔧 Bump build for new pre-release build 2023-01-19 17:33:55 +01:00
b8e7397233 👌 Adjust SECURITY and support matrix for Valet 4
This commit ensures that PHP Monitor knows about which versions of
PHP are supported by the upcoming Valet 4.0: PHP 7.1 and higher.

Ensures compatibility with https://github.com/laravel/valet/pull/1318
2023-01-19 17:31:54 +01:00
18b62ecc3f 👌 Adjust SECURITY and support matrix for Valet 4
This commit ensures that PHP Monitor knows about which versions of
PHP are supported by the upcoming Valet 4.0: PHP 7.1 and higher.

Ensures compatibility with https://github.com/laravel/valet/pull/1318
2023-01-19 17:30:21 +01:00
5c62f744ad 👌 Improve onboarding 2023-01-18 20:42:39 +01:00
70ebb2ef59 👌 Fixed onboarding for initial launch 2023-01-18 20:42:39 +01:00
d9f4a19b92 👌 More compact ServicesView 2023-01-18 20:42:39 +01:00
90c8bcc0df 📝 TL QC Pass 1 2023-01-18 20:42:39 +01:00
1ef4f0bb81 📝 Update information about supported PHP versions 2023-01-18 20:42:39 +01:00
0f62b1f1d0 📝 Update documentation
* Updated README
* Updated SECURITY
* Revert the minimum Valet version to v2.16
2023-01-18 20:42:39 +01:00
2d59b8c6e8 👌 Improve onboarding 2023-01-18 20:42:24 +01:00
450d7ec001 👌 Fixed onboarding for initial launch 2023-01-18 20:27:02 +01:00
b6b1174ca3 👌 More compact ServicesView 2023-01-18 19:56:54 +01:00
e509f6b59d 📝 TL QC Pass 1 2023-01-18 19:22:45 +01:00
6014320441 📝 Update information about supported PHP versions 2023-01-18 19:18:25 +01:00
a0d80423e9 📝 Update documentation
* Updated README
* Updated SECURITY
* Revert the minimum Valet version to v2.16
2023-01-18 19:10:43 +01:00
89642de12e Add testable configuration for Valet-free env 2023-01-17 19:16:36 +01:00
c6f2167c92 Added environment check groups 2023-01-17 18:57:21 +01:00
e8d705e228 👌 Use specific theme colors for services status 2023-01-17 18:10:04 +01:00
35b19efc3e 👌 Use specific theme colors for services status 2023-01-17 18:05:22 +01:00
a46602d4b4 👌 Sort PHP versions, amend message 2023-01-16 21:11:16 +01:00
9a175e7291 🔧 Bump build for new pre-release build 2023-01-16 21:10:58 +01:00
d53e92ce94 👌 Sort PHP versions, amend message 2023-01-16 21:09:25 +01:00
3344fdb1dc 👌 Update support matrix 2023-01-13 20:01:09 +01:00
7c3f416789 Tell users about older unsupported PHP versions 2023-01-13 19:51:49 +01:00
8d42e27ef6 🔧 Keep track of unsupported (but installed) PHP versions 2023-01-13 19:50:37 +01:00
020a0260f1 Tell users about older unsupported PHP versions 2023-01-13 19:48:02 +01:00
3ce7e8f48b 🔧 Keep track of unsupported (but installed) PHP versions 2023-01-13 19:13:43 +01:00
894365488a 🚛 Moved some files around 2023-01-13 00:22:55 +01:00
3c6d2d74ff 🐛 Fix concurrency crashes with @objc methods 2023-01-12 17:30:27 +01:00
ae7e13de9b 🔧 Bump build for new pre-release build 2023-01-12 17:20:58 +01:00
c82ea1fac1 🐛 Fix concurrency crashes with @objc methods 2023-01-12 17:20:15 +01:00
17efb50872 👌 Allow PHP Monitor to run without linked PHP 2023-01-12 00:04:54 +01:00
d6258f54a9 🐛 Fix crash when Valet.shared is nil 2023-01-11 22:23:39 +01:00
44800a03a1 🏗 WIP: Allow unlinked PHP version 2023-01-11 22:22:52 +01:00
e6d2c873a5 👌 Add modal to inform about helper scripts 2023-01-11 18:03:10 +01:00
300b10c5d8 🐛 Fix crash with check for updates 2023-01-11 17:50:55 +01:00
6eea08cd4f 👌 Finalize PHP Guard functionality 2023-01-10 17:53:55 +01:00
3c946a53e8 👌 Keep track of last used global PHP version 2023-01-09 19:19:18 +01:00
d8738b685f 👌 Get rid of warnings 2023-01-09 18:10:51 +01:00
55fc90bcf5 👌 Better alerts for error state 2023-01-08 13:14:18 +01:00
6a2f4d248c 👌 Improved error handling 2023-01-08 12:48:47 +01:00
a50eb04f3c 👌 Services now report error status 2023-01-08 11:50:01 +01:00
4cbfbeb4e5 👌 Add copy about inactive services 2023-01-07 23:54:01 +01:00
18dd597d38 👌 SwiftUI fixes 2023-01-07 19:01:31 +01:00
e5c80ab52f 👌 Resolve height issues 2023-01-07 18:54:07 +01:00
0b3a83c1e4 👌 Cleanup 2023-01-07 18:10:31 +01:00
6e7c0d827c 👌 Initial loading state for services manager 2023-01-07 17:16:51 +01:00
d05f39efe7 👌 Check if Valet version is supported 2023-01-07 13:24:52 +01:00
27894e4884 👌 Handle TODOs 2023-01-07 13:03:27 +01:00
f153fee05c Fix broken tests after test config using 8.2 2023-01-07 12:57:45 +01:00
71e1ed1b93 👌 Async switcher (Swift concurrency) 2023-01-07 12:53:27 +01:00
61ecefb6e7 👌 Use filesystem abstraction 2023-01-07 12:53:07 +01:00
422a7738bd 👌 Add fake services system 2023-01-06 21:50:34 +01:00
0beda388eb 👌 Cleanup 2023-01-06 21:33:51 +01:00
684a53fc4a 🏗 WIP: Functional service toggling 2023-01-06 20:30:25 +01:00
456948ffd9 🏗 WIP: Broken services toggling
You can break it by opening the menu twice.
2023-01-06 19:14:17 +01:00
a090cbc20b 👌 Revert loading 2023-01-06 18:34:39 +01:00
7b07520440 🏗 WIP: Service toggling 2023-01-06 18:33:55 +01:00
6d52992c9d 👌 Add comments about concurrency 2023-01-06 13:07:02 +01:00
291d20b2b3 🏗 WIP: Functional services list 2023-01-06 12:59:15 +01:00
3d505aebde 🚛 VersionNumber, PhpVersionNumberCollection 2023-01-06 12:41:37 +01:00
d854dee2a1 Fix tests related to version number parsing 2023-01-05 17:58:55 +01:00
67e8589834 ♻️ Alter how PHP version support is handled 2023-01-05 17:45:23 +01:00
a36c9b1563 📝 Update documentation 2023-01-05 12:17:31 +01:00
df1b1c5856 🏗️ Investigate event propagation 2023-01-03 20:17:29 +01:00
5af7214320 🏗️ Layout changes 2023-01-03 20:15:44 +01:00
e20d3ffd22 🏗️ WIP: Various fixes and improvements
- Fixed `brewPhpAlias` (must be configurable later)
- Added TODOs for where the filesystem abstraction is required
- Set `Homebrew.fake` early on when applying testable configuration
- Evaluate `FakeValetSite` compatibility again
- Never display sponsor alert when running tests
- Upgrade TestableConfiguration.working to use PHP 8.2
2023-01-03 19:29:44 +01:00
be70559d4c 🏗 WIP: Adjust dimensions 2023-01-03 16:58:48 +01:00
61988a141b 🏗 WIP: Center buttons and checkmarks 2023-01-03 16:14:45 +01:00
3bcf52bf0a 🏗 WIP: Use objectWillChange.send() 2023-01-03 16:11:55 +01:00
296bc486c4 🏗 WIP: Fake services manager 2022-12-24 15:17:47 +01:00
59f60b5013 🏗 WIP: Services manager main status
Please note that these are computed properties.
They should be computed when a service status
is modified, and should be `Published`.
2022-12-24 15:04:25 +01:00
de2c1aca5d 🏗 More SwiftUI experiments 2022-12-24 14:51:23 +01:00
44c1ea7de4 🏗 SwiftUI experiments 2022-12-23 19:20:04 +01:00
923f0237e8 🔥 WIP: Removed broken view 2022-12-20 19:42:27 +01:00
ff7c68ddfb 🏗 WIP: Services rewrite 2022-12-19 18:09:10 +01:00
bf2c0c259f 👌 Mastodon > Twitter 2022-12-19 17:35:32 +01:00
0fdd1264ed 👌 Await the outcome of cash conflict check 2022-12-19 17:30:56 +01:00
c85a8e3818 Add test for tapping on "add domain" 2022-12-18 14:50:03 +01:00
15fe5e4716 Add tests for domain list interaction 2022-12-16 20:50:53 +01:00
de6dea066e Use ValetInteractor to add links and proxies 2022-12-16 20:20:31 +01:00
ee230f3086 👌 Unify scanners 2022-12-15 22:28:15 +01:00
bc96b50630 Add fake isolation interaction 2022-12-14 20:28:49 +01:00
d6554ceea9 Add site isolation to ValetInteractor 2022-12-14 20:18:06 +01:00
4b04f70638 👌 Fix phrasing ("site is unsecured")
A site can be either insecure or unsecured. Insecure has a rather
negative connotation and is also a human trait. Unsecured is a better 
term in this particular case.
2022-12-13 23:49:55 +01:00
d49e74fab1 🚛 Move FakeValetInteractor to separate file 2022-12-13 23:47:59 +01:00
e34dadcb9b 👌 Reinstate UI busy for secure, add fake delay 2022-12-13 23:45:19 +01:00
a696a9a386 👌 Style fix 2022-12-13 23:32:50 +01:00
837392d606 Add unlinking sites for fake links 2022-12-13 23:32:19 +01:00
912d9e7423 Add FakeValetInteractor 2022-12-13 23:21:15 +01:00
cb98d40bef 👌 Fix crash with new secure/unsecure mechanism 2022-12-13 23:02:30 +01:00
1f165058b2 ♻️ Rework interaction with Valet commands 2022-12-13 22:56:36 +01:00
04c78eba35 👌 Generate a new JSON file for current dev env 2022-12-13 20:24:48 +01:00
4bfde7b062 👌 Add warning about https proxy subjects 2022-12-13 20:21:34 +01:00
00cc6711a1 🚀 Version 5.6.6 2022-12-10 13:04:16 +01:00
209244e162 🔧 Bump build 2022-12-09 18:27:19 +01:00
e48d8ed98b 👌 Add warning about https proxy subjects 2022-12-09 18:26:56 +01:00
834f76e5a1 📝 Updated README about PHP compatibility 2022-12-09 18:08:05 +01:00
5f39cd757a 📝 Update README 2022-12-09 18:05:31 +01:00
7e48893247 📝 Update README 2022-12-09 18:04:05 +01:00
073b7cf943 🏗 WIP: Interactions 2022-12-06 20:53:42 +01:00
31a0bb986f ♻️ Some odd refactoring 2022-12-06 19:43:45 +01:00
81183acea8 ♻️ Cleanup 2022-12-06 19:28:20 +01:00
e29ca9e1ad 🚀 Version 5.6.5 2022-11-27 14:37:15 +01:00
40e05d9445 🔧 Bump build 2022-11-27 14:04:15 +01:00
3ebf51b319 👌 Fix threading issue with Composer update (#212) 2022-11-27 14:03:46 +01:00
3f8739dc30 👌 Fix timing issue 2022-11-22 00:14:46 +01:00
c3e55df9fb WIP: Add support for nginx-full, formulae tweaks 2022-11-22 00:01:31 +01:00
4b8ad911f1 Add support for nginx-full (#211) 2022-11-21 18:10:33 +01:00
c6aa06842c 🔥 Remove reference to LatestStablePhpVersion 2022-11-18 19:18:36 +01:00
efd902b4f3 🚀 Version 5.6.4 2022-11-18 18:39:00 +01:00
918e272da7 🔧 Bump build 2022-11-18 18:37:31 +01:00
272a9182d3 🔥 Remove reference to LatestStablePhpVersion 2022-11-18 18:37:20 +01:00
63f85aff91 🐛 Fix issue when using services quick toggle 2022-11-18 18:32:38 +01:00
a801174f0a Fully cover RealFileSystem 2022-11-09 20:05:15 +01:00
fa5c843619 Add tests for RealFileSystem class 2022-11-08 20:14:10 +01:00
581c2d1974 📝 Update supported PHP versions in README 2022-11-07 20:45:58 +01:00
bc739e1982 👌 Add feature test for InternalSwitcher 2022-11-07 20:42:52 +01:00
a21d928a6c 📝 Update SECURITY.md 2022-11-02 21:22:49 +01:00
4deef64537 📝 Update SECURITY.md 2022-11-02 21:08:57 +01:00
bedabaa3bb 👌 PHP 8.2 release, PHP 8.3-dev support 2022-11-02 21:06:36 +01:00
76d96b3507 Fix issue with UI tests and .localizable 2022-11-02 21:05:12 +01:00
4de7179d1c 👌 Include brew (un)link commands for tests 2022-11-02 20:08:15 +01:00
f2d5b94831 Fix tests 2022-11-02 19:44:36 +01:00
ff5fdd82b1 👌 Add default system "www.conf" file 2022-11-01 17:11:55 +01:00
4f6bae87d4 Add Composer to testable configuration 2022-11-01 17:08:01 +01:00
ce44166b48 Added more tests, added to fake & real FS 2022-11-01 17:02:26 +01:00
5caca85d7a 👌 Fake FS: ~ and intermediate directories 2022-11-01 16:47:45 +01:00
fa2d2105c5 👌 Removed remaining FileManager.default usage 2022-11-01 14:11:34 +01:00
8417d637fe 👌 FileSystem changes, rework and testing 2022-11-01 13:47:16 +01:00
e8c85f93f9 👌 Change where scanners are initialized 2022-11-01 12:10:47 +01:00
24659d4385 👌 Bump recommended Valet version 2022-10-25 23:30:49 +02:00
786b59aa92 🐛 Handle empty output for brew info 2022-10-22 17:39:43 +02:00
9da3772212 🚀 Version 5.6.3 2022-10-22 17:34:53 +02:00
e62b03d070 👌 Style fix 2022-10-22 16:43:05 +02:00
9a11d2efed 🔧 Bump build 2022-10-22 16:42:26 +02:00
b134e62328 🐛 Handle empty output for brew info 2022-10-22 16:41:54 +02:00
771f8dc757 🏗 WIP for fake site enhancements 2022-10-21 19:45:42 +02:00
e18db4eadd 👌 Mark determineVersion as throws 2022-10-21 19:31:05 +02:00
1ece5c34bf Correctly parse pre-release PHP versions 2022-10-21 19:27:31 +02:00
04ed29bc9f 👌 Fix warnings 2022-10-21 18:19:31 +02:00
ac2184ba97 👌 Add brew tap homebrew/services instruction
This now recommends the appropriate solution for #208.
2022-10-20 20:44:54 +02:00
5c69133c42 👌 Add brew tap homebrew/services instruction
This now recommends the appropriate solution for #208.
2022-10-20 20:44:44 +02:00
8310cf2729 👌 Touching up correctness of process handling 2022-10-19 14:57:28 +02:00
696f9bf351 👌 Various async improvements 2022-10-19 14:27:39 +02:00
17b1329d71 👌 Cleanup 2022-10-19 13:52:11 +02:00
4bfa98fc20 ♻️ Refactor DispatchQueue to new Task API 2022-10-19 13:44:53 +02:00
658cec27c1 👌 Cleanup 2022-10-18 23:44:18 +02:00
1c0d9f6826 👌 Swift 6 compatibility 2022-10-18 23:41:46 +02:00
507d7d5b23 Fix PHP version detection requirement 2022-10-18 16:43:17 +02:00
4b8b46a822 Fix test 2022-10-18 14:12:57 +02:00
ea5dd3bc46 👌 Snake case for tests 2022-10-18 14:11:55 +02:00
83657fee6f Tests are final 2022-10-16 15:37:17 +02:00
4c752b6a15 Localization support for in test files 2022-10-16 15:13:13 +02:00
5e3e0c087b 👌 Read configuration from JSON file
This allows us to alter the configuration prior to launching the app,
which allows for additional flexibility during testing.
2022-10-16 14:35:19 +02:00
273070ef27 ️ Sped up and improved UI test 2022-10-15 16:37:33 +02:00
cb3208c008 Real UI test 2022-10-15 15:36:03 +02:00
d401fe997d Make UI test actually functional 2022-10-15 15:14:49 +02:00
eaf6ef658f 🚛 Moved tests around, added Feature, UI tests 2022-10-14 18:03:14 +02:00
d91e16d674 Add test plan, fix unit tests 2022-10-14 17:10:58 +02:00
008603b8c3 👌 Fix project structure 2022-10-14 16:55:37 +02:00
728274aaca 👌 Fix warnings 2022-10-14 16:54:11 +02:00
daaece3cfa Added fake commands 2022-10-12 23:25:06 +02:00
eaa74b7141 👌 Annotate configurations 2022-10-12 22:50:06 +02:00
8a6656d3e2 👌 Improve logging 2022-10-12 22:40:48 +02:00
ad46f51d73 👌 Use fake filesystem 2022-10-12 22:38:03 +02:00
12a4efc775 👌 Improvements to BetterAlert, apply() configs
- MainActor fixes for BetterAlert
- Added `apply` for TestableConfiguration
2022-10-12 22:19:36 +02:00
ec4c4df5fd Add preference to disable TLD alert (#206) 2022-10-12 18:52:44 +02:00
f4448e0640 🔧 Bump version number 2022-10-10 21:49:51 +02:00
7fd30d7c54 Add preference to disable TLD alert (#206) 2022-10-10 21:49:43 +02:00
2c57dea97f 🔀 Merge branch 'main' into dev/5.6 2022-10-09 22:00:36 +02:00
a77fa5557a 📝 Update README for Login Items on Ventura 2022-10-09 21:56:13 +02:00
b0f27dcfa5 ♻️ Filesystem to FileSystem / ActiveFileSystem 2022-10-08 01:04:51 +02:00
f5d2ec2b7e 👌 Add delay global function 2022-10-08 00:27:29 +02:00
6db5cdec25 🐛 Introduce SLOW SHELL and fix a few issues 2022-10-07 22:55:48 +02:00
03cf4ef3e4 👌 Added various TODO items 2022-10-06 23:35:14 +02:00
6feb8118d9 🚛 Move files around 2022-10-06 23:34:31 +02:00
45a82b2c9e 🏗 Checked and fixed various Task { } blocks 2022-10-06 23:29:13 +02:00
ed3622cc4e Fix tests 2022-10-06 23:00:21 +02:00
e2ab7f08ed 🏗 Remove LegacyShell entirely 2022-10-06 22:55:05 +02:00
ad41e3891e 🏗 Mark old Shell as deprecated from now on 2022-10-05 22:39:36 +02:00
108ae05c1d 🏗 Use new shell when parsing apps 2022-10-05 22:38:54 +02:00
fb1ca60240 Fix tests, new shell in various places 2022-10-05 01:07:09 +02:00
3267dc8add ♻️ Use new Shell.pipe to replace legacy shell 2022-10-05 00:38:17 +02:00
1fd7db15a7 🏗 Testable terminal output 2022-10-04 23:42:43 +02:00
0b33116eb0 🏗 Fake shell in use 2022-10-04 19:39:34 +02:00
2c25bcbdb5 🏗 Ensure Shellable has PATH 2022-10-04 19:00:33 +02:00
8a6139d5e7 🏗 Remove synchronous terminal commands 2022-10-04 18:40:41 +02:00
953ccb3792 🏗 WIP 2022-10-04 17:57:05 +02:00
c26c491340 🏗 WIP 2022-10-03 22:27:50 +02:00
c9a5cd3a9f 🏗 WIP 2022-10-03 19:27:14 +02:00
45704fc736 🚀 Version 5.6.2 2022-10-02 13:28:58 +02:00
f28354e634 🐛 Use valet secure sitename (#197) 2022-10-02 13:28:01 +02:00
86eb295489 👌 Add runComposerUpdateShellCommand method 2022-09-30 23:45:32 +02:00
572330eaa1 👌 Remove reference to singleton 2022-09-30 23:44:16 +02:00
5ebafdb4e3 👌 Shell tweaks, fix ComposerWindow async issue 2022-09-29 19:08:40 +02:00
ffffcad84b 🐛 Fix ComposerWindow deinit not firing 2022-09-29 19:00:59 +02:00
8055a32bde 🐛 Fix ComposerWindow deinit not firing 2022-09-29 18:50:40 +02:00
4c11fae541 🏗 WIP: Run shell commands in parallel 2022-09-28 22:18:16 +02:00
99da328921 🏗 WIP: Even better Shell functionality 2022-09-28 21:43:18 +02:00
bbac2632a2 🏗 WIP: Much improved Shell protocol 2022-09-28 21:28:51 +02:00
513a86ec39 🐛 Fix an issue with missing separator item 2022-09-28 18:24:34 +02:00
5b3054326e 🔧 Bump version number 2022-09-28 18:24:26 +02:00
e7f3c7e59c 🐛 Fix an issue with missing separator item 2022-09-28 18:24:01 +02:00
a59efb7fce 🏗 WIP: Shell rework 2022-09-27 22:27:33 +02:00
3483569410 🏗 WIP: Shell rework 2022-09-27 20:26:11 +02:00
5399bddfeb 🏗 WIP: Shell rework 2022-09-26 20:37:24 +02:00
a407515534 🚀 Version 5.6.1 2022-09-24 12:56:14 +02:00
a682d0cfb0 🐛 Merge fixes from 'dev/5.6' into dev/6.0 2022-09-23 16:48:47 +02:00
b827ffb869 🔧 Bump version number 2022-09-23 16:46:23 +02:00
bdb718598e 🐛 Various bugfixes
- Fixes issue with `scanApps` being non-optional in custom configuration
- Fixes issue with position of separator if Xdebug is not detected
- Ensure that `isRunningSwiftUIPreview` modifier always return false for debug builds
2022-09-23 16:46:13 +02:00
ddfc73e033 🐛 Resolve issue with determining PATH (#194)
In previous builds, PHP Monitor would use interactive mode when opening
a /bin/zsh shell, in order to be able to load the full PATH.

This is a problem because when launching PHP Monitor via the command
line or when you have some interactivity in an actual interactive
shell, it is possible to get stuck waiting for a particular input
which will effectively 'freeze' PHP Monitor's shell.

There are two options to fix this:
1) work with a timeout, which may or may not return a PATH
2) use a non-interactive shell and source .zshrc

I chose option 2, which is the more robust choice. If no .zshrc file
exists, it is also not sourced to avoid warnings or errors from ending
up in the PATH.
2022-09-23 16:44:06 +02:00
cfae520984 👌 Correctly resolve tagged version (#195) 2022-09-22 18:43:09 +02:00
e871a00490 👌 Add additional commentary to new shell classes 2022-09-21 21:42:22 +02:00
1d396202db 👌 Add PATH to SystemShell 2022-09-21 21:31:00 +02:00
39769d815f 🚛 Move around files 2022-09-21 21:06:11 +02:00
90a69338f7 🏗 Add additional test 2022-09-20 20:53:15 +02:00
3f25759d4f 🏗 Fix SwiftLint, WIP shell rework 2022-09-20 20:49:29 +02:00
4494a0555f 🚧 WIP: Shell rework 2022-09-20 00:33:58 +02:00
0d86f3ded6 📝 Update README, contribution guidelines 2022-09-18 14:09:36 +02:00
0c176493e5 🔀 Merge branch 'main' into dev/5.6 2022-09-18 14:08:48 +02:00
71da62f954 📝 Update contribution guidelines 2022-09-18 14:08:10 +02:00
d6781568a3 📝 Update README 2022-09-18 13:39:40 +02:00
fc27131cca 👌 Add support for <= and < version constraints
I am entirely unsure why one would need these, but I figured I'd get
these in the app before I start the work on PHP Monitor 6.0.

This ensures all common version constraints can now be parsed correctly.
2022-09-18 00:06:37 +02:00
c9c7e14416 👌 Add support for <= and < version constraints
I am entirely unsure why one would need these, but I figured I'd get
these in the app before I start the work on PHP Monitor 6.0.

This ensures all common version constraints can now be parsed correctly.
2022-09-18 00:05:37 +02:00
bb124bd0ee 👌 Cleanup and removal of unneeded dump 2022-09-17 23:16:49 +02:00
c35e7781f4 🔥 Remove unneeded plist file 2022-09-17 23:14:39 +02:00
0947dc5ecc 🚀 Version 5.6 2022-09-16 19:33:42 +02:00
286cdd00e9 🔧 Prepare for release 2022-09-16 19:31:32 +02:00
61528cea46 🏗 WIP 2022-09-14 19:05:14 +02:00
883f5a1a5d 🔀 Merge branch 'dev/5.6' into dev/6.0 2022-09-10 21:46:17 +02:00
42b79d3cb3 🔧 Upgrade to Xcode 14 2022-09-10 21:44:17 +02:00
36aa41568c 🐛 Fix issue with minimum width w/ hidden UI 2022-09-10 21:43:26 +02:00
95729c5315 ♻️ Single target, multiple configurations 2022-09-10 21:21:58 +02:00
f02e45486e ♻️ Refactor ActivePhpInstallation 2022-09-09 22:18:52 +02:00
6ddddc744a 🔧 Add target for PHP Monitor SE 2022-09-09 21:46:20 +02:00
273c51f702 🔧 Update credits URLs 2022-09-09 21:41:20 +02:00
186f80c90e Allow more UI tweaking 2022-09-08 18:14:22 +02:00
d93af814c9 👌 Fix extension visibility of NSMenu 2022-09-08 17:21:41 +02:00
f4885f7dbc 👌 Update pre-release PHP version notice 2022-09-08 17:20:30 +02:00
805c9f5e6a Add new Preferences panel for UI tweaking 2022-09-07 21:40:43 +02:00
183d0bbc30 Allow hiding of global version switcher 2022-09-07 21:14:56 +02:00
4855c14d28 ♻️ Refactor Preferences & PreferenceName
Also added a few new preferences related to toggling specific menu items
based on your personal choices.

(These new settings still need to be added to the UI.)
2022-09-07 20:33:23 +02:00
588398ea76 🍱 New screenshots with updated UI 2022-09-06 18:02:27 +02:00
d2502cfba2 Improved site isolation switch (#191) 2022-09-05 21:09:31 +02:00
8d46fa8a4e 👌 Right-clicking a row selects it in domain list 2022-09-05 20:05:16 +02:00
e59b89ea49 🔧 Tweak URLs to reference phpmon.app domain 2022-09-05 19:55:41 +02:00
18b103bf9c 🚀 Version 5.5.1
This release fixes an issue that could occur if your username and your
home directory have different names. (#189)
2022-09-01 17:30:55 +02:00
9b8de47f5d Fix file membership so all tests pass again 2022-09-01 17:27:17 +02:00
da2934c2e5 Fix file membership so all tests pass again 2022-08-31 17:08:51 +02:00
9de4fc6712 🐛 Don't use whoami and use NSHomeDirectory()
- This commit replaces the usage of `whoami` with `id -un`.
- This also changes all `~` replacements with the result of calling
  the `NSHomeDirectory()` which may differ from `id -un` (#189)
2022-08-29 18:15:13 +02:00
4f4c950349 🐛 Don't use whoami and use NSHomeDirectory()
- This commit replaces the usage of `whoami` with `id -un`.
- This also changes all `~` replacements with the result of calling
  the `NSHomeDirectory()` which may differ from `id -un` (#189)
2022-08-29 18:06:11 +02:00
331ca8a9a4 🚀 Version 5.5 2022-08-28 15:24:28 +02:00
87e08e4607 🔧 Use icon for stable build 2022-08-24 20:33:35 +02:00
845235a276 🔧 Bump build number for new build 2022-08-24 20:28:12 +02:00
7587126a42 🐛 Potential fix for parsing Valet version (#188) 2022-08-24 20:27:40 +02:00
f4b1e0745a 🐛 Potential fix for parsing Valet version (#188) 2022-08-24 20:27:19 +02:00
c7bb4c1d37 ♻️ Refactor submenu creation 2022-08-22 19:10:36 +02:00
a17512bfad 📝 Update README 2022-08-22 18:48:43 +02:00
a85e016b4a 📝 Update README 2022-08-22 18:47:47 +02:00
1292e91b33 ♻️ Cleanup 2022-08-18 17:38:46 +02:00
8c55fee18d ♻️ Refactor NSMenu structuring 2022-08-18 02:12:24 +02:00
663082d725 ♻️ Refactor NSMenu structuring
* Added a different way to create menus
* Added NoDomainResultsView (WIP)
2022-08-18 01:59:06 +02:00
fcdb4a8993 Allow opening of PHP Doctor via First Aid menu 2022-08-16 19:35:18 +02:00
9134f08ec9 👌 Fix no warnings view 2022-08-16 19:29:15 +02:00
b281df3bbd ♻️ Correctly refresh warnings 2022-08-15 01:57:22 +02:00
a9f9c38e0d ♻️ Rework how the user's PATH is loaded 2022-08-15 01:47:55 +02:00
bbbdce6b44 ♻️ Reworked helper scripts
- Add 'Welcome Tour' to First Aid menu
- Updated 'Welcome Tour'
- Helpers are now always written to ~/.config/phpmon/bin
- Updated helpers (now symlinked)
- Updated checks for when to symlink helpers
2022-08-14 23:57:46 +02:00
237185995d 🔥 Removed assets from tour 2022-08-14 22:23:39 +02:00
48f950fc3a 🐛 Fix translation string (#185)
This ensures that the "failed to check for update" modal now displays
the correct localized string.
2022-08-14 22:22:06 +02:00
2ee0934080 🔧 Make PHP Doctor optional (preference) 2022-08-13 23:16:10 +02:00
cfbb83976d 👌 Tweak preview 2022-08-12 21:07:38 +02:00
4e5b178e36 🏗 WIP: Tweaks to PHP Doctor 2022-08-12 20:50:27 +02:00
0c59d14da5 🐛 Fix isWriteableFile:atPath 2022-08-11 22:41:47 +02:00
2a9c8e6830 Check if /usr/local/bin helper is writable 2022-08-10 21:20:11 +02:00
78e750d764 Check if running the app with Rosetta 2022-08-10 21:04:23 +02:00
c1c7561361 🏗 WIP: Warning manager 2022-08-09 21:55:59 +02:00
f90925ee17 🏗 WIP: Warnings window & views 2022-08-09 20:31:17 +02:00
ccfb15c83c ♻️ Use WindowController instead of WC
- Renamed `ProgressWC` to `TerminalProgressWindowController` so it
  better reflects the functionality of the class.

- Renamed all `-WC` suffixed classes to `-WindowController`. This is
  cleaner because it avoids referencing water closets. 🚽

- Fixed some instances where the copyright notice used the wrong
  filename. All window controller classes are now accurate.
2022-08-09 18:04:18 +02:00
bcc80b5210 👌 More SwiftUI tuning (automatic height) 2022-08-05 20:05:29 +02:00
023043a81d 🍱 Further tweaks to onboarding view 2022-08-03 19:10:13 +02:00
a2c93833df 🍱 Tweaked onboarding view 2022-08-01 22:39:21 +02:00
8b6267f411 👌 Fix WarningView styling 2022-08-01 21:18:20 +02:00
1bff75311b Add WarningView 2022-07-31 21:27:52 +02:00
7a580eef0c 📝 Update README 2022-07-29 18:14:24 +02:00
2306529936 ♻️ Differentiate between folder and file existence
This also fixes #182, because it introduces a check for Valet's config
directory, which does not exist if Valet has not been installed yet.
2022-07-28 21:26:41 +02:00
08fdcdbc6c 👌 Simple cleanup 2022-07-27 20:38:39 +02:00
8cb8e5e409 🍱 Visual changes to onboarding screen 2022-07-26 20:30:19 +02:00
6094f83e98 👌 Do not require window from storyboard 2022-07-26 19:36:27 +02:00
cdb4b60487 👌 Add warning message for WIP launch screen 2022-07-26 19:34:30 +02:00
ae5bed2532 🔀 Merge branch 'feature/onboarding' into dev/5.5 2022-07-26 19:32:45 +02:00
f098ffbf3d ♻️ Consistency in naming of window controllers 2022-07-26 19:30:35 +02:00
0a55b45c60 🔧 Prepare 5.5 branch for dev builds 2022-07-25 21:40:43 +02:00
418d1e2479 Add support for custom environment vars (#183)
This commit adds support for custom environment variables, which can be
set in PHP Monitor's custom configuration file.

Let's say you wish to customize the `COMPOSER_HOME` env variable, like
in #183. You can fix this like so:

```json
{
    "scan_apps": [],
    "services": [],
    "presets": []
    "export": {
        "COMPOSER_HOME": "/absolute/path/to/composer/folder"
    }
}
```

Please note that while it is possible to set the `PATH` this way, you
WILL MOST CERTAINLY break PHP Monitor in the process. Setting other
environment variables should generally not pose an issue, unless said
environment variable affects the output of the shell that PHP Monitor
uses internally.
2022-07-25 21:40:02 +02:00
fa3ec2aaa3 🏗 WIP: Present OnboardingWC if launch count >= 1 2022-07-25 21:11:24 +02:00
a1df2deec5 👌 Cleanup 2022-07-25 20:48:26 +02:00
8fb43f7a16 🍱 Fix indentation 2022-07-13 22:22:30 +02:00
8a8d32cb5d 🍱 Tweaked onboarding screen 2022-07-13 11:27:32 +02:00
6e3bb1d322 Added onboarding sample 2022-07-08 21:13:46 +02:00
cac7048d92 👌 Use MainActor for methods 2022-07-08 20:44:40 +02:00
1aa051e12c 🔀 Merge branch 'dev/5.4' into dev/5.5 2022-07-08 20:42:28 +02:00
58fd045bdf 🚀 Version 5.4.1 2022-07-08 14:07:37 +02:00
2fc71303df 👌 Update README, improve modals 2022-07-08 14:04:35 +02:00
2c61d991d6 👌 Improve global composer check 2022-07-07 23:22:32 +02:00
beca09b76f 📝 Updated README 2022-06-29 15:32:52 +02:00
5c3e856a7b 🐛 Check for platform issue after switch (#178) 2022-06-29 15:09:36 +02:00
6fbbd499f8 🐛 Gracefully detect #178 during startup 2022-06-29 13:28:12 +02:00
1066bdc653 🚀 Version 5.4 2022-06-28 12:58:36 +02:00
4ef5918b7a 🔀 Merge branch 'dev/5.4' into dev/5.5 2022-06-23 17:36:22 +02:00
e45db50f48 🔧 Final dev build 2022-06-23 17:30:54 +02:00
8a7f045bb2 📝 New screenshots (including dark mode) 2022-06-22 19:21:33 +02:00
10272f3d7e 📝 Update README 2022-06-21 23:18:15 +02:00
96ce462021 📝 Update README and SECURITY 2022-06-20 19:10:43 +02:00
8b635f2a14 🔧 Bump version number 2022-06-20 18:53:54 +02:00
f8f3fd5c9b 👌 Improve macOS Ventura appearance (#176) 2022-06-20 18:49:43 +02:00
6801283597 🐛 Fix typo when PHP switch failed 2022-06-19 13:39:25 +02:00
cf03727dc0 🏗 Use @MainActor on MainMenu 2022-06-19 13:08:54 +02:00
25a7dded73 🐛 Fix typo when PHP switch failed 2022-06-19 13:08:19 +02:00
c5fd43312f 🏗 Use @MainActor for BetterAlert 2022-06-18 17:59:43 +02:00
ea7572ffbb 👌 Fix log message 2022-06-15 18:15:17 +02:00
4d5b5de84b 👌 Copy file, do not move 2022-06-15 17:54:08 +02:00
721bb32087 👌 Updated menu 2022-06-14 23:13:41 +02:00
1fe086d53e 👌 Move legacy .phpmon.conf.json to new path 2022-06-14 22:48:07 +02:00
347a9b7345 📝 Updated README about presets 2022-06-14 22:35:03 +02:00
e0c087dbcb 🚀 Version 5.3.2 2022-06-14 18:23:09 +02:00
fd34deb7bd 👌 Toggle service via button 2022-06-12 22:26:35 +02:00
ccb0d96453 ️ Use EmptyView for empty state 2022-06-12 13:37:27 +02:00
d821968a49 👌 Allow per-row customization 2022-06-12 13:26:24 +02:00
7d7a38546a 🐛 Apply fixes from v5.3.2 2022-06-12 12:07:24 +02:00
30059353fe New Features
* Differentiate between services running as root and current user
* Support for custom services (via config.json)
* Renamed "Restart All Services" to "Restart Valet Services"
* Use SwiftUI for Stats, Services and Header view
* Added Color extension for debugging (PAINT_PHPMON_SWIFTUI_VIEWS)
2022-06-11 23:18:36 +02:00
090440abc8 ♻️ Rename manager property 2022-06-11 20:19:45 +02:00
ceeba611d0 🏗 WIP 2022-06-11 20:11:11 +02:00
f1feb11baa 🏗 WIP 2022-06-11 13:27:17 +02:00
90a02f364a 🏗 WIP 2022-06-10 19:44:31 +02:00
6b8c68b058 👌 Tweak phrasing of isolation info 2022-06-09 18:22:29 +02:00
fb34ea7c89 👌 New StatsView which uses SwiftUI 2022-06-09 18:08:14 +02:00
507d4785aa 🚀 Version 5.3.1 2022-06-08 18:36:24 +02:00
0c0045aead 👌 Re-check compatibility after (un)isolate 2022-06-08 18:35:27 +02:00
1fdf687c15 👌 Handle additional states 2022-06-08 18:26:06 +02:00
1040bcd037 👌 Cleanup 2022-06-08 16:01:31 +02:00
655cd52ac4 👌 Popover with SwiftUI view 2022-06-08 15:38:18 +02:00
2229f01eb0 🔧 Learn more about presets 2022-06-07 20:10:49 +02:00
f95eb7023f 🔧 Global accent color based on icon color 2022-06-05 22:18:14 +02:00
320e1ad3c5 🔧 New dev build 2022-06-05 14:22:59 +02:00
e1880d9dfc 👌 Granular notification control 2022-06-05 14:21:08 +02:00
998bbd231a ♻️ Refactor preferences window 2022-06-05 12:52:59 +02:00
fbf2158488 👌 Improved alerts, localization 2022-06-05 03:03:00 +02:00
94df551b4b 👌 Show alert with what will be rolled back 2022-06-03 23:52:40 +02:00
01288154a7 👌 Better alerts (WIP) 2022-06-03 22:57:22 +02:00
29b4fe2962 Load persisted revert & allow revert
This also moves the location of the .phpmon.conf.json file to a new
location: ~/.config/phpmon/config.json.
2022-06-02 20:31:01 +02:00
5907d9f689 Build revertable preset (#175)
For any given preset, we need to be able to determine what we'd need to
do in order to revert the preset. That means figuring out what the diff
is between the current PHP setup and what the preset would change.

We'll persist that to its own preset, which can be reapplied if needed.
The "revertable" preset is persisted to the following file:

    ~/.config/phpmon/preset_revert.json

If that file is present and valid, the app should enable the 'revert'
option. (That still needs to be implemented.)
2022-06-01 21:01:18 +02:00
86d74619b1 📝 Use non-standard way to add dark images 2022-06-01 12:47:54 +02:00
0c09e808bd 📝 Test dark mode image 2022-06-01 12:44:22 +02:00
da8659adba Enable version switching in presets
* Moved Preset to dedicated file
* Added async friendly PHP version switch
* Added conditional PHP switch based on Preset
2022-05-31 21:43:24 +02:00
bbebe78997 Updated UI for presets 2022-05-30 19:34:10 +02:00
19aa804cbb 🐛 Alert user about issue #174 2022-05-29 22:30:11 +02:00
64491c6fe1 Allow application of presets 2022-05-29 12:32:48 +02:00
382cb177be Correctly load presets from config file 2022-05-21 15:24:40 +02:00
e9f0d19d9a 🔧 Use dev icon 2022-05-19 20:12:45 +02:00
7709cd9f6c 👌 Cleanup 2022-05-19 20:12:30 +02:00
83eac7bf04 👌 Save multiple Xdebug modes 2022-05-19 20:01:28 +02:00
db8197df3d 👌 Handle multiple modes w/ Xdebug menu item
This commit also fixes the width of the header items.
2022-05-19 19:06:03 +02:00
40e404fe24 👌 Prototype (non-functional) for presets 2022-05-19 01:50:15 +02:00
e7f80ebce8 Switch Xdebug mode 2022-05-19 01:05:06 +02:00
990152d77d Allow replacing of config values 2022-05-19 00:08:26 +02:00
2e61479c75 Allow reading of configuration files 2022-05-18 19:45:16 +02:00
0579ebb1c1 ️ More efficient extension parsing 2022-05-18 19:23:56 +02:00
f9df86851c Tweak description about sudoers files 2022-05-15 15:42:01 +02:00
b0c62e226a 👌 Code cleanup 2022-05-15 15:15:49 +02:00
1392b6e4a0 🔧 New version under development 2022-05-13 17:04:45 +02:00
12163bc87b 🔀 Merge branch 'main' into dev/5.4 2022-05-13 17:04:07 +02:00
c645bb7610 🚀 Version 5.3
Merge branch 'dev/5.3'
2022-05-13 16:33:48 +02:00
e6574966da 📝 Clarify network requests 2022-05-13 00:38:42 +02:00
1e9cfff05e 📝 Updated README 2022-05-13 00:34:57 +02:00
bd34c2b255 👌 Improved nginx file parsing 2022-05-13 00:24:54 +02:00
c040ac3200 🔧 Prepare for release build 2022-05-10 19:20:47 +02:00
6c6888c9cb 👌 Bump version number for new beta build 2022-05-10 19:02:37 +02:00
78cb6922b3 🐛 Fix issue with version parser 2022-05-10 19:01:37 +02:00
c16377c688 👌 Improved updater 2022-05-10 18:52:48 +02:00
540ea5c310 👌 Changes to updater 2022-05-10 18:34:34 +02:00
4ba2b25f18 👌 App version parsing 2022-05-10 18:09:22 +02:00
81b75dcaa8 👌 Async unlink and unproxy to prevent main thread hang 2022-05-10 10:44:24 +02:00
884784d024 🐛 Handle trailing semicolon (#170) 2022-05-10 10:26:48 +02:00
e81ff2870d Add test and prepare for new prerelease 2022-05-10 01:00:18 +02:00
7c631099b2 👌 Fix regular expression 2022-05-10 00:43:17 +02:00
f7a98b88a7 👌 Improve proxy subject validation 2022-05-10 00:38:13 +02:00
3fc21fff2a ♻️ Cleanup 2022-05-10 00:18:45 +02:00
0306c2b726 ♻️ Clarify parameter name 2022-05-10 00:16:47 +02:00
9d822df54e Check for updates 2022-05-10 00:14:48 +02:00
f413b84a45 🏗 WIP: Check for updates 2022-05-09 23:41:52 +02:00
b82811e6bf 🐛 Fix issue with tertiary action 2022-05-09 23:01:36 +02:00
af922664ab 🏗 WIP: Check for updates 2022-05-09 17:28:35 +02:00
8b73e69495 🐛 Fix issue with listing extensions 2022-05-09 15:27:55 +02:00
29a9e14741 🐛 Fix crash issue with .DS_Store 2022-05-09 15:27:43 +02:00
997fb27596 👌 Update copyright, verbose logging tweak 2022-05-07 18:43:36 +02:00
c171df0a93 Add additional verbosity option (#169) 2022-05-07 13:32:45 +02:00
1c15a4e07f Add (un)secure option for proxies 2022-05-06 18:27:03 +02:00
5067c7b87f 🏗 WIP: Add secure/unsecure option for proxy 2022-05-05 21:29:03 +02:00
f679231ade ♻️ Cleanup 2022-05-05 20:09:40 +02:00
f725e09f55 ♻️ WIP: Parsing logic for configuration file 2022-05-05 20:05:52 +02:00
99881bf4cd ♻️ WIP: Refactor determining PHP configuration
The way .ini files are loaded is changing with this commit. Instead of
directly saving which extensions were found, the extensions loaded are
now determined by reading the .ini file.

However, there are some performance concerns here. Perhaps it is worth
*not* reloading the contents of these files unless absolutely necessary.
2022-05-04 20:25:59 +02:00
2987464da8 📝 Added information about linter 2022-05-03 18:20:11 +02:00
4d04275c57 Added linting 2022-05-03 18:16:26 +02:00
790f63e8c9 🔧 Disable Xdebug item for 5.3 2022-05-02 18:26:02 +02:00
86b49812c3 ♻️ Cleanup menu item generation (#168) 2022-05-02 18:24:44 +02:00
ef9e0fd916 Begin work on Xdebug mode switcher (#168) 2022-05-01 22:07:18 +02:00
af8807f799 🔀 Merge bugfixes from 5.2 into 5.3 2022-04-23 12:25:18 +02:00
4eea13f059 🚀 Version 5.2.2
Merge branch 'dev/5.2'
2022-04-22 19:50:57 +02:00
ba93ed93e4 Allow opening of proxies in browser 2022-04-21 19:18:05 +02:00
932a0fe176 Add 'Remove Proxy' to right-click menu 2022-04-21 19:08:40 +02:00
3cff2d6469 🐛 Fix issue w/ flag evaluation order (#165) 2022-04-20 22:31:20 +02:00
df506e4128 🐛 Fix various minor issues (discovered via #162)
- Renaming the configuration files from `www.conf` to the backup
  (`disabled-by-phpmon`) will now succeed if the `disabled-by-phpmon`
  file already exists. This would fail if the `disabled-by-phpmon` file
  already existed in previous builds.

- The PHP-FPM alert when there's an issue with a missing socket
  configuration file has been tweaked and now contains a workaround if
  you want to run a newer version of PHP (e.g. PHP 8.2) that is not
  officially supported by Valet yet.

- When attempting to list the PHP version numbers, the `parse()` method
  is now used, as opposed to `PhpVersionNumber.make()`, which couldn't
  correctly handle pre-release versions of PHP.

- Updated tests to reflect these changes to `PhpVersionNumber`.
2022-04-20 12:19:02 +02:00
eb80214785 ✏️ Updated copy 2022-04-19 20:39:51 +02:00
80a4e361a4 🔧 Prepare for new DEV build 2022-04-19 20:33:19 +02:00
2af88b2bee ✏️ Update copy about non-standard TLDs 2022-04-19 20:26:44 +02:00
5048ccab8c 👌 Update various TODO items 2022-04-18 12:00:54 +02:00
66d13c92d5 Run the valet proxy command (#105) 2022-04-18 11:59:14 +02:00
836b076da9 👌 Cleanup, ensure dynamic form works correctly 2022-04-17 14:33:59 +02:00
1a75838a3b Set up proxy view strings and outlets 2022-04-17 14:02:44 +02:00
a18b7962a7 ♻️ Fix link 2022-04-16 23:21:29 +02:00
84548634ec Add proxy view 2022-04-16 23:19:13 +02:00
419ebe61f7 Add selection view 2022-04-14 14:56:51 +02:00
c45817b127 Added new UI for proxies to storyboard 2022-04-13 19:14:08 +02:00
2c0c0c5a11 Correctly detect secured proxies 2022-04-12 20:43:57 +02:00
1b8d6311ba ♻️ Refactor displaying domains 2022-04-12 17:36:18 +02:00
f0f7a3f7d6 👌 Scan proxies (#105) 2022-04-11 22:56:40 +02:00
8304d774c3 ♻️ Refactoring of files and tests 2022-04-02 15:48:21 +02:00
faeea4e866 Ensure normal nginx file does not have proxy 2022-03-31 18:28:47 +02:00
6470daf7d3 Added test to parse the proxy address 2022-03-31 18:27:26 +02:00
94139a3669 🚚 Moved test files into separate directories 2022-03-31 18:09:50 +02:00
f3b1172d0e 🚀 Version 5.2.1
This is a bugfix release that fixes the isolation command (#158).
2022-03-31 13:51:46 +02:00
8057019898 🐛 Fix isolation command (#158) 2022-03-31 13:35:23 +02:00
9b59fc5dae 👌 Cleanup proxies 2022-03-31 13:34:56 +02:00
75f4377de8 Added tooltips next to PHP version 2022-03-31 13:29:04 +02:00
d3657716c4 ♻️ Added ValetProxy struct 2022-03-30 21:26:53 +02:00
a13990b96f ♻️ Rename SiteList to DomainList 2022-03-30 19:19:36 +02:00
4c7aa7fead Add UI for displaying proxies (#105) 2022-03-29 21:40:10 +02:00
32278533bf 🚀 Version 5.2
Merge branch 'dev/5.x'
2022-03-29 17:32:26 +02:00
39908f7fc5 🔧 Bump build 2022-03-29 17:32:09 +02:00
347d79c88d 👌 Cleanup 2022-03-29 17:25:47 +02:00
9bc117e9f5 🔥 Remove icon 2022-03-29 17:18:44 +02:00
ba5fbed9be 📝 Add logo 2022-03-29 17:18:26 +02:00
211556d5ce 📝 Include system administrator requirement 2022-03-29 14:16:28 +02:00
066d7bc217 🐛 Restoring Homebrew permissions uses admin group now 2022-03-29 14:14:39 +02:00
f072ceae37 📝 Updated FAQ 2022-03-29 09:55:38 +02:00
273dac1ca7 📝 Updated README with PHP upgrade instructions 2022-03-29 09:51:56 +02:00
f3b170ba14 🔧 Prepare for release 2022-03-29 09:23:57 +02:00
78d8030ed6 Fix tests 2022-03-25 23:55:41 +01:00
a300d2f4cf 👌 Show isolation is unavailable 2022-03-25 23:54:32 +01:00
96a658073e 📝 Update README and SECURITY 2022-03-25 17:26:58 +01:00
8395ba407d 👌 Use new, cleaner layout for screenshot 2022-03-25 17:11:40 +01:00
f80e3fed2b 👌 Disable border on table 2022-03-25 16:40:54 +01:00
b48edf7409 📝 New screenshot in README 2022-03-23 19:50:58 +01:00
e0a0eb089d 🔧 Prepare for a new dev build 2022-03-23 18:52:54 +01:00
60b126333d 👌 Extra startup check for invalid config.json
- Up to 50 sites are now preloaded (up from 30)
- No longer crash when invalid config.json is found (only at launch)
- Added `evaluateFeatureSupport` to Valet.swift
- Load configuration during launch checks instead
2022-03-23 18:46:35 +01:00
649a3f4fb5 👌 Handle correct version number 2022-03-23 18:15:17 +01:00
9a326928f3 🐛 Ensure unknown driver is at bottom 2022-03-21 18:45:41 +01:00
52f87ca18a 👌 Add tooltips to First Aid menu items 2022-03-21 18:33:25 +01:00
ad2d2cb57f Allow sorting of site list 2022-03-21 18:33:12 +01:00
22c0021ada 🐛 Workaround broken JSON file (AddSiteVC.swift:66) 2022-03-20 15:56:07 +01:00
2cfc5731fb 👌 Re-enable debugger, site loading 2022-03-20 15:07:34 +01:00
1d74e1536c Add default site to site list (#125) 2022-03-20 14:38:58 +01:00
e6b2ddf2ad 👌 Fix "WordPress" name in fake site window 2022-03-19 15:54:17 +01:00
62fda6224e 👌 Updated fake sites 2022-03-19 15:21:50 +01:00
083f8ebec8 Add marketing mode 2022-03-19 15:15:03 +01:00
aec8fb1168 🔧 Prepare for a new dev build 2022-03-18 18:38:11 +01:00
d5d9b38ed6 ♻️ Reworked "Fix My Valet" to use built-in switcher 2022-03-18 18:36:49 +01:00
9a6975e3d9 ♻️ Include HotKey source code 2022-03-18 18:21:55 +01:00
d1c40f2eb5 🐛 Fix issue with generator 2022-03-18 15:54:53 +01:00
ad58661449 🔥 Cleanup 2022-03-17 23:32:40 +01:00
1d6cfd419e Fix tests 2022-03-17 23:32:13 +01:00
15182ea15a 👌 Cleanup writing helper files 2022-03-17 23:28:03 +01:00
c43e00c88d 👌 Add source_php{version} helpers 2022-03-17 21:21:05 +01:00
25c7004368 🔥 Remove impossible functionality 2022-03-17 20:20:23 +01:00
02ba57cd64 🏗 TODO: Automatic isolated PHP handling 2022-03-17 19:54:13 +01:00
c2dc6302c0 ️ Fix performance issue with async 2022-03-17 19:18:48 +01:00
af9f30a123 ️ Fix performance bottleneck related to view drawing 2022-03-17 18:38:26 +01:00
28c5754800 🐛 Disable www.conf file when switching versions (#152) 2022-03-17 18:03:00 +01:00
48c1d48573 👌 Add support for Typo3 (#153) 2022-03-17 17:49:10 +01:00
582bf0e12c 🐛 Fix storyboard 2022-03-17 17:48:50 +01:00
46b30bbff4 🐛 Ensure isolation is available 2022-03-16 23:36:53 +01:00
372011ca08 Add site isolation option to context menu 2022-03-16 23:30:26 +01:00
7255792910 ♻️ WIP: Various changes 2022-03-16 22:17:17 +01:00
0c96b11b05 ♻️ WIP: Modified layout 2022-03-16 19:40:01 +01:00
ea4da12d3b ♻️ WIP: Cell rendering in site list 2022-03-16 19:15:57 +01:00
8419ebad10 👌 Adjust internal switcher 2022-03-16 18:04:45 +01:00
09a5cf836a 📝 Added TODO comments 2022-03-15 22:40:40 +01:00
1a1a53b472 ♻️ Preliminary refactor for Valet 3.0 (#148) 2022-03-15 22:39:46 +01:00
a8bad8447a 👌 isolatedVersion as a lazy property 2022-03-15 18:27:38 +01:00
ca8f5a8fbe Speed up nginx parsing 2022-03-15 18:16:28 +01:00
a0e7aec228 Parse nginx files + tests 2022-03-14 23:35:08 +01:00
26badc759e 🏗 Conditional PHP 5.6 support 2022-03-14 21:31:30 +01:00
e21c2168ea 🏗 Add isolation icon 2022-03-14 19:39:04 +01:00
589ab3664e 🏗 Add feature flag based on Valet version 2022-03-14 19:19:14 +01:00
48b4f9b160 🏗 Added initial TODO items for #148 2022-03-14 19:13:38 +01:00
400 changed files with 34139 additions and 6187 deletions

View File

@ -1,33 +0,0 @@
---
name: Bug report
about: Something going wrong? File a bug report!
title: ''
labels: bug
assignees: nicoverbruggen
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Required information**
- Did you consult the FAQ in the README? [yes/no]
- Did you try "Fix My Valet"? [yes/no]
- OS: [e.g. macOS Monterey]
- PHP Monitor version [e.g. v5.0.1]
**Additional context**
Add any other context about the problem here.

62
.github/ISSUE_TEMPLATE/bug_report.yaml vendored Normal file
View File

@ -0,0 +1,62 @@
name: 🐞 Bug report
description: Something going wrong? File a bug report!
title: "[Bug] <title>"
labels: [bug]
assignees: nicoverbruggen
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: A concise description of what you're experiencing.
validations:
required: false
- type: textarea
attributes:
label: Expected Behavior
description: A concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Open this menu...
2. Click here...
3. Scroll to...
4. See error...
validations:
required: false
- type: textarea
attributes:
label: Environment
description: |
examples:
- **macOS**: (e.g. Ventura 13.3)
- **Valet**: (e.g. 4.0)
- **PHP Monitor**: (e.g. 5.8)
value: |
- macOS:
- Valet:
- PHP Monitor:
render: markdown
validations:
required: false
- type: textarea
attributes:
label: Do you have a log file (or a screenshot) or any additional information?
description: |
You can start extra verbose logging by running: `touch ~/.config/phpmon/verbose` and restarting PHP Monitor.
You can find the latest log in: `~/.config/phpmon/last_session.log`. Please attach it here!
(You can attach images or log files by clicking this area to highlight it and then dragging files in.)
validations:
required: false

View File

@ -1,22 +0,0 @@
---
name: Feature request
about: Suggest an enhancement.
title: ''
labels: enhancement
assignees: nicoverbruggen
---
_Enhancement requests that are not immediately approved will be moved to a discussion instead._
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -0,0 +1,31 @@
name: 😎 Feature request
description: Do you have a great idea for an enhancement that could improve PHP Monitor?
title: "[Feature] <title>"
labels: [enhancement]
assignees: nicoverbruggen
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered. Please make sure you've checked the discussions tab as well. Enhancement requests that are not immediately approved will be moved to a discussion instead, so you will find some there.
options:
- label: I have searched the existing issues and discussions
required: true
- type: textarea
attributes:
label: Is this feature request related to a problem?
description: "A clear and concise description of what the problem is. For example: 'I am always frustrated when...'"
validations:
required: true
- type: textarea
attributes:
label: Describe the solution you'd like to see
description: What would be a user-friendly way of resolving this particular issue?
validations:
required: true
- type: textarea
attributes:
label: Additional information or context
description: Add any other context or screenshots about the feature request here.
validations:
required: false

23
.github/contributing.md vendored Normal file
View File

@ -0,0 +1,23 @@
# Contribution Guidelines
Thank you for your interest in contributing to PHP Monitor.
I consider this project a bit of a nice side-project to my daily gig, so it is very much a personal affair where I love to tinker around.
**While the code of the latest PHP Monitor release is public, many things are constantly in flux that may not be pushed to this repository yet.**
I don't mean to be rude, but I don't want other people involved with the project beyond simply contributing a few small things here and there, as has been the case in the past.
The extra mental overhead of having additional contributors to report to, whose code will need to be reviewed... it's a lot and it makes working on PHP Monitor less enjoyable for me.
Plus, at this point, the majority of PHP Monitor's main functionality is also done.
As a result, I may refer you to this file at some point. Again, I don't wish to be rude, but this general rule stands:
**Making any changes in a fork and opening a pull request without opening an issue first will most likely result in your PR being closed without mercy.**
To repeat, I am **not opposed** to small contributions and fixes, if they are **meaningful or insightful**.
To learn more, please check out the [pull request template](/.github/pull_request_template.md) which contains more information about my contribution requirements. (This will also show up when you open a new PR.)
Thank you for respecting this!

View File

@ -16,7 +16,7 @@ In short: It is usually best to *get in touch first* if you are making substanti
## About destination branches
Please keep in mind that `main` is reserved for the current code state of the latest release and should *never* be the destination branch unless a new release is happening. **Merge requests that target `main` will be closed without mercy.**
Please keep in mind that `main` is reserved for the current code state of the latest release and should *never* be the destination branch unless a new release is happening. **Pull requests that target `main` will be closed without mercy.**
Usually, the best target is the stable `dev/x.x` branch that corresponds with the latest major version that is released.

5
.gitignore vendored
View File

@ -1,5 +1,4 @@
phpmon.xcodeproj/project.xcworkspace
phpmon.xcodeproj/xcuserdata
PHP Monitor.xcodeproj/project.xcworkspace
PHP Monitor.xcodeproj/xcuserdata
.DS_Store
.DS_Store

15
.swiftlint.yml Normal file
View File

@ -0,0 +1,15 @@
disabled_rules:
- todo
- identifier_name
- force_try
- force_cast
opt_in_rules:
- empty_count
included:
- phpmon
- phpmon-tests
excluded:
- phpmon/Vendor

View File

@ -1,18 +1,62 @@
# DEVELOPER README
## ✅ Linting
This project uses the [SwiftLint](https://github.com/realm/SwiftLint) linter. You must install it and can run it like so:
```
swiftlint
```
It also automatically runs when you try to build the project. You'll get a warning if `swiftlint` is not installed, though. You can attempt to automatically fix issues:
```
swiftlint --fix
```
## 📦 Swift Packages
Starting from PHP Monitor 7.1, the app now uses various first-party package dependencies.
The following package dependencies are in use:
* [`NVAppUpdater`](https://github.com/nicoverbruggen/NVAppUpdater)
* [`NVAlert`](https://github.com/nicoverbruggen/NVAlert)
You may need an internet connection to download these dependencies, or you can also clone the dependencies and include them manually.
## ⚙️ Preferences
You can find the persisted configuration file in `~/Library/Preferences/com.nicoverbruggen.phpmon.plist`
These values are cached by the OS. You can clear this cache by running:
```
defaults delete com.nicoverbruggen.phpmon && killall cfprefsd
```
## 🔧 Build instructions
<img src="./docs/build.png" width="404px" alt="build button in Xcode"/>
### PHP Monitor
If you'd like to build PHP Monitor yourself, you need:
* Xcode (usually the latest version)
* The contents of this repository
Once you have downloaded this repository, open `PHP Monitor.xcodeproj`, and you should be able to immediately build the app for your system by pressing Cmd-R. This will create a debug build. (If Xcode complains about code signing, you can turn it off.)
Once you have downloaded this repository, open `PHP Monitor.xcodeproj`, and you should be able to build the app for your system by pressing Cmd-R. This will create a debug build. (If Xcode complains about code signing, you can turn it off.)
**Important**: The updater now gets automatically built and included as part of the main target.
If you'd like to create a production build, choose "Any Mac" as the target and select Product > Archive.
## ✅ Testing
In order to properly test everything, you will want to use the _PHP Monitor DEV_ target. There are unit and UI tests both.
You may sporadically see failures in UI tests due to the following error: `Invalid parameter not satisfying: point.x != INFINITY && point.y != INFINITY`. This seems to be an issue with Xcode that Apple may need to resolve? You can retry the tests in question and they should eventually pass.
## 🚀 Release procedure
1. Merge into `main`
@ -27,6 +71,12 @@ If you'd like to create a production build, choose "Any Mac" as the target and s
10. Update Cask with new version + hash
11. Check new version can be installed via Cask
## 🍱 Marketing Mode
You can enable marketing mode by setting the `PHPMON_MARKETING_MODE` environment variable. It preloads a list of (fake) domains in the domain window list for screenshot & marketing purposes.
launchctl setenv PHPMON_MARKETING_MODE true
## 🐛 Symbolication of crashes
If you have an archived build of the app and exported the DSYM, it is possible to symbolicate .ips crash logs.

View File

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2019 Nico Verbruggen
Copyright (c) 2019-2023 Nico Verbruggen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C41C1B3222B0097F00E7CF16"
BuildableName = "PHP Monitor.app"
BlueprintName = "PHP Monitor"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug.Dev"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C4F7807825D7F84B000DBC97"
BuildableName = "Unit Tests.xctest"
BlueprintName = "Unit Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C471E7BB28F9B90F0021E251"
BuildableName = "UI Tests.xctest"
BlueprintName = "UI Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C471E7AC28F9B4940021E251"
BuildableName = "Feature Tests.xctest"
BlueprintName = "Feature Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug.Dev"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C41C1B3222B0097F00E7CF16"
BuildableName = "PHP Monitor.app"
BlueprintName = "PHP Monitor"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "--v"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--cli"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--configuration:~/.phpmon_fconf_working.json"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--configuration:~/.phpmon_fconf_working_no_valet.json"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--configuration:~/.phpmon_fconf_broken.json"
isEnabled = "NO">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "EXTREME_DOCTOR_MODE"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
<EnvironmentVariable
key = "PAINT_PHPMON_SWIFTUI_VIEWS"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release.Dev"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C41C1B3222B0097F00E7CF16"
BuildableName = "PHP Monitor.app"
BlueprintName = "PHP Monitor"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug.Dev">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release.Dev"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C41C1B3222B0097F00E7CF16"
BuildableName = "PHP Monitor.app"
BlueprintName = "PHP Monitor"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug.EA"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
codeCoverageEnabled = "YES">
<Testables>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C4F7807825D7F84B000DBC97"
BuildableName = "Unit Tests.xctest"
BlueprintName = "Unit Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C471E7BB28F9B90F0021E251"
BuildableName = "UI Tests.xctest"
BlueprintName = "UI Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C471E7AC28F9B4940021E251"
BuildableName = "Feature Tests.xctest"
BlueprintName = "Feature Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug.EA"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
enableGPUValidationMode = "1"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C41C1B3222B0097F00E7CF16"
BuildableName = "PHP Monitor.app"
BlueprintName = "PHP Monitor"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "--v"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--cli"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--configuration:~/.phpmon_fconf_working.json"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--configuration:~/.phpmon_fconf_working_no_valet.json"
isEnabled = "NO">
</CommandLineArgument>
<CommandLineArgument
argument = "--configuration:~/.phpmon_fconf_broken.json"
isEnabled = "NO">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "EXTREME_DOCTOR_MODE"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
<EnvironmentVariable
key = "PAINT_PHPMON_SWIFTUI_VIEWS"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release.EA"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C41C1B3222B0097F00E7CF16"
BuildableName = "PHP Monitor.app"
BlueprintName = "PHP Monitor"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug.EA">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release.EA"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C406A5EF298AD2CE00B5B85A"
BuildableName = "PHP Monitor Self-Updater.app"
BlueprintName = "PHP Monitor Self-Updater"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Release"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C406A5EF298AD2CE00B5B85A"
BuildableName = "PHP Monitor Self-Updater.app"
BlueprintName = "PHP Monitor Self-Updater"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C406A5EF298AD2CE00B5B85A"
BuildableName = "PHP Monitor Self-Updater.app"
BlueprintName = "PHP Monitor Self-Updater"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1320"
version = "1.3">
LastUpgradeVersion = "1640"
version = "1.7">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
@ -27,14 +27,42 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<TestPlans>
<TestPlanReference
reference = "container:PHP Monitor.xcodeproj/PHP Monitor.xctestplan"
default = "YES">
</TestPlanReference>
</TestPlans>
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C4F7807825D7F84B000DBC97"
BuildableName = "phpmon-tests.xctest"
BlueprintName = "phpmon-tests"
BuildableName = "Unit Tests.xctest"
BlueprintName = "Unit Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C471E7AC28F9B4940021E251"
BuildableName = "Feature Tests.xctest"
BlueprintName = "Feature Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
<TestableReference
skipped = "NO"
parallelizable = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C471E7BB28F9B90F0021E251"
BuildableName = "UI Tests.xctest"
BlueprintName = "UI Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
@ -61,6 +89,29 @@
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<CommandLineArguments>
<CommandLineArgument
argument = "--v"
isEnabled = "NO">
</CommandLineArgument>
</CommandLineArguments>
<EnvironmentVariables>
<EnvironmentVariable
key = "EXTREME_DOCTOR_MODE"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
<EnvironmentVariable
key = "SLOW_SHELL_MODE"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
<EnvironmentVariable
key = "PAINT_PHPMON_SWIFTUI_VIEWS"
value = ""
isEnabled = "NO">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1640"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "C4F7807825D7F84B000DBC97"
BuildableName = "Unit Tests.xctest"
BlueprintName = "Unit Tests"
ReferencedContainer = "container:PHP Monitor.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

354
README.md
View File

@ -1,17 +1,13 @@
> If this software has been useful to you, I ask that you **please star the repository**, that way I know that the software is being used. Also, please consider leaving [a one-time donation](https://nicoverbruggen.be/sponsor) to support the project.
> You can also send me [feedback](https://twitter.com/nicoverbruggen) if the app came in handy.<br>**Thank you!** ⭐️
> **Note**
> If this software has been useful to you, I ask that you **please star the repository**, that way I know that the software is being used. Also, please consider [sponsoring](https://nicoverbruggen.be/sponsor) to support the project, as this is something I make in my free time. **Thank you!** ⭐️
<p align="center"><img src="./docs/logo.svg" alt="PHP Monitor Logo" width="500px" /></p>
<h1 align="center"><b>PHP Monitor</b> (phpmon)</h1>
**PHP Monitor** (or *phpmon*) is a lightweight macOS utility app that runs on your Mac and displays the active PHP version in your status bar. It's tightly integrated with [Laravel Valet](https://github.com/laravel/valet), so <u>you need to have it set up if you want to use all of the functionality of the app</u> (consult the FAQ below with info about how to set up your environment).
<p align="center">
<img src="./phpmon/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png" alt="phpmon icon" width="128px" />
</p>
<img src="./docs/screenshot.jpg" width="1280px" alt="phpmon screenshot (menu bar app)"/>
**PHP Monitor** (or *phpmon*) is a lightweight macOS utility app that runs on your Mac and displays the active PHP version in your status bar. It's tightly integrated with [Laravel Valet](https://github.com/laravel/valet), so <u>you need to have it set up before you can use this</u>.
<img src="./docs/screenshot50.jpg" width="1085px" alt="phpmon screenshot (menu bar app)"/>
<small><i>Screenshot: Showing the key functionality of PHP Monitor. You can also add new domains as links, manage various services, and perform First Aid to fix all kinds of common PHP link issues.</i></small>
<small><i>Screenshot: Showing the key functionality of PHP Monitor.</i></small>
It's super convenient to switch between different versions of PHP. You'll even get notifications (only if you choose to opt-in, of course)!
@ -19,31 +15,56 @@ It's super convenient to switch between different versions of PHP. You'll even g
PHP Monitor also gives you quick access to various useful functionality (like accessing configuration files, restarting services, and more).
You can also add new domains as links, isolate sites, manage various services, and perform First Aid to fix all kinds of common PHP link issues.
## 🖥 System requirements
PHP Monitor is a universal application that runs natively on Apple Silicon **and** Intel-based Macs.
* macOS 11 Big Sur or higher (supports macOS 12 Monterey)
* Homebrew is installed in `/usr/local/homebrew` or `/opt/homebrew`
* The brew formula `php` has to be installed (which version is detected)
* Laravel Valet 2.16.2 or higher (older versions might be compatible but are not supported)
* Your user account can administer your computer (required for some functionality, e.g. certificate generation)
* macOS 13.5 or later
* Homebrew is installed in the default location (`/usr/local/homebrew` or `/opt/homebrew`)
* Homebrew `php` formula is installed
* Optional but recommended: Laravel Valet
_You may need to update your Valet installation to keep everything working if a major version update of PHP has been released. You can do this by running `composer global update && valet install`._
_Starting with PHP Monitor 6.0, you do not need to have Laravel Valet installed for PHP Monitor to work. To get access to all features of PHP Monitor however, installing Valet is **recommended**._
For more information, please see [SECURITY.md](./SECURITY.md) to find out which version of the app is currently supported.
## 🚀 How to install
Again, make sure you have **Laravel Valet** installed first. Once that's done, you can install via Homebrew (recommended), or may download the latest release on GitHub.
Again, if you want to have access to *all features* of PHP Monitor, I recommend installing **[Laravel Valet](https://laravel.com/docs/master/valet)** first:
To install via Homebrew, run:
```sh
composer global require laravel/valet
valet install
valet trust
```
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
Currently, PHP Monitor is compatible with Laravel Valet v2, v3 and v4. Each of these versions of Valet support slightly different PHP versions, which is why legacy versions remain supported. Please note that some features are not available in older versions of Valet, like site isolation.
To upgrade your existing installation, run:
#### Manual installation (recommended, first time only)
brew upgrade phpmon
Once that's done, you can [download the latest release](https://github.com/nicoverbruggen/phpmon/releases/latest), unzip it and place it in `/Applications`.
(You may need to run `brew update` or `brew update-reset` first in order to update the cask file if you ran a Homebrew operation recently.)
#### Installation via Homebrew
*Prior to version 5.8, this was the recommended way of installing PHP Monitor.*
If you prefer to install the app via Homebrew, you can also run the following:
```sh
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
```
## ⬆️ How to update
The recommended method of updating the app to the latest version is to use **the built-in updater**.
If you have a very slow internet connection, the updater may report that the download has timed out. In that case, you may wish to manually update by [downloading the latest release](https://github.com/nicoverbruggen/phpmon/releases/latest) and placing the app in `/Applications`.
(You may also use Homebrew to update PHP Monitor, but this will require you to approve the app every time an update is installed. If you use the built-in updater, this won't be necessary.)
## ⚡️ Launchers (Alfred, Raycast)
@ -61,6 +82,16 @@ I wanted to be able to **see at a glance** which version of PHP was linked, and
Initially, I had an Alfred workflow for this — but it has now been replaced with this utility, which also does a good job at displaying additional information at a glance, like the current PHP version, memory limits, and more.
## 🐘 Why not use Laravel Herd?
_**Disclaimer**: The author is not affiliated with Laravel or the Laravel team, nor Beyond Code, who maintain Laravel Herd. PHP Monitor is an independent project._
If you don't need to customize your local PHP setup and just want an easy and ready-to-go environment to start coding, [Laravel Herd](https://herd.laravel.com) is probably more than sufficient for many use cases. They also offer paid features that may be useful to you or your team.
At this point, many people enjoy using Herd. However, Herd may not be for everyone, which is why other solutions to run PHP locally exist. If you need more customization and flexibility I encourage you to consider PHP Monitor in combination with Laravel Valet.
If you want to get as close as you can to a real server environment your best bet is probably to use a Docker container. I _highly_ recommend that you try different setups, and use what you like best.
## 🤬 The app won't start?!
PHP Monitor performs some integrity checks to ensure a good experience when using the app. You'll get a message telling you that PHP Monitor won't work correctly in a variety of scenarios.
@ -78,41 +109,63 @@ If you're still having issues, here's a few common questions & answers, as well
<details>
<summary><strong>Which versions of PHP are supported?</strong></summary>
<ul>
<li>PHP 5.6</li>
<li>PHP 7.0</li>
<li>PHP 7.1</li>
<li>PHP 7.2</li>
<li>PHP 7.3</li>
<li>PHP 7.4</li>
<li>PHP 8.0</li>
<li>PHP 8.1</li>
<li>PHP 8.2 (experimental)</li>
</ul>
All stable and supported PHP versions are also supported by PHP Monitor. However, depending on which version of Valet you have installed, which versions of PHP that are made available for switching purposes may differ.
For more details, consult the [constants file](https://github.com/nicoverbruggen/phpmon/blob/main/phpmon/Constants.swift#L16) file to see which versions are supported.
> **Note**
> If you have versions of PHP installed that can be detected by PHP Monitor but is *not* supported by the currently active version of Valet, you will be alerted by an item in the menu with an exclamation mark emoji. (⚠️)
Backports that are installable via PHP Monitor's **PHP Version Manager** functionality are subject to availability via [this tap](https://github.com/shivammathur/homebrew-php).
PHP extensions that are installable via PHP Monitor's **PHP Extension Manager** functionality are subject to availability via [this tap](https://github.com/shivammathur/homebrew-extensions).
For maximum compatibility with older PHP versions, you may wish to keep using Valet 2 or 3. For more information, please see [SECURITY.md](./SECURITY.md) to find out which versions of PHP are supported with different versions of Valet.
</details>
<details>
<summary><strong>How do I install additional versions of PHP, including legacy versions?</strong></summary>
Assuming you have installed the `php` formula, the latest stable version of PHP is installed. At the time of writing, this is PHP 8.3.
You can install other supported versions of PHP via PHP Monitor's **PHP Version Manager**. (You can manually install or upgrade PHP versions too, but this is not recommended.)
Please keep in mind that installing or updating PHP versions, even when done via PHP Monitor's **PHP Version Manager**, may cause other required formula dependencies (required software needed to keep those PHP versions functional) to be upgraded. It might not be very transparent when this happens, but this is likely the cause if installing a PHP version takes longer than expected: usually other dependencies are also being installed.
Additionally, upgrading one specific version of PHP may also cause other installed versions of PHP to *also* be updated in one go, if the dependencies for that one version also apply to the other (newer) version(s) of PHP. It's a bit tricky to manage PHP versions via Homebrew, and even PHP Monitor may encounter some difficulties.
If you encounter a strange scenario or a malfunction, please open an issue on the issue tracker and get in touch. I'd like to keep enhancing this process to make it as foolproof as possible.
> *Note*: Using PHP Monitor when managing PHP versions may cause [temporary alias conflicts](https://github.com/nicoverbruggen/phpmon/issues/54#issuecomment-979789724) while the core tap alias and the tap's alias refer to a different version of PHP, but this is generally speaking a minor inconvenience, since this normally only applies when a new PHP version releases.
</details>
<details>
<summary><strong>I want PHP Monitor to start up when I boot my Mac!</strong></summary>
You can do this by dragging *PHP Monitor.app* into the **Login Items** section in **System Preferences > Users & Groups** for your account.
If you are running macOS Ventura or newer, there's an option in the Settings menu that you can select: "Start PHP Monitor at login".
If you are on an older version of macOS, you can do this by dragging *PHP Monitor.app* into the **Login Items** section in **System Preferences > Users & Groups** for your account.
Super convenient!
</details>
<details>
<summary><strong>What features are unavailable in Standalone Mode?</strong></summary>
The services manager is disabled, and all other obvious Laravel Valet integrations (configuration finder, domains list, Fix My Valet) are also disabled.
(Most other features remain available.)
</details>
<details>
<summary><strong>I want to set up PHP Monitor from scratch! I don't have Homebrew installed either, where do I begin?</strong></summary>
If you want to set up your computer for the very first time with PHP Monitor, here's how I do it:
If you want to set up your computer for the very first time with PHP Monitor, here's how I do it.
Install [Homebrew](https://brew.sh) first.
**I have also created [a video tutorial](https://www.youtube.com/watch?v=fO3hVhkvm3w) which may be easier to follow. If you just want the terminal commands, keep reading.**
Install PHP, composer, add to path:
Install [Homebrew](https://brew.sh) first. Follow the instructions there first!
Then, you'll need to set up your PATH.
brew install php
brew install composer
nano .zshrc
Make sure the following line is not in the comments:
@ -125,30 +178,96 @@ If you're on an Apple Silicon-based Mac, you'll need to add:
# on an M1 Mac
export PATH=$HOME/bin:/opt/homebrew/bin:$PATH
and add the following to your .zshrc, but add this BEFORE the homebrew PATH additions:
and add the following to your `.zshrc` file, but add this BEFORE the homebrew PATH additions:
export PATH=$HOME/bin:~/.composer/vendor/bin:$PATH
If you're adding composer and Homebrew binaries, ensure that Homebrew binaries are preferred by adding these to the path last. On my system, that looks like this:
If you're adding `composer` and Homebrew binaries, ensure that Homebrew binaries are preferred by adding these to the path last. On my system, that looks like this:
export PATH=$HOME/bin:/usr/local/bin:$PATH
export PATH=$HOME/bin:~/.composer/vendor/bin:$PATH
export PATH=$HOME/bin:/opt/homebrew/bin:$PATH
If you are *not* on Apple Silicon, you should remove the third line.
Install the `php` and `composer` formulae:
brew install php composer
Make sure PHP is linked correctly:
which php
should return: `/usr/local/bin/php` (or `/opt/homebrew/bin/php`)
should return: `/usr/local/bin/php` (or `/opt/homebrew/bin/php` if you are on Apple Silicon)
**If you don't need Laravel Valet, you can stop here. PHP Monitor will work like this in Standalone Mode.**
If you'd like to have Valet as well, continue and install Valet with Composer, like this.
composer global require laravel/valet
For optimal results, you should lock your PHP platform for global dependencies to the oldest version of PHP you intend to run. If that version is PHP 7.0, your `~/.composer/composer.json` file could look like this (please adjust the version accordingly!):
```
{
"require": {
"laravel/valet": "^3.0",
},
"config": {
"platform": {
"php": "7.0"
}
}
}
```
Run `composer global update` again. This ensures that when you switch to a different global PHP version, [Valet won't break](https://github.com/nicoverbruggen/phpmon/issues/178). If it does, PHP Monitor will let you know what you can do about this.
Then, install Valet:
valet install
This should install `dnsmasq` and set up Valet. Great, almost there!
valet trust
Finally, run PHP Monitor. Since the app is notarized and signed with a developer ID, it should work.
Finally, run PHP Monitor. Since the app is notarized and signed with a developer ID, it should work. You will need to approve the initial launch of the app, but you should be ready to go now.
</details>
<details>
<summary><strong>How frequently does PHP Monitor check for updates?</strong></summary>
PHP Monitor will check if an update is available every time you start the app.
You can disable this behaviour by going to Preferences (via the PHP Monitor icon in the menu bar) and unchecking "Automatically check for updates". (You can always check for updates manually.)
</details>
<details>
<summary><strong>I have PHP Monitor installed, and it works. I want to upgrade my PHP installations to the latest version, what's the best way to do this?</strong></summary>
The easiest way is to simply use the built-in **PHP Version Manager**, which will allow you to upgrade your PHP versions with one click.
If you want to do this manually, you can follow the instructions below.
It's easy to make a mistake here, and end up with an unlinked version of PHP or have versions missing from PHP Monitor.
Here's what I usually do:
* Open PHP Monitor and select **First Aid & Services** > **Restore Homebrew Permissions**.
* Close PHP Monitor after the pop-up tells you the permissions were restored.
* Run `brew update-reset`
* Run `brew upgrade`
If after this, any PHP versions are missing in PHP Monitor, please run the following for the versions that are missing:
* Run `brew uninstall php@x.x` (where `x.x` is the version)
* Run `brew cleanup` (if you get any permission issues you may need to manually clean up the folder)
* Run `brew install php@x.x` (where `x.x` is the version)
You may still need to run `brew link php` after upgrading, too.
That's it. Now start up PHP Monitor again and you should be golden!
</details>
<details>
@ -160,7 +279,7 @@ This should resolve the issue! If that does not fix the issue, run `brew link ph
brew install php
brew link php --force
</details>
<details>
@ -172,6 +291,8 @@ This problem is usually resolved by upgrading Valet and running `valet install`
composer global update
valet install
If you are seeing a 502 (Bad Gateway) error after about 30 seconds or so, your request is likely timing out. You may need to solve a performance issue with your own code.
</details>
@ -203,16 +324,24 @@ You should see an error or a warning here in the output.
Usually this is a duplicate extension declaration causing issues, or an extension that couldn't be loaded. You'll have to solve that issue yourself (usually by removing the offending extension or reinstalling).
</details>
<details>
<summary><strong>The option to isolate a site is disabled! What's going on?</strong></summary>
Make sure you have at least **Valet 3.0** installed, since support for isolation was added in this version of Valet. (Please note that this version of Valet drops support for PHP 5.6.)
</details>
<details>
<summary><strong>One of the limits (memory limit, max POST size, max upload size) shows an exclamation mark!</strong></summary>
The value you provided in your INI file is invalid. If that is the case, PHP will attempt to parse your value as bytes, which is usually unintended. (`1GB` will resolve to merely a few bytes, and all of your applications will run out of memory!)
The value you provided in your `.ini` file is invalid. If that is the case, PHP will attempt to parse your value as bytes, which is usually unintended. (`1GB` will resolve to merely a few bytes, and all of your applications will run out of memory!)
You must a provide a value like so: `1024K`, `256M`, `1G`. Alternatively, `-1` is also allowed, or just an integer (which will result in N amount of bytes being the limit).
**Example**: Trying to use `1GB` as the memory limit, for example, will result in this exclamation mark. The correct way to set a 1GB limit is by using `1G` as the value. (Note: The displayed value will append `B` for clarity, so if you set `1G`, the value reported by PHP Monitor will be 1 GB.)
(If you are using Valet, you can adjust these limits in the `.conf.d/php-memory-limits.ini` file. Otherwise, you may need to adjust `php.ini`.)
</details>
<details>
@ -251,9 +380,105 @@ PHP Monitor is a universal app and supports both architectures, so [find out her
<details>
<summary><strong>Why is the app doing network requests?</strong></summary>
It's Homebrew. I can't prevent `brew` from doing things via the network when I invoke it.
The app will automatically check for updates, which is the most likely culprit.
PHP Monitor itself doesn't do any network requests. Feel free to check the source code or intercept the traffic, if you don't believe me.
This happens at launch (unless disabled), and the app directly checks the Caskfile hosted on GitHub. This data is not, and will not be used for analytics (and, as far as I can tell, cannot).
I also can't prevent `brew` from doing things via the network when PHP Monitor uses the binary.
The app includes an Internet Access Policy file, so if you're using something like Little Snitch there should be a description why these calls occur.
</details>
<details>
<summary><strong>How do I various presets to show up?</strong></summary>
You must set these presets up in a JSON file, located in `~/.config/phpmon/config.json`.
You must have set up at least one valid preset for this presets to work in PHP Monitor.
Here's an example of a working preset:
<pre>
{
"scan_apps": [],
"services": [],
"presets": [
{
"name": "Legacy Project",
"php": "8.0",
"extensions": {
"xdebug": false
},
"configuration": {
"memory_limit": "128M",
"upload_max_filesize": "128M",
"post_max_size": "128M"
}
}
],
"export": {}
}
</pre>
You can omit the `php` key in the preset if you do not wish for the preset to switch to a given PHP version.
> **Warning**
> You must restart PHP Monitor for these changes to be detected.
</details>
<details>
<summary><strong>How do I ensure additional Homebrew services are shown in the app?</strong></summary>
> **Info**
> Homebrew services aren't displayed if you are using Valet in Standalone Mode.
You must set these services up in a JSON file, located in `~/.config/phpmon/config.json`.
You can specify custom services in the configuration file for Homebrew services that run as your own user (not root).
> **Info**
> If your service must run as root, it cannot currently be added to PHP Monitor.
You can find out which services are available by running `brew services list`.
Here's an example where we add the `mailhog` and `mysql` services to PHP Monitor:
<pre>
{
"scan_apps": [],
"services": ["mailhog", "mysql"],
"presets": [],
"export": {}
}
</pre>
> **Warning**
> You must restart PHP Monitor for these changes to be detected.
</details>
<details>
<summary><strong>How do I set custom environment variables?</strong></summary>
You must configure these custom environment variables up in a JSON file, located in `~/.config/phpmon/config.json`.
PHP Monitor uses a default Shell environment, with no custom environment variables. You need to set custom environment variables manually. These are then used for e.g. Composer.
Here's an example of a working `COMPOSER_HOME` environment variable which is respected:
<pre>
{
"scan_apps": [],
"services": [],
"presets": [],
"export": {
"COMPOSER_HOME": "/absolute/path/to/composer/folder"
}
}
</pre>
> **Warning**
> You must restart PHP Monitor for these changes to be detected.
</details>
@ -268,7 +493,7 @@ All of these apps should just be detected correctly, no matter their location on
To see which files are checked to determine availability, see [this file](./phpmon/Domain/Helpers/Application.swift).
You can add your own apps by creating and editing a `~/.phpmon.conf.json` file, with the following entry:
You can add your own apps by creating and editing a `~/.config/phpmon/config.json` file, and make sure the `scan_apps` key is set:
<pre>
{
@ -277,6 +502,9 @@ You can add your own apps by creating and editing a `~/.phpmon.conf.json` file,
</pre>
You can put as many apps as you'd like in the `scan_apps` array, and PHP Monitor will check for the existence of these apps. You do not need to set the full path, just the name of the app should work. Not all apps support opening a folder, though, so your success might vary.
> **Warning**
> You must restart PHP Monitor for these changes to be detected.
</details>
<details>
@ -350,6 +578,10 @@ If you would like to report a crash, please include the associated **log files**
To find the logs, take a look in `~/Library/Logs/DiagnosticReports` (in Finder) and see if there's any (log) files that start with "PHP Monitor".
Additionally, you can help me figure out even more information by sending me your verbose log for your latest session of PHP Monitor. Logging is disabled by default.
You can start extra verbose logging by running: `touch ~/.config/phpmon/verbose` and restarting PHP Monitor. You can find the latest log in: `~/.config/phpmon/last_session.log`. Please attach it to the relevant bug report.
</details>
## 📝 Having another issue?
@ -366,13 +598,14 @@ Donations really help with the Apple Developer Program cost, and keep me motivat
## 😎 Acknowledgements
While I did make this application during my own free time, I have been lucky enough to do various experiments during work hours at [DIVE](https://dive.be). I'd also like to shout out the following folks:
Special thanks go out to:
* My colleagues at [DIVE](https://dive.be)
* Everyone supporting me via [GitHub Sponsors](https://github.com/sponsors/nicoverbruggen)
* Everyone who has donated via [my sponsor page](https://nicoverbruggen.be/sponsor)
* The [Homebrew](https://brew.sh/) team & [Valet maintainers](https://github.com/laravel/valet/graphs/contributors)
* Various folks who [reached](https://twitter.com/stauffermatt) [out](https://twitter.com/marcelpociot) when PHP Monitor was still very much a small app with a handful of stars or so
* Everyone in the Laravel community who shared the app (thanks!)
* Everyone who left feedback via issues & who donated to keep the project up and running
* Everyone who has left feedback and reported bugs
* Everyone in the Laravel community who shared the app, especially on Twitter
Thank you very much for your contributions, kind words and support.
@ -380,15 +613,17 @@ Thank you very much for your contributions, kind words and support.
### Loading info about PHP in the background
This utility runs `php-config --version` in the background periodically. It also checks your `.ini` files for extensions and loads more information about your limits (memory limit, POST limit, upload limit).
This app runs `php-config --version` in the background periodically, usually whenever your Homebrew configuration is modified. A filesystem watcher is used to determine if anything changes in your Homebrew's `bin` directory.
In order to save power, this only happens once every 60 seconds.
PHP Monitor also checks your `.ini` files for extensions and loads more information about your limits (memory limit, POST limit, upload limit). See also the section on *Config change detection* below.
### Switching PHP versions
This utility will detect which PHP versions you have installed via Homebrew, and then allows you to switch between them.
The switcher will disable all PHP-FPM services not belonging to the version you wish to use, and link the desired version of PHP. Then, it'll restart your desired PHP version's FPM process. This all happens in parallel, so this should be much faster than Valets switcher.
The switcher will disable all PHP-FPM services not belonging to the version you wish to use, and link the desired version of PHP. Then, it'll restart your desired PHP version's FPM process. This all happens in parallel, so this should be a bit faster than Valets switcher.
If you're using Valet 3 or newer, versions of PHP-FPM required to keep isolated sites up and running will also be started or stopped as needed.
### Config change detection
@ -404,7 +639,8 @@ If an extension or other process writes to a single file a bunch of times in a s
1. **Sites secured or not secured**: Whether the directory has been secured is determined by checking if a matching certificate exists under Valet's `Certificates` directory for that site name.
1. **Project type**: PHP Monitor checks your `composer.json` file for "notable dependencies". If you have `laravel/framework` in your `require`, there's a good chance the project type is `Laravel`, after all.
*Note*: If you have linked a folder in Documents, Desktop or Downloads you might need to grant PHP Monitor access to those directories for PHP Monitor to work correctly.
> **Note**
> If you have linked a folder in Documents, Desktop or Downloads you might need to grant PHP Monitor access to those directories for PHP Monitor to work correctly.
### Want to know more?

View File

@ -2,21 +2,31 @@
## Supported versions
Generally speaking, only the latest version of **PHP Monitor** is supported, except during transition periods (for example, when particular system requirements go up):
Generally speaking, only the latest version of **PHP Monitor** is supported, except during transition periods (for example, when particular system requirements go up).
| Version | Apple Silicon | Supported | Supported macOS | Deployment Target | Detected PHP Versions | Minimum Required Valet Version |
| Version | Apple Silicon | Supported | Supported macOS | Minimum Deployment | Detected PHP Versions | Recommended Valet Version |
| ------- | ------------- | ------------------ | ----- | ----- | ----- | ----
| 5 | ✅ Universal binary | ✅ Yes | Big Sur (11.0) and Monterey (12.0) | macOS 11+ | PHP 5.6—PHP 8.2 | 2.16.2 |
| 25 | ✅ Universal binary | ✅ Yes | Ventura (13.5+)<br/>Sonoma (14.0+)<br/>Sequoia (15.0+)<br/>Tahoe (26.0+)* | macOS 13.5+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.4 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.5 (w/ Valet 4.x)| 3.0 or higher recommended<br/> 2.16.2 minimum |
(*) Denotes preliminary supported based on the app being built with the latest version of the SDK prior to the release of the latest release of macOS. Please check out the pinned issue for more information.
## Legacy versions
These versions of PHP Monitor are no longer supported, but if youre using an older computer with an older version of Homebrew, Valet or macOS, you might want to use one of these versions.
| Version | Apple Silicon | Supported | Supported macOS | Deployment Target | Detected PHP Versions | Minimum Required Valet Version |
| Version | Apple Silicon | Supported | Supported macOS | Minimum Deployment | Detected PHP Versions | Minimum Required Valet Version |
| ------- | ------------- | ------------------ | ----- | ----- | ----- | ----
| 4.1 | ✅ Universal binary | ❌ | Big Sur (11.0) and Monterey (12.0) | macOS 11+ | PHP 5.6—PHP 8.2 | 2.16.2 |
| 4.0 | ✅ Universal binary | ❌ | Big Sur (11.0) and Monterey (12.0) | macOS 10.14+ | PHP 5.6—PHP 8.2 | 2.13 |
| 3.5 | ✅ Universal binary | ❌ | Big Sur (11.0) and Monterey (12.0) | macOS 10.14+ | PHP 5.6—PHP 8.2 | 2.13 |
| 7.1 | ✅ Universal binary | ❌ | Monterey (12.4+)<br/>Ventura (13.0+)<br/>Sonoma (14.0+)<br/>Sequoia (15.0+) | macOS 12.4+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.4 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.5 (w/ Valet 4.x)| 3.0 or higher recommended<br/> 2.16.2 minimum |
| 7.0 | ✅ Universal binary | ❌ | Monterey (12.4+)<br/>Ventura (13.0+)<br/>Sonoma (14.0) | macOS 12.4+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.4 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.4 (w/ Valet 4.x)| 3.0 or higher recommended<br/> 2.16.2 minimum |
| 6.2 | ✅ Universal binary | ❌ | Monterey (12.4+)<br/>Ventura (13.0+)<br/>Sonoma (14.0) | macOS 12.4+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.4 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.4 (w/ Valet 4.x)| 3.0 or higher recommended<br/> 2.16.2 minimum |
| 6.1 | ✅ Universal binary | ❌ | Monterey (12.4+)<br/>Ventura (13.0+)<br/>Sonoma (14.0) | macOS 12.4+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.4 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.4 (w/ Valet 4.x)| 3.0 or higher recommended<br/> 2.16.2 minimum |
| 6.0 | ✅ Universal binary | ❌ | Monterey (12.4+)<br/>Ventura (13.0+) | macOS 12.4+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.2 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.2 (w/ Valet 4.x) | 3.0 or higher recommended<br/> 2.16.2 minimum |
| 5.8 | ✅ Universal binary | ❌ | Monterey (12.4+)<br/>Ventura (13.0+) | macOS 12.4+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.2 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.2 (w/ Valet 4.x) | 3.0 or higher recommended<br/> 2.16.2 minimum |
| 5.7 | ✅ Universal binary | ❌ | Big Sur (11.0)<br/>Monterey (12.0)<br/>Ventura (13.0) | macOS 11+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.2 (w/ Valet 3.x)<br/>PHP 7.1-PHP 8.2 (w/ Valet 4.x) | 3.0 or higher recommended<br/> 2.16.2 minimum |
| 5.6 | ✅ Universal binary | ❌ | Big Sur (11.0)<br/>Monterey (12.0)<br/>Ventura (13.0) | macOS 11+ | PHP 5.6—PHP 8.2 (w/ Valet 2.x)<br/>PHP 7.0—PHP 8.2 (w/ Valet 3.x) | 3.0 recommended<br/> 2.16.2 minimum |
| 4.1 | ✅ Universal binary | ❌ | Big Sur (11.0)<br/>Monterey (12.0) | macOS 11+ | PHP 5.6—PHP 8.2 | 2.16.2 |
| 4.0 | ✅ Universal binary | ❌ | Big Sur (11.0)<br/>Monterey (12.0) | macOS 10.14+ | PHP 5.6—PHP 8.2 | 2.13 |
| 3.5 | ✅ Universal binary | ❌ | Big Sur (11.0)<br/>Monterey (12.0) | macOS 10.14+ | PHP 5.6—PHP 8.2 | 2.13 |
| 3.0—3.4 | ✅ Universal binary | ❌ | Big Sur (11.0) | macOS 10.14+ | PHP 5.6—PHP 8.1 | 2.13 |
| 2.6 | ✅ Universal binary | ❌ | Big Sur (11.0) | macOS 10.14+ | PHP 5.6—PHP 8.0 | 2.13 |
| 2.5 | ✴️ Universal binary<br/>`/usr/local/homebrew` installations only | ❌ | Big Sur (11.0)<br/>Catalina (10.15) | macOS 10.14+ | not applicable | not applicable |

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

1
assets/icon-2025.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 500 500" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1.25033,-0.175723,0.175723,1.25033,14.4412,107.226)">
<path d="M133.3,83.75L120.4,83.75L120.4,54.437C120.4,52.134 118.465,50.25 116.1,50.25L107.5,50.25C105.135,50.25 103.2,52.134 103.2,54.438L103.2,96.312C103.2,98.616 105.135,100.5 107.5,100.5L133.3,100.5C135.665,100.5 137.6,98.616 137.6,96.312L137.6,87.938C137.6,85.634 135.665,83.75 133.3,83.75ZM335.4,184.25L326.8,184.25L326.8,127.666C326.8,121.019 324.059,114.633 319.221,109.922L265.525,57.63C260.688,52.92 254.13,50.25 247.304,50.25L223.6,50.25L223.6,25.125C223.6,11.254 212.044,0 197.8,0L25.8,0C11.556,0 0,11.254 0,25.125L0,192.625C0,206.496 11.556,217.75 25.8,217.75L34.4,217.75C34.4,245.492 57.513,268 86,268C114.487,268 137.6,245.492 137.6,217.75L206.4,217.75C206.4,245.492 229.512,268 258,268C286.488,268 309.6,245.492 309.6,217.75L335.4,217.75C340.13,217.75 344,213.981 344,209.375L344,192.625C344,188.019 340.13,184.25 335.4,184.25ZM86,242.875C71.756,242.875 60.2,231.621 60.2,217.75C60.2,203.879 71.756,192.625 86,192.625C100.244,192.625 111.8,203.879 111.8,217.75C111.8,231.621 100.244,242.875 86,242.875ZM111.8,150.75C78.529,150.75 51.6,124.526 51.6,92.125C51.6,59.725 78.529,33.5 111.8,33.5C145.071,33.5 172,59.724 172,92.125C172,124.525 145.071,150.75 111.8,150.75ZM258,242.875C243.756,242.875 232.2,231.621 232.2,217.75C232.2,203.879 243.756,192.625 258,192.625C272.244,192.625 283.8,203.879 283.8,217.75C283.8,231.621 272.244,242.875 258,242.875ZM301,134L223.6,134L223.6,75.375L247.304,75.375L301,127.666L301,134Z" style="fill:url(#_Linear1);fill-rule:nonzero;"/>
</g>
<defs>
<linearGradient id="_Linear1" x1="0" y1="0" x2="1" y2="0" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.96882e-14,321.533,-321.533,1.96882e-14,172.079,-41.4918)"><stop offset="0" style="stop-color:rgb(81,194,251);stop-opacity:1"/><stop offset="0" style="stop-color:rgb(81,194,251);stop-opacity:1"/><stop offset="1" style="stop-color:rgb(28,145,254);stop-opacity:1"/></linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,48 @@
{
"fill" : {
"linear-gradient" : [
"srgb:0.27800,0.58000,0.98800,1.00000",
"srgb:0.27800,0.58000,0.98800,1.00000"
]
},
"groups" : [
{
"blend-mode" : "screen",
"blur-material" : null,
"layers" : [
{
"blend-mode" : "normal",
"fill" : {
"solid" : "srgb:1.00000,0.99038,0.96423,1.00000"
},
"glass" : true,
"image-name" : "phpmon.svg",
"name" : "phpmon",
"position" : {
"scale" : 1.85,
"translation-in-points" : [
10.0234375,
8.21875
]
}
}
],
"lighting" : "individual",
"shadow" : {
"kind" : "neutral",
"opacity" : 0.5
},
"specular" : true,
"translucency" : {
"enabled" : true,
"value" : 0.5
}
}
],
"supported-platforms" : {
"circles" : [
"watchOS"
],
"squares" : "shared"
}
}

57
docs/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 22 KiB

BIN
docs/screenshot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 370 KiB

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,332 +0,0 @@
[
{
"name":"php",
"full_name":"php",
"tap":"homebrew/core",
"oldname":null,
"aliases":[
"php@8.0"
],
"versioned_formulae":[
"php@7.4",
"php@7.3",
"php@7.2"
],
"desc":"General-purpose scripting language",
"license":"PHP-3.01",
"homepage":"https://www.php.net/",
"versions":{
"stable":"8.0.2",
"head":"HEAD",
"bottle":true
},
"urls":{
"stable":{
"url":"https://www.php.net/distributions/php-8.0.2.tar.xz",
"tag":null,
"revision":null
}
},
"revision":0,
"version_scheme":0,
"bottle":{
"stable":{
"rebuild":0,
"cellar":"/opt/homebrew/Cellar",
"prefix":"/opt/homebrew",
"root_url":"https://homebrew.bintray.com/bottles",
"files":{
"arm64_big_sur":{
"url":"https://homebrew.bintray.com/bottles/php-8.0.2.arm64_big_sur.bottle.tar.gz",
"sha256":"cbefa1db73d08b9af4593a44512b8d727e43033ee8517736bae5f16315501b12"
},
"big_sur":{
"url":"https://homebrew.bintray.com/bottles/php-8.0.2.big_sur.bottle.tar.gz",
"sha256":"6857142e12254b15da4e74c2986dd24faca57dac8d467b04621db349e277dd63"
},
"catalina":{
"url":"https://homebrew.bintray.com/bottles/php-8.0.2.catalina.bottle.tar.gz",
"sha256":"b651611134c18f93fdf121a4277b51b197a896a19ccb8020289b4e19e0638349"
},
"mojave":{
"url":"https://homebrew.bintray.com/bottles/php-8.0.2.mojave.bottle.tar.gz",
"sha256":"9583a51fcc6f804aadbb14e18f770d4fb4973deaed6ddc4770342e62974ffbca"
}
}
}
},
"keg_only":false,
"bottle_disabled":false,
"options":[
],
"build_dependencies":[
"httpd",
"pkg-config"
],
"dependencies":[
"apr",
"apr-util",
"argon2",
"aspell",
"autoconf",
"curl",
"freetds",
"gd",
"gettext",
"glib",
"gmp",
"icu4c",
"krb5",
"libffi",
"libpq",
"libsodium",
"libzip",
"oniguruma",
"openldap",
"openssl@1.1",
"pcre2",
"sqlite",
"tidy-html5",
"unixodbc"
],
"recommended_dependencies":[
],
"optional_dependencies":[
],
"uses_from_macos":[
{
"xz":"build"
},
"bzip2",
"libedit",
"libxml2",
"libxslt",
"zlib"
],
"requirements":[
],
"conflicts_with":[
],
"caveats":"To enable PHP in Apache add the following to httpd.conf and restart Apache:\n LoadModule php_module $(brew --prefix)/opt/php/lib/httpd/modules/libphp.so\n\n <FilesMatch \\.php$>\n SetHandler application/x-httpd-php\n </FilesMatch>\n\nFinally, check DirectoryIndex includes index.php\n DirectoryIndex index.php index.html\n\nThe php.ini and php-fpm.ini file can be found in:\n $(brew --prefix)/etc/php/8.0/\n",
"installed":[
{
"version":"8.0.2",
"used_options":[
],
"built_as_bottle":true,
"poured_from_bottle":true,
"runtime_dependencies":[
{
"full_name":"apr",
"version":"1.7.0"
},
{
"full_name":"openssl@1.1",
"version":"1.1.1i"
},
{
"full_name":"apr-util",
"version":"1.6.1"
},
{
"full_name":"argon2",
"version":"20190702"
},
{
"full_name":"aspell",
"version":"0.60.8"
},
{
"full_name":"autoconf",
"version":"2.69"
},
{
"full_name":"brotli",
"version":"1.0.9"
},
{
"full_name":"gettext",
"version":"0.21"
},
{
"full_name":"libunistring",
"version":"0.9.10"
},
{
"full_name":"libidn2",
"version":"2.3.0"
},
{
"full_name":"libmetalink",
"version":"0.1.3"
},
{
"full_name":"libssh2",
"version":"1.9.0"
},
{
"full_name":"c-ares",
"version":"1.17.1"
},
{
"full_name":"jemalloc",
"version":"5.2.1"
},
{
"full_name":"libev",
"version":"4.33"
},
{
"full_name":"nghttp2",
"version":"1.43.0"
},
{
"full_name":"openldap",
"version":"2.4.57"
},
{
"full_name":"rtmpdump",
"version":"2.4+20151223"
},
{
"full_name":"zstd",
"version":"1.4.8"
},
{
"full_name":"curl",
"version":"7.75.0"
},
{
"full_name":"libtool",
"version":"2.4.6"
},
{
"full_name":"unixodbc",
"version":"2.3.9"
},
{
"full_name":"freetds",
"version":"1.2.18"
},
{
"full_name":"libpng",
"version":"1.6.37"
},
{
"full_name":"freetype",
"version":"2.10.4"
},
{
"full_name":"fontconfig",
"version":"2.13.1"
},
{
"full_name":"jpeg",
"version":"9d"
},
{
"full_name":"libtiff",
"version":"4.2.0"
},
{
"full_name":"webp",
"version":"1.2.0"
},
{
"full_name":"gd",
"version":"2.3.1"
},
{
"full_name":"libffi",
"version":"3.3"
},
{
"full_name":"pcre",
"version":"8.44"
},
{
"full_name":"gdbm",
"version":"1.18.1"
},
{
"full_name":"readline",
"version":"8.1"
},
{
"full_name":"sqlite",
"version":"3.34.0"
},
{
"full_name":"tcl-tk",
"version":"8.6.11"
},
{
"full_name":"xz",
"version":"5.2.5"
},
{
"full_name":"python@3.9",
"version":"3.9.1"
},
{
"full_name":"glib",
"version":"2.66.6"
},
{
"full_name":"gmp",
"version":"6.2.1"
},
{
"full_name":"icu4c",
"version":"67.1"
},
{
"full_name":"krb5",
"version":"1.19"
},
{
"full_name":"libpq",
"version":"13.1"
},
{
"full_name":"libsodium",
"version":"1.0.18"
},
{
"full_name":"libzip",
"version":"1.7.3"
},
{
"full_name":"oniguruma",
"version":"6.9.6"
},
{
"full_name":"pcre2",
"version":"10.36"
},
{
"full_name":"tidy-html5",
"version":"5.6.0"
}
],
"installed_as_dependency":false,
"installed_on_request":true
}
],
"linked_keg":"8.0.2",
"pinned":false,
"outdated":false,
"deprecated":false,
"deprecation_date":null,
"deprecation_reason":null,
"disabled":false,
"disable_date":null,
"disable_reason":null
}
]

View File

@ -1,29 +0,0 @@
//
// PhpVersionDetectionTest.swift
// phpmon-tests
//
// Created by Nico Verbruggen on 01/04/2021.
// Copyright © 2021 Nico Verbruggen. All rights reserved.
//
import XCTest
class PhpVersionDetectionTest: XCTestCase {
func testCanDetectValidPhpVersions() throws {
let outcome = PhpEnv.shared.extractPhpVersions(from: [
"", // empty lines should be omitted
"php@8.0",
"php@8.0", // should only be detected once
"meta-php@8.0", // should be omitted, invalid
"php@8.0-coolio", // should be omitted, invalid
"php@7.0",
"",
"unrelatedphp@1.0", // should be omitted, invalid
"php@5.6",
"php@5.4" // should be omitted, not supported
], checkBinaries: false)
XCTAssertEqual(outcome, ["8.0", "7.0", "5.6"])
}
}

View File

@ -1,18 +0,0 @@
//
// ValetTest.swift
// phpmon-tests
//
// Created by Nico Verbruggen on 29/11/2021.
// Copyright © 2021 Nico Verbruggen. All rights reserved.
//
import XCTest
class ValetVersionExtractorTest: XCTestCase {
func testDetermineValetVersion() {
let version = valet("--version", sudo: false)
XCTAssert(version.contains("Laravel Valet 2."))
}
}

View File

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,68 @@
{
"images" : [
{
"filename" : "icon_16x16.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "16x16"
},
{
"filename" : "icon_16x16@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "16x16"
},
{
"filename" : "icon_32x32.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "32x32"
},
{
"filename" : "icon_32x32@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "32x32"
},
{
"filename" : "icon_128x128.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "128x128"
},
{
"filename" : "icon_128x128@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "128x128"
},
{
"filename" : "icon_256x256.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "256x256"
},
{
"filename" : "icon_256x256@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "256x256"
},
{
"filename" : "icon_512x512.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "512x512"
},
{
"filename" : "icon_512x512@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "512x512"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 811 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 KiB

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

23
phpmon-updater/main.swift Normal file
View File

@ -0,0 +1,23 @@
//
// AppDelegate.swift
// PHP Monitor Self-Updater
//
// Created by Nico Verbruggen on 01/02/2023.
// Copyright © 2023 Nico Verbruggen. All rights reserved.
//
import Cocoa
import NVAppUpdater
let delegate = SelfUpdater(
appName: "PHP Monitor",
bundleIdentifiers: [
"com.nicoverbruggen.phpmon.eap",
"com.nicoverbruggen.phpmon.dev",
"com.nicoverbruggen.phpmon"
],
selfUpdaterPath: "~/.config/phpmon/updater"
)
NSApplication.shared.delegate = delegate
_ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv)

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>

View File

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.988",
"green" : "0.580",
"red" : "0.278"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.988",
"green" : "0.723",
"red" : "0.277"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 558 B

After

Width:  |  Height:  |  Size: 783 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

After

Width:  |  Height:  |  Size: 457 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 632 B

After

Width:  |  Height:  |  Size: 790 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

After

Width:  |  Height:  |  Size: 648 KiB

View File

@ -0,0 +1,68 @@
{
"images" : [
{
"filename" : "icon_16x16.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "16x16"
},
{
"filename" : "icon_16x16@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "16x16"
},
{
"filename" : "icon_32x32.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "32x32"
},
{
"filename" : "icon_32x32@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "32x32"
},
{
"filename" : "icon_128x128.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "128x128"
},
{
"filename" : "icon_128x128@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "128x128"
},
{
"filename" : "icon_256x256.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "256x256"
},
{
"filename" : "icon_256x256@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "256x256"
},
{
"filename" : "icon_512x512.png",
"idiom" : "mac",
"scale" : "1x",
"size" : "512x512"
},
{
"filename" : "icon_512x512@2x.png",
"idiom" : "mac",
"scale" : "2x",
"size" : "512x512"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 KiB

View File

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.250",
"green" : "0.250",
"red" : "0.250"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.750",
"green" : "0.750",
"red" : "0.750"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -1,12 +1,12 @@
{
"images" : [
{
"filename" : "ServiceOn.png",
"filename" : "Default.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ServiceOn@2x.png",
"filename" : "Default@2x.png",
"idiom" : "universal",
"scale" : "2x"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1,12 +1,12 @@
{
"images" : [
{
"filename" : "ServiceOff.png",
"filename" : "Proxy.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ServiceOff@2x.png",
"filename" : "Proxy@2x.png",
"idiom" : "universal",
"scale" : "2x"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,12 +1,12 @@
{
"images" : [
{
"filename" : "ServiceLoading.png",
"filename" : "Isolated.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "ServiceLoading@2x.png",
"filename" : "Isolated@2x.png",
"idiom" : "universal",
"scale" : "2x"
},

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 826 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.172",
"green" : "0.182",
"red" : "0.182"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.988",
"green" : "0.580",
"red" : "0.278"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.988",
"green" : "0.444",
"red" : "0.277"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Some files were not shown because too many files have changed in this diff Show More