installed pty
[VSoRC/.git] / node_modules / node-pty / deps / winpty / RELEASES.md
1 # Next Version
2
3 Input handling changes:
4
5  * Improve Ctrl-C handling with programs that use unprocessed input. (e.g.
6    Ctrl-C now cancels input with PowerShell on Windows 10.)
7    [#116](https://github.com/rprichard/winpty/issues/116)
8  * Fix a theoretical issue with input event ordering.
9    [#117](https://github.com/rprichard/winpty/issues/117)
10  * Ctrl/Shift+{Arrow,Home,End} keys now work with IntelliJ.
11    [#118](https://github.com/rprichard/winpty/issues/118)
12
13 # Version 0.4.3 (2017-05-17)
14
15 Input handling changes:
16
17  * winpty sets `ENHANCED_KEY` for arrow and navigation keys.  This fixes an
18    issue with the Ruby REPL.
19    [#99](https://github.com/rprichard/winpty/issues/99)
20  * AltGr keys are handled better now.
21    [#109](https://github.com/rprichard/winpty/issues/109)
22  * In `ENABLE_VIRTUAL_TERMINAL_INPUT` mode, when typing Home/End with a
23    modifier (e.g. Ctrl), winpty now generates an H/F escape sequence like
24    `^[[1;5F` rather than a 1/4 escape like `^[[4;5~`.
25    [#114](https://github.com/rprichard/winpty/issues/114)
26
27 Resizing and scraping fixes:
28
29  * winpty now synthesizes a `WINDOW_BUFFER_SIZE_EVENT` event after resizing
30    the console to better propagate window size changes to console programs.
31    In particular, this affects WSL and Cygwin.
32    [#110](https://github.com/rprichard/winpty/issues/110)
33  * Better handling of resizing for certain full-screen programs, like
34    WSL less.
35    [#112](https://github.com/rprichard/winpty/issues/112)
36  * Hide the cursor if it's currently outside the console window.  This change
37    fixes an issue with Far Manager.
38    [#113](https://github.com/rprichard/winpty/issues/113)
39  * winpty now avoids using console fonts smaller than 5px high to improve
40    half-vs-full-width character handling.  See
41    https://github.com/Microsoft/vscode/issues/19665.
42    [b4db322010](https://github.com/rprichard/winpty/commit/b4db322010d2d897e6c496fefc4f0ecc9b84c2f3)
43
44 Cygwin/MSYS adapter fix:
45
46  * The way the `winpty` Cygwin/MSYS2 adapter searches for the program to
47    launch changed.  It now resolves symlinks and searches the PATH explicitly.
48    [#81](https://github.com/rprichard/winpty/issues/81)
49    [#98](https://github.com/rprichard/winpty/issues/98)
50
51 This release does not include binaries for the old MSYS1 project anymore.
52 MSYS2 will continue to be supported.  See
53 https://github.com/rprichard/winpty/issues/97.
54
55 # Version 0.4.2 (2017-01-18)
56
57 This release improves WSL support (i.e. Bash-on-Windows):
58
59  * winpty generates more correct input escape sequences for WSL programs that
60    enable an alternate input mode using DECCKM.  This bug affected arrow keys
61    and Home/End in WSL programs such as `vim`, `mc`, and `less`.
62    [#90](https://github.com/rprichard/winpty/issues/90)
63  * winpty now recognizes the `COMMON_LVB_REVERSE_VIDEO` and
64    `COMMON_LVB_UNDERSCORE` text attributes.  The Windows console uses these
65    attributes to implement the SGR.4(Underline) and SGR.7(Negative) modes in
66    its VT handling.  This change affects WSL pager status bars, man pages, etc.
67
68 The build system no longer has a "version suffix" mechanism, so passing
69 `VERSION_SUFFIX=<suffix>` to make or `-D VERSION_SUFFIX=<suffix>` to gyp now
70 has no effect.  AFAIK, the mechanism was never used publicly.
71 [67a34b6c03](https://github.com/rprichard/winpty/commit/67a34b6c03557a5c2e0a2bdd502c2210921d8f3e)
72
73 # Version 0.4.1 (2017-01-03)
74
75 Bug fixes:
76
77  * This version fixes a bug where the `winpty-agent.exe` process could read
78    past the end of a buffer.
79    [#94](https://github.com/rprichard/winpty/issues/94)
80
81 # Version 0.4.0 (2016-06-28)
82
83 The winpty library has a new API that should be easier for embedding.
84 [880c00c69e](https://github.com/rprichard/winpty/commit/880c00c69eeca73643ddb576f02c5badbec81f56)
85
86 User-visible changes:
87
88  * winpty now automatically puts the terminal into mouse mode when it detects
89    that the console has left QuickEdit mode.  The `--mouse` option still forces
90    the terminal into mouse mode.  In principle, an option could be added to
91    suppress terminal mode, but hopefully it won't be necessary.  There is a
92    script in the `misc` subdirectory, `misc/ConinMode.ps1`, that can change
93    the QuickEdit mode from the command-line.
94  * winpty now passes keyboard escapes to `bash.exe` in the Windows Subsystem
95    for Linux.
96    [#82](https://github.com/rprichard/winpty/issues/82)
97
98 Bug fixes:
99
100  * By default, `winpty.dll` avoids calling `SetProcessWindowStation` within
101    the calling process.
102    [#58](https://github.com/rprichard/winpty/issues/58)
103  * Fixed an uninitialized memory bug that could have crashed winpty.
104    [#80](https://github.com/rprichard/winpty/issues/80)
105  * winpty now works better with very large and very small terminal windows.
106    It resizes the console font according to the number of columns.
107    [#61](https://github.com/rprichard/winpty/issues/61)
108  * winpty no longer uses Mark to freeze the console on Windows 10.  The Mark
109    command could interfere with the cursor position, corrupting the data in
110    the screen buffer.
111    [#79](https://github.com/rprichard/winpty/issues/79)
112
113 # Version 0.3.0 (2016-05-20)
114
115 User-visible changes:
116
117  * The UNIX adapter is renamed from `console.exe` to `winpty.exe` to be
118    consistent with MSYS2.  The name `winpty.exe` is less likely to conflict
119    with another program and is easier to search for online (e.g. for someone
120    unfamiliar with winpty).
121  * The UNIX adapter now clears the `TERM` variable.
122    [#43](https://github.com/rprichard/winpty/issues/43)
123  * An escape character appearing in a console screen buffer cell is converted
124    to a '?'.
125    [#47](https://github.com/rprichard/winpty/issues/47)
126
127 Bug fixes:
128
129  * A major bug affecting XP users was fixed.
130    [#67](https://github.com/rprichard/winpty/issues/67)
131  * Fixed an incompatibility with ConEmu where winpty hung if ConEmu's
132    "Process 'start'" feature was enabled.
133    [#70](https://github.com/rprichard/winpty/issues/70)
134  * Fixed a bug where `cmd.exe` sometimes printed the message,
135    `Not enough storage is available to process this command.`.
136    [#74](https://github.com/rprichard/winpty/issues/74)
137
138 Many changes internally:
139
140  * The codebase is switched from C++03 to C++11 and uses exceptions internally.
141    No exceptions are thrown across the C APIs defined in `winpty.h`.
142  * This version drops support for the original MinGW compiler packaged with
143    Cygwin (`i686-pc-mingw32-g++`).  The MinGW-w64 compiler is still supported,
144    as is the MinGW distributed at mingw.org.  Compiling with MSVC now requires
145    MSVC 2013 or newer.  Windows XP is still supported.
146    [ec3eae8df5](https://github.com/rprichard/winpty/commit/ec3eae8df5bbbb36d7628d168b0815638d122f37)
147  * Pipe security is improved.  winpty works harder to produce unique pipe names
148    and includes a random component in the name.  winpty secures pipes with a
149    DACL that prevents arbitrary users from connecting to its pipes.  winpty now
150    passes `PIPE_REJECT_REMOTE_CLIENTS` on Vista and up, and it verifies that
151    the pipe client PID is correct, again on Vista and up.  When connecting to a
152    named pipe, winpty uses the `SECURITY_IDENTIFICATION` flag to restrict
153    impersonation.  Previous versions *should* still be secure.
154  * `winpty-debugserver.exe` now has an `--everyone` flag that allows capturing
155    debug output from other users.
156  * The code now compiles cleanly with MSVC's "Security Development Lifecycle"
157    (`/SDL`) checks enabled.
158
159 # Version 0.2.2 (2016-02-25)
160
161 Minor bug fixes and enhancements:
162
163  * Fix a bug that generated spurious mouse input records when an incomplete
164    mouse escape sequence was seen.
165  * Fix a buffer overflow bug in `winpty-debugserver.exe` affecting messages of
166    exactly 4096 bytes.
167  * For MSVC builds, add a `src/configurations.gypi` file that can be included
168    on the gyp command-line to enable 32-bit and 64-bit builds.
169  * `winpty-agent --show-input` mode: Flush stdout after each line.
170  * Makefile builds: generate a `build/winpty.lib` import library to accompany
171    `build/winpty.dll`.
172
173 # Version 0.2.1 (2015-12-19)
174
175  * The main project source was moved into a `src` directory for better code
176    organization and to fix
177    [#51](https://github.com/rprichard/winpty/issues/51).
178  * winpty recognizes many more escape sequences, including:
179     * putty/rxvt's F1-F4 keys
180       [#40](https://github.com/rprichard/winpty/issues/40)
181     * the Linux virtual console's F1-F5 keys
182     * the "application numpad" keys (e.g. enabled with DECPAM)
183  * Fixed handling of Shift-Alt-O and Alt-[.
184  * Added support for mouse input.  The UNIX adapter has a `--mouse` argument
185    that puts the terminal into mouse mode, but the agent recognizes mouse
186    input even without the argument.  The agent recognizes double-clicks using
187    Windows' double-click interval setting (i.e. GetDoubleClickTime).
188    [#57](https://github.com/rprichard/winpty/issues/57)
189
190 Changes to debugging interfaces:
191
192  * The `WINPTY_DEBUG` variable is now a comma-separated list.  The old
193    behavior (i.e. tracing) is enabled with `WINPTY_DEBUG=trace`.
194  * The UNIX adapter program now has a `--showkey` argument that dumps input
195    bytes.
196  * The `winpty-agent.exe` program has a `--show-input` argument that dumps
197    `INPUT_RECORD` records.  (It omits mouse events unless `--with-mouse` is
198    also specified.)  The agent also responds to `WINPTY_DEBUG=trace,input`,
199    which logs input bytes and synthesized console events, and it responds to
200    `WINPTY_DEBUG=trace,dump_input_map`, which dumps the internal table of
201    escape sequences.
202
203 # Version 0.2.0 (2015-11-13)
204
205 No changes to the API, but many small changes to the implementation.  The big
206 changes include:
207
208  * Support for 64-bit Cygwin and MSYS2
209  * Support for Windows 10
210  * Better Unicode support (especially East Asian languages)
211
212 Details:
213
214  * The `configure` script recognizes 64-bit Cygwin and MSYS2 environments and
215    selects the appropriate compiler.
216  * winpty works much better with the upgraded console in Windows 10.  The
217    `conhost.exe` hang can still occur, but only with certain programs, and
218    is much less likely to occur.  With the new console, use Mark instead of
219    SelectAll, for better performance.
220    [#31](https://github.com/rprichard/winpty/issues/31)
221    [#30](https://github.com/rprichard/winpty/issues/30)
222    [#53](https://github.com/rprichard/winpty/issues/53)
223  * The UNIX adapter now calls `setlocale(LC_ALL, "")` to set the locale.
224  * Improved Unicode support.  When a console is started with an East Asian code
225    page, winpty now chooses an East Asian font rather than Consolas / Lucida
226    Console.  Selecting the right font helps synchronize character widths
227    between the console and terminal.  (It's not perfect, though.)
228    [#41](https://github.com/rprichard/winpty/issues/41)
229  * winpty now more-or-less works with programs that change the screen buffer
230    or resize the original screen buffer.  If the screen buffer height changes,
231    winpty switches to a "direct mode", where it makes no effort to track
232    scrolling.  In direct mode, it merely syncs snapshots of the console to the
233    terminal.  Caveats:
234     * Changing the screen buffer (i.e. `SetConsoleActiveScreenBuffer`)
235       breaks winpty on Windows 7.  This problem can eventually be mitigated,
236       but never completely fixed, due to Windows 7 bugginess.
237     * Resizing the original screen buffer can hang `conhost.exe` on Windows 10.
238       Enabling the legacy console is a workaround.
239     * If a program changes the screen buffer and then exits, relying on the OS
240       to restore the original screen buffer, that restoration probably will not
241       happen with winpty.  winpty's behavior can probably be improved here.
242  * Improved color handling:
243     * DkGray-on-Black text was previously hiddenly completely.  Now it is
244       output as DkGray, with a fallback to LtGray on terminals that don't
245       recognize the intense colors.
246       [#39](https://github.com/rprichard/winpty/issues/39).
247     * The console is always initialized to LtGray-on-Black, regardless of the
248       user setting, which matches the console color heuristic, which translates
249       LtGray-on-Black to "reset SGR parameters."
250  * Shift-Tab is recognized correctly now.
251    [#19](https://github.com/rprichard/winpty/issues/19)
252  * Add a `--version` argument to `winpty-agent.exe` and the UNIX adapter.  The
253    argument reports the nominal version (i.e. the `VERSION.txt`) file, with a
254    "VERSION_SUFFIX" appended (defaulted to `-dev`), and a git commit hash, if
255    the `git` command successfully reports a hash during the build.  The `git`
256    command is invoked by either `make` or `gyp`.
257  * The agent now combines `ReadConsoleOutputW` calls when it polls the console
258    buffer for changes, which may slightly reduce its CPU overhead.
259    [#44](https://github.com/rprichard/winpty/issues/44).
260  * A `gyp` file is added to help compile with MSVC.
261  * The code can now be compiled as C++11 code, though it isn't by default.
262    [bde8922e08](https://github.com/rprichard/winpty/commit/bde8922e08c3638e01ecc7b581b676c314163e3c)
263  * If winpty can't create a new window station, it charges ahead rather than
264    aborting.  This situation might happen if winpty were started from an SSH
265    session.
266  * Debugging improvements:
267     * `WINPTYDBG` is renamed to `WINPTY_DEBUG`, and a new `WINPTY_SHOW_CONSOLE`
268       variable keeps the underlying console visible.
269     * A `winpty-debugserver.exe` program is built and shipped by default.  It
270       collects the trace output enabled with `WINPTY_DEBUG`.
271  * The `Makefile` build of winpty now compiles `winpty-agent.exe` and
272    `winpty.dll` with -O2.
273
274 # Version 0.1.1 (2012-07-28)
275
276 Minor bugfix release.
277
278 # Version 0.1 (2012-04-17)
279
280 Initial release.