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

Compare commits

...

958 Commits
v1.4 ... v5.7

Author SHA1 Message Date
9e25254ec8 🚀 Version 5.7 2023-01-26 20:49:47 +01:00
e623207844 🔧 New build 2023-01-26 20:32:39 +01:00
f60ecb877c ♻️ Cleanup 2023-01-26 20:30:00 +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
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
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
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
35b19efc3e 👌 Use specific theme colors for services status 2023-01-17 18:05:22 +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
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
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
d6258f54a9 🐛 Fix crash when Valet.shared is nil 2023-01-11 22:23:39 +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
139e416c3b 🚀 Version 5.1.1
Merge branch 'dev/5.x'
2022-03-09 17:52:07 +01:00
ba4ed3b365 🔧 Prepare for maintenance release 2022-03-09 17:51:19 +01:00
06a8022265 📝 Annotate environment checks (#146) 2022-03-09 16:41:47 +01:00
3b297e07dc 🐛 Adjust the order of startup checks (#146) 2022-03-09 16:19:41 +01:00
68fa8e523e 👌 Fix string that made it into 5.1 2022-03-03 14:49:33 +01:00
768bf06a9d 🚀 Version 5.1
Merge branch 'dev/5.x'
2022-03-02 19:53:52 +01:00
6a8d66758a 🔧 Build 715 for the final 5.1 release 2022-03-02 19:52:24 +01:00
078e6e6f23 📝 Update README with Raycast extension 2022-03-01 09:32:01 +01:00
3f80bfb641 👌 Detect binary paths (#144)
This change introduces binary detection to the app. PHP Monitor does not
rely on the user's PATH because the output of a user's terminal can
cause issues, so we will scan the two common locations for the Composer
binary file. The text in the alert has been modified to accommodate the
change (you could still not have Composer installed).
2022-02-26 18:24:02 +01:00
a34389c3a9 🔧 New dev build (RC) 2022-02-23 14:07:14 +01:00
692d3c143f ♻️ Refactor Composer window logic 2022-02-23 13:39:49 +01:00
bc86a45925 Run tests in isolation 2022-02-23 13:03:04 +01:00
2a412b794a Fix tests 2022-02-22 21:16:50 +01:00
bf673263d8 👌 Extract method 2022-02-22 21:16:17 +01:00
ce498d3019 ♻️ Cleanup 2022-02-22 20:49:13 +01:00
e398f089af ♻️ Refactor Valet structure, add #143 2022-02-22 20:39:35 +01:00
e8ba24e48b 👌 Improved alerts 2022-02-20 16:39:06 +01:00
e0f40be188 🐛 Fix issue with "Fix Homebrew Permissions" 2022-02-20 16:33:56 +01:00
42848764cf 👌 New icon for DEV builds 2022-02-20 16:08:04 +01:00
46ac0c339c 👌 Warn about custom TLD (#126) 2022-02-20 15:46:51 +01:00
a0fe68f3ab 👌 Constants as struct 2022-02-20 15:29:24 +01:00
c952c3d031 👌 Link to FAQ 2022-02-20 15:29:15 +01:00
c05cdeda72 👌 Offer to switch back to prev version (#141) 2022-02-20 15:12:30 +01:00
ae7b285eb0 🐛 Fix delay due to use of async 2022-02-20 14:26:56 +01:00
6b3c562af2 🐛 Fixes full PHP version (#142) 2022-02-20 13:48:37 +01:00
e3ae878cae 👌 Various alerts updated 2022-02-18 22:01:05 +01:00
dd43c94e6e 👌 Handle errors 2022-02-18 20:38:40 +01:00
0e8fe1fcfb 👌 Updated all environment alerts 2022-02-18 20:13:43 +01:00
293b7f564e 🏗 Rearrange button order 2022-02-17 19:45:56 +01:00
634ffb4c57 🏗 Preparing for additional refactoring 2022-02-17 19:23:23 +01:00
9468a2e9f8 🚩 Break compilation
Now missing labels will come up as Compiler Errors. This, along with the
deprecations in the previous alert should allow me to replace all the
alerts everywhere.
2022-02-17 19:21:03 +01:00
921ecd99d6 👌 Improve BetterAlert performance notices 2022-02-17 19:19:02 +01:00
d06f92051d 👌 Improved alert for sponsor encouragement 2022-02-17 19:07:20 +01:00
97d68f89f1 👌 Animate custom modal, fix constraints 2022-02-17 18:43:48 +01:00
115863f1ee 👌 Improve initial alert 2022-02-17 09:59:50 +01:00
bc27a4d25a 👌 Cleanup 2022-02-17 00:14:40 +01:00
5a0b2f319b 👌 Use BetterAlert API 2022-02-16 23:51:06 +01:00
50f003a2bd New notice alert API 2022-02-16 22:42:43 +01:00
bc0b50f5bf 👌 Fixed UI and added new notice view 2022-02-16 21:11:33 +01:00
dd20b25900 📝 Add issue templates 2022-02-14 13:56:01 +01:00
d0469467ac 📝 Add issue templates (#138) 2022-02-14 13:55:16 +01:00
61427ec505 👌 Cleanup App.busy -> PhpEnv.shared.isBusy 2022-02-12 15:08:00 +01:00
6cd1d78572 👌 Tweak logger verbosity 2022-02-12 14:58:49 +01:00
0ad5049785 Add separator to Log 2022-02-12 14:52:10 +01:00
b5c1960260 👌 Async / await support for loading services 2022-02-12 14:47:29 +01:00
e6fbe7c4a4 👀 First attempt at using async code in Swift 2022-02-12 13:17:17 +01:00
537536d443 👌 Improve initial logging during startup 2022-02-11 23:51:58 +01:00
f702d14749 👌 Move check list to bottom 2022-02-11 23:39:43 +01:00
74bb544f3c ♻️ Refactor (part 2) 2022-02-11 23:37:44 +01:00
dae47e3779 ♻️ Refactor startup procedure 2022-02-11 23:24:38 +01:00
dc91d0e00c 👌 Path based on architecture (#134) 2022-02-11 18:58:07 +01:00
6187eb3e4e 👌 Communicate why Fix My Valet is disabled (#135)
A quick 5-minute fix.

As raised in #135, it is not super obvious why Fix My Valet might be
disabled. From now on, Fix My Valet is now always enabled, but it might
throw up an alert if the required formula is missing.
2022-02-11 14:19:52 +01:00
0fa6d337f2 👌 Wrote down some notes during Deep Dive 2022-02-09 22:53:37 +01:00
a10e1cad11 🔥 Remove RELEASE.md (and move it to DEVELOPER.md) 2022-02-09 21:49:30 +01:00
7c252deede 📝 Update version to not specify minor version 2022-02-09 21:38:40 +01:00
224c5c4fe2 📝 Fix developers doc link (#133) 2022-02-09 21:33:38 +01:00
e945b5fe94 👌 Add version to PhpSwitcherDelegate 2022-02-09 21:32:55 +01:00
23e534c5c9 📝 Fix developers doc link (#133) 2022-02-09 21:31:50 +01:00
dcddf74830 🔧 New dev build 2022-02-08 23:51:16 +01:00
9baf69394e 🚩 Re-enabled "Restore Homebrew Permissions" 2022-02-08 23:50:45 +01:00
2e58bbb5e8 🚀 Version 5.0.1
🔀 Merge branch 'dev/5.x'
2022-02-08 23:40:10 +01:00
bb6abc5e9a 👌 Fix print statements 2022-02-08 23:37:17 +01:00
e4f9d491c3 🔥 Cleanup .afdesign file 2022-02-08 23:29:55 +01:00
1ba7ee37db 👌 Ensure target ownership is OK 2022-02-08 23:20:48 +01:00
34cfbae3a9 👌 Fix inconsistent capitalisation 2022-02-08 23:12:55 +01:00
9fabda545f ♻️ Big Cleanup 2022-02-08 23:07:23 +01:00
7cd50aed7b 🐛 Fix retain cycle due to threading issue 2022-02-08 22:19:32 +01:00
cdc082071d ♻️ Menu item method reordering 2022-02-08 21:52:17 +01:00
d1479672c8 ♻️ Rework site list loading UI
* 0.2 second delay for smooth UI (minimum)
* > 0.5 second delay for operation = show spinner
2022-02-08 21:51:59 +01:00
ffb112cfb2 🚛 Reorganise Errors structs 2022-02-08 21:26:06 +01:00
f5af33c098 🐛 Correctly parse RC PHP version (#132)
It'll be a while before a new release candidate is available, but this
bug has now been resolved.

A new `PhpVersionNumber.parse` method has been added which can throw.

The `VersionExtractor` class is now capable of extracting version
numbers from all strings now too, and isn't just used to determine
the Valet version number.

New tests have been added to handle these scenarios.

This commit also removes the phpmon-cli component, which wasn't being
updated or maintained (it was an experiment).
2022-02-08 18:51:16 +01:00
0f464f5814 🔥 Cleanup 2022-02-07 18:00:35 +01:00
776c2095e6 🚛 Move files around 2022-02-07 17:38:44 +01:00
82a2833161 👌 Improve separators (#128) 2022-02-07 17:19:57 +01:00
b14d7bdf07 Add multiple options for icons (#106)
- PHP next to icon (default)
- PHP Elephant
- No icon

If you chose "no PHP text next to icon" earlier, that preference is
remembered and migrated over.
2022-02-07 00:46:00 +01:00
ffa22eea25 👌 Cleanup, ensure all tests pass 2022-02-06 17:56:16 +01:00
8220e6409d 🚛 Move async helpers to MainMenu+Async 2022-02-06 13:18:12 +01:00
927e1c02fa ♻️ Refactor waitAndExecuteasyncExecution
This change allows for errors to be thrown during the `asyncExecution`
initial callback, and if one is thrown, allows a `failure` callback to
be used. Existing instances of `waitAndExecute` have been replaced.

I also added the ability to tweak the behaviours of the actions that are
always performed when the asyncExecution method is called: you can now
specify limited behaviours (e.g. only set busy icon). For that use case
I have already created a new method: `asyncWithBusyUI`.

With this change, the handling of the Homebrew Permissions flow has also
been modified: when the user does not get administrative permissions
an error is now thrown which results in an alert being presented to
the user once the error occurs.

There is now an opportunity to further refactor other parts of the app
to more gracefully handle failure states using the Error and
AlertableError protocols.
2022-02-06 13:15:03 +01:00
a13a17b106 👌 Various improvements
- Properly draw the menu bar icon
  (now with extra documentation)
- Resolve Paths via FileManager.default
- Updated DEV readme
- Add PHP Elephant icon (TBD)
2022-02-05 00:42:10 +01:00
18d6d73f94 🐛 Fix for #124 ('valet --version' failing) 2022-02-04 20:17:10 +01:00
54d101acbe 🍱 Updated icons file (Affinity) 2022-02-04 18:29:52 +01:00
76f720cb71 📝 Updated README 2022-02-04 18:24:56 +01:00
033e485ce1 🔥 Cleanup icons 2022-02-04 18:20:56 +01:00
82ee830de1 🔧 New dev build for bugfixing purposes 2022-02-04 18:20:24 +01:00
55cd1cccee 🐛 Do not watch files that do not exist (#123) 2022-02-04 18:10:30 +01:00
5f13ba3d1b 📝 Add section on symbolication 2022-02-04 17:54:30 +01:00
298aa0aa8d 🔧 Updated project 2022-02-04 17:30:41 +01:00
5d49be6f7e 🍱 Updated assets (#120) 2022-02-04 17:30:22 +01:00
ab81bf5875 📝 Updated FUNDING.yml 2022-02-04 15:35:53 +01:00
5d8765683a 🔧 Use beta icon for 5.1 betas 2022-02-03 20:38:02 +01:00
6c22bc0145 🏗 Fix Homebrew Permissions (#86) 2022-02-03 20:34:57 +01:00
5c1908668f ✏️ Adjust path in composer symlink recommendation (#115) 2022-02-03 17:07:22 +01:00
94da7fb255 🚀 Version 5.0
This release brings a plethora of new features to PHP Monitor.
Please check out the release notes for more details.

🔀 Merge branch 'dev/5.x'
2022-02-01 19:59:56 +01:00
46d2d35c1a 👌 Detect Drupal and WordPress projects (#112) 2022-02-01 18:36:37 +01:00
cba41b29bc 🐛 Fix storyboard issues 2022-02-01 17:58:06 +01:00
7a8f47b995 👌 Quality of life changes
- Moved DonationUrl to Constants
- Added additional menu items (visible if window is open)
- Fixed capitalisation of "WordPress" in PhpFrameworks
- Cleanup Stats
- Add new translation strings for menu items
2022-02-01 17:51:23 +01:00
40062c5091 🔧 Bump version number for new RC 2022-01-31 18:17:15 +01:00
6081ef6b02 👌 Verify switch succeeded (#111)
- Verify switch was successful
- Suggest "Fix My Valet"
- Restart nginx when switching PHP versions
2022-01-31 17:56:20 +01:00
4cffe5a662 👌 Rename "Force Load PHP" to "Fix My Valet" (#111) 2022-01-31 12:41:41 +01:00
813aec2b42 👌 Disable message in beta builds 2022-01-30 19:32:32 +01:00
f2452bbc70 👌 Keep track of times (successfully) switched
Some users might not reboot their computer and in that situation they
will never see the message in bba961269c.

This has been remedied by also checking how many times the version
switch has occurred.

The thresholds for the alert are now:

- Must have launched the app at least 7 times
OR
- Must have switched PHP versions at least 40 times

If the alert has been seen, it'll never be shown again. For more info
please consult the linked commit for the rationale behind this change.
2022-01-30 19:27:44 +01:00
28fb685bfc 🐛 Fix refreshing of PHP version 2022-01-30 00:40:11 +01:00
0661ca00ff 📝 Update README and SECURITY 2022-01-29 23:03:19 +01:00
0b04619003 ✏️ Update TODO for 5.1 2022-01-29 22:49:30 +01:00
85d7b6aa57 🔧 Switch to regular version (release candidate) 2022-01-29 21:36:55 +01:00
bba961269c Add successful launch count, sponsor alert
Okay, so this commit adds a sponsor alert. I wanted to elaborate.

Why? At this point I've invested so much of my free time in the app that
any and all donations would be incredibly welcome. Of course, phpmon
as it exists today must always remain free and open source.

(I dislike it when an app goes open source and then becomes paid.)

Obviously, I don't want to take useful features away from users:

1) usage of the old version is the only option for those who won't pay
2) piracy is an alternative and I don't want to deal with that
3) the positive sentiment around the app disappears ("sellout!")

Instead, I will nicely ask for donations once the app has been
successfully launched 7 times or more. This alert should only
appear once.

Fun fact: PHP Monitor started  as a single menu item with only
options to switch between version numbers.

Thanks to all the support, it has now become so much more.

To those who have already contributed: thank you very much.
I hope you continue to use and enjoy the app.

Cheers!
2022-01-29 21:29:51 +01:00
d0f7d2c5e9 Handle >= and > constraints 2022-01-29 19:10:17 +01:00
eeeb3eb184 👌 Tweak strings to be completely accurate 2022-01-29 18:05:26 +01:00
f00f8d26f6 🐛 Enforce readable Valet version 2022-01-29 17:46:56 +01:00
74817beec6 🐛 Fix First Aid not working 2022-01-29 17:46:37 +01:00
7b6809245c 🐛 loopback might not exist (#104) 2022-01-29 17:05:00 +01:00
5b40a8fd41 👌 Updated goals, new asset, SwiftUI integration 2022-01-29 14:15:39 +01:00
193f459be1 ✏️ New comments 2022-01-29 14:13:38 +01:00
c4c19a5b47 📝 Updated README, new promo shot 2022-01-29 14:13:05 +01:00
7d103c70e7 📝 Updated README 2022-01-29 13:22:47 +01:00
2ffe90948e Add preference to disable integrations
I like the idea of the exposed phpmon:// protocol, but for those who
care about security it should be possible to disable the integrations.
2022-01-29 12:52:33 +01:00
8e61aaacde 🔧 Bump build 2022-01-29 00:12:38 +01:00
29c8fcbde2 👌 Force composer from /usr/local/bin (#102) 2022-01-29 00:11:12 +01:00
8dd21f46aa 🍱 Fix colors for dark mode (#101) 2022-01-28 23:40:00 +01:00
e688dde2aa 👌 Add example Alfred workflow 2022-01-28 22:12:35 +01:00
987e1e1bdb 🔧 Bump version number 2022-01-28 22:06:53 +01:00
510257c436 👌 Complete work on inter app handler
Allowed commands:

phpmon://list
phpmon://services/stop
phpmon://services/restart/all
phpmon://services/restart/nginx
phpmon://services/restart/php
phpmon://services/restart/dnsmasq
phpmon://locate/config
phpmon://locate/composer
phpmon://locate/valet
phpmon://phpinfo
phpmon://switch/php/{version}
2022-01-28 22:05:53 +01:00
bb1572f32a Allow switching PHP versions via callback 2022-01-28 17:42:40 +01:00
45276034b1 Add initial start for scheme integration 2022-01-28 17:01:40 +01:00
0d4a144524 👌 Cleanup HomebrewDiagnostics 2022-01-28 16:42:46 +01:00
a0e5102ca7 👌 Add some comments for curious code readers 2022-01-28 16:30:07 +01:00
69c0f5ace9 Have all tests pass, refactor comparison logic 2022-01-27 19:39:02 +01:00
d0962c2387 🐛 Show question mark if service not found 2022-01-27 18:23:12 +01:00
4670894cfd 👌 Driver not detected (localised) 2022-01-27 01:15:54 +01:00
a2f6c70a03 🔀 Merge branch 'dev/4.x' 2022-01-27 00:46:12 +01:00
ef469868d8 📝 Update README (no more Valet switcher in 5.0) 2022-01-27 00:44:36 +01:00
c9ba872529 ️ Fix laggy scrolling and search
(Partial backport for the stable build.)
2022-01-27 00:43:08 +01:00
1e15042be2 🐛 Start a "clean" terminal every time (#99)
(Backported for the stable build.)
2022-01-27 00:34:54 +01:00
7647978da5 🐛 Start a "clean" terminal every time (#99) 2022-01-26 23:49:32 +01:00
f82f3052f2 Add Flarum to framework list (#95) 2022-01-26 21:56:27 +01:00
10b299ff65 🐛 Check if services command can run 2022-01-26 21:00:52 +01:00
e4ff0418fd ️ Faster search, faster scrolling 2022-01-26 20:31:37 +01:00
a2b25e31ca 👌 Delayed loading of config.json 2022-01-26 19:47:00 +01:00
c4772db808 👌 Determine "driver" by reading composer file
This is much faster than checking the actual driver, which might take
a while if you have many sites. If we're just checking the actual
composer file (which is already parsed) this should be much faster.
2022-01-26 19:06:57 +01:00
b59a5d31a5 👌 Save window size and position for site list 2022-01-25 21:40:11 +01:00
e4b1f75c53 👌 Handle errors when adding moved folder 2022-01-25 21:02:21 +01:00
338a87d503 👌 Show what prevents creation of link
- Site name already exists?
- Site name empty?
2022-01-25 18:50:35 +01:00
0f0e91273e 👌 Localisation improvements 2022-01-25 18:28:10 +01:00
20959501c9 👌 Fix flickering of incorrect data on first load 2022-01-25 00:09:50 +01:00
aeeecd6996 👌 Suggestions should also check all constraints 2022-01-25 00:09:36 +01:00
e9ae989200 👌 Check multiple constraints (e.g. "^7.3|^8.0") 2022-01-24 23:56:26 +01:00
f6378e7b73 Add option to add a linked site 2022-01-24 23:42:22 +01:00
d7e8652f5f 👌 Populate new ServicesView with stale data
This means that the user cannot tell we swapped out the view for another
view. The services are re-fetched upon creating the new view, but there
is a slight delay. This change conveniently "hides" this delay.

BEFORE
- Upon creating ServicesView2, ServicesView is deinitialized
- ServicesView2 shows question marks (no services data persisted)
- ServicesView2 async loads services, when done question marks removed

AFTER
- Upon creating ServicesView2, ServicesView is deinitialized
- ServicesView2 loads stale data (services data was persisted)
- ServicesView2 async loads services, when done stale data replaced
2022-01-24 23:41:47 +01:00
5293c437d1 🔧 Prepare for 5.0 beta 1 2022-01-24 01:22:13 +01:00
f75bfc9c4a Initial version of #72 2022-01-24 01:16:17 +01:00
42fc0e3698 🔥 Due to closing #34, removed switcher pref 2022-01-23 20:06:20 +01:00
626b7a735d 👌 Checkmark on site list 2022-01-23 19:37:10 +01:00
567373f8da Version constraint checks (#84)
The version constraint checks will also be used in the future to
evaluate whether any given site's PHP constraint (if set) is
valid for the currently linked version of PHP.

For example, assuming you have PHP 8.1.2 linked, we could evaluate:

* A site requires "8.0" -> invalid
* A site requires "^8.0" -> valid
* A site requires "^8.0.0" -> valid
* A site requires "~8.0" -> valid
* A site requires "~8.0.0" -> invalid

Currently, this constraint check is used to determine which versions
that are currently installed are good suggestions to switch to.

If you have a site with constraint "^8.0" for example, and you have
PHP 8.0 and 8.1 installed (with 8.1 linked), then you will get a
suggestion to switch back to 8.0.
2022-01-23 03:59:29 +01:00
32e8878a68 🏗 WIP: UI for switch to version options (#84) 2022-01-22 22:08:45 +01:00
46005a3c68 👌 Load notable dependencies (incl. laravel, #80) 2022-01-22 21:35:32 +01:00
03a409281a 👌 Sort site list by absolute path (#81) 2022-01-22 20:54:59 +01:00
e0dd778bb3 👌 Add debounce to site search (#82) 2022-01-22 20:50:17 +01:00
c3f8a53ac3 Updated preferences (added option to disable PHP hint next to icon)
- Only works with dynamic icon enabled
- Preference defaults to true on new or existing installs
  (because we want to display PHP next to the version number by default)

For those who love a minimal menu bar setup but still want to see what
PHP version is currently enabled, this is perfect.
2022-01-16 13:14:54 +01:00
d8579bd7d1 🐛 Fix incorrect change in AppDelegate 2022-01-11 21:30:18 +01:00
d2cd567fd2 Filter only needed services (#72) 2022-01-11 21:22:17 +01:00
a5212b436e Tweaked test copy (#72) 2022-01-11 21:22:17 +01:00
b16250c2be Added tests for Homebrew service parsing (#72) 2022-01-11 21:22:17 +01:00
3b4a1a0654 Enable parsing of Homebrew services JSON (#72) 2022-01-11 21:22:17 +01:00
9ab6231337 📝 PR template 2022-01-04 20:50:06 +01:00
38c2d9131b 📝 PR template 2022-01-04 20:49:57 +01:00
1566323fca 📝 PR template 2022-01-04 20:49:44 +01:00
dc44538a7b 👌 Adjust preference description (see also #78) 2022-01-04 20:17:26 +01:00
bf0a923eb2 👌 Add more detail to full PHP version setting name (#78) 2022-01-04 19:41:01 +01:00
04bf5a3251 📝 Updated README 2022-01-04 02:56:00 +01:00
23f3204fa8 📝 Phrasing fix 2022-01-04 02:52:33 +01:00
6dc74e94aa 📝 Document functionality in README 2022-01-04 02:51:33 +01:00
422aefe831 Read composer.json for version requirement 2022-01-04 02:33:53 +01:00
3c3a0c8b45 ♻️ Rework loading of custom preferences 2022-01-04 00:32:30 +01:00
0cdeeec0a4 ♻️ Load the custom preferences file (#73) 2022-01-04 00:30:27 +01:00
e4c3e78a8a 📝 Adjust README 2022-01-04 00:21:52 +01:00
7f320897be 👌 Make user-supplied apps available (#73) 2022-01-04 00:20:47 +01:00
9ef184331e 🐛 Fix issue with Valet path 2022-01-03 17:08:45 +01:00
e372480249 🐛 Fix issue with Valet precedence (#77) 2022-01-03 17:01:51 +01:00
3bca3117f9 Load custom preferences file 2022-01-03 16:49:50 +01:00
722e082526 👌 Rename method from update to rebuild 2022-01-03 16:20:53 +01:00
40a0bd6cab 👌 Prevent crash when refresh and switcher run at same time 2022-01-03 16:19:18 +01:00
78510ea3fe 👌 Even more cleanup 2022-01-03 16:09:49 +01:00
8624573e74 👌 Cleanup 2022-01-03 16:02:18 +01:00
dd251936b9 ♻️ Refactor PhpSwitcher into PhpEnv 2021-12-24 16:09:51 +01:00
c647aee8ea 🔀 Merge branch 'main' into dev/5.x 2021-12-23 20:19:21 +01:00
b7766aeec2 👌 Improve UI and warn about spaces in folder names 2021-12-23 20:09:23 +01:00
5af1f09ee1 🐛 Ensure app can handle interactions with path w/ spaces (#74) 2021-12-23 13:27:19 +01:00
6646ceda76 🐛 Fix preloaded site logic 2021-12-23 12:52:10 +01:00
0b05bb44a2 🐛 Fix initialization of Site objects (#74) 2021-12-23 12:29:12 +01:00
1fbb1a8aa8 🔀 Merge branch 'main' into dev/5.x 2021-12-23 00:16:19 +01:00
8cb2074d76 🔀 Merge branch 'dev/4.x' 2021-12-22 23:49:33 +01:00
c408d62118 📝 Final README adjustment for 4.1 2021-12-22 23:46:29 +01:00
665bba86dd 🔧 Tweak default verbosity 2021-12-22 16:55:32 +01:00
0d29fbf796 Add phpmon-cli fix command 2021-12-22 16:54:27 +01:00
69042042ea 👌 Cleanup 2021-12-21 18:00:07 +01:00
63f4f8b078 Added prototype binary to switch quickly 2021-12-21 17:52:13 +01:00
e76c6e14e4 ♻️ Added logger class 2021-12-21 17:06:03 +01:00
ceb168c6cf ♻️ Rework various common classes 2021-12-21 16:00:27 +01:00
a6387e96e7 ♻️ Separate some of the PHP config logic from the app 2021-12-21 15:30:50 +01:00
2dbf775ad6 🔥 Remove Swift Package for common data 2021-12-20 19:10:58 +01:00
acdcce7f7a Add scheme to support inter-app communication (#59) 2021-12-20 18:39:59 +01:00
7a3dc9a145 👌 Fix incorrect main.swift file 2021-12-20 18:31:16 +01:00
1ca49f6cbc ♻️ Reorganise code for optimal code sharing, add phpmon-cli
- Moved over common functionality to package
- Added phpmon-cli target (for fast switching via the terminal)
2021-12-20 18:25:52 +01:00
fa2de1f77c 🔀 Merge in changes from SwiftUI previews branch 2021-12-20 17:20:43 +01:00
fe695bb026 👌 Nicer logging of multiple paths 2021-12-19 14:16:49 +01:00
f82a3bb008 🔀 Merge in remaining changes from 4.x 2021-12-19 14:14:43 +01:00
e7df254dcc Make sure that watchers reload if the .conf.d dir contents change 2021-12-19 14:11:25 +01:00
ea9538f116 Ensure watcher does not fire too many times 2021-12-19 13:58:25 +01:00
0d75e4c3b2 🔀 Merge WIP changes from feature/config-watcher into 5.x 2021-12-19 12:56:16 +01:00
a90703e525 🔥 Remove unneeded icon 2021-12-19 12:46:35 +01:00
f74f9f69b2 📝 Update README 2021-12-19 12:42:39 +01:00
a950587e84 📝 Prepare for release 2021-12-19 12:29:20 +01:00
267a1dac94 👌 Various QoL improvements
- Ensure composer global update cannot run twice (#71)
- Set busy status when updating dependencies (#71)
- Further reorganized menu items (#69)
- Use consistent capitals in menu items
- Fix preferences screen layout (auto newlines due to fixed width)
2021-12-19 12:27:34 +01:00
ed49362291 Add option to automatically run composer global update 2021-12-18 19:45:50 +01:00
3f0f070245 👌 Clear out extra newlines 2021-12-18 16:17:59 +01:00
bd79f42e96 👌 Cleanup 2021-12-18 16:06:39 +01:00
35ae681c2d ♻️ Rework how output is handled 2021-12-18 15:53:04 +01:00
313e806414 Added menu item to run composer global update 2021-12-17 16:10:45 +01:00
a8dc366038 🔧 Bump build and RC version 2021-12-17 13:16:31 +01:00
eaf653e3c0 🔧 Disable valet switching for next release (#34) 2021-12-17 13:11:22 +01:00
5c391917d2 ♻️ Rework preferences 2021-12-17 13:02:08 +01:00
09b5aa7f93 📝 Updated promo image 2021-12-16 23:01:54 +01:00
66a8c17f1f 👌 Tweak order of menu items (#69) 2021-12-16 22:57:37 +01:00
adc31984a8 👌 Tweak order of operations to speed up boot 2021-12-16 18:56:51 +01:00
8114eef381 🔧 Bump build version 2021-12-16 01:49:42 +01:00
9190420c66 📝 Add Valet upgrade instructions 2021-12-16 01:47:22 +01:00
e5ba074936 Check Valet version and compare to recommended version
As part of the boot procedure, recommend upgrading Valet if the version
seems to be too old. For version 4.1 of PHP Monitor, the version has
been hard-coded to 2.16.2 (for PHP 8.1 compatibility).
2021-12-16 01:44:43 +01:00
e4f1efe26a 👌 Updated hotkeys and screenshot 2021-12-16 00:22:02 +01:00
498f4e7b79 👌 Polished context menu order and code 2021-12-10 19:39:08 +01:00
d9a526e828 🔥 Cleanup empty line 2021-12-10 18:06:55 +01:00
2f93b4980b 📝 Update application FAQ 2021-12-10 18:05:45 +01:00
ac0ca06d7f 🔧 Use production icon for RC 2021-12-10 17:42:49 +01:00
17320a19cf 📝 New promo shot (more detected apps) 2021-12-10 17:42:17 +01:00
3faa251216 👌 Fix launching apps with spaces in name, add window position (#68) 2021-12-10 17:31:26 +01:00
a9f140fabc ♻️ Change app detection, detect apps upfront 2021-12-10 17:10:36 +01:00
b6b5a94bbd ♻️ Change app detection 2021-12-10 12:42:06 +01:00
c05f0fe5cb 📝 Updated FAQ 2021-12-09 19:53:51 +01:00
eaf1423fb1 ️ Performance fixes
- Avoid preloading list of sites twice
- Avoid loading Valet info twice
- Preload list of sites if <= 10 sites linked + parked
- Added fallback for missing instructions
- Improved description
2021-12-09 19:49:16 +01:00
7feb13856d Ensure editor binaries exist or notify user (#67) 2021-12-09 19:39:58 +01:00
ca2ca9df3b 📝 Updated README with sponsor link 2021-12-08 14:15:56 +01:00
4259915ff6 📝 Updated README with sponsor link 2021-12-08 12:23:21 +01:00
89e7a9b1ea 🐛 Detect missing core php formula (#66)
In rare cases, the version corresponding to the `php` formula might not
be installed, but another alias is linked correctly. That means that the
PHP binary is found, but the core formula is not. PHP Monitor will
incorrectly report that it exists, which means the user can break their
PHP installation. Oops.

This quick fix handles that situation:

- Checks if the PHP binary for the `php` aliased version exists
  (located in $optdir/php/bin/php)
- Disables the force load option if the aliased version is missing
  (including a tweaked label if the version is missing)
2021-12-08 11:12:44 +01:00
8c25d23d09 📝 Promo images 2021-12-07 22:12:19 +01:00
f44811b9dc Add icon next to PHP version (#64) 2021-12-07 22:09:02 +01:00
f65fd513f2 ️ Only load sites when view opens for the first time 2021-12-07 20:04:19 +01:00
327c88a745 Allow unlinking of sites 2021-12-07 19:54:21 +01:00
63aa8c2f44 👌 Information density, open URL on double click (#65) 2021-12-07 19:16:47 +01:00
afbfc55088 👌 Information density (#65) 2021-12-07 17:45:21 +01:00
d13714c1ea ♻️ Improved code editor detection (#60)
Now correctly detects the following apps that can open a directory:

- PhpStorm (installed via Toolbox)
- Sublime Text
- Sublime Merge

This in addition to:

- PhpStorm (manual installation)
- Visual Studio Code

These need to be installed in the default location.
For VS Code to work, you need to have added `code` to your PATH.
2021-12-07 12:42:20 +01:00
92a6d506dc ♻️ Cleanup, updated target for tests 2021-12-06 17:19:14 +01:00
e381880675 🐛 Prevent #61 from crashing the app 2021-12-06 13:24:03 +01:00
7e185154ef 👌 Bump project deployment target 2021-12-06 13:17:10 +01:00
27c25378b1 Add preference to use internal switcher (#62) 2021-12-06 13:15:57 +01:00
1159a6cc2e 🐛 Prevent #61 from crashing the app 2021-12-06 12:29:00 +01:00
489bf13707 🚀 Prepare beta 3 2021-12-05 15:20:35 +01:00
5d3faceb5a 🔧 Bump version number, use regular icon 2021-12-05 15:09:43 +01:00
29d34a6b62 👌 Polish for v5.0 2021-12-05 15:08:43 +01:00
be80d74141 ♻️ Cleanup and comments 2021-12-05 14:31:49 +01:00
d37e86ce2c 👌 Fix busy status and fix notifications when app is active 2021-12-05 04:29:05 +01:00
d8fc857d23 👌 Show spinner when busy 2021-12-05 04:14:55 +01:00
e0bec333ed Improve multi-window handling 2021-12-05 03:53:30 +01:00
46867ad25e ♻️ Require at least macOS 11, various refactors 2021-12-05 02:54:03 +01:00
924edf6f96 👌 Quality of life changes, reload button 2021-12-04 21:26:47 +01:00
010c8eddde Secure and unsecure, new search bar (#58) 2021-12-04 20:42:45 +01:00
96602b1a9c 👌 Cleanup 2021-12-03 21:55:45 +01:00
d536499799 👌 Update minimal size of site list 2021-12-03 21:53:29 +01:00
ad016c54b2 ♻️ Reorganize menu 2021-12-03 21:50:32 +01:00
f8b0b38e9e 👌 Add menu items so common shortcuts work again 2021-12-03 21:44:32 +01:00
912e549104 🚀 Prepare beta 2 2021-12-03 21:36:48 +01:00
93bdb0ed7f Add search functionality 2021-12-03 21:25:10 +01:00
87713bbe64 Add options to open site with Code / PhpStorm (#58) 2021-12-03 20:55:38 +01:00
dce27059ff 🏗 WIP: Ensure the right-click menu works correctly 2021-12-03 19:49:03 +01:00
c919326480 🏗 WIP: Linked & parked sites UI (#58) 2021-12-03 19:44:21 +01:00
1e124a90f3 🏗 WIP: Linked & parked sites UI (#58) 2021-12-03 18:41:41 +01:00
d1fc9de4bd Detect default site (default key in JSON) (#58)
Now supports: https://laravel.com/docs/8.x/valet#serving-a-default-site
2021-12-03 01:56:08 +01:00
04db3f50ed 🏗 WIP: Detect linked and parked sites (#58) 2021-12-03 01:46:25 +01:00
4e347adf69 🚀 Prepare beta 1 2021-11-29 18:33:20 +01:00
79de14c9aa 📝 Clarify previous behaviour 2021-11-29 18:33:20 +01:00
7448e89965 📝 Update README 2021-11-29 18:33:20 +01:00
967743715b ♻️ Cleanup 2021-11-29 18:33:20 +01:00
d37913005b Read Valet configuration (#58) 2021-11-29 18:33:20 +01:00
0986b97051 ♻️ Add valet command (#34), read Valet configuration (#58) 2021-11-29 18:33:20 +01:00
bbb04f7907 📝 Updated support document 2021-11-29 18:32:25 +01:00
015f406ddf 📝 Update SECURITY.md 2021-11-28 15:38:07 +01:00
e1a97672b5 🔧 Bump build, reorganize files 2021-11-28 15:11:00 +01:00
493b5945f9 👌 Major changes to PHP version detection
* The information extracted from Homebrew's JSON command now also
  includes information about linked keg and installations.

* The mapped versions in the App class now contain information about
  the Homebrew installation as well.

* A HomebrewDiagnostics class has been added, which is currently able
  to detect conflicts between the `php` formulae of core and the
  `shivammathur/php` tap (which is currently an issue, see #54)

* Alerts are now displayed as critical if they are truly problematic.

* PhpInstallation was renamed to ActivePhpInstallation, to make room
  for a generic PhpInstallation object which contains cached info.

* Shell.pipe() now returns the contents of standardError if
  standardOutput was empty and there was some data in standardError.
  This makes it easier to debug the output of commands that output to
  standardError. (For example, failed brew commands might.)
2021-11-28 02:20:56 +01:00
52606aae8b 👌 Calling detectPhpVersions always immediately caches the info 2021-11-25 18:49:14 +01:00
2d6ca0f841 Also show full PHP version in dropdown (#53) 2021-11-25 18:41:21 +01:00
34900f929f Use gsed so we can follow symlinks to .ini files (#39, #47) 2021-11-13 21:18:01 +01:00
5dbd05fdfb Add option to auto-restart services (#32) 2021-11-13 20:50:33 +01:00
fe3cf9adb1 Add option to view long PHP version in menu bar 2021-11-13 19:11:05 +01:00
9bc8460cce 👌 Updated notification for Monterey 2021-10-19 21:42:17 +02:00
4cbd2fd6eb 📝 Updated documentation 2021-10-19 00:03:36 +02:00
6fef3fe37a 📝 Updated SECURITY.md 2021-10-19 00:02:13 +02:00
72a20d1ed9 🍱 New build screenshot of Xcode 13.1 2021-10-18 23:54:32 +02:00
73ed80434a 📝 Update README to reflect Monterey compatibility 2021-10-18 23:49:55 +02:00
a78672927b Support for upcoming releases of PHP 8.1 and 8.2 (dev) 2021-10-18 23:48:57 +02:00
4256eae442 👌 CS 2021-10-18 18:48:40 +02:00
76412b68f3 👌 Tests have OS X 10.14 as deployment target too 2021-08-31 11:08:00 +02:00
9153bb140a 👌 Code style fixes (empty line before class closes) 2021-08-31 11:03:55 +02:00
c9c15d10f9 👌 Improve handling of global hotkey load on startup 2021-08-31 10:52:49 +02:00
e8c2277ef5 🐛 Omit initial space (if uncommented, in #45) 2021-06-07 19:18:13 +02:00
23720c5dc9 🐛 Fix #45: Adjusted regex to support spaces 2021-06-07 19:13:52 +02:00
f881f07cba 👌 Cleanup 2021-05-07 15:29:47 +02:00
b072ee8dec 🚚 Improved project organisation, updated README 2021-05-03 16:52:51 +02:00
acfbc0b66f 👌 Clean up how file checks are done 2021-04-27 17:00:56 +02:00
c738a03934 📝 Update README & screenshot 2021-04-20 17:05:15 +02:00
84d62f3583 Ensure all tests pass 2021-04-20 17:05:05 +02:00
f9faa03b92 #41: Notify about broken PHP-FPM configuration 2021-04-19 20:30:37 +02:00
55f6c3c6cd Add "Locate global composer.json file" 2021-04-19 13:14:34 +02:00
a0c6753761 🐛 Use php_ini_scanned_files for .ini scan
Using `php-config --ini-dir` seems to fail on PHP 7.2 and below, likely
because said option was not available in these earlier versions. Because
all we need are the additional .ini files, calling php_ini_scanned_files
is a better solution since it is supported from PHP 5 and up.

This commit fixes the crash issue that was caused by running the failing
`php-config` command.

More information: https://www.php.net/manual/en/function.php-ini-scanned-files.php
2021-04-19 10:26:14 +02:00
327125608a 👌 Polish preferences screen 2021-04-15 23:16:42 +02:00
6c0045302b 📝 Updated README 2021-04-14 20:13:19 +02:00
9c85bebe72 Add option to turn all services off (#35) 2021-04-14 20:08:50 +02:00
fb56cd551e 👌 Improved parallelization 2021-04-14 19:40:07 +02:00
e83d507e79 Parallelize unlinking PHP versions 2021-04-14 18:46:33 +02:00
0c0e7fc87d Extension loading improvements (#31) and more
* The README has been updated with additional information
* The acknowledgements section has been added to the README
* The php@X.X/opt/bin/php-config binary is now used (#39)
* Extensions are now loaded from all possible .ini files
* PHP Monitor's preferences window can now be triggered via hotkey
* The first nine extensions can be triggered via hotkey
2021-04-07 16:58:05 +02:00
faf49fbe1d 👌 Prevent hotkey multi-fire (#33) 2021-04-02 18:32:07 +02:00
2925b0ff79 🏗 WIP: Global shortcut key (#33) 2021-04-02 17:50:46 +02:00
acb18474c8 👌 Fine-tuning the README 2021-04-01 21:17:35 +02:00
ed61490398 📝 Update README 2021-04-01 21:14:03 +02:00
abb76273c9 📝 New screenshot 2021-04-01 20:56:28 +02:00
2f15af4ff8 Improved test 2021-04-01 20:44:53 +02:00
e29e8416d5 Fix tests, add test for version detection 2021-04-01 20:38:24 +02:00
5d423210dd 👌 Improved PHP version filter 2021-04-01 20:19:55 +02:00
340c36fdf8 🔧 Bump version & build number 2021-04-01 00:18:54 +02:00
3085158b80 🐛 Validate detected PHP version (#30) 2021-04-01 00:18:33 +02:00
c2585f9bf4 👌 Cleanup, add separator before refresh item 2021-03-31 23:57:17 +02:00
d478137742 🔧 Bump version & build number 2021-03-31 19:50:38 +02:00
827bd182b1 🐛 Avoid duplicates (#30) 2021-03-31 19:38:30 +02:00
f7500637fe 🐛 Be more lenient about Valet checks (#27) 2021-03-31 12:21:06 +02:00
7c884610b1 👌 Use snake case for all key names 2021-03-30 16:38:09 +02:00
d3d219751e 🍱 Updated layout constraints 2021-03-30 16:35:13 +02:00
16d2e7d06f Add preferences dialog to enable static icon (#25) 2021-03-30 16:31:28 +02:00
47b86ff9fa 🚩 New prerelease build 2021-03-29 22:29:44 +02:00
6e574b9154 👌 Make sure 'refresh' reopens the menu afterwards (#24) 2021-03-29 22:24:15 +02:00
485001403d Add refresh button (#24)
By pressing Command-R while the menu is open, the information about the
current PHP installation will be refreshed. 

You'll need to open the menu again, but now it will contain up-to-date 
information. You could also just press the menu item, of course.
2021-03-29 21:50:40 +02:00
694c5e7f7d Add credits 2021-03-29 20:49:55 +02:00
d9ff26385a 🍱 Optimized assets 2021-03-29 20:04:08 +02:00
0cfb7c65bb 👌 Avoid self 2021-03-19 16:15:05 +01:00
3cbc2a0367 👌 Avoid self. (and capture using [self] in) 2021-03-19 16:01:03 +01:00
7733c90206 👌 Whitespace, remove print() 2021-03-19 15:50:43 +01:00
0ad6e5cb1c 👌 Multiple trailing closures 2021-03-19 15:44:26 +01:00
8a47cfd5f1 🐛 Remove which valet check 2021-03-17 14:50:26 +01:00
db4c0399fd 📝 Update README 2021-03-12 12:26:55 +01:00
b0f29b72cd 💰 Add funding option to GitHub 2021-03-12 12:24:57 +01:00
98a1622ccc 🔀 Merge branch 'develop'
* develop:
  💰 Add funding option to GitHub
  📝 Update SECURITY
2021-03-12 12:10:12 +01:00
a6ac737590 💰 Add funding option to GitHub 2021-03-12 12:09:49 +01:00
bba719012f 📝 Update SECURITY 2021-03-12 10:01:46 +01:00
cdc0cea01c 📝 Update SECURITY 2021-03-12 10:01:32 +01:00
d3a4f2091c 🚀 Version 3.1
* develop:
  📝 Tweak error message string
  🔧 Bump build version
  🐛 Handle `valet` install in `/opt/homebrew/bin`
  👌 Cleanup
  📝 Updated README
  🔧 Determine default shell based on macOS version
   Added tests
  🚚 Moved files around
  📝 Update copyright information
2021-03-12 09:54:40 +01:00
c7dc17dded 📝 Tweak error message string 2021-03-12 09:54:12 +01:00
d70f8627bb 🔧 Bump build version 2021-03-12 09:50:29 +01:00
7661f4643d 🐛 Handle valet install in /opt/homebrew/bin 2021-03-12 09:46:38 +01:00
11d74277e5 👌 Cleanup 2021-02-19 18:59:39 +01:00
e4096ab662 📝 Updated README 2021-02-19 17:35:48 +01:00
d367f1f353 🔧 Determine default shell based on macOS version
This fixes #21 (fixes the issue on Mojave) and closes #22 since the min
SDK does not need to be bumped.
2021-02-19 17:28:57 +01:00
79fbdef41b Added tests 2021-02-14 22:54:45 +01:00
37ede7e2a3 🚚 Moved files around 2021-02-14 22:54:38 +01:00
80eabe3bf3 📝 Update copyright information 2021-02-12 10:00:25 +01:00
aa07a42d8f 🚀 Version 3.0
* develop: (29 commits)
  🔧 Bump version for release
  👌 All methods are internal by default
  📝 Move all FAQ to README
  📝 Reorganized document
  📝 Updated quick troubleshooting
  📝 New screenshot
  🔧 Bump build version
  🎨 Use Self to refer to current type
   Improved byte value parsing
  📝 Updated SECURITY
  📝 Updated README, new screenshot
  🔧 Bump build version
  🚚 Move files around
  🔥 Crash if the view is unavailable
  🎨 Fix threading issue
   Completed new design for v3.0
   Tweak custom views
   Custom views
  🎨 Updated localization, cleanup
  🔥 Cleanup
  ...
2021-02-12 09:47:28 +01:00
b6b3a9a74c 🔧 Bump version for release 2021-02-12 09:38:09 +01:00
ec4371e6da 👌 All methods are internal by default 2021-02-10 16:35:23 +01:00
c7a92d502f 📝 Move all FAQ to README 2021-02-07 11:52:53 +01:00
172a38e459 📝 Reorganized document 2021-02-05 10:59:55 +01:00
d18e8298b6 📝 Updated quick troubleshooting 2021-02-05 10:54:09 +01:00
df325474c6 📝 New screenshot 2021-02-05 10:27:34 +01:00
60278d7817 🔧 Bump build version 2021-02-05 10:11:15 +01:00
9e8117d31f 🎨 Use Self to refer to current type 2021-02-05 10:07:48 +01:00
3d042b24ed Improved byte value parsing 2021-02-05 09:56:02 +01:00
fcf3483dd0 📝 Updated SECURITY 2021-02-04 22:35:37 +01:00
3db333dd77 📝 Updated README, new screenshot 2021-02-04 22:32:46 +01:00
b0f0fd8c6b 🔧 Bump build version 2021-02-04 22:09:36 +01:00
69755cd8cc 🚚 Move files around 2021-02-04 22:07:09 +01:00
6b2fa0c605 🔥 Crash if the view is unavailable 2021-02-04 22:04:29 +01:00
dd41b5a1e0 🎨 Fix threading issue 2021-02-04 22:00:58 +01:00
a3fe09ed8a Completed new design for v3.0 2021-02-04 21:41:36 +01:00
ad81c4a3db Tweak custom views 2021-02-04 21:27:52 +01:00
572b0f69dd Custom views 2021-02-04 21:23:41 +01:00
c1b80552a0 🎨 Updated localization, cleanup 2021-02-03 22:09:53 +01:00
0493f61dc8 🔥 Cleanup 2021-02-03 19:39:49 +01:00
9824ed2b83 Load certain info from ini files 2021-02-03 18:01:25 +01:00
3e0a16cc73 📝 Document extension detection & toggling 2021-01-31 23:06:57 +01:00
5a50e7fdab Allow toggling of PHP extensions in php.ini 2021-01-31 22:50:39 +01:00
1dc85a4d48 🔧 Bump version and build 2021-01-29 20:48:49 +01:00
85ef3ff067 ♻️ Paths now uses static variables instead of methods 2021-01-29 20:39:55 +01:00
2958378411 ♻️ Add static methods to Shell 2021-01-29 20:36:33 +01:00
3a2cd3bff6 ♻️ Rework file checks & replacement into separate methods 2021-01-29 20:32:12 +01:00
fbe791902c 🎨 Update copyright, minor bracket cleanup 2021-01-29 20:08:27 +01:00
77f4de8ca9 🎨 Cleanup code 2021-01-29 19:57:13 +01:00
0f6e47a594 📝 Added build instructions 2021-01-09 13:46:45 +01:00
7408da2a91 ♻️ Assets now available as SVG 2021-01-09 13:38:32 +01:00
12a66f3467 📝 Updated Homebrew instructions 2021-01-06 18:09:16 +01:00
d3615138dd 🚀 Version 2.6
* develop:
  📝 Updated quick troubleshooting
  📝 Updated documentation
  📝 Updated SECURITY
  📝 Updated README
   New build number, updated shortcut keys
  🌐 Add info about `valet install` when running force reload
   Fix my PHP should also restart dnsmasq
   Add menu item to restart dnsmasq
  🔧 Bump build number
  ♻️ Cleanup, updated README (#20)
  ♻️ Refactoring, version bump for M1 support (#20)
   Add support for Homebrew in /opt/homebrew (#20)
  👌 Clean up switchToPhpVersion() and fixMyPhp()
  👌 Avoid using sender.tag
  👌 Improved pipe() method
  🌐 Localized startup environment checks
  🐛 Perform the phpinfo.html on another thread and show busy
  📝 Updated instructions
2021-01-06 17:51:29 +01:00
dd27b91527 📝 Updated quick troubleshooting 2021-01-06 17:49:26 +01:00
bc093cc945 📝 Updated documentation 2021-01-06 17:42:09 +01:00
fd46ce6b35 📝 Updated SECURITY 2021-01-06 17:29:24 +01:00
e35acadeaf 📝 Updated README 2021-01-06 17:18:59 +01:00
7b8aab85d6 New build number, updated shortcut keys
- Cmd-F now [F]orce reloads
- Cmd-S now restarts all [S]ervices
- Cmd-P now restarts the [P]hp service
- Cmd-D now restarts the [D]nsmasq service
2021-01-01 23:55:37 +01:00
ec59715b3d 🌐 Add info about valet install when running force reload 2021-01-01 23:49:51 +01:00
6f21913ae2 Fix my PHP should also restart dnsmasq 2021-01-01 23:48:12 +01:00
b53fbe471b Add menu item to restart dnsmasq 2021-01-01 23:19:31 +01:00
209f3e889d 🔧 Bump build number 2021-01-01 23:06:24 +01:00
5825e8d0b0 ♻️ Cleanup, updated README (#20) 2021-01-01 23:05:16 +01:00
4ea11c5f59 ♻️ Refactoring, version bump for M1 support (#20) 2021-01-01 22:58:27 +01:00
94f086881a Add support for Homebrew in /opt/homebrew (#20) 2021-01-01 22:54:03 +01:00
e73474e30c 👌 Clean up switchToPhpVersion() and fixMyPhp() 2020-12-19 18:38:00 +01:00
c7a0e25336 👌 Avoid using sender.tag 2020-12-13 19:32:43 +01:00
e353fb7524 👌 Improved pipe() method 2020-12-13 19:16:51 +01:00
458868d051 🌐 Localized startup environment checks 2020-12-08 23:18:52 +01:00
932fafc728 🐛 Perform the phpinfo.html on another thread and show busy 2020-11-27 17:01:30 +01:00
b70c4f690a 📝 Updated instructions 2020-11-27 16:40:37 +01:00
4147cc7b4b 🚀 Version 2.5 2020-11-27 16:32:42 +01:00
72b309a716 📝 Be more explicit in main README 2020-11-27 16:31:54 +01:00
12c2716715 📝 Add information about running valet install 2020-11-27 16:29:02 +01:00
4d4019204b 📝 Updated README with new screenshot 2020-11-27 16:24:06 +01:00
157033a3b3 🚀 Version 2.5 (RC) 2020-11-27 11:32:26 +01:00
717cddacdd 🐛 Fix issue with php install now showing up 2020-11-27 11:29:40 +01:00
f13ed5dd90 Add option to open output of phpinfo() in browser 2020-11-27 01:33:06 +01:00
a8f823cd04 📝 Update README.md, ADDITIONAL.md 2020-11-26 18:59:49 +01:00
51fd22f595 Cleanup storyboard, add Brew package name to switcher 2020-11-26 18:53:15 +01:00
bf6ebff3bf Detect what version of PHP the php package is linked to 2020-11-26 17:58:34 +01:00
1887b19329 🚧 WIP: Get JSON about current PHP version 2020-11-26 17:02:24 +01:00
a53972404c 🚀 Version 2.4
* develop:
  📝 Updated SECURITY to reflect new support status
  🔧 Updated build settings
  🔧 Add PHP 8.0 to list of detected PHP versions
  📝 Universal application
2020-11-14 15:23:19 +01:00
64a605235a 📝 Updated SECURITY to reflect new support status 2020-11-14 02:33:46 +01:00
a194ecdebe 🔧 Updated build settings 2020-11-14 02:20:26 +01:00
03158a568c 🔧 Add PHP 8.0 to list of detected PHP versions 2020-11-14 02:19:42 +01:00
bdc6be7384 📝 Universal application 2020-11-14 02:19:28 +01:00
4908dba57e 📝 Update support information 2020-08-16 16:45:42 +02:00
0f0aa176b6 📝 Update README 2020-08-16 16:43:08 +02:00
485729f9a5 🚀 Version 2.3
Merge branch 'develop' into main

* develop:
  📝 Updated README, SECURITY docs
  🍱 Updated screenshot to Big Sur
  ♻️ Cleanup
  🚧 WIP: Notify the user about PHP switch completion (#15)
2020-08-16 16:27:38 +02:00
5eb36a9bdf 📝 Updated README, SECURITY docs 2020-07-20 17:28:59 +02:00
86113d2067 🍱 Updated screenshot to Big Sur 2020-07-19 13:17:55 +02:00
70c04d4dc7 ♻️ Cleanup
- Bump version number to 2.3
- Disable Metal validation in project configuration
- Added comments to various files to clarify code
- Moved various strings to Localizable.strings
- Removed references to old view controller for command log
- No longer log previously ran commands
2020-07-16 23:16:39 +02:00
5d69b423c1 🚧 WIP: Notify the user about PHP switch completion (#15) 2020-07-16 22:25:51 +02:00
1617b57b1e 🚀 Version 2.2
Merge branch 'develop'

* develop:
  📝 Update README
  📝 Amend modal copy
  🐛 Improved startup procedure
  🚧 Add Internet Access Policy
   Add shared scheme
2020-07-16 19:37:21 +02:00
33825e7b66 📝 Update README 2020-07-16 19:34:38 +02:00
464b7106b2 📝 Amend modal copy 2020-07-16 19:29:01 +02:00
0cf85f9958 🐛 Improved startup procedure
- First issue encountered will notify the user
- User has the option to Retry or Terminate the app
- Retry will go through launch checks again
- Some issues are marked as non-breaking, meaning the user will be
  notified, but the app will just start as usual
2020-07-16 19:26:29 +02:00
00cf2bc360 🚧 Add Internet Access Policy 2020-07-11 11:18:31 +02:00
dbb5329908 Add shared scheme 2020-07-11 10:54:05 +02:00
9fd8e7042a 🚀 Version 2.1
Merge branch 'develop'

* develop:
  📝 Add installation instructions
  📝 Added docs for release procedure
  📝 Updated README
  🔧 Hardened runtime (required for notarization)
  🍱 Updated icon for macOS 11 style, updated alert
2020-07-11 10:41:11 +02:00
cb62a20f2a 📝 Add installation instructions 2020-07-11 10:40:02 +02:00
bb1742a390 📝 Added docs for release procedure 2020-07-11 10:05:47 +02:00
6db43beddf 📝 Updated README 2020-07-11 01:07:51 +02:00
7e2c7cdd59 🔧 Hardened runtime (required for notarization) 2020-07-11 01:00:31 +02:00
e76dd0daeb 🍱 Updated icon for macOS 11 style, updated alert 2020-07-11 00:49:32 +02:00
0c33e8f8cc 🎉 Version 2.0 2020-05-17 11:36:31 +02:00
a6a196518a 🔀 Merge branch 'develop'
* develop:
  📝 Changes to the README, bump version number
  ♻️ Menu refactor
  ♻️ Use Localizable.strings
  ♻️ Change default shell for commands, cleanup files
2020-05-17 00:22:40 +02:00
a287ebf6e4 📝 Changes to the README, bump version number 2020-05-17 00:17:45 +02:00
2200b395f1 Merge branch 'cleanup' into develop
* cleanup:
  ♻️ Menu refactor
  ♻️ Use Localizable.strings
  ♻️ Change default shell for commands, cleanup files
2020-05-16 23:56:33 +02:00
bc8a572072 ♻️ Menu refactor 2020-05-16 23:55:04 +02:00
1c455ea05a ♻️ Use Localizable.strings 2020-05-16 23:32:34 +02:00
f2d01748be ♻️ Change default shell for commands, cleanup files
The shell that is now invoked is /bin/sh as opposed to /bin/bash, which
has proven to be faster in various cases.
2020-05-16 23:06:52 +02:00
d3e59e560f New beta for version 1.9 2020-05-13 17:34:51 +02:00
55e849c21b Various fixes and improvements
- Prevent crashes with incorrectly loading modules
- Prevent crashes when dyld libraries are missing
- Indicate when the PHP installation is broken
- New warning added at boot (multiple services)
- Added "Force load latest PHP version" option

It is known that PHP 5.6, 7.0 and 7.1 are causing issues with the
newer versions of certain libraries ("dyld library" warning).

It is recommended to only use PHP 7.2, PHP 7.3 and PHP 7.4 for a minimal
amount of issues. Otherwise, there are certain fixes that are possible
but they are not supported via PHP Monitor since they require manual
formula changes.

For more information, see:
https://github.com/eXolnet/homebrew-deprecated/issues/23#issuecomment-619976586
2020-05-13 17:26:00 +02:00
50f6afb3c5 🔀 Merge branch 'develop'
* develop:
   Add option to restart nginx, open valet config
   Allow restarting of PHP-FPM
  📝 Update copyright message
2020-02-20 17:24:48 +01:00
67e80aac8d Add option to restart nginx, open valet config 2020-02-20 17:24:21 +01:00
e683b6bc9a Allow restarting of PHP-FPM 2020-02-20 16:12:38 +01:00
e854ebe114 📝 Update copyright message 2020-02-20 11:58:16 +01:00
b792f55e5f 🔀 Merge branch 'develop'
* develop:
  ♻️ Change how the active PHP version is switched
2020-02-20 11:49:09 +01:00
cbf5526881 ♻️ Change how the active PHP version is switched 2020-02-20 11:47:49 +01:00
f62297ee3d 🔀 Merge branch 'develop'
* develop:
  🔥 Remove broken log
  🔧 Version bump
  🚧 WIP: Adds support to PHP 7.4
  ️ Use Command.execute to retrieve PHP version
  🚧 WIP: Add toggle to enable or disable Xdebug
  📝 Update readme
2019-12-20 11:59:04 +01:00
2f017f6732 📢 Version 1.6 for personal use 2019-12-20 11:55:25 +01:00
1c62a100af 🔥 Remove broken log
(Will just log this in a file - the right way)
2019-12-20 11:54:15 +01:00
e176d6fa2d 🔧 Version bump 2019-12-20 11:48:20 +01:00
ea60626c47 🚧 WIP: Adds support to PHP 7.4
(PHP 7.4 isn't out for Homebrew just yet.)
2019-11-28 12:46:14 +01:00
69c3386088 ️ Use Command.execute to retrieve PHP version 2019-11-20 08:43:09 +01:00
3e898d435b 🚧 WIP: Add toggle to enable or disable Xdebug 2019-10-17 19:04:49 +02:00
a4dcd0cd3d 📝 Update readme 2019-10-15 10:39:42 +02:00
bb382c0f74 📝 Update readme 2019-10-14 11:14:28 +02:00
c87c532d1c 📝 Update readme for Catalina compatibility 2019-10-14 10:54:03 +02:00
327 changed files with 27520 additions and 875 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,2 @@
github: nicoverbruggen
custom: ['https://nicoverbruggen.be/sponsor']

33
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,33 @@
---
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.

View File

@ -0,0 +1,22 @@
---
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.

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!

35
.github/pull_request_template.md vendored Normal file
View File

@ -0,0 +1,35 @@
Hello there! Thank you for considering a pull request for PHP Monitor.
Please read the text below first before you submit your PR.
## Do not PR unless...
In order to make development and maintenance of PHP Monitor easier, I ask that you _avoid_ making a pull request in the following situations:
* No issue has been associated with the changes youd like to merge
* You have not announced you will be addressing a particular issue
* The PR is a low effort change: e.g. commits that only fix typos or phrasing may not be accepted
(If you believe the phrasing of particular text in the app is unclear or incorrect, please open an issue first.)
In short: It is usually best to *get in touch first* if you are making substantial changes.
## 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. **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.
There may be a newer branch available, which is an appropriate place for bigger changes, but please keep in mind that it is usually best to announce youll be working on such a change before you spend the time, since as the lead contributor I might not even want said change in the app. Thank you.
## Your changes
(feel free to remove the disclaimer above)
* Affected parts of the app: shared code / UI code / CLI (remove what does not apply)
* Estimated impact on performance: none / low / high (remove what does not apply)
* Made a new build with Xcode and tested this: yes / no (remove what does not apply)
* Tested on macOS version + architecture: (e.g. "Monterey on M1" or "Big Sur on Intel")
* References issue(s): (please reference the issue here, using # and the number of the issue)
(please describe what you have changed here)

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ phpmon.xcodeproj/project.xcworkspace
phpmon.xcodeproj/xcuserdata
PHP Monitor.xcodeproj/project.xcworkspace
PHP Monitor.xcodeproj/xcuserdata
.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

90
DEVELOPER.md Normal file
View File

@ -0,0 +1,90 @@
# 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
```
## ⚙️ 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"/>
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.)
If you'd like to create a production build, choose "Any Mac" as the target and select Product > Archive.
## 🚀 Release procedure
1. Merge into `main`
2. Create tag
3. Add changes to changelog + update security document
4. Archive
5. Notarize and prepare for own distribution
6. After notarization, export .app
7. Create zipped version
8. Calculate SHA256: `openssl dgst -sha256 phpmon.zip`
9. Upload to GitHub and add to tagged release
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.
For example, given the following crash (from an .ips file):
```
Thread 2 Crashed:: Dispatch queue: com.apple.root.user-initiated-qos
0 libswiftDispatch.dylib 0x7ff82aa3ab8c static OS_dispatch_source.makeProcessSource(identifier:eventMask:queue:) + 28
1 PHP Monitor 0x1096907d8 0x10965e000 + 206808
| |
address load address
2 PHP Monitor 0x1096903ac 0x10965e000 + 205740
3 PHP Monitor 0x10968f88b 0x10965e000 + 202891
```
You must use the correct order for the the address and load address in the command below:
```
$ atos -arch x86_64 -o '/path/to/PHP Monitor.app.dSYM/Contents/Resources/DWARF/PHP Monitor' -l 0x10965e000 0x1096907d8
| | | |
architecture path to DSYM load address address
```
This will return the relevant information, for example:
```
FSWatcher.startMonitoring(_:behaviour:) (in PHP Monitor) (PhpConfigWatcher.swift:95)
```
For more information, see [Apple's documentation](https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report).

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,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1320"
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 = "--configuration:~/.phpmon_fconf_working.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,140 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1400"
version = "1.7">
<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"
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 = "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>
</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"
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>
</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"
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">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1400"
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>

626
README.md
View File

@ -1,48 +1,624 @@
# PHP Monitor
> **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!** ⭐️
PHP Monitor (or phpmon) is a macOS utility that runs on your Mac and displays the active PHP version in your status bar.
<p align="center"><img src="./docs/logo.png" alt="PHP Monitor Logo" width="500px" /></p>
<img src="./docs/screenshot.png" width="278px" alt="phpmon screenshot"/>
**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 app</u> (consult the FAQ below with info about how to set up your environment).
For me, it comes in handy when running multiple versions of PHP with Homebrew and you wish to be able to see at a glance which version is currently linked & active with Laravel Valet, and switch between versions.
<img src="./docs/screenshot.jpg#gh-light-mode-only" width="1280px" alt="phpmon screenshot (menu bar app)"/>
<img src="./docs/screenshot-dark.jpg#gh-dark-mode-only" width="1280px" alt="phpmon screenshot (menu bar app)"/>
This version of PHP Monitor was developed for:
<small><i>Screenshot: Showing the key functionality of PHP Monitor.</i></small>
* macOS Mojave (10.14)
* PHP 7.x with Homebrew 2.x (with support for PHP 5.6 and PHP 7.0 [as well](https://github.com/eXolnet/homebrew-deprecated))
* Laravel Valet 2.2
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)!
## Why I built this
<img src="./docs/notification.png#gh-light-mode-only" width="370px" alt="phpmon screenshot (notification)"/>
<img src="./docs/notification-dark.png#gh-dark-mode-only" width="370px" alt="phpmon screenshot (notification)"/>
I wanted to be able to see at a glance which version of PHP was linked, and handle dealing with Laravel Valet in a simple app without having to deal with the terminal every time.
PHP Monitor also gives you quick access to various useful functionality (like accessing configuration files, restarting services, and more).
Initially, I had an Alfred workflow for this. But this does the job as well, while also showing me at all times which version of PHP is linked (which is the main benefit over e.g. an Alfred workflow).
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.
## How it works
## 🖥 System requirements
### Version detection
PHP Monitor is a universal application that runs natively on Apple Silicon **and** Intel-based Macs.
This utility runs `php -r 'print phpversion();'` in the background periodically (every 60 seconds) and extracts the version number.
* Your user account can administer your computer (required for some functionality, e.g. certificate generation)
* macOS 11 Big Sur or later
* Homebrew is installed in `/usr/local/homebrew` or `/opt/homebrew`
* Homebrew `php` formula is installed
* Laravel Valet (works with Valet v2, v3 and v4)
_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`. Some features are not supported when running Valet 2._
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](https://laravel.com/docs/master/valet)** installed first:
```sh
composer global require laravel/valet
valet install
valet trust
```
Once that's done, you can install PHP Monitor via Homebrew (recommended), or (alternatively) you may download the latest release on GitHub.
To install via Homebrew, run:
```sh
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
```
To upgrade your existing installation, run:
```sh
brew upgrade phpmon
```
(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.)
## ⚡️ Launchers (Alfred, Raycast)
If you would like to integrate with your launcher of choice, you can also download an [Alfred workflow](https://github.com/nicoverbruggen/phpmon/raw/main/integrations/phpmon.alfredworkflow) or [Raycast extension](https://www.raycast.com/nicoverbruggen/php-monitor) that works with PHP Monitor.
The app must be running in the background for these to work, and the _Allow third-party integrations_ checkbox must be enabled in Preferences (it is by default).
## 🔑 Is the app signed & notarized?
Yes, the app is signed and notarized, meaning all you have to do is approve its first launch (or whenever it updates).
## 👨‍💻 Why build this?
I wanted to be able to **see at a glance** which version of PHP was linked, and handle dealing with Laravel Valet in a simple app without having to deal with the terminal every time.
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.
## 🤬 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.
**Follow instructions as specified in the alert in order to resolve any issues.**
(If the app crashes at launch without showing you any of these messages, you might have a non-standard Homebrew and Valet setup. Those are not supported.)
## 🙋‍♂️ FAQ & Troubleshooting
> If you are having issues, the first thing you should be doing is installing the latest version of PHP Monitor _and_ Laravel Valet. This can resolve a variety of issues. To upgrade Valet, run `composer global update`. Don't forget to run `valet install` after upgrading.
If you're still having issues, here's a few common questions & answers, as well as issues and solutions:
<details>
<summary><strong>Which versions of PHP are supported?</strong></summary>
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.
> **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 are available via [this tap](https://github.com/shivammathur/homebrew-php). For more information about those backports, please see the next FAQ entry.
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.2.
You can install other supported versions of PHP out of the box, so `php@8.0` and `php@8.1` at the time of writing.
If you wish to install older (officially unsupported) versions of PHP for local use, you can do so by using [Shivam Mathur's tap](https://github.com/shivammathur/homebrew-php):
```sh
brew tap shivammathur/php
```
You may find that this tap is already in use: if you've used Valet before, it automatically uses this tap for legacy versions of PHP.
```sh
brew install shivammathur/php/php@7.4
brew install shivammathur/php/php@7.3
brew install shivammathur/php/php@7.2
brew install shivammathur/php/php@7.1
brew install shivammathur/php/php@7.0
```
**Always make sure to restart PHP Monitor after installing or upgrading PHP versions!**
> *Note*: Using this tap 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.
Super convenient!
</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.
**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 [Homebrew](https://brew.sh) first. Follow the instructions there first!
Then, you'll need to set up your PATH.
nano .zshrc
Make sure the following line is not in the comments:
# on an Intel Mac
export PATH=$HOME/bin:/usr/local/bin:$PATH
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` 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:
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` if you are on Apple Silicon)
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
You can now install PHP Monitor, if you haven't already:
brew tap nicoverbruggen/homebrew-cask
brew install --cask phpmon
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>
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>
<summary><strong>PHP Monitor tells me `php` is not installed...</strong></summary>
Try installing again using `brew install php`.
This should resolve the issue! If that does not fix the issue, run `brew link php --force`. (Afterwards, you may need to restart your terminal to make sure the new linked version is detected.)
brew install php
brew link php --force
</details>
<details>
<summary><strong>Valet sites won't load. I'm getting a 502 Bad Gateway error!</strong></summary>
If you're visiting your `.test` domain, and you're getting a 502 (Bad Gateway) after switching to a different PHP version, you're dealing with a common issue.
This problem is usually resolved by upgrading Valet and running `valet install` again.
composer global update
valet install
</details>
<details>
<summary><strong>PHP Monitor tells me my installation is broken, but I don't see why!</strong></summary>
PHP Monitor tells you that a PHP installation is broken, if the configuration is causing warnings or errors when determining the version number.
Since PHP Monitor changes the linked version via Homebrew, both Valet *and* your terminal (CLI) should use the new PHP version.
However, this might not be the case on your system. You _might_ have a specific version of PHP linked if that is not the case. In that case, you may need to change your `.bashrc` or `.zshrc` file where the PATH is set (depending on the terminal you use).
You can find out which version of PHP is being used by running `which php`.
You can find out what exactly is causing the issue by running a command. On Intel, you can run (replace `7.4` with the version that is broken):
```
/usr/local/opt/php@7.4/bin/php -r "print phpversion();"
```
On Apple Silicon, you can run (replace `7.4` with the version that is broken):
```
/opt/homebrew/opt/php@7.4/bin/php -r "print phpversion();"
```
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!)
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.)
</details>
<details>
<summary><strong>One of my commented out extensions is not being detected...</strong></summary>
The app searches in the relevant `.ini` files for a specific pattern. For regular extensions:
* `extension="*.so"`
* `; extension="*.so"`
For Zend extensions:
* `zend_extension="*.so"`
* `; zend_extension="*.so"`
The `*` is a wildcard and the name of the extension. If you've commented out the extension, make sure you've commented it out with a semicolon (;) and a single space after the semicolon for PHP Monitor to detect it.
Since v3.4 all of the loaded .ini files are sourced to determine which extensions are enabled.
</details>
<details>
<summary><strong>I've got two Homebrew installations on my Apple Silicon Mac, can I choose which installation to use with PHP Monitor?</strong></summary>
If you are using PHP Monitor on an Intel machine or on an Apple Silicon machine with Rosetta enabled, PHP Monitor expects the main Homebrew binary in `/usr/local/bin/brew`.
If you are using PHP Monitor on Apple Silicon without Rosetta, PHP Monitor expects the main Homebrew binary in `/opt/homebrew/bin/brew`.
If there's an issue here, you'll get an alert at launch.
Make sure that the version of Homebrew that you are running normally is the same as the one that PHP Monitor expects. If you are on M1 hardware for example, but still using Rosetta for Homebrew, you'll need to run PHP Monitor under Rosetta as well.
PHP Monitor is a universal app and supports both architectures, so [find out here](https://support.apple.com/en-us/HT211861) how to enable Rosetta with PHP Monitor.
</details>
<details>
<summary><strong>Why is the app doing network requests?</strong></summary>
The app will automatically check for updates, which is the most likely culprit.
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>
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>
<details>
<summary><strong>How do I get various applications to show up in the domain list's right-click menu?</strong></summary>
When you select and right-click on a domain, you can open these directories with various applications. This can help speed up your workflow. However, for these apps to show up, they must be detected first.
The supported apps are: <i>PhpStorm, Visual Studio Code, Sublime Text, Sublime Merge, iTerm</i>.
All of these apps should just be detected correctly, no matter their location on your system. If you can open it using `open -a "appname"`, the app should be detected and work. If you have renamed the app, there might be an issue getting it detected.
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 `~/.config/phpmon/config.json` file, and make sure the `scan_apps` key is set:
<pre>
{
"scan_apps": ["Xcode", "Kraken"]
}
</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>
<summary><strong>How can the app integrate with third party tools, like Alfred or Raycast?</strong></summary>
PHP Monitor supports third party app integrations by default, and this feature is enabled in Preferences unless you disable it.
You can grab the official [Alfred workflow](https://github.com/nicoverbruggen/phpmon/raw/main/integrations/phpmon.alfredworkflow) or [Raycast extension](https://www.raycast.com/nicoverbruggen/php-monitor).
If you'd like to integrate something yourself, all you need to to is use the `phpmon://` protocol and ensure that third party app integrations are enabled in Preferences (in PHP Monitor).
Using app callbacks, macOS and PHP Monitor allow for the following to be called:
* phpmon://list
* phpmon://services/stop
* phpmon://services/restart/all
* phpmon://services/restart/nginx
* phpmon://services/restart/php
* phpmon://services/restart/dnsmasq
* phpmon://locate/config
* phpmon://locate/composer
* phpmon://locate/valet
* phpmon://phpinfo
* phpmon://switch/php/{version}
</details>
<details>
<summary><strong>How does the app know what PHP version is required for my app?</strong></summary>
The `composer.json` file in the root of the folder (if it exists) is scanned and interpreted.
If the version is set in `platform`, it takes precendence.
If the version is not set in `platform` but it is in `require` (most common) then that version is used.
</details>
<details>
<summary><strong>What do the checkmarks next to the PHP version mean in the site list?</strong></summary>
You'll see a checkmark next to the version number if the currently enabled PHP version is compatible with the version required to run the site.
This is determined by evaluating the PHP requirement constraint (e.g. `^8.0`, `~8.0` or a specific version: `8.0`).
</details>
<details>
<summary><strong>Why can't I see the driver type any more? It says "Project Type" now.</strong></summary>
PHP Monitor currently checks your `composer.json` file to try to figure out what project you are running.
This approach is a lot faster than asking for a driver when you have many sites linked, but is slightly less reliable since the framework or type of project inferred via `composer.json` might not be 100% accurate.
You can always still ask Valet using the command line, should it be necessary. In my experience fetching the drivers slowed down the app unnecessarily.
</details>
<details>
<summary><strong>After running PHP Monitor, Homebrew sometimes has issues with `brew upgrade` or `brew cleanup`!</strong></summary>
You can now use **First Aid & Services > Restore Homebrew Permissions** to (temporarily) resolve this issue and allow for a clean and painless `brew upgrade` or `brew cleanup` process.
If you would like to know more, consult [this issue](https://github.com/nicoverbruggen/phpmon/issues/85) for more information about why this is needed.
</details>
<details>
<summary><strong>The app has crashed!</strong></summary>
Please get in touch and open an issue. PHP Monitor shouldn't crash... (unless you are actually removing PHP *while* the app is running, thats considered normal behaviour!)
If you would like to report a crash, please include the associated **log files** so I can find out what exactly went wrong.
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".
</details>
## 📝 Having another issue?
I did not include any tracking or analytics software, so if you encounter issues, let me know [via an issue](https://github.com/nicoverbruggen/phpmon/issues/new).
## 💵 Support me?
PHP Monitor is available entirely **free of charge**, but if you can afford it a donation helps keep the project alive and the app maintained.
You can find a [sponsor](https://nicoverbruggen.be/sponsor) link at the top of this repo or you could click the link here to be taken to my sponsorship page.
Donations really help with the Apple Developer Program cost, and keep me motivated to keep working on PHP Monitor outside of work hours (I do have a day job!).
## 😎 Acknowledgements
Special thanks go out to:
* 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 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.
## 🚜 How it works
### 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).
In order to save power, this only happens once every 60 seconds.
### Switching PHP versions
This utility will detect which PHP versions you have installed via Homebrew, and then allows you to switch between them.
This means:
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.
- You have at least the latest version of PHP installed (`php@7.3`)
- You have installed Laravel Valet (`which valet` returns `/usr/local/bin/valet`)
- You ran `valet trust`, which means Valet commands can be run without using sudo
If you're using Valet 3, versions of PHP-FPM required to keep isolated sites up and running will also be started or stopped as needed.
The utility runs the following commands:
### Config change detection
- Unlink all detected PHP versions
- Switch to PHP 7.3 (this is done in order to ensure that Valet works, even when attempting to use PHP 5.6)
- Tell Valet to switch to a specific PHP version
- Link the desired version of PHP
PHP Monitor watches your filesystem in the relevant `conf.d` directory for the currently linked PHP version.
Whenever an .ini file is modified, PHP Monitor will attempt to reload the current information about the active PHP installation.
If an extension or other process writes to a single file a bunch of times in a short span of time (&lt; 1 sec), PHP Monitor will only reload the active configuration information after a while (with a slight delay).
### Site detection
1. **Location of your sites**: PHP Monitor uses the Valet configuration file to determine which folders to look into. Each folder is scanned and then PHP Monitor will validate if a composer.json file exists to determine the desired PHP version.
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.
### Want to know more?
If you want to know more about how this works, I recommend you check out the source code.
If you want to know more about how this works, I recommend you check out the source code.
This app isn't very complicated after all. In the end, this just (conveniently) executes some shell commands.
I have done my best to annotate as much as humanly possible, and have avoided using an overly complicated architecture to keep the code as easy to maintain as possible. The code isn't perfect by a long shot (lots of cleanup can still happen!) but the application works well.
I also have a few tests for key parts of the application that I found needed to be tested. In the future, I would like to add even more tests for some of the UI stuff, but for now the tests are more unit tests than feature tests.
For more detailed information for developers, please see [the documentation file for developers](./DEVELOPER.md).

31
SECURITY.md Normal file
View File

@ -0,0 +1,31 @@
# Security Policy
## 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):
| Version | Apple Silicon | Supported | Supported macOS | Deployment Target | Detected PHP Versions | Recommended Valet Version |
| ------- | ------------- | ------------------ | ----- | ----- | ----- | ----
| 5.7 | ✅ Universal binary | ✅ Yes | 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 |
(*) Preliminary listing. Valet 4 hasn't been released yet and the versions of PHP Valet can work with might still change.
## 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 |
| ------- | ------------- | ------------------ | ----- | ----- | ----- | ----
| 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 |
| 2.4 | ✴️ Universal binary<br/>`/usr/local/homebrew` installations only | ❌ | Big Sur (11.0)<br/>Catalina (10.15) | macOS 10.14+ | not applicable | not applicable |
| < 2.4 | Intel binary<br/>`/usr/local/homebrew` installations only | ❌ | Catalina (10.15) | macOS 10.14+ | not applicable | not applicable |
## Reporting a vulnerability
Contact me (Nico Verbruggen) at the email address used for the commits in the repository. Please include "PHP Monitor" in the subject.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
assets/icon.svg Normal file
View File

@ -0,0 +1 @@
<svg width="512" height="512" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><filter x="-4.6%" y="-3.4%" width="109.2%" height="109.2%" filterUnits="objectBoundingBox" id="b"><feOffset dy="5" in="SourceAlpha" result="shadowOffsetOuter1"/><feGaussianBlur stdDeviation="5.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.26 0" in="shadowBlurOuter1"/></filter><filter x="-8.6%" y="-11%" width="117.1%" height="121.9%" filterUnits="objectBoundingBox" id="d"><feOffset dx="1" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"/><feGaussianBlur stdDeviation="6.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"/><feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.372049825 0" in="shadowBlurOuter1" result="shadowMatrixOuter1"/><feMerge><feMergeNode in="shadowMatrixOuter1"/><feMergeNode in="SourceGraphic"/></feMerge></filter><linearGradient x1="50.023%" y1="-15.482%" x2="50.023%" y2="104.493%" id="e"><stop stop-color="#51C2FB" offset=".053%"/><stop stop-color="#1C91FE" offset="100%"/></linearGradient><path d="M167.939 50H344.06c41.01 0 55.881 4.27 70.874 12.288 14.992 8.018 26.759 19.785 34.777 34.777C457.73 112.058 462 126.93 462 167.94V344.06c0 41.01-4.27 55.881-12.288 70.874-8.018 14.992-19.785 26.759-34.777 34.777C399.942 457.73 385.07 462 344.06 462H167.94c-41.01 0-55.881-4.27-70.874-12.288-14.992-8.018-26.759-19.785-34.777-34.777C54.27 399.942 50 385.07 50 344.06V167.94c0-41.01 4.27-55.881 12.288-70.874 8.018-14.992 19.785-26.759 34.777-34.777C112.058 54.27 126.93 50 167.94 50z" id="a"/></defs><g fill="none" fill-rule="evenodd"><mask id="c" fill="#fff"><use xlink:href="#a"/></mask><use filter="url(#b)" xlink:href="#a" fill-rule="nonzero" fill="#000"/><g mask="url(#c)"><path fill="#FFF" d="M50 50h412v412H50z"/></g><g filter="url(#d)" mask="url(#c)"><path fill="#FFF" d="M131.535 155.144l63.377-8.907 33.68 239.645-63.377 8.907zM315.79 263.497l63.377-8.907 15.17 107.94-63.377 8.906z"/><path fill="#FFF" d="M315.79 263.497l63.377-8.907 15.17 107.94-63.377 8.906z"/><path fill="#FFF" d="M316.01 173.224l84.001 68.319-53.919 66.92-84-68.318z"/><path fill="#FFF" d="M93.155 157.813l164.384-23.102 21.433 152.5-164.385 23.104z"/><path d="M133.3 83.75h-12.9V54.437c0-2.303-1.935-4.187-4.3-4.187h-8.6c-2.365 0-4.3 1.884-4.3 4.188v41.874c0 2.304 1.935 4.188 4.3 4.188h25.8c2.365 0 4.3-1.884 4.3-4.188v-8.374c0-2.304-1.935-4.188-4.3-4.188zm202.1 100.5h-8.6v-56.584c0-6.647-2.741-13.033-7.579-17.744L265.525 57.63c-4.837-4.71-11.395-7.38-18.221-7.38H223.6V25.125C223.6 11.254 212.044 0 197.8 0h-172C11.556 0 0 11.254 0 25.125v167.5c0 13.871 11.556 25.125 25.8 25.125h8.6C34.4 245.492 57.513 268 86 268c28.487 0 51.6-22.508 51.6-50.25h68.8c0 27.742 23.112 50.25 51.6 50.25 28.488 0 51.6-22.508 51.6-50.25h25.8c4.73 0 8.6-3.769 8.6-8.375v-16.75c0-4.606-3.87-8.375-8.6-8.375zM86 242.875c-14.244 0-25.8-11.254-25.8-25.125s11.556-25.125 25.8-25.125c14.244 0 25.8 11.254 25.8 25.125s-11.556 25.125-25.8 25.125zm25.8-92.125c-33.271 0-60.2-26.224-60.2-58.625 0-32.4 26.929-58.625 60.2-58.625S172 59.724 172 92.125c0 32.4-26.929 58.625-60.2 58.625zM258 242.875c-14.244 0-25.8-11.254-25.8-25.125s11.556-25.125 25.8-25.125c14.244 0 25.8 11.254 25.8 25.125s-11.556 25.125-25.8 25.125zM301 134h-77.4V75.375h23.704L301 127.666V134z" fill="url(#e)" fill-rule="nonzero" transform="rotate(-8 1129.292 -453.38)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

1
assets/menubar.svg Normal file
View File

@ -0,0 +1 @@
<svg width="22" height="22" xmlns="http://www.w3.org/2000/svg"><path d="M8.975 8.375H8.3V6.844a.223.223 0 00-.225-.219h-.45a.223.223 0 00-.225.219V9.03c0 .12.101.219.225.219h1.35a.223.223 0 00.225-.219v-.437a.223.223 0 00-.225-.219zm10.575 5.25h-.45v-2.956c0-.347-.143-.68-.397-.927l-2.81-2.731a1.37 1.37 0 00-.953-.386H13.7V5.312C13.7 4.588 13.095 4 12.35 4h-9C2.605 4 2 4.588 2 5.313v8.75c0 .724.605 1.312 1.35 1.312h.45C3.8 16.825 5.01 18 6.5 18c1.49 0 2.7-1.176 2.7-2.625h3.6c0 1.45 1.21 2.625 2.7 2.625 1.49 0 2.7-1.176 2.7-2.625h1.35c.247 0 .45-.197.45-.438v-.874a.445.445 0 00-.45-.438zM6.5 16.688c-.745 0-1.35-.588-1.35-1.313s.605-1.313 1.35-1.313c.745 0 1.35.588 1.35 1.313s-.605 1.313-1.35 1.313zm1.35-4.813c-1.74 0-3.15-1.37-3.15-3.063C4.7 7.12 6.11 5.75 7.85 5.75S11 7.12 11 8.813c0 1.692-1.41 3.062-3.15 3.062zm7.65 4.813c-.745 0-1.35-.588-1.35-1.313s.605-1.313 1.35-1.313c.745 0 1.35.588 1.35 1.313s-.605 1.313-1.35 1.313zM17.75 11H13.7V7.937h1.24l2.81 2.732V11z" fill="#000" fill-rule="nonzero"/></svg>

After

Width:  |  Height:  |  Size: 1017 B

87
assets/source.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 44 KiB

BIN
docs/build.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

BIN
docs/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
docs/notification-dark.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/notification.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
docs/screenshot-dark.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 KiB

BIN
docs/screenshot.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

Binary file not shown.

View File

@ -1,39 +0,0 @@
//
// AppDelegate.swift
// PHP Monitor
//
// Created by Nico Verbruggen on 11/06/2019.
// Copyright © 2019 Nico Verbruggen. All rights reserved.
//
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
// MARK: - Variables
let sharedShell : Shell
let state : App
let menu : MainMenu
// MARK: - Initializer
override init() {
self.sharedShell = Shell.user
self.state = App.shared
self.menu = MainMenu.shared
super.init()
}
// MARK: - Lifecycle
func applicationDidFinishLaunching(_ aNotification: Notification) {
self.menu.startup()
}
func applicationWillTerminate(_ aNotification: Notification) {
self.state.windowController = nil
}
}

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
}
}

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 647 B

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 101 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

After

Width:  |  Height:  |  Size: 148 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: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 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: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 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

@ -0,0 +1,24 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "check.svg",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) --><path d="M435.848 83.466L172.804 346.51l-96.652-96.652c-4.686-4.686-12.284-4.686-16.971 0l-28.284 28.284c-4.686 4.686-4.686 12.284 0 16.971l133.421 133.421c4.686 4.686 12.284 4.686 16.971 0l299.813-299.813c4.686-4.686 4.686-12.284 0-16.971l-28.284-28.284c-4.686-4.686-12.284-4.686-16.97 0z"/></svg>

After

Width:  |  Height:  |  Size: 497 B

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,25 @@
{
"images" : [
{
"filename" : "Default.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Default@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,25 @@
{
"images" : [
{
"filename" : "Linked.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Linked@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,25 @@
{
"images" : [
{
"filename" : "Parked.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Parked@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 868 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,25 @@
{
"images" : [
{
"filename" : "Proxy.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Proxy@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 935 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,25 @@
{
"images" : [
{
"filename" : "Isolated.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Isolated@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

View File

@ -0,0 +1,24 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Locked.svg",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

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 30 30" 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;">
<rect id="Locked" x="0" y="0" width="30" height="30" style="fill:none;"/>
<g id="Locked1" serif:id="Locked">
<g transform="matrix(0.0468317,0,0,0.0468317,4.50971,3.01112)">
<path d="M400,256L152,256L152,152.9C152,113.3 183.7,80.4 223.3,80C263.3,79.6 296,112.1 296,152L296,266.079C296,279.379 376,279.137 376,265.837L376,152C376,68 307.5,-0.3 223.5,0C139.5,0.3 72,69.5 72,153.5L72,256L48,256C21.5,256 0,277.5 0,304L0,464C0,490.5 21.5,512 48,512L400,512C426.5,512 448,490.5 448,464L448,304C448,277.5 426.5,256 400,256Z" style="fill-rule:nonzero;"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,24 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Unlocked.svg",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"template-rendering-intent" : "template"
}
}

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 30 30" 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;">
<rect id="Locked" x="0" y="0" width="30" height="30" style="fill:none;"/>
<g id="Locked1" serif:id="Locked">
<g transform="matrix(0.0468317,0,0,0.0468317,4.50971,3.01112)">
<path d="M400,256L152,256L152,152.9C152,113.3 183.7,80.4 223.3,80C263.3,79.6 296,112.1 296,152L296,168C296,181.3 322.386,192 322.386,192L352,192C365.3,192 376,181.3 376,168L376,152C376,68 307.5,-0.3 223.5,0C139.5,0.3 72,69.5 72,153.5L72,256L48,256C21.5,256 0,277.5 0,304L0,464C0,490.5 21.5,512 48,512L400,512C426.5,512 448,490.5 448,464L448,304C448,277.5 426.5,256 400,256Z" style="fill-rule:nonzero;"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

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

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"filename" : "Menu Bar Elephant.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Menu Bar Elephant@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,22 @@
{
"images" : [
{
"filename" : "Menu Bar.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "Menu Bar@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

After

Width:  |  Height:  |  Size: 278 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 780 B

After

Width:  |  Height:  |  Size: 500 B

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