Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
3f88d6a
refactor: move all drivers into the PSR-4 autoloaded `Valet` classes …
yCodeTech Apr 2, 2025
56b9434
fix: user custom drivers by adding legacy drivers that extend the new…
yCodeTech Apr 2, 2025
cfd0819
refactor: move the drivers `require` file to the `includes` directory
yCodeTech Apr 2, 2025
5c5f3a9
style: remove extra space in driver's docblock params, and convert st…
yCodeTech Apr 3, 2025
18ca578
feat: add 3 new drivers for `Nette`, `Radicle`, and `Statamic V2`
yCodeTech Apr 3, 2025
c485994
refactor: extract functionality for public directory from basic drive…
yCodeTech Apr 3, 2025
7369d78
refactor: add `beforeLoading` hook to simplify the `frontControllerPa…
yCodeTech Apr 3, 2025
43468d5
feat: Add the ability for drivers to check Composer dependencies
yCodeTech Apr 3, 2025
80a46f6
refactor: the `assign`ing of drivers and allow the retrieval of drive…
yCodeTech Apr 3, 2025
25ff9dd
feat: allow for global environment variables to be configured.
yCodeTech Apr 3, 2025
4d475d5
feat: add new namespace to the `SampleValetDriver` class as `Valet\Dr…
yCodeTech Apr 3, 2025
8a9db8b
style: remove extra space in sample driver's docblock params, and...
yCodeTech Apr 3, 2025
c82d73d
feat: allow `LaravelValetDriver` to serve other `/public/*.php` files
yCodeTech Apr 3, 2025
cc43c03
refactor: the GitHub API rate limit error handling
yCodeTech May 15, 2025
599e39b
remove: the unused `composerGlobalDiagnose` and `composerGlobalUpdate…
yCodeTech May 15, 2025
e7f2f9a
remove: the `CommandLine::runAsUser` method
yCodeTech May 15, 2025
cd68bc9
refactor: change most references of `VALET_HOME_PATH` constant to use…
yCodeTech May 15, 2025
8e60e5c
feat: allow `services` command to be used without installation.
yCodeTech May 15, 2025
58697f4
feat: add `Diagnose` command to get WinSW version via it's README.
yCodeTech May 15, 2025
fac69ea
feat: add `Diagnose` command to get the structure of Valet's home dir…
yCodeTech May 17, 2025
c32a790
feat: add `Filesystem::scanDirRecursive` method
yCodeTech May 25, 2025
92a5e45
feat: allow a Diagnose task to be ran via PHP instead of a CLI command.
yCodeTech May 25, 2025
98eda20
feat: implement Valet Bin directory tree structure diagnostics output.
yCodeTech May 28, 2025
a77054c
fix: the copying of unicode characters in the `Diagnose` output
yCodeTech May 28, 2025
c905a80
fix: errors when the Valet home directory doesn't exist during `Upgra…
yCodeTech May 28, 2025
b28db1b
fix: `Upgrader::upgradeSymbolicLinks` method should only run when the…
yCodeTech May 28, 2025
573e8c9
remove: the unnecessary creation of the `.keep` file in the `~/.confi…
yCodeTech May 28, 2025
84a2d99
fix: `PHP Fatal error: Uncaught Error: Class "ValetDriver" not found…
yCodeTech May 30, 2025
951f849
fix: all legacy drivers that extend their respective namespaced class…
yCodeTech May 30, 2025
8a94888
fix: `PHP Fatal error: Uncaught Error: Class "Specific/{driver}" not…
yCodeTech May 30, 2025
cb7d01d
feat: gracefully handle the old `SampleValetDriver.php` and upgrade i…
yCodeTech May 30, 2025
84a79da
docs: add new `UPGRADE` doc to tell users how to upgrade their custom…
yCodeTech May 30, 2025
93306c7
feat: add a more robust check for Bedrock environments inline with Va…
yCodeTech Jun 2, 2025
74f139e
fix: Craft driver to prevent sites breaking when applying security pa…
yCodeTech Jun 2, 2025
5a23a4e
fix: Drupal JSON:API support for non-standard urls, inline with Valet…
yCodeTech Jun 2, 2025
f7f143f
style: change docblock `boolean` keyword to the true type `bool` keyw…
yCodeTech Jun 2, 2025
29274d6
refactor: the BasicWithPublic driver and move some `$_SERVER` variabl…
yCodeTech Jun 2, 2025
78c892b
fix: `$_SERVER['SERVER_ADDR'` variable to set it to `127.0.0.1` only …
yCodeTech Jun 2, 2025
7356516
fix: update `frontControllerPath` return type to allow a `null` respo…
yCodeTech Jun 2, 2025
80fe52c
refactor: the locales array into a new `getLocales` method in the Cra…
yCodeTech Jun 2, 2025
b5d9ec5
remove: the redundant `frontContollerPath` method from the Joomla dri…
yCodeTech Jun 2, 2025
6214809
style: move `mutateUri` method to the bottom of the file in both Kata…
yCodeTech Jun 2, 2025
e9be9f7
feat: bring the rest of the drivers into parity with Valet for Mac, w…
yCodeTech Jun 2, 2025
f5b3733
fix: system compatibility checks to PHP 7.4 as minimum.
yCodeTech Jun 3, 2025
8b2de83
image: move the logos into a new `art` directory.
yCodeTech Jun 4, 2025
7596bc9
feat: update logos to support GitHub dark/light theme.
yCodeTech Jun 4, 2025
29901d8
feat: change the logo in the 404.html template to use the new svg.
yCodeTech Jun 4, 2025
a6b6aca
remove: a TODO as it's completed.
yCodeTech Jun 4, 2025
f93c52e
refactor: simplify getting and setting the package's zip file path in…
yCodeTech Jun 5, 2025
2d6d836
refactor: replace direct unzip calls with a unified unzip method in p…
yCodeTech Jun 5, 2025
11fd7b5
refactor: abstract the `try-catch` API response into a separate `getA…
yCodeTech Jun 5, 2025
b8ab916
refactor: abstract the file download logic in a new `downloadFile` m…
yCodeTech Jun 5, 2025
2bfd5c2
fix: `emergency_uninstall_services` file to run as administrator.
yCodeTech Jun 6, 2025
45b27c3
fix: `emergency_uninstall_services` file to remove the `valet\Service…
yCodeTech Jun 6, 2025
a942779
ci(phpcs): add new rule to enforce spaces around the concatenation op…
yCodeTech Jun 6, 2025
8ad9b4a
feat: allow Ansicon to be emergency removed via the `emergency_uninst…
yCodeTech Jun 7, 2025
030c651
refactor: extract much of `GithubPackage` class into a new `Package` …
yCodeTech Jun 8, 2025
53fdf3c
feat: add `packageExeName` property to allow a different exe name to …
yCodeTech Jun 8, 2025
877f36b
feat: add `Package::getUnnecessaryFiles` method and refactor `cleanUp…
yCodeTech Jun 9, 2025
4d489e8
feat: remove `Acrylic` executables in favour of downloading latest fr…
yCodeTech Jun 9, 2025
adc8c49
fix: `Packages\Acrylic` not running due to forgotton `install` call.
yCodeTech Jun 10, 2025
b2a211b
fix: failing to create the emergency uninstall files.
yCodeTech Jun 10, 2025
fcbac41
refactor: `install` method, moving the creation of directories into a…
yCodeTech Jun 10, 2025
41cbfab
refactor: `install` method, moving the creation of directories into a…
yCodeTech Jun 10, 2025
d75d7ef
refactor: move the creation of the Nginx directory into `Configuratio…
yCodeTech Jun 10, 2025
2084163
style: sort in ASC order the create `Configuration` directory method …
yCodeTech Jun 10, 2025
f5b680e
fix: `set-ngrok-token` command call to the changed `getNgrokConfig` n…
yCodeTech Jun 11, 2025
cc7b527
feat: add `Configuration::createCaDirectory` method.
yCodeTech Jun 11, 2025
8f493fa
style: auto formatting and move `Filesystem::mkdirAsUser` method to b…
yCodeTech Jun 11, 2025
9f3e068
feat: enable nginx to display http status 500 error page
yCodeTech Aug 4, 2025
dbdcf0d
fix: rewriting nginx files on install to update all old site conf files.
yCodeTech Aug 4, 2025
f983f75
fix: `un/isolate` to not output directly to terminal from `Site` class.
yCodeTech Aug 4, 2025
06ab1a1
Merge `nginx.php` from branch `release/3.3.0`
yCodeTech Aug 6, 2025
4d62e67
fix: nginx interprets the path directory `\templates` as a tab `\t`
yCodeTech Aug 6, 2025
6c1a6c8
docs: add docblock param to `Filesystem::realpath`
yCodeTech Aug 6, 2025
3df3f53
docs(readme): added 2 known issues
yCodeTech Sep 13, 2025
46304ac
style: auto formatting and removal of unnecessary void `@returns`.
yCodeTech Sep 13, 2025
ead4a84
style: auto formatting and add a `phpcs:disable` statement in `Package`
yCodeTech Sep 14, 2025
3fd22ce
chore(phpcs): added new coding rules, and added my `yCodeTech` standard.
yCodeTech Sep 17, 2025
2616c5d
style: auto formatting
yCodeTech Sep 17, 2025
1f94e98
style: auto formatting - remove redundant `@return void`
yCodeTech Sep 19, 2025
d6079fb
chore: change line endings to `crlf`.
yCodeTech Oct 19, 2025
64c4451
chore: version bump
yCodeTech Oct 21, 2025
92a89a8
docs(readme): update the services shipped and emergency uninstall docs.
yCodeTech Oct 22, 2025
763ffac
chore: update CHANGELOG for version 3.3.0 release details
yCodeTech Oct 22, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ root = true

[*]
charset = utf-8
end_of_line = lf
end_of_line = crlf
insert_final_newline = true
indent_style = tab
indent_size = 4
Expand Down
3 changes: 2 additions & 1 deletion .prettierrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
"semi": true,
"printWidth": 150,
"bracketSameLine": true,
"bracketSpacing": false
"bracketSpacing": false,
"endOfLine": "crlf"
}
94 changes: 94 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,100 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased](https://github.com/yCodeTech/valet-windows/tree/master)

## [3.3.0](https://github.com/yCodeTech/valet-windows/tree/v3.3.0) - 2025-10-22

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.

For the full changelog please view the PR commits.

### Added

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

- Added a command to the `Diagnose` class to get the `winsw` version via reading it's README.

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

- Added the ability to download the latest version of `Acrylic`.

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

- 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).

