Releases: vezel-dev/cathode
Releases · vezel-dev/cathode
v0.14.17
v0.13.25
v0.12.42
- Added Black Box, Contour, Guake, Tilix, tmux, Xfce Terminal, and Yakuake to the list of supported terminal emulators.
- Vezel.Cathode
- Improvements to child process APIs.
- Added some extra
Run()andRunIn()convenience methods toChildProcess. - Added a new
ChildProcessErrorExceptiontype, derived fromChildProcessException.- Changed
ChildProcessto throwChildProcessErrorExceptionfor non-zero exit codes ifChildProcessBuilder.ThrowOnErroris set. - Changed
ChildProcessAPIs to throwChildProcessExceptionif something goes wrong with starting or killing a process.
- Changed
- Changed
ChildProcess.Kill()to handle the broaderSystemExceptioninstead ofInvalidOperationException, preventing various unhelpful OS exceptions from bubbling up. - Changed
ChildProcessReaderto not bubble upIOExceptions resulting from the child process somehow closing the pipe. - Fixed
ChildProcessReaderto properly cancel its read loop when cancellation is requested for the child process.
- Added some extra
- Improvements to child process APIs.
- Vezel.Cathode.Native
- Reimplemented terminal drivers in a helper library written in C.
- The library is currently available for
linux-arm,linux-arm64,linux-x64,osx-arm64,osx-x64,win-arm64,win-x86, andwin-x64.- Support for
linux-musl-arm,linux-musl-arm64, andlinux-musl-x64will come in a future release.
- Support for
- Added support for proper read cancellation on Windows, but only in raw mode for now.
- Changed the Unix driver to support cancellation for writes too.
- Changed the drivers to reliably restore terminal state on normal process exit.
- The library is currently available for
- Reimplemented terminal drivers in a helper library written in C.
- Vezel.Cathode.Hosting
- Removed this library as Vezel.Cathode.Native has obviated the need for it.
v0.11.1
- Updated to .NET 8.0.0.
- Changed required target framework to
net8.0. - Updated library dependencies.
- Updated Microsoft.Extensions.Hosting to 8.0.0.
- Updated Microsoft.Extensions.Hosting.Systemd to 8.0.0.
- Updated System.IO.Pipelines to 8.0.0.
- Updated Wcwidth to 2.0.0.
- Dropped support for the Windows console host as Windows Terminal is now the default for Windows 11 22H2+.
- Vezel.Cathode
- Applied
[DisableRuntimeMarshalling]to the library. - Applied
ValueTaskpooling optimizations in more places. - Improvements to and refactoring of I/O APIs.
- Added output method overloads for
char[]?,string?, andbyte[]?to avoid these types binding to the generic overloads. - Replaced
TerminalSizetype withSystem.Drawing.Size. - Dropped the UTF-16 input workaround as Windows Terminal now properly supports UTF-8 input.
- Added output method overloads for
- Improvements to child process APIs.
- Fixed a case where
ChildProcess.Kill(bool)could throw an unexpectedInvalidOperationException.
- Fixed a case where
- Improvements to control sequence construction.
- Added support for
OSC 7andOSC 9 ; 9. - Added support for
OSC 133. - Added missing
SetUnderlineColormethod toControlSequences. - Switched to
System.Drawing.Colorfor all APIs taking RGB values.
- Added support for
- Applied
- Vezel.Cathode.Extensions
- Switched to
System.Drawing.Colorfor all APIs taking RGB values.
- Switched to
v0.10.40
- Updated library dependencies.
- Updated Microsoft.CodeAnalysis.BannedApiAnalyzers to 3.3.4.
- Updated Microsoft.Extensions.Hosting to 7.0.1.
- Vezel.Cathode
- Improvements to I/O APIs.
- Implemented
IEqualityOperators<TerminalSize, TerminalSize, bool>onTerminalSize.
- Implemented
- Improvements to child process APIs.
- Cleaned up and improved
ChildProcessBuilderAPI surface to be friendlier.
- Cleaned up and improved
- Improvements to I/O APIs.
- Vezel.Cathode.Hosting
- Changed
ProgramHostto print the unhandled exception if noUnhandledExceptionhandler is installed.
- Changed
v0.9.156
- Updated to .NET 7.0.0.
- Changed required target framework to
net7.0. - Updated library dependencies.
- Updated System.IO.Pipelines to 7.0.0.
- Updated Microsoft.Extensions.Hosting to 7.0.0.
- Updated Microsoft.Extensions.Hosting.Systemd to 7.0.0.
- Updated Wcwidth to 1.0.0.
- Applied
[SkipLocalsInit]to all libraries. - Applied
[DisableRuntimeMarshalling]to all libraries except Vezel.Cathode (core library). - Switched to
[ThreadStatic]instead ofThreadLocal<T>throughout the project. - Applied
scopedparameter annotations throughout the project. - Vezel.Cathode
- Bundled analyzers library (Vezel.Cathode.Analyzers) with the core library.
- Referenced Microsoft.CodeAnalysis.CSharp instead of Microsoft.CodeAnalysis.CSharp.Workspaces in the analyzers.
- Eliminated some allocations in thread pool and cancellation callbacks.
- Improvements and refactoring to I/O APIs.
- Added cancellation support in
TerminalReader.ReadLineAsync(). - Removed (broken) cancellation support from all synchronous APIs.
- Added missing buffer validation to
TerminalStream.Read(). - Fixed some unsafe
SafeHandlemanipulation inUnixCancellationPipe. - Added
[NotNullWhen(true)]attribute toTerminalSize.Equals(). - Implemented
ToString()onTerminalSize. - Applied
[UnsupportedOSPlatform("windows")]onTerminal.GenerateSignal().
- Added cancellation support in
- Improvements to child process APIs.
- Kill entire process tree on cancellation.
- Reject null array argument in
ChildProcessBuilder.WithArguments().
- Improvements to control sequence construction.
- Added support for
DECARM. - Added support for
DECPS. - Added support for
DECSCA,DECSED, andDECSEL. - Fixed incorrect argument order in
CUPconstruction. - Eliminated most allocations in
ControlSequences.
- Added support for
- Improvements to rune/string measurement API.
- Updated to Unicode 15.0.0.
- Removed an unnecessary
MonospaceWidth.Measure(string?)overload.
- Vezel.Cathode.Hosting
- Added a
CancellationTokenproperty toProgramContextthat is wired up to terminal signals. - Converted
EntryPointGeneratorto an incremental source generator. - Switched to
fileaccessibility for the generated entry point type. - Use fully-qualified name of the
IProgramimplementation inEntryPointGenerator. - Added support for struct implementations of
IProgram.
- Added a
- Vezel.Cathode.Extensions
- Updates in line with .NET 7.
- Fixed
TerminalLoggerOptions.LogToStandardErrorThresholddefaulting toLogLevel.Traceinstead ofLogLevel.None.
v0.8.23
v0.7.40
- Renamed the project from System.Terminal to Cathode.
- Relicensed from ISC to 0BSD.
- Improvements and refactoring to I/O APIs.
Stream,TextReader, andTextWriterinstances exposed by the library are now fully synchronized.TextReader/TextWriterproperties onTerminalReader/TerminalWriterare now abstract.
- Improvements to child process APIs.
- Overhauled the APIs and moved them to the
Cathode.Processesnamespace. - Renamed
TerminalProcesstoChildProcess(ditto for related types). - Added clean integration with
async/awaitand cancellation. - Changed a number of options to have more intuitive defaults.
- Added background buffering of process output with an optional buffer size limit.
- Removed the
SendSignalmethod as it cannot be implemented sanely on Windows at the moment. - Removed support for inspecting running processes and enumerating threads, modules, etc.
- Overhauled the APIs and moved them to the
- Improvements to control sequence construction.
- Added support for rapid blink.
- Added support for underline colors and styles.
- Renamed bold decoration to intense.
- Various platform-specific driver improvements.
- Added upfront cancellation checks in
TerminalReaderimplementations. - Switched to
SemaphoreSlimfor locking so that cancellation causes a lock acquisition to be canceled. - Windows console code page is now changed/restored alongside console modes.
- Throw
PlatformNotSupportedExceptionwhen a signal cannot be generated.
- Added upfront cancellation checks in
- Updates to Cathode.Extensions functionality.
- Fixed
UseColorsproperty onTerminalLoggerOptionsbeingfalseby default.
- Fixed
v0.6.15
- Improvements and refactoring to I/O APIs.
- Lazily create
PosixSignalRegistrationinstances for termination-type signals.- This makes System.Terminal consistent with
System.Console.CancelKeyPressbehavior in the Visual Studio debugger.
- This makes System.Terminal consistent with
- Renamed
ReadBufferandWriteBuffermethods onSystem.IO.TerminalReaderandSystem.IO.TerminalWritertoReadPartialandWritePartial, respectively. - Removed the
ReadRawmethod from the API surface and added a newReadmethod onSystem.TerminalandSystem.VirtualTerminal. - Optimized
System.TerminalControla bit with nested types.
- Lazily create
- Various platform-specific driver improvements.
- Removed read cancellation support from the Windows driver as it was causing too many issues.
- Only perform partial writes in the Unix driver, rather than aggressively writing the entire buffer.
- Disable
ONOEOTbit on macOS. - Correctly disable
ALTWERASEbit on macOS.
- Updates to Terminal.Extensions functionality.
- Added Systemd logging and notification support.
- Added
SingleLineproperty toTerminalLoggerOptions. - Moved some of the formatting work from the writer method to the
TerminalLoggerclass. - Moved most of the message processing work out of the log processor thread.
- Renamed
DisableColorsproperty onTerminalLoggerOptionstoUseColorsand inverted its meaning. - Renamed
TerminalLoggerEntrytoTerminalLoggerMessage.
- Added a new project icon and package details page.
v0.5.39
- Improvements and refactoring to I/O APIs.
- Added asynchronous API surface.
- This currently just wraps the synchronous APIs; full asynchronous support may be a future possibility.
- Pooling of
System.Threading.Tasks.ValueTaskinstances is used where possible.
- Added cancellation token support throughout all APIs.
- This currently only performs actual cancellation for read operations, not write operations.
- Added a
Resumedevent toSystem.VirtualTerminalfor handlingSIGCONT. - Added a new
System.TerminalControlAPI for acquiring exclusive terminal control. - Refactored exception types.
- Moved
TerminalExceptionfromSystemtoSystem.IOand changed base type toSystem.IO.IOException. - Added new
System.IO.TerminalNotAttachedExceptionwhich derives fromSystem.IO.TerminalException. - Added new
System.IO.TerminalConfigurationExceptionwhich derives fromSystem.IO.TerminalException.
- Moved
- Renamed
ReaderandWriterproperties onSystem.IO.TerminalReaderandSystem.IO.TerminalWritertoTextReaderandTextWriter, respectively. - Removed superfluous I/O API surface (e.g. methods that perform formatting).
- Moved
Instanceproperty fromSystem.SystemVirtualTerminaltoSystem.Terminaland renamed it toSystem. - Changed core methods on
System.IO.TerminalReaderandSystem.IO.TerminalWriterto have Unix-like semantics.- Number of bytes written is now returned rather being an
outparameter. - An exception must only be thrown if zero bytes were processed.
- Number of bytes written is now returned rather being an
- Added asynchronous API surface.
- Improvements to control sequence construction.
System.Text.Control.ControlBuildernow uses an interpolated string handler to efficiently append interpolated strings.- Added
DECSCNMsupport. - Added
Nullmethod toSystem.Text.Control.ControlBuilder. - Added some missing C0 control constants to
System.Text.Control.ControlConstants. - Changed C0 control constants in
System.Text.Control.ControlConstantsto be typed aschar. - Reduced allocations a bit in
System.Text.Control.ControlSequences.
- Various platform-specific driver improvements.
- Suppress suspension by
SIGTTOUwhile switching to cooked mode on Unix. - Set
TOSTOPbit when switching to raw mode on Unix. - Fixed some cases where the value of
errnowas fetched too late on Unix. - Revert console modes if flushing the input buffer fails on Windows.
- Suppress suspension by
- Improvements to the process APIs.
- Added
RefreshandSendSignalmethods toSystem.Diagnostics.TerminalProcess. - Exposed various properties available on the underlying
System.Diagnostics.Process.
- Added
- Changed
System.Diagnostics.TerminalTraceListenerto take aTerminalWriterinstance. - Optimized various areas of the library to avoid bounds checks on spans and arrays.