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
Default to native process driver, deprecate GNU Screen
GNU Screen is no longer required. The native driver handles PTY
allocation, ANSI passthrough, and UTF-8 directly via Symfony Process
with soloterm/screen parsing all ANSI sequences.
The screen driver remains available for one release cycle with
deprecation warnings logged when explicitly selected via
SOLO_PROCESS_DRIVER=screen or SOLO_USE_SCREEN=true.
Also adds unhandled ANSI sequence logging via Screen's
reportUnhandledSequencesVia() to surface edge cases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,12 +11,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
12
12
- Added configurable process drivers via `solo.process_driver` (`screen` or `native`) with backward-compatible fallback to `solo.use_screen`.
13
13
- Added regression coverage for dashboard rendering behavior, diff-render cursor anchoring, renderer reuse, process-driver command wrapping, and shutdown signaling paths.
14
+
- Added unhandled ANSI sequence logging to surface edge cases in command output.
14
15
15
16
### Changed
16
17
18
+
- Changed the default process driver from `screen` to `native`. GNU Screen is no longer required. Solo now uses PTY mode directly via Symfony Process, with `soloterm/screen` handling all ANSI parsing.
17
19
- Updated dashboard rendering to prefer screen-diff output when available while preserving string-renderer fallback behavior.
18
20
- Upgraded `soloterm/screen` to include the upstream `toCellBuffer()` ANSI decode fix and removed Solo's temporary local shim.
19
21
22
+
### Deprecated
23
+
24
+
- Deprecated the `screen` process driver. It will be removed in a future release. Users who explicitly set `SOLO_PROCESS_DRIVER=screen` or `SOLO_USE_SCREEN=true` will see a deprecation warning in the log.
25
+
20
26
### Fixed
21
27
22
28
- Fixed a frame composition bug that could scroll away the first row, causing the tab strip to disappear or appear incomplete.
Whether to use GNU Screen as a wrapper for commands. Screen provides proper PTY allocation and better ANSI rendering. Disable if Screen isn't installed or causes issues.
Copy file name to clipboardExpand all lines: docs/installation.md
+1-40Lines changed: 1 addition & 40 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,30 +18,6 @@ description: How to install and set up Solo in your Laravel application.
18
18
19
19
Solo requires `ext-pcntl` and `ext-posix` for process management. These extensions are not available on Windows. If you're on Windows, consider using WSL2.
20
20
21
-
### GNU Screen (Recommended)
22
-
23
-
Solo works best with GNU Screen 5.0.0 or higher installed. Screen provides proper PTY allocation and improves ANSI rendering.
24
-
25
-
Check if Screen is installed:
26
-
27
-
```bash
28
-
screen --version
29
-
```
30
-
31
-
Install on macOS:
32
-
33
-
```bash
34
-
brew install screen
35
-
```
36
-
37
-
Install on Ubuntu/Debian:
38
-
39
-
```bash
40
-
sudo apt install screen
41
-
```
42
-
43
-
Solo will work without Screen, but you may experience degraded output in some commands.
44
-
45
21
## Install via Composer
46
22
47
23
Install Solo as a development dependency:
@@ -109,7 +85,7 @@ Solo respects these environment variables:
109
85
|----------|---------|-------------|
110
86
|`SOLO_THEME`|`dark`| Theme to use (light or dark) |
111
87
|`SOLO_KEYBINDING`|`default`| Keybinding preset |
112
-
|`SOLO_USE_SCREEN`|`true`|Use GNU Screen wrapper|
88
+
|`SOLO_PROCESS_DRIVER`|`native`|Process driver (`native` or `screen`)|
113
89
|`SOLO_DUMP_SERVER_HOST`|`tcp://127.0.0.1:9984`| Dump server address |
114
90
115
91
## Troubleshooting
@@ -129,21 +105,6 @@ composer dump-autoload
129
105
2. Check if the command has an `--ansi` or `--colors=always` option
@@ -274,13 +279,26 @@ protected function processDriver(): string
274
279
static::PROCESS_DRIVER_NATIVE,
275
280
static::PROCESS_DRIVER_LEGACY,
276
281
], true)) {
282
+
if ($normalized === static::PROCESS_DRIVER_SCREEN && !static::$screenDeprecationWarned) {
283
+
static::$screenDeprecationWarned = true;
284
+
Log::warning('Solo: The "screen" process driver is deprecated and will be removed in a future release. Remove SOLO_PROCESS_DRIVER from your environment to use the native driver.');
Copy file name to clipboardExpand all lines: src/Console/Commands/Solo.php
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -35,6 +35,8 @@ protected function checkScreenVersion(): void
35
35
return;
36
36
}
37
37
38
+
Log::warning('Solo: The GNU Screen process driver is deprecated and will be removed in a future release. The native driver is now the default and does not require GNU Screen.');
39
+
38
40
$process = newProcess(['screen', '-v']);
39
41
$process->run();
40
42
@@ -61,7 +63,7 @@ protected function usesScreenDriver(): bool
Copy file name to clipboardExpand all lines: tests/Unit/SoloCommandTest.php
+12Lines changed: 12 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,13 @@ public function runScreenVersionCheckForTest(): void
52
52
$command->runScreenVersionCheckForTest();
53
53
});
54
54
55
+
$deprecationWarning = [
56
+
'level' => 'warning',
57
+
'message' => 'Solo: The GNU Screen process driver is deprecated and will be removed in a future release. The native driver is now the default and does not require GNU Screen.',
58
+
];
59
+
55
60
$this->assertSame([
61
+
$deprecationWarning,
56
62
[
57
63
'level' => 'error',
58
64
'message' => 'The installed version of `screen` (4.9.0) is outdated. Please upgrade to 5.0.0 or greater for best compatibility with Solo.',
@@ -82,7 +88,13 @@ public function runScreenVersionCheckForTest(): void
82
88
$command->runScreenVersionCheckForTest();
83
89
});
84
90
91
+
$deprecationWarning = [
92
+
'level' => 'warning',
93
+
'message' => 'Solo: The GNU Screen process driver is deprecated and will be removed in a future release. The native driver is now the default and does not require GNU Screen.',
94
+
];
95
+
85
96
$this->assertSame([
97
+
$deprecationWarning,
86
98
[
87
99
'level' => 'error',
88
100
'message' => 'Unable to determine `screen` version. Make sure `screen` is installed.',
0 commit comments