- Added a `changeLocalIpv4BindingAddress` method to replace the default value of `LocalIPv4BindingAddress` with our custom value from the new stub file.

### Changed

- Extract much of `GithubPackage` class into a new `Package` class as the new base class, refactor and make the method and variable names generic.

- Improved the emergency uninstall services creation during Valet installation. The emergency uninstall files are now located in `~/.config/valet/Emergency Uninstall`.

- Fixed the script to automatically run with admin privileges if it doesn't already have them.

- Added `Ansicon` to the script to handle cases where `Ansicon` fails to uninstall properly.

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).

- Fixed the script to remove all the `valet\Services` files after uninstalling them.

- Code-parity with the Mac version (v4.8.7):

- Moved the basic and laravel drivers into a new `Drivers` directory within the `Valet` directory, and namespaced them as `Valet\Drivers`.

Moved the rest of the drivers into the `Specific` subdirectory of `Drivers`, and namespaced them as `Valet\Drivers\Specific`.

This is so they can be autoloaded by PSR-4.

- Introduced empty legacy driver classes that extend the namespaced drivers so that user custom drivers still work. These legacy drivers are deprecated by default.

- Added the requirement for custom drivers to be namespaced as `Valet\Drivers\Custom`.

- Added a more robust check for `Bedrock` environments and checking the composer dependencies for the required package.

