Releases: rprichard/winpty
winpty 0.4.3
Input handling changes:
- winpty sets
ENHANCED_KEY
for arrow and navigation keys. This fixes an
issue with the Ruby REPL.
#99 - AltGr keys are handled better now.
#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
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 - Better handling of resizing for certain full-screen programs, like
WSL less.
#112 - Hide the cursor if it's currently outside the console window. This change
fixes an issue with Far Manager.
#113 - winpty now avoids using console fonts smaller than 5px high to improve
half-vs-full-width character handling. See
microsoft/vscode#19665.
b4db322010
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
#98
This release does not include binaries for the old MSYS1 project anymore.
MSYS2 will continue to be supported. See #97.
winpty 0.4.2
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 asvim
,mc
, andless
.
#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
If anyone is currently using winpty with the original MSYS/MinGW, please let me know! If no one needs it, I'd prefer to stop supporting it eventually (#97). MSYS2, MinGW-w64, and Git Bash are all fine, though, as is MSVC 2013 and up. I would like to raise the minimum MSVC version to 2015, eventually, but I'm content to wait a while (e.g. years).
winpty 0.4.1
Bug fixes:
- This version fixes a bug where the
winpty-agent.exe
process could read
past the end of a buffer.
#94
See https://github.com/rprichard/winpty/releases/tag/0.4.0 for details on the packages.
winpty 0.4.0
The winpty library has a new API that should be easier for embedding.
880c00c69e
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 themisc
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
Bug fixes:
- By default,
winpty.dll
avoids callingSetProcessWindowStation
within
the calling process.
#58 - Fixed an uninitialized memory bug that could have crashed winpty.
#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 - 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
Files:
Name | Description |
---|---|
winpty-0.4.0-cygwin-2.5.2-ia32.tar.gz | winpty compiled for 32-bit Cygwin |
winpty-0.4.0-cygwin-2.5.2-x64.tar.gz | winpty compiled for 64-bit Cygwin |
winpty-0.4.0-msys.tar.gz | winpty compiled for the original MSYS (from mingw.org) |
winpty-0.4.0-msys2-2.5.1-ia32.tar.gz | winpty compiled for 32-bit MSYS2 |
winpty-0.4.0-msys2-2.5.1-x64.tar.gz | winpty compiled for 64-bit MSYS2 |
winpty-0.4.0-msvc2015.zip | winpty binaries compiled with MSVC 2015 (no winpty.exe ) |
All the packages also contain winpty.lib
and C header files. Except for winpty.exe
, binaries are compiled with MinGW/MinGW-w64/MSVC and depend only on Windows system DLLs. The msvc2015
package contains binaries for both 32-bit and 64-bit architectures and binaries compiled with both the normal toolset (v140
) and the XP-targeting toolset (v140_xp
).
AFAIK, the XP-targeting binaries in the msvc2015 package
work fine on later OSs, but I know with certainty that the non-XP-targeting binaries do not run on XP or Server 2003. Maybe the non-XP binaries should be left out of future packages for clarity. The binaries in the other packages all should work fine on XP and later.
winpty 0.3.1
This version was released solely to fix a possible crashing bug in 0.3.0.
Bug fixes:
- Fixed an uninitialized memory bug that could have crashed winpty.
#80
winpty 0.3.0
User-visible changes:
- The UNIX adapter is renamed from
console.exe
towinpty.exe
to be
consistent with MSYS2. The namewinpty.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 - An escape character appearing in a console screen buffer cell is converted
to a '?'.
#47
Bug fixes:
- A major bug affecting XP users was fixed.
#67 - Fixed an incompatibility with ConEmu where winpty hung if ConEmu's
"Process 'start'" feature was enabled.
#70 - Fixed a bug where
cmd.exe
sometimes printed the message,
Not enough storage is available to process this command.
.
#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 inwinpty.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 - 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
passesPIPE_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 theSECURITY_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.
winpty 0.2.2
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
.
winpty 0.2.1
- The main project source was moved into a
src
directory for better code
organization and to fix
#51. - winpty recognizes many more escape sequences, including:
- putty/rxvt's F1-F4 keys
#40 - the Linux virtual console's F1-F5 keys
- the "application numpad" keys (e.g. enabled with DECPAM)
- putty/rxvt's F1-F4 keys
- 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
Changes to debugging interfaces:
- The
WINPTY_DEBUG
variable is now a comma-separated list. The old
behavior (i.e. tracing) is enabled withWINPTY_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 toWINPTY_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.
winpty 0.2.0
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
#30
#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 - 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.
- Changing the screen buffer (i.e.
- 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. - 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."
- DkGray-on-Black text was previously hiddenly completely. Now it is
- Shift-Tab is recognized correctly now.
#19 - Add a
--version
argument towinpty-agent.exe
and the UNIX adapter. The
argument reports the nominal version (i.e. theVERSION.txt
) file, with a
"VERSION_SUFFIX" appended (defaulted to-dev
), and a git commit hash, if
thegit
command successfully reports a hash during the build. Thegit
command is invoked by eithermake
orgyp
. - The agent now combines
ReadConsoleOutputW
calls when it polls the console
buffer for changes, which may slightly reduce its CPU overhead.
#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 - 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 toWINPTY_DEBUG
, and a newWINPTY_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 withWINPTY_DEBUG
.
- The
Makefile
build of winpty now compileswinpty-agent.exe
and
winpty.dll
with -O2.
winpty 0.1.1
Copy the Unix environment to the Win32 environment in the unix-adapter. This should fix issue 5. The copying appeared to be necessary only for Cygwin, not for MSYS. I'm not sure why this is. I added a call to cygwin_internal(CW_SYNC_WINENV) for both anyway, because I didn't think it would hurt.