summaryrefslogtreecommitdiffstats
path: root/ChangeLog
blob: c2a39b57b156c0bc85949c35cd20af7b234ad0e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
Version 4.9.1 (20/08/2023):
  * Support stop/parity bits on serial port (#23952)
  * Add needed system headers in checks and return values
    for implicit function declarations
  * Fixes:
    - Avoid zombies after shell exit (#25089)
    - Missed signal sending permission check on failed
      query messages (CVE-2023-24626)
    - manpage fixes
    - source code fixes during cleanup
    - UTF-8 encoding can emit invalid UTF-8 sequences
      for out of range unicode values (#62097)

Version 4.9.0 (30/01/2022):
  * Hardstatus option for used encoding (escape string '%e')
  * OpenBSD uses native openpty() from its utils.h
  * Fixes:
    - fix combining char handling that could lead to a segfault
    - CVE-2021-26937: possible denial of service via a crafted UTF-8 character sequence (bug #60030)
    - make screen exit code be 0 when checking --help
    - session names limit is 80 symbols (bug #61534)
    - option -X ignores specified user in multiuser env (bug #37437)
    - a lot of reformations/fixes/cleanups (man page and source code)

Version 4.8.0 (05/02/2020):
  * Improve startup time by only polling for files to close
  * Fixes:
	- Fix for segfault if termcap doesn't have Km entry
	- Make screen exit code be 0 when checking --version
	- Fix potential memory corruption when using OSC 49

Version 4.7.0 (02/10/2019):
  * Add support for SGR (1006) mouse mode
  * Add support for OSC 11
  * Update Unicode ambiguous and wide tables to 12.1.0
  * Fixes:
	- cross-compilation support (bug #43223)
	- a lot of manpage fixes and cleanups

Version 4.6.2 (23/10/2017):
  * Fixes:
	- revert changes to cursor position restore behavour (bug #51832)
	- set freed pointer to NULL (bug #52133)
	- documentation fixes
	- fix windowlist crashes (bug #43054 & #51500)

Version 4.6.1 (10/07/2017):
  * Fixes:
	- problems with starting session in some cases
	- parallel make install
	- segfault when querying info on nonUTF locale (bug #51402)

Version 4.6.0 (28/06/2017):
  * Update Unicode wide tables to 9.0 (bug #50044)
  * Support more serial speeds
  * Improved namespaces support
  * Migrate from fifos to sockets
  * Start viewing scrollback at first line of output (bug #49377)

Version 4.5.1 (25/02/2017):
  * Fixes:
	- logfile permissions problem (CVE-2017-5618)
	- SunOS build problem (bug #50089)
	- FreeBSD core dumps (bug #50143)

Version 4.5.0 (10/12/2016):
  * Allow specifying logfile's name via command line parameter '-L'
  * Fixes:
	- broken handling of "bind u digraph U+" (bug #48691)
	- crash with long $TERM (bug #48983)
	- crash when bumping blank window
	- build for AIX (bug #49149)
	- %x improperly separating arguments
	- install with custom DESTDIR (bug #48370)

Version 4.4.0 (19/06/2016):
  * Support up to 24 function keys
  * Fix runtime issues
  * 'logfile' command, starts logging into new file upon changing

Version 4.3.1 (28/06/2015):
  * Fix resize bug

Version 4.3.0 (13/06/2015):
  * Introduce Xx string escape showing the executed command of a window
  * Implement dead/zombie window polling, allowing for auto reconnecting
  * Allow setting hardstatus on first line
  * New Commands:
	- 'sort' command sorting windows by title
	- 'bumpleft', 'bumpright' - manually move windows on window list
	- 'collapse' removing numbering 'gaps' between windows, by renumbering
	- 'windows' command now accepts arguments for use with querying

Version 4.2.1 (28/04/2014):
  * allow for terminal with long $TERM (up to 32 characters)
  * allow to use long logins
  * documentation fixes
  * runtime fixes

Version 4.2.0 (17/04/2014):
  New Commands:
  * 'unbindall' to unbind all commands
  * 'up', 'down', 'left', 'right' sub-commands for 'focus'
  * 'rendition' to specify rendition to use in caption/hardstatus for window-names that have bell/monitor/silence/so turned on.
  * 'layout', with the following sub-commands
	- 'title'
	- 'number'
	- 'autosave' ('autosave on' or 'autosave off')
	- 'new'
	- 'save' ('save <name>')
	- 'select'
	- 'next'
	- 'prev'
	- 'attach'
	- 'show'
	- 'remove'
	- 'dump'
  * 'group' for moving window(s) into a group.
  * 'defmousetrack' and 'mousetrack', to turn on/off mouse-tracking for
    displays. It's turned off by default. With mouse-tracking turned on, it's
    possible to switch to a region ('focus') using mouse clicks. It's also
    possible to select a text region in copy-mode using a mouse click to place
    a mark and the scroll wheel to scroll through the buffer. Additional
    features might be to allow clicking on window-titles in the caption to
    switch to that window.
  * All commands prefixed '@' are treated as 'quiet', i.e. '@'-prefixed commands
    do not trigger any display messages.

  Changed Commands:
  * '-v' parameter to 'split' command for vertical splits.
  * 'sorendition' deprecated in favour of 'rendition so'.
  * 'digraph' can take a second parameter to specify custom digraphs. For
    example,
	'digraph >= ≥' or 'digraph >= U+2265'
    Using '0' as the second parameter will remove the digraph.
  * 'stuff' will prompt for input if there's nothing to stuff.
  * The argument to ":number" can be prefixed with '+' or '-' to use it as a
    relative argument.
  * '-g' parameter to 'windowlist' to show nested list of windows.
  * '//group' parameter to 'screen' to create a grouped window.
  * 'blankerprg' shows the currently set command on no argument.
  * 'maxwin' can now be used to increase the number of maximum windows.

  .screenrc:
  * $PID expands to the PID of the screen session.
  * $PWD expands to the current working directory of the session.
  * $STY expands to the session name.
  * Tilde-expansion in pathnames (e.g. for the 'source' command)
  * C-style escapes can be used (e.g. "\n" to get a newline with 'stuff')
  * '%p' in caption/hardstatus string expands to the PID of the backend, and
    '%+p' expands to the PID of the frontend (display).
  * '%S' in caption/hardstatus string expands to the session name.
  * '%P' in the caption string evaluates to true if the region is in copy mode.
  * '%E' in the caption string evaluates to true if the escape character has
    currently been pressed.

  Window List:
  * Nested views when there are window groups (with 'windowlist -g').
  * Press 'm' to toggle the most-recent view.
  * Press 'g' to toggle nestedness.
  * Press 'a' to view all windows in the list.
  * Press '/' to search in the list.
  * Press ',' and '.' to re-order windows in the list.
  * Press 'K' to kill a window (requires confirmation).

  Display List:
  * Press 'd' to detach a display, 'D' to power-detach.

  Others:
  * Start using 'ChangeLog' for logging changes again.
  * Terminfo update for 256-color support.
  * Multiple input history (partially from Romain Francoise).
  * vi-like fFtT;, searching in copy mode.
  * In copy mode, search in reverse direction when 'N' is pressed.
  * Tab-completion for command input.
  * Some more readline-like bindings in input mode (e.g. ^W, ^D, ^P, ^N etc.)
  * Fix displaying unicode characters in the caption/hardstatus on UTF8 locale.
  * A revamped displays list (for 'displays' command)
  * Increased default maximum number of windows from 40 to 100.
  * Increased number color/attribute changes in caption/hardstatus string from 16 to 256.
  * Some commands can be remotely queried using the -Q command-line flag.

  In-Progress:
  * Scripting support (thanks to Google Summer of Code 2009 project by Rui Guo)

  Developers:
  * Alexander Naumov <alexander_naumov@opensuse.org>
  * Amadeusz Sławiński <amade@asmblr.net>
  * Juergen Weigert <jw@suse.de>
  * Michael Schroeder <mls@suse.de>
  * Micah Cowan <micah@cowan.name>
  * Sadrul Habib Chowdhury <sadrul@users.sourceforge.net>

  Contributors:
  * Clavelito <maromomo@hotmail.com>
  * Dick <dick@mrns.nl>
  * Gabriel <g2p.code@gmail.com>
  * Benjamin Andresen <bandresen@gmail.com>
  * Takeshi Banse <takebi@laafc.net>
  * Maarten Billemont <lhunath@gmail.com>
  * Curtis Brown <mrbrown8@juno.com>
  * Cyril Brulebois <kibi@debian.org>
  * Trent W Buck <trentbuck@gmail.com>
  * Stephane Chazelas <stephane_chazelas@yahoo.fr>
  * Kees Cook <kees@ubuntu.com>
  * Thomas Dickey <tom@invisible-island.net>
  * Christian Ebert <blacktrash@gmx.net>
  * Geraint Edwards <gedge-lists-screen@yadn.org>
  * Romain Francoise <romain@orebokech.com>
  * Alexander Gattin <xrgtn@yandex.ru>
  * Emanuele Giaquinta <e.giaquinta@glauco.it>
  * Yi-Hsuan Hsin <mhsin@mhsin.org>
  * Kipling Inscore <kinscore@synaptics.com>
  * Chris Jones <cjns1989@gmail.com>
  * Max Kalashnikov <mmt@maxkalashnikov.com>
  * Steve Kemp <steve@steve.org.uk>
  * Ryan Niebur <ryan@debian.org>
  * Jan Christoph Nordholz <hesso@pool.math.tu-berlin.de>
  * William Pursell <bill.pursell@gmail.com>
  * Michael Scherer <misc@mandriva.org>
  * Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
  * Peter Teichman <peter@teichman.org>

30.10.94

This is a quick overview of screen's life story. But it is not up
to date.  You'll find more details about the revision history in
patchlevel.h and newer changes are only documented there. 

31.7.93	-- 3.5.1
================

* writelock, number, paste with arg, at, zombie and wall commands added.

* Access Control Lists and more multi-user support added.

* select and setenv commands enhanced.

* socket.c: motorola bugfix.

* configure.in: --srcdir support.

* configure.in: recognize alpha and SUNOS3 correctly.

* doc/screen.texinfo: Documentation by Jason Merrill.

13.05.93 -- 3.3.3
=================

* defautonuke, silence commands added.

* exec command added.

* hardcopydir, logdir commands added.

* Made a superb configure script.

* BROKEN_PIPE, SOCK_NOT_IN_FS added for braindamaged systems.

* multi display, multi user support.

* process command. CS, CE switch cursorkeycap in application mode.

* lockprg pow_detaches on SIGHUP

* ins_reg copy_reg commands.

* new screenrc syntax.

* split up screen.c and ansi.c

21.10.92 -- 3.2.9
================

* ChangeLog: replaces CHANGES and is in GNUish format.

* Makefile (CFLAGS, M_CFLAGS, LIBS, OPTIONS): moved user config here, 
	merged all Makefiles, GNUified

* socket.c (FindSocket): ignoring bad files in $SCREENDIR

* config/config.linux: ported.

* utmp.c, exec.c, loadav.c: split apart from screen.c/fileio.c

15.07.92 -- 3.2.8
=================

* ansi.c (WriteString): automatic character set switching for 8bit support

3.2.3-3.2.7
===========

* concept changes: Display structure, Multi attacher 

...

3.2.2
=====

* screen.c (main): -m option, "_M_ake always new session", ignore $STY

* screen.c (main):  -Ssessionname 
* fileio.c (RcLine): ^A:sessionname give your session a nicer name.

* screen.c (main): supporting detached startup via screen -d -m -Ssockname

* fileio.c (stripdev): moved, could not compile

* overlay.h: "stackable overlay concept"

* search.c: vi-like / and ? search AND emacs-like ^S and ^R incremental search
	in scrollback

* mark.c: I meant BSDI not BSD

* concept change: struct display and struct newwin introduced.

* screen.c (main): -v option prints version.

* screen.c (MakeWindow): ^A:screen /dev/ttya opens a character device 
	instead of forking ShellProg with a pty pair.

3.2.0
=====

Ultrix port

Irix 3.3 SGI port

shadow password suite supported

data loss on stdin overflow fixed

"refresh off" keyword added.

3.1.1
------

Screen is now under the GNU copyleft license. See file COPYING.

command line option -A. $LINES, $COLUMNS improved.

C-A : vbellwait <sec>

XENIX support (Ronald Khoo)

SYSV has uname() instead of gethostname().

hpux has setresuid.

ClearScreen now saves image to scrollback buffer.

mips has setenv.

numerous bugfixes.

3.1 finally released version.
=============================

3.0.99: last minute changes:
----------------------------

MIPS support (J{rvinen Markku)

SVR4 support (Marc Boucher)

secopen() secfopen() calls replace stat/access/open.
C-a : echo improved.
'register int'

Changes up to Screen 3.0 Patchlevel 7
=====================================

Better terminfo support: Screen now checks if a termcap/info
entry which the name "screen.$TERM" does exist. Look in the
"VIRTUAL TERMINAL" section of the manual for more details.

Many security improvements.

ScrollRegion() bug fixed which caused slow scrolling if AL
or DL was used.

Pyramid and Ultrix support added. (Tim and Larry)
  
ENVIRONMENT support.
  /local/etc/screenrc checks for $SYSSCREENRC
  $HOME/.screenrc checks for $ISCREENRC and $SCREENRC
  /local/screens checks for $ISCREENDIR and $SCREENDIR
  .screenrc understands ${VAR} and $VAR .

screen 3.0 Patchlevel 6
=======================

.screenrc:
  screen now only opens the windows you explicitly ask for.
  If you specify none, you still get one window, of course.

screen 3.0. Patchlevel 5
========================

Ansi prototyping by Christos.

copy mode: CTRL-U / CTRL-D exchanged. code cleanup.

changes to screen 3.0 patchlevel 4
==================================

markkeys "string"
  allows to rebind the keys used in copy/history mode.
  string is made up of pairs "<oldchar>=<newchar>" which are separated
  by a colon. Oldchar and newchar are either single ascii characters, 
  or the two character sequence ^x, where x is an ascii character, or
  a 3 digit octal value prepended with '\'. the string "\040=.:^M=q"
  rebinds '.' to set marks, and the return key will abort copy mode.

set scrollback 100
  resizes the scrollback history buffer to 100 lines. a default of 50
  is installed. 

A Howard Chu like scrollback history is installed. Many vi-like keys
  are added to the copy mode. The '?' key reports on cursor position.

screen 3.0 Patchlevel 3
=======================

WriteString fixed, it did kill the display variable.

Yet another LP bugfix.

non vt100 semi-graphics character support.

waynes patch fixed

screen 3.0 Patchlevel 2
=======================

wayne patches cursor motion outside scrollregions.

.screenrc 
  monitor on|off

changes in Screen 3.0 Patchlevel 1
==================================

screen -wipe

^A : set vbell_msg "Wuff Wuff"

Thousand enhancements: help resizable, copy'n'paste in main
  socket loop, and no more '\0' hackin'. :WS=\E8;%d;%dt:

screen can now resize windows under sunview.

^A : set crlf on|off
  effects markroutine join.

screen learned about sized windows under X

screen -ls (-d) -q
  quiet option. We count the number of detached (attached) sessions and set
  a return value of 10+n. The -q option inhibits all startup
  warnings/messages. i.e. screen -R -q may return with code 12 or higher
  or start a new/old session.

pow_detach_msg "text string"
  new command, allows messages, terminal reset, etc. on logout caused
  by pow_detach.

^A : learned a new keyword "set":
  commands like "login on" , "vbell off", ... affect the default for
  windows to be created. But commands like "set login off" affect
  the actual setting of this window. and not the default.
  such commands may be bound to keys. example: 
  bind 'O' set login off
  is valid in your .screenrc as well as typed at the ':' prompt.
  a bonus is ":set all" which is synonym to ":help".
  At the Colon prompt also KeyNames can be entered, although that makes
  not always sense.

^A x uses a builtin lockprg, if 
  a) we don't find our lockprg, or
  b) user supplies us with the environment variable LOCKPRG set to "builtin"
  the builtin locks until your login password is typed. on systems using
  "shadow password files" you are prompted for a password.

markroutine can append joined.

screen removes the "controlling tty" from utmp while ptys are attached.

markroutine performs CR+NL when '\n' is pressed

screen may die quietly, when no TERMCAP entry for "screen" is
found, and screen is run under X-windows

_SEQUENT_ marks sequent386_ptx

screen runs now under SunOS4.1.1 (we need setsid()!).

bug in SetForeWindow fixed.

rare markroutine bug fixed.

we don't open every file the attacher tells us.

we have now our wonderful "Wuff, Wuff" visual_bell

we have now the interprocess-communication-buffer. secure version.

'^A =' removes the interprocess-communication-buffer.

markroutine as in 2.1

markroutine: 'a' toggles append mode,
             '>' like ' ', but immediately WriteFile(DUMP_EXCHANGE) then.
             'A' like ' ', but first switch to append mode.

.screenrc understands "screen 2:faui09 rlogin faui09 -l jnweiger"
                  and "password none"
                  and "vbell [on|off]"

'^A :' allows .screenrc commands "online".

screen now receives new $TERM from attacher, when it is reattached 

MakeClientSocket() fifo version does now test for access.

.screenrc learns "hardstatus {on|off}"

termcap's VB is used for vbell if available.

Attach() code rewritten:
	screen now lists socket directory, if it does not find a suitable socket
	screen -d [host.tty] detaches a running screen. 

screen -[ls|list]
	list all sockets that we find in our sockdir

when the socket has been removed, send a SIGCHLD to the poor SCREEN 
process and it will try to recover. then try a 'screen -r' again.
all the socket stuff lives now in an extra file.

Major changes in version 2.4:
=============================

*  Test version that presents the erlangen extensions from 2.0 in a 2.3
   screen.

*  window resize support

*  screen locking C-a x

*  support for SYSV

*  password protection

*  copy & paste across screens

*  remote detach and power detach

Major changes in version 2.3:

*  Terminal emulation has been significantly enhanced and bugfixed.

*  We now fully update the last character on the screen for true auto-
   margin terminals, though there may be some delay before the character
   can be safely added to the screen.  If your terminal has character
   insert it will be used to shorten the delay.

*  Added the "termcap" .screenrc command to tweak your terminal's termcap
   entry AND to customize the termcap generated for the virtual terminals.
   See also the -L and -O command-line options, and the SCREENCAP environ-
   ment variable.

*  Fixed screen's character handling when detached or suspended to NOT block
   the child processes in their windows -- output continues to be processed
   in the background.

*  Added a.k.a.s (window-name aliases) that allow you to customize the
   window-information line, including being able to change the name on-
   the-fly to reflect what's currently running in the window (see the
   -k option, shellaka command, and ALSO KNOWN AS discussion in the doc).

*  Added the ability to log the output of a window to a file (see the
   "C-a H" (log) command).

*  Flow-control can now be set for each window and switched interactively
   (see the "flow" command, -f option, and FLOW CONTROL discussion).

*  Individual windows can be included or excluded from mention in the
   /etc/utmp file (see the "login" command and -l option).

*  Added an activity monitor, which allows you to have a window watched for
   the start of any output and alert you when it occurs (see the "C-a M"
   (monitor) command).

*  Enhanced the information in the window-information line to keep track of
   windows that have: logging turned on '(L)'; beeped in the background '!';
   became active while being monitored '@' (see the "C-a w" (windows) command).

*  Added an on-line help display that lists all the commands and their
   key bindings (see the "C-a ?" (help) command).

*  Extended handling of the beep message (and also the new activity message)
   to allow '~' to specify a literal beep (see the "beep" and "activity"
   .screenrc commands).

*  You can now set the default action on receipt of a hangup signal:  detach
   or terminate (see the "autodetach" .screenrc command).

*  Routing of characters to their virtual terminals has been enhanced to
   not drop characters nor (in rare circumstances) hang up screen.

*  The NFS compatibility has been enhanced.

Major changes in version 2.0a:

*  Screen allows you to `detach' the "screen" session from the physical
   terminal and resume it at a later point in time (possibly on a
   different terminal or in a different login session).

  To get an impression of this functionality do the following:

     - call "screen" and create a couple of windows
     - type Control-A Control-D (screen terminates; you are back
       in the shell)
     - call "screen -r" to resume the detached screen

*  Screen supports multiple character sets and the ISO 2022 control
   functions to designate and switch between character sets.
   This allows you, for instance, to make use of the VT100 graphics
   character set or national character sets.