- 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).

- Added new drivers for `Nette`, `Radicle`, and `Statamic V2`.

- 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).

- Gracefully handle the old `SampleValetDriver.php` and upgrade it to the new namespaced sample via a new `Upgrader::fixOldSampleValetDriver` method.

- Added upgrade instructions for custom drivers in [UPGRADE.md](/UPGRADE.md), including namespace and inheritance requirements.

- Update logos to support GitHub dark/light theme.

- Moved the `services` command from being an installed-only command to being available without installation.

- Various refactoring for better organisation, maintainability, and improved code quality.

### Fixed

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

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

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

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

### Removed

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

- Removed the unused `Valet::composerGlobalDiagnose`, `Valet::composerGlobalUpdate`, and `ValetException::githubApiRateLimitExceededError` methods.

- Removed all bin files for `Acrylic`, in favour of downloading the latest versions from SourceForge.

### Deprecated

- The new legacy drivers are all deprecated by default and will be removed in v4.0.0.

## [3.2.1](https://github.com/yCodeTech/valet-windows/tree/v3.2.1) - 2025-08-03

### Added
Expand Down
56 changes: 38 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<p align="center"><img src="./laravel_valet_windows_3_logo.svg" style="width:500px; background: none;"></p>
<p align="center"><img src="./art/laravel_valet_windows_3_logo.svg" style="width:500px; background: none;"></p>

<p align="center">
<a href="https://packagist.org/packages/ycodetech/valet-windows"><img src="https://poser.pugx.org/ycodetech/valet-windows/downloads" alt="Total Downloads"></a>
Expand All @@ -10,7 +10,7 @@
<p align="center">This is a Windows port of the popular Mac development environment <a href="https://github.com/laravel/valet">Laravel Valet</a>.</p>
<p align="center">Laravel Valet <i>Windows</i> 3 is a much needed updated fork of <a href="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 <a href="#command-parity-checker">parity checker</a>.</p>

