| # Next Version | |
| Input handling changes: | |
| * Improve Ctrl-C handling with programs that use unprocessed input. (e.g. | |
| Ctrl-C now cancels input with PowerShell on Windows 10.) | |
| [#116](https://github.com/rprichard/winpty/issues/116) | |
| * Fix a theoretical issue with input event ordering. | |
| [#117](https://github.com/rprichard/winpty/issues/117) | |
| * Ctrl/Shift+{Arrow,Home,End} keys now work with IntelliJ. | |
| [#118](https://github.com/rprichard/winpty/issues/118) | |
| # Version 0.4.3 (2017-05-17) | |
| Input handling changes: | |
| * winpty sets `ENHANCED_KEY` for arrow and navigation keys. This fixes an | |
| issue with the Ruby REPL. | |
| [#99](https://github.com/rprichard/winpty/issues/99) | |
| * AltGr keys are handled better now. | |
| [#109](https://github.com/rprichard/winpty/issues/109) | |
| * In `ENABLE_VIRTUAL_TERMINAL_INPUT` mode, when typing Home/End with a | |
| modifier (e.g. Ctrl), winpty now generates an H/F escape sequence like | |
| `^[[1;5F` rather than a 1/4 escape like `^[[4;5~`. | |
| [#114](https://github.com/rprichard/winpty/issues/114) | |
| Resizing and scraping fixes: | |
| * winpty now synthesizes a `WINDOW_BUFFER_SIZE_EVENT` event after resizing | |
| the console to better propagate window size changes to console programs. | |
| In particular, this affects WSL and Cygwin. | |
| [#110](https://github.com/rprichard/winpty/issues/110) | |
| * Better handling of resizing for certain full-screen programs, like | |
| WSL less. | |
| [#112](https://github.com/rprichard/winpty/issues/112) | |
| * Hide the cursor if it's currently outside the console window. This change | |
| fixes an issue with Far Manager. | |
| [#113](https://github.com/rprichard/winpty/issues/113) | |
| * winpty now avoids using console fonts smaller than 5px high to improve | |
| half-vs-full-width character handling. See | |
| https://github.com/Microsoft/vscode/issues/19665. | |
| [b4db322010](https://github.com/rprichard/winpty/commit/b4db322010d2d897e6c496fefc4f0ecc9b84c2f3) | |
| Cygwin/MSYS adapter fix: | |
| * The way the `winpty` Cygwin/MSYS2 adapter searches for the program to | |
| launch changed. It now resolves symlinks and searches the PATH explicitly. | |
| [#81](https://github.com/rprichard/winpty/issues/81) | |
| [#98](https://github.com/rprichard/winpty/issues/98) | |
| This release does not include binaries for the old MSYS1 project anymore. | |
| MSYS2 will continue to be supported. See | |
| https://github.com/rprichard/winpty/issues/97. | |
| # Version 0.4.2 (2017-01-18) | |
| This release improves WSL support (i.e. Bash-on-Windows): | |
| * winpty generates more correct input escape sequences for WSL programs that | |
| enable an alternate input mode using DECCKM. This bug affected arrow keys | |
| and Home/End in WSL programs such as `vim`, `mc`, and `less`. | |
| [#90](https://github.com/rprichard/winpty/issues/90) | |
| * winpty now recognizes the `COMMON_LVB_REVERSE_VIDEO` and | |
| `COMMON_LVB_UNDERSCORE` text attributes. The Windows console uses these | |
| attributes to implement the SGR.4(Underline) and SGR.7(Negative) modes in | |
| its VT handling. This change affects WSL pager status bars, man pages, etc. | |
| The build system no longer has a "version suffix" mechanism, so passing | |
| `VERSION_SUFFIX=<suffix>` to make or `-D VERSION_SUFFIX=<suffix>` to gyp now | |
| has no effect. AFAIK, the mechanism was never used publicly. | |
| [67a34b6c03](https://github.com/rprichard/winpty/commit/67a34b6c03557a5c2e0a2bdd502c2210921d8f3e) | |
| # Version 0.4.1 (2017-01-03) | |
| Bug fixes: | |
| * This version fixes a bug where the `winpty-agent.exe` process could read | |
| past the end of a buffer. | |
| [#94](https://github.com/rprichard/winpty/issues/94) | |
| # Version 0.4.0 (2016-06-28) | |
| The winpty library has a new API that should be easier for embedding. | |
| [880c00c69e](https://github.com/rprichard/winpty/commit/880c00c69eeca73643ddb576f02c5badbec81f56) | |
| User-visible changes: | |
| * winpty now automatically puts the terminal into mouse mode when it detects | |
| that the console has left QuickEdit mode. The `--mouse` option still forces | |
| the terminal into mouse mode. In principle, an option could be added to | |
| suppress terminal mode, but hopefully it won't be necessary. There is a | |
| script in the `misc` subdirectory, `misc/ConinMode.ps1`, that can change | |
| the QuickEdit mode from the command-line. | |
| * winpty now passes keyboard escapes to `bash.exe` in the Windows Subsystem | |
| for Linux. | |
| [#82](https://github.com/rprichard/winpty/issues/82) | |
| Bug fixes: | |
| * By default, `winpty.dll` avoids calling `SetProcessWindowStation` within | |
| the calling process. | |
| [#58](https://github.com/rprichard/winpty/issues/58) | |
| * Fixed an uninitialized memory bug that could have crashed winpty. | |
| [#80](https://github.com/rprichard/winpty/issues/80) | |
| * winpty now works better with very large and very small terminal windows. | |
| It resizes the console font according to the number of columns. | |
| [#61](https://github.com/rprichard/winpty/issues/61) | |
| * winpty no longer uses Mark to freeze the console on Windows 10. The Mark | |
| command could interfere with the cursor position, corrupting the data in | |
| the screen buffer. | |
| [#79](https://github.com/rprichard/winpty/issues/79) | |
| # Version 0.3.0 (2016-05-20) | |
| User-visible changes: | |
| * The UNIX adapter is renamed from `console.exe` to `winpty.exe` to be | |
| consistent with MSYS2. The name `winpty.exe` is less likely to conflict | |
| with another program and is easier to search for online (e.g. for someone | |
| unfamiliar with winpty). | |
| * The UNIX adapter now clears the `TERM` variable. | |
| [#43](https://github.com/rprichard/winpty/issues/43) | |
| * An escape character appearing in a console screen buffer cell is converted | |
| to a '?'. | |
| [#47](https://github.com/rprichard/winpty/issues/47) | |
| Bug fixes: | |
| * A major bug affecting XP users was fixed. | |
| [#67](https://github.com/rprichard/winpty/issues/67) | |
| * Fixed an incompatibility with ConEmu where winpty hung if ConEmu's | |
| "Process 'start'" feature was enabled. | |
| [#70](https://github.com/rprichard/winpty/issues/70) | |
| * Fixed a bug where `cmd.exe` sometimes printed the message, | |
| `Not enough storage is available to process this command.`. | |
| [#74](https://github.com/rprichard/winpty/issues/74) | |
| Many changes internally: | |
| * The codebase is switched from C++03 to C++11 and uses exceptions internally. | |
| No exceptions are thrown across the C APIs defined in `winpty.h`. | |
| * This version drops support for the original MinGW compiler packaged with | |
| Cygwin (`i686-pc-mingw32-g++`). The MinGW-w64 compiler is still supported, | |
| as is the MinGW distributed at mingw.org. Compiling with MSVC now requires | |
| MSVC 2013 or newer. Windows XP is still supported. | |
| [ec3eae8df5](https://github.com/rprichard/winpty/commit/ec3eae8df5bbbb36d7628d168b0815638d122f37) | |
| * Pipe security is improved. winpty works harder to produce unique pipe names | |
| and includes a random component in the name. winpty secures pipes with a | |
| DACL that prevents arbitrary users from connecting to its pipes. winpty now | |
| passes `PIPE_REJECT_REMOTE_CLIENTS` on Vista and up, and it verifies that | |
| the pipe client PID is correct, again on Vista and up. When connecting to a | |
| named pipe, winpty uses the `SECURITY_IDENTIFICATION` flag to restrict | |
| impersonation. Previous versions *should* still be secure. | |
| * `winpty-debugserver.exe` now has an `--everyone` flag that allows capturing | |
| debug output from other users. | |
| * The code now compiles cleanly with MSVC's "Security Development Lifecycle" | |
| (`/SDL`) checks enabled. | |
| # Version 0.2.2 (2016-02-25) | |
| Minor bug fixes and enhancements: | |
| * Fix a bug that generated spurious mouse input records when an incomplete | |
| mouse escape sequence was seen. | |
| * Fix a buffer overflow bug in `winpty-debugserver.exe` affecting messages of | |
| exactly 4096 bytes. | |
| * For MSVC builds, add a `src/configurations.gypi` file that can be included | |
| on the gyp command-line to enable 32-bit and 64-bit builds. | |
| * `winpty-agent --show-input` mode: Flush stdout after each line. | |
| * Makefile builds: generate a `build/winpty.lib` import library to accompany | |
| `build/winpty.dll`. | |
| # Version 0.2.1 (2015-12-19) | |
| * The main project source was moved into a `src` directory for better code | |
| organization and to fix | |
| [#51](https://github.com/rprichard/winpty/issues/51). | |
| * winpty recognizes many more escape sequences, including: | |
| * putty/rxvt's F1-F4 keys | |
| [#40](https://github.com/rprichard/winpty/issues/40) | |
| * the Linux virtual console's F1-F5 keys | |
| * the "application numpad" keys (e.g. enabled with DECPAM) | |
| * Fixed handling of Shift-Alt-O and Alt-[. | |
| * Added support for mouse input. The UNIX adapter has a `--mouse` argument | |
| that puts the terminal into mouse mode, but the agent recognizes mouse | |
| input even without the argument. The agent recognizes double-clicks using | |
| Windows' double-click interval setting (i.e. GetDoubleClickTime). | |
| [#57](https://github.com/rprichard/winpty/issues/57) | |
| Changes to debugging interfaces: | |
| * The `WINPTY_DEBUG` variable is now a comma-separated list. The old | |
| behavior (i.e. tracing) is enabled with `WINPTY_DEBUG=trace`. | |
| * The UNIX adapter program now has a `--showkey` argument that dumps input | |
| bytes. | |
| * The `winpty-agent.exe` program has a `--show-input` argument that dumps | |
| `INPUT_RECORD` records. (It omits mouse events unless `--with-mouse` is | |
| also specified.) The agent also responds to `WINPTY_DEBUG=trace,input`, | |
| which logs input bytes and synthesized console events, and it responds to | |
| `WINPTY_DEBUG=trace,dump_input_map`, which dumps the internal table of | |
| escape sequences. | |
| # Version 0.2.0 (2015-11-13) | |
| No changes to the API, but many small changes to the implementation. The big | |
| changes include: | |
| * Support for 64-bit Cygwin and MSYS2 | |
| * Support for Windows 10 | |
| * Better Unicode support (especially East Asian languages) | |
| Details: | |
| * The `configure` script recognizes 64-bit Cygwin and MSYS2 environments and | |
| selects the appropriate compiler. | |
| * winpty works much better with the upgraded console in Windows 10. The | |
| `conhost.exe` hang can still occur, but only with certain programs, and | |
| is much less likely to occur. With the new console, use Mark instead of | |
| SelectAll, for better performance. | |
| [#31](https://github.com/rprichard/winpty/issues/31) | |
| [#30](https://github.com/rprichard/winpty/issues/30) | |
| [#53](https://github.com/rprichard/winpty/issues/53) | |
| * The UNIX adapter now calls `setlocale(LC_ALL, "")` to set the locale. | |
| * Improved Unicode support. When a console is started with an East Asian code | |
| page, winpty now chooses an East Asian font rather than Consolas / Lucida | |
| Console. Selecting the right font helps synchronize character widths | |
| between the console and terminal. (It's not perfect, though.) | |
| [#41](https://github.com/rprichard/winpty/issues/41) | |
| * winpty now more-or-less works with programs that change the screen buffer | |
| or resize the original screen buffer. If the screen buffer height changes, | |
| winpty switches to a "direct mode", where it makes no effort to track | |
| scrolling. In direct mode, it merely syncs snapshots of the console to the | |
| terminal. Caveats: | |
| * Changing the screen buffer (i.e. `SetConsoleActiveScreenBuffer`) | |
| breaks winpty on Windows 7. This problem can eventually be mitigated, | |
| but never completely fixed, due to Windows 7 bugginess. | |
| * Resizing the original screen buffer can hang `conhost.exe` on Windows 10. | |
| Enabling the legacy console is a workaround. | |
| * If a program changes the screen buffer and then exits, relying on the OS | |
| to restore the original screen buffer, that restoration probably will not | |
| happen with winpty. winpty's behavior can probably be improved here. | |
| * Improved color handling: | |
| * DkGray-on-Black text was previously hiddenly completely. Now it is | |
| output as DkGray, with a fallback to LtGray on terminals that don't | |
| recognize the intense colors. | |
| [#39](https://github.com/rprichard/winpty/issues/39). | |
| * The console is always initialized to LtGray-on-Black, regardless of the | |
| user setting, which matches the console color heuristic, which translates | |
| LtGray-on-Black to "reset SGR parameters." | |
| * Shift-Tab is recognized correctly now. | |
| [#19](https://github.com/rprichard/winpty/issues/19) | |
| * Add a `--version` argument to `winpty-agent.exe` and the UNIX adapter. The | |
| argument reports the nominal version (i.e. the `VERSION.txt`) file, with a | |
| "VERSION_SUFFIX" appended (defaulted to `-dev`), and a git commit hash, if | |
| the `git` command successfully reports a hash during the build. The `git` | |
| command is invoked by either `make` or `gyp`. | |
| * The agent now combines `ReadConsoleOutputW` calls when it polls the console | |
| buffer for changes, which may slightly reduce its CPU overhead. | |
| [#44](https://github.com/rprichard/winpty/issues/44). | |
| * A `gyp` file is added to help compile with MSVC. | |
| * The code can now be compiled as C++11 code, though it isn't by default. | |
| [bde8922e08](https://github.com/rprichard/winpty/commit/bde8922e08c3638e01ecc7b581b676c314163e3c) | |
| * If winpty can't create a new window station, it charges ahead rather than | |
| aborting. This situation might happen if winpty were started from an SSH | |
| session. | |
| * Debugging improvements: | |
| * `WINPTYDBG` is renamed to `WINPTY_DEBUG`, and a new `WINPTY_SHOW_CONSOLE` | |
| variable keeps the underlying console visible. | |
| * A `winpty-debugserver.exe` program is built and shipped by default. It | |
| collects the trace output enabled with `WINPTY_DEBUG`. | |
| * The `Makefile` build of winpty now compiles `winpty-agent.exe` and | |
| `winpty.dll` with -O2. | |
| # Version 0.1.1 (2012-07-28) | |
| Minor bugfix release. | |
| # Version 0.1 (2012-04-17) | |
| Initial release. | |