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
Copy file name to clipboardExpand all lines: .github/SECURITY.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,10 +4,10 @@ Please do not disclose security vulnerabilities in public issues.
4
4
5
5
## Supported Versions
6
6
7
-
Security fixes are provided for the latest release of HorizonXFlow.
7
+
Security fixes are provided for the latest release of HorizonFlow.
8
8
9
9
## Reporting a Vulnerability
10
10
11
-
Report vulnerabilities privately through [GitHub Security Advisories](https://github.com/nsumbadze/horizonxflow/security/advisories/new). Include reproduction steps, affected versions, and any known mitigations.
11
+
Report vulnerabilities privately through [GitHub Security Advisories](https://github.com/nsumbadze/horizonflow/security/advisories/new). Include reproduction steps, affected versions, and any known mitigations.
12
12
13
13
For vulnerabilities that also affect unmodified Laravel Horizon behaviour, consult the [upstream security policy](https://github.com/laravel/horizon/security/policy).
HorizonXFlow is an independently maintained project based on [Laravel Horizon](https://github.com/laravel/horizon). It retains Horizon's dashboard and code-driven worker configuration while adding a live operational workspace for understanding how jobs move through queues. It is not an official Laravel product.
10
+
HorizonFlow is an independently maintained fork of [Laravel Horizon](https://github.com/laravel/horizon). It retains Horizon's dashboard and code-driven worker configuration while adding a live operational workspace for understanding how jobs move through queues. HorizonFlow is not an official Laravel product.
11
+
12
+
## Installation
13
+
14
+
HorizonFlow is installed instead of `laravel/horizon`; the two packages must not be installed together.
15
+
16
+
For a new installation, require HorizonFlow and publish Horizon's application service provider and configuration:
17
+
18
+
```bash
19
+
composer require nsumbadze/horizonflow
20
+
php artisan horizon:install
21
+
```
22
+
23
+
Laravel package discovery registers `Laravel\Horizon\HorizonServiceProvider`. The install command publishes `config/horizon.php` and creates `app/Providers/HorizonServiceProvider.php`, where dashboard authorization is configured. HorizonFlow's additional settings have working defaults; publish them only when you need to customize Live Flow:
Applications already using `laravel/horizon` should preserve their `config/horizon.php` and `app/Providers/HorizonServiceProvider.php`, remove the upstream package requirement, and then install HorizonFlow with dependency updates allowed:
The fork intentionally retains the `Laravel\Horizon` PHP namespace, service providers, Artisan commands, configuration shape, dashboard routes, and Redis data conventions. Composer declares that HorizonFlow replaces `laravel/horizon`, preventing both implementations from being installed together. Review [UPGRADE.md](UPGRADE.md) and test the change in a non-production environment before deployment; HorizonFlow uses its own versioning and does not claim the same version numbers as upstream Horizon.
45
+
46
+
### Compatibility
47
+
48
+
HorizonFlow requires PHP 8.0 or later, Laravel 9.21 through 13, the JSON, PCNTL, and POSIX PHP extensions, and a Redis connection supported by Laravel. Install either the PhpRedis extension or `predis/predis`. PCNTL and POSIX are not available on Windows, so HorizonFlow should run in a Linux environment or a compatible container/virtual machine.
11
49
12
50
## Live Flow
13
51
14
52
**Live Flow** is available at `/horizon/live-flow`. It visualises producers, queues, jobs, workers, and results in real time across Redis and database queue drivers.
15
53
16
54
<palign="center">
17
-
<imgsrc="art/live-flow.png"alt="HorizonXFlow Live Flow workspace">
55
+
<imgsrc="art/live-flow.png"alt="HorizonFlow Live Flow workspace">
18
56
</p>
19
57
20
58
Under a row of queue KPIs, the workspace is organised into four areas:
@@ -80,8 +118,8 @@ Live-flow behaviour is configured via `config/horizonxflow.php`:
80
118
The Live Flow Inspector can pause an individual Redis queue and cancel one pending or running job. These controls deliberately preserve Laravel's queue safety boundaries:
81
119
82
120
- Pausing a queue does not reject dispatches or kill workers. A job already running finishes, while pending and newly dispatched jobs remain queued until the queue is resumed.
83
-
- Cancelling a pending job atomically removes its exact payload from the ready list or delayed set. If a worker reserves it first, HorizonXFlow records a cooperative cancellation request instead of reporting a false success.
84
-
- A running worker process is never force-killed. Side effects already performed by a job cannot be rolled back by HorizonXFlow.
121
+
- Cancelling a pending job atomically removes its exact payload from the ready list or delayed set. If a worker reserves it first, HorizonFlow records a cooperative cancellation request instead of reporting a false success.
122
+
- A running worker process is never force-killed. Side effects already performed by a job cannot be rolled back by HorizonFlow.
85
123
- Cancelled jobs remain visible in the Inspector with their cancellation time and operator identifier. Repeated requests are idempotent, and completed or failed jobs return `409 Conflict`.
86
124
87
125
Mutation routes use the `controlHorizon` ability described above. Queue connection and queue names are validated server-side, raw job payloads are never accepted from or returned to the control UI, and every destructive action has an explicit confirmation step.
@@ -121,9 +159,9 @@ When `flow.source` is `mock`, the Inspector exposes the same controls as a sessi
121
159
122
160
## Retry With Parameters
123
161
124
-
A failed job usually fails because of what it was handed: a wrong path, a batch size that was too large, a flag left on. Horizon can only push that same job back onto the queue unchanged, so the normal fix is a tinker session or a one-off command. HorizonXFlow lets you change the arguments and retry from the dashboard instead.
162
+
A failed job usually fails because of what it was handed: a wrong path, a batch size that was too large, a flag left on. Horizon can only push that same job back onto the queue unchanged, so the normal fix is a tinker session or a one-off command. HorizonFlow lets you change the arguments and retry from the dashboard instead.
125
163
126
-
Open a failed job and press **Edit Parameters**. HorizonXFlow reads the job class constructor and lists every parameter it accepts, prefilled with the values the failed job was queued with:
164
+
Open a failed job and press **Edit Parameters**. HorizonFlow reads the job class constructor and lists every parameter it accepts, prefilled with the values the failed job was queued with:
127
165
128
166
<palign="center">
129
167
<imgsrc="art/retry-parameters.png"alt="Editing a failed job's parameters before retrying it">
HorizonXFlow is based on Laravel Horizon and keeps its existing dashboard, queue supervision, metrics, and worker configuration. Refer to the [Laravel Horizon documentation](https://laravel.com/docs/horizon) for inherited Horizon behaviour.
201
+
HorizonFlow is derived from Laravel Horizon and keeps its existing dashboard, queue supervision, metrics, and worker configuration. Refer to the [Laravel Horizon documentation](https://laravel.com/docs/horizon) for inherited Horizon behaviour.
164
202
165
-
Issues caused by HorizonXFlow changes should be reported in this repository. Upstream Laravel Horizon maintains its own issue tracker and release process.
203
+
Laravel Horizon was created by Taylor Otwell and is maintained by Laravel and its contributors. HorizonFlow retains Laravel Horizon's original copyright and license notices. Issues caused by HorizonFlow changes should be reported in this repository; upstream Laravel Horizon has its own issue tracker and release process.
166
204
167
205
## Contributing
168
206
@@ -174,4 +212,4 @@ Do not disclose security vulnerabilities in public issues. Follow this repositor
174
212
175
213
## License
176
214
177
-
HorizonXFlow is released under the [MIT license](LICENSE.md). The original Laravel Horizon copyright and license notice are retained.
215
+
HorizonFlow is released under the [MIT license](LICENSE.md). The original Laravel Horizon copyright and license notice are retained.
0 commit comments