<p align="center"><img src="./composer_laravel_valet_windows_3_logo.svg" style="width:400px; background: none;"></p>
<p align="center"><img src="./art/composer_laravel_valet_windows_3_logo.svg" style="width:400px; background: none;"></p>

```sh
composer global require ycodetech/valet-windows
Expand Down Expand Up @@ -152,10 +152,9 @@ This is 3.0 of Valet Windows, branded under the name _Laravel Valet Windows 3_,

Valet ships with and installs these services:

| Service | Version |
| ----------------------------------------------------------------------------: | ------- |
| [Acrylic DNS Proxy](https://mayakron.altervista.org/support/acrylic/Home.htm) | 2.1.0 |
| [ngrok](https://ngrok.com/) | 3.3.1 |
| Service | Version |
| --------------------------: | ------- |
| [ngrok](https://ngrok.com/) | 3.3.1 |

> [!IMPORTANT]
> 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.
Expand All @@ -166,14 +165,15 @@ Valet ships with and installs these services:
>
> 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.

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

| Service | Latest Version as of 13/05/2025 |
| ------------------------------------------: | ------------------------------- |
| [Ansicon](https://github.com/adoxa/ansicon) | 1.89 |
| [gsudo](https://github.com/gerardog/gsudo) | 2.6.0 |
| [nginx](https://nginx.org/) | 1.28.0 |
| [WinSW](https://github.com/winsw/winsw) | 2.12.0 |
| Service | Latest Version as of 2025-10-22 |
| ----------------------------------------------------------------------------: | ------------------------------- |
| [Ansicon](https://github.com/adoxa/ansicon) | 1.89 |
| [gsudo](https://github.com/gerardog/gsudo) | 2.6.1 |
| [nginx](https://nginx.org/) | 1.29.2 |
| [WinSW](https://github.com/winsw/winsw) | 2.12.0 |
| [Acrylic DNS Proxy](https://mayakron.altervista.org/support/acrylic/Home.htm) | 2.2.1 |

> [!IMPORTANT]
>
Expand Down Expand Up @@ -205,7 +205,7 @@ Also make sure to open your preferred terminal (Windows Terminal, CMD, Git Bash,

- Install Valet with Composer via `composer global require ycodetech/valet-windows`.

<p align="center"><img src="./composer_laravel_valet_windows_3_logo.svg" style="width:400px; background: none;"></p>
<p align="center"><img src="./art/composer_laravel_valet_windows_3_logo.svg" style="width:400px; background: none;"></p>

> [!WARNING]
>
Expand Down Expand Up @@ -1537,17 +1537,25 @@ Doesn't affect valet functionality.

## Emergency Stop and Uninstall Services

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

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.

To run, open a CMD terminal with Admin privileges and run this:

```sh
> %UserProfile%\.config\valet\emergency_uninstall_services.bat
> "%UserProfile%\.config\valet\Emergency Uninstall\emergency_uninstall_services.bat"
```

All services will have been stopped and you can then be able to run `composer global update`.
Alternatively, find it in the File Explorer and double clicking the file will also run it.

All services will have been stopped and removed and you can then be able to run `composer global update`.

> [!IMPORTANT]
>
> 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.
>
> The emergency uninstall script can help to uninstall Ansicon again and hopefully fully removing it from the registry.

## Valet Directories

Expand Down Expand Up @@ -1595,7 +1603,13 @@ Upon installation, Valet creates the following directories and config files:
- `~/.config/valet/config.json`
This is the main Valet config file.

- `~/.config/valet/emergency_uninstall_services.bat`
- `~/.config/valet/Emergency Uninstall`
Contains the emergency uninstall files.

- `~/.config/valet/Emergency Uninstall/ansicon`
Contains the Ansicon files and executable to help uninstall it.

- `~/.config/valet/Emergency Uninstall/emergency_uninstall_services.bat`
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).

> [!WARNING]
Expand Down Expand Up @@ -1655,6 +1669,12 @@ Upon installation, Valet creates the following directories and config files:

If the WMI error does occur, try running the command again. If different WMI errors occur, please submit an issue with all relevant details.

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

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

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).

## Xdebug Installation

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).
Expand Down
9 changes: 9 additions & 0 deletions UPGRADE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Upgrading

- If you have any issues with your drivers, all custom drivers (including the `SampleValetDriver` published by previous versions of Valet) must have the following:

- Have the namespace of `Valet\Drivers\Custom`.

- Extend the new namespaced drivers instead of the old non-namespaced drivers by specifying a `use` keyword like `use Valet\Drivers\ValetDriver;`

See the [new SampleValetDriver](https://github.com/yCodeTech/valet-windows/blob/master/cli/stubs/SampleValetDriver.php) for an example.
Loading