You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This v3.3.0 release is a big PR that focuses on code-parity with macOS
Valet, enhanced emergency uninstallation, significant code quality
improvements and lots of refactoring for improved maintainability. Valet
will also no longer ship with the executable for Acrylic, instead the
latest version is dynamically downloaded and installed from SourceForge.
Here are some notable changes:
### New Features
- Added new http 500 error page to help users debug nginx errors that
fail silently.
- Added new `Packages\Package` and `Packages\Acrylic` classes for better
maintainability and usability.
- Added `Ansicon` to the emergency uninstall services script to help
cases where Ansicon fails to uninstall properly via `valet uninstall`,
which leaves it's path in the registry, and upon reinstalling valet, the
`"The system cannot find the path specified"` error then fails the
installation process. This is a workaround and not a direct fix for
issue #28. Also improved the UX of the script.
- Many code-parity changes, additions, and fixes with the Mac version
(v4.8.7). Including moving the drivers into the PSR-4 autoloaded `Valet`
directory and namespacing them as `Valet\Drivers` or
`Valet\Drivers\Specific`. Also introduced new legacy drivers to extend
the namespaced drivers so user custom drivers will still work.
### Removals
- Removed all the bin files for Acrylic, in favour of downloading the
latest versions from SourceForge.
- Removed the redundant `CommandLine::runAsUser`,
`Valet::composerGlobalDiagnose`, `Valet::composerGlobalUpdate`, and
`ValetException::githubApiRateLimitExceededError` methods.
### Deprecations
- The new legacy drivers are all deprecated by default and will be
removed in v4.0.0.
### Fixes
- Fixed the coping of Unicode characters in the `Diagnose` output.
- Fixed errors when the Valet home directory (`~/.config/valet`) doesn't
exist during the `Upgrader` run. `Upgrader` now only runs if the home
path exists.
- Fixed `Upgrader::upgradeSymbolicLinks` method running when the
directory is empty causing redundant console messages. It now only runs
when the config key is missing and there are symlinks in the directory.
- Fixed system compatibility check to PHP 7.4 as a minimum.
- Fixed `set-ngrok-token` command errors that was caused by a method
name change. It now uses the `Ngrok::getConfig` instead of the old
`Ngrok::getNgrokConfig`.
- Fixed updating old isolated site conf files on `valet install`.
Secured site conf files have always been updated on installing valet,
but isolated sites were stuck using old configs. All files are now
rewritten to use the updated conf structure.
- Fixed `Site::unisolate` and `Site::isolate` methods to not output info
directly to the terminal, as this causes progress bars to mess up. The
output is now moved to the commands that called the methods.
This is a large [Release PR](https://github.com/yCodeTech/valet-windows/pull/29) that focuses on code-parity with macOS Valet, enhanced emergency uninstallation, significant code quality improvements and lots of refactoring for improved maintainability. Valet will also no longer ship with the executable for Acrylic, instead the latest version is dynamically downloaded and installed from SourceForge.
13
+
14
+
For the full changelog please view the PR commits.
15
+
16
+
### Added
17
+
18
+
- Added the ability for nginx to display http status 500 error page. This is important because if a PHP error occurs internally while trying to access a site, nginx fails silently, and the browser just displays a generic 500 error page. To help users debug the error, and narrow down the cause of the error, the new valet 500 error page will tell users where to look for the error in the logs.
19
+
20
+
- Added a command to the `Diagnose` class to get the `winsw` version via reading it's README.
21
+
22
+
- Added the ability to get the structure of both Valet's home directory and the Valet bin directory and output it in the `Diagnose` output as a directory tree diagram. This will help diagnose any issues in the future by making sure the Valet home directory and Valet bin directory has all the required files and named correctly. A new `Filesystem::scanDirRecursive` method has also been added to assist with scanning and retrieving of the directories and files.
23
+
24
+
- Added the ability to download the latest version of `Acrylic`.
25
+
26
+
- Added new `Acrylic` class with the namespace `Valet\Packages` that extend the new base `Package` class. This class will download the latest version from SourceForge.
27
+
28
+
- Added new `Acrylic_IPv4_Binding_Address.ini` stub file to add the custom IPv4 binding localhost loopback address as fixed in PR [#15](https://github.com/yCodeTech/valet-windows/pull/15).
29
+
30
+
- Added a `changeLocalIpv4BindingAddress` method to replace the default value of `LocalIPv4BindingAddress` with our custom value from the new stub file.
31
+
32
+
### Changed
33
+
34
+
- Extract much of `GithubPackage` class into a new `Package` class as the new base class, refactor and make the method and variable names generic.
35
+
36
+
- Improved the emergency uninstall services creation during Valet installation. The emergency uninstall files are now located in `~/.config/valet/Emergency Uninstall`.
37
+
38
+
- Fixed the script to automatically run with admin privileges if it doesn't already have them.
39
+
40
+
- Added `Ansicon` to the script to handle cases where `Ansicon` fails to uninstall properly.
41
+
42
+
In cases where valet has uninstalled for a composer update, there is sometimes a remnants of the Ansicon path in the registry. This will cause installation issues where a system message will appear `"The system cannot find the path specified"` or similar, and installation will fail. This emergency script has a copy of Ansicon in the `~/.config/valet/Emergency Uninstall` directory and will attempt to uninstall it again. This is just a workaround, and not a direct fix for issue [#28](https://github.com/yCodeTech/valet-windows/issues/28).
43
+
44
+
- Fixed the script to remove all the `valet\Services` files after uninstalling them.
45
+
46
+
- Code-parity with the Mac version (v4.8.7):
47
+
48
+
- Moved the basic and laravel drivers into a new `Drivers` directory within the `Valet` directory, and namespaced them as `Valet\Drivers`.
49
+
50
+
Moved the rest of the drivers into the `Specific` subdirectory of `Drivers`, and namespaced them as `Valet\Drivers\Specific`.
51
+
52
+
This is so they can be autoloaded by PSR-4.
53
+
54
+
- Introduced empty legacy driver classes that extend the namespaced drivers so that user custom drivers still work. These legacy drivers are deprecated by default.
55
+
56
+
- Added the requirement for custom drivers to be namespaced as `Valet\Drivers\Custom`.
57
+
58
+
- Added a more robust check for `Bedrock` environments and checking the composer dependencies for the required package.
59
+
60
+
- Fixed Drupal JSON:API support for non-standard urls. More info on the Valet for Mac PR [#1218](https://github.com/laravel/valet/pull/1218).
61
+
62
+
- Added new drivers for `Nette`, `Radicle`, and `Statamic V2`.
63
+
64
+
- Fixed `Craft` driver to prevent sites breaking when applying security patches to Craft. More info on the Valet for Mac PR [#1516](https://github.com/laravel/valet/pull/1516).
65
+
66
+
- Gracefully handle the old `SampleValetDriver.php` and upgrade it to the new namespaced sample via a new `Upgrader::fixOldSampleValetDriver` method.
67
+
68
+
- Added upgrade instructions for custom drivers in [UPGRADE.md](/UPGRADE.md), including namespace and inheritance requirements.
69
+
70
+
- Update logos to support GitHub dark/light theme.
71
+
72
+
- Moved the `services` command from being an installed-only command to being available without installation.
73
+
74
+
- Various refactoring for better organisation, maintainability, and improved code quality.
75
+
76
+
### Fixed
77
+
78
+
- Fixed the copying of Unicode character in the `Diagnose` output. The Windows clip.exe program doesn't support copying of all Unicode characters, so if there's a character it doesn't know, it will display `????` in the output instead of the character. This is especially true for the box characters (eg. `┣━`) used for directory trees. The `copyToClipboard` method now writes the output to a temp file as UTF-8 with BOM encoding to allow usage of copyable Unicode characters, and uses the Powershell command `Set-Clipboard` to copy to the clipboard.
79
+
80
+
- Fixed errors when the Valet home directory (`~/.config/valet`) doesn't exist during the `Upgrader` run. `Upgrader` now only runs if the home path exists.
81
+
82
+
- Fixed `Upgrader::upgradeSymbolicLinks` method running when the directory is empty causing redundant console messages. It now only runs when the config key is missing and there are symlinks in the directory.
83
+
84
+
- Fixed system compatibility check to PHP 7.4 as a minimum.
85
+
86
+
- Fixed `set-ngrok-token` command errors that was caused by a method name change. The `Ngrok::getNgrokConfig` method was changed to the generic `Ngrok::getConfig` in the release PR of v3.2.0 and specifically in commit [db085bd](https://github.com/yCodeTech/valet-windows/commit/db085bd1ddb0be1d58a6b59b33acae5ee1050924), but it's usage in the command was never changed. Changed the method call to the new name.
87
+
88
+
- Fixed updating old isolated site conf files on `valet install`. Secured site conf files have always been updated on installing valet via the `Nginx::rewriteSecureNginxFiles` method, but isolated sites were stuck using old configurations. All conf files are now rewritten and updated to prevent old nginx configurations causing issues.
89
+
90
+
- Fixed `Site::unisolate` and `Site::isolate` methods to not output info directly to the terminal, as this causes progress bars to mess up in the terminal when using the `Site::reisolateForNewTld` method which calls the `un/isolate` methods. The info output is now moved to the commands that called the methods.
91
+
92
+
### Removed
93
+
94
+
- Removed the `CommandLine::runAsUser` method because it is a duplicate method of `run`. It doesn't do anything different or special. So we can just use `run` instead.
95
+
96
+
- Removed the unused `Valet::composerGlobalDiagnose`, `Valet::composerGlobalUpdate`, and `ValetException::githubApiRateLimitExceededError` methods.
97
+
98
+
- Removed all bin files for `Acrylic`, in favour of downloading the latest versions from SourceForge.
99
+
100
+
### Deprecated
101
+
102
+
- The new legacy drivers are all deprecated by default and will be removed in v4.0.0.
<palign="center">This is a Windows port of the popular Mac development environment <ahref="https://github.com/laravel/valet">Laravel Valet</a>.</p>
11
11
<palign="center">Laravel Valet <i>Windows</i> 3 is a much needed updated fork of <ahref="https://github.com/cretueusebiu/valet-windows">cretueusebiu/valet-windows</a>, with lots of improvements and new commands. This version hopes to achieve as much parity as possible with the Mac version. For command parity, please refer to the <ahref="#command-parity-checker">parity checker</a>.</p>
|[Acrylic DNS Proxy](https://mayakron.altervista.org/support/acrylic/Home.htm)| 2.1.0 |
158
-
|[ngrok](https://ngrok.com/)| 3.3.1 |
155
+
| Service | Version |
156
+
| --------------------------: | ------- |
157
+
|[ngrok](https://ngrok.com/)| 3.3.1 |
159
158
160
159
> [!IMPORTANT]
161
160
> ngrok may error out that it is "too old" when running it for some accounts. In the upcoming v3.2.0 release, Valet will ship with the latest version of ngrok.
@@ -166,14 +165,15 @@ Valet ships with and installs these services:
166
165
>
167
166
> For both commands, valet automatically appends the config file location as a flag to the command, so ngrok will already know where the config file is.
168
167
169
-
As of v3.2.0, Valet no longer ships with the executables for the following services, instead they will be downloaded and installed automatically from GitHub's API. This is so that the latest versions with bug fixes and security updates can be installed.
168
+
As of v3.2.0 and v3.3.0, Valet no longer ships with the executables for the following services, instead they will be downloaded and installed automatically from it's online source (GitHub, SourceForge, etc.). This is so that the latest versions with bug fixes and security updates can be installed.
@@ -1537,17 +1537,25 @@ Doesn't affect valet functionality.
1537
1537
1538
1538
## Emergency Stop and Uninstall Services
1539
1539
1540
-
As of v3.1.6, Valet has an emergency stop and uninstall services script. This script is copied to the `/.config/valet` directory for safe keeping.
1540
+
As of v3.1.6, Valet has an emergency stop and uninstall services script. This script is copied to the `/.config/valet/Emergency Uninstall` directory for safe keeping.
1541
1541
1542
1542
So if `composer global update` is ran before valet is uninstalled, and several running services prevent composer from removing the files and updating valet, then you can run the `emergency_uninstall_services.bat` file to stop and uninstall the services.
1543
1543
1544
1544
To run, open a CMD terminal with Admin privileges and run this:
All services will have been stopped and you can then be able to run `composer global update`.
1550
+
Alternatively, find it in the File Explorer and double clicking the file will also run it.
1551
+
1552
+
All services will have been stopped and removed and you can then be able to run `composer global update`.
1553
+
1554
+
> [!IMPORTANT]
1555
+
>
1556
+
> If you receive the `The system cannot find the path specified` error or similar while installing valet, then usually it's to do with Ansicon leaving it's path in the registry after uninstalling, which then fails Valet's installation.
1557
+
>
1558
+
> The emergency uninstall script can help to uninstall Ansicon again and hopefully fully removing it from the registry.
1551
1559
1552
1560
## Valet Directories
1553
1561
@@ -1595,7 +1603,13 @@ Upon installation, Valet creates the following directories and config files:
This is an batch file to do an emergency stop and uninstall of all services. See the [Emergency Stop and Uninstall Services section](#emergency-stop-and-uninstall-services).
1600
1614
1601
1615
> [!WARNING]
@@ -1655,6 +1669,12 @@ Upon installation, Valet creates the following directories and config files:
1655
1669
1656
1670
If the WMI error does occur, try running the command again. If different WMI errors occur, please submit an issue with all relevant details.
1657
1671
1672
+
- If there is a large error and it's file trace output to the terminal, the top of the error may be cut off/overwritten. Apparently Symfony can only write to the terminal that is viewable, if it goes outside of the viewable area (ie. you need to scroll up to view) then the output is overwritten and the most important part of the error, the description at the start is cut off. (See https://github.com/symfony/symfony/issues/35012). If this happens, make the terminal larger in height and try the command again to try and view the full error.
1673
+
1674
+
- When trying to install Valet after updating via Composer, and you receive this error or similiar: `The system cannot find the path specified`; it could be that Ansicon hasn't uninstalled properly and left it's path in the registry. Because it happens unpredictably, there is no way of debugging or fixing it.
1675
+
1676
+
The only "workaround" is to use the emergency uninstall script (`emergency_uninstall_services.bat`) in the `~/.config/valet/Emergency Uninstall` directory to allow Ansicon another chance to uninstall itself properly. (See [issue 28](https://github.com/yCodeTech/valet-windows/issues/28)). See the [Emergency Stop and Uninstall Services section](#emergency-stop-and-uninstall-services).
1677
+
1658
1678
## Xdebug Installation
1659
1679
1660
1680
Valet only installs a specific Xdebug PHP CGI service on a separate port to work alongside the PHP service. To install Xdebug itself, follow the [official guide](https://xdebug.org/docs/install).
- If you have any issues with your drivers, all custom drivers (including the `SampleValetDriver` published by previous versions of Valet) must have the following:
4
+
5
+
- Have the namespace of `Valet\Drivers\Custom`.
6
+
7
+
- Extend the new namespaced drivers instead of the old non-namespaced drivers by specifying a `use` keyword like `use Valet\Drivers\ValetDriver;`
8
+
9
+
See the [new SampleValetDriver](https://github.com/yCodeTech/valet-windows/blob/master/cli/stubs/SampleValetDriver.php) for an example.
0 commit comments