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