Icod.Terminal
0.1.0
See the version list below for details.
dotnet add package Icod.Terminal --version 0.1.0
NuGet\Install-Package Icod.Terminal -Version 0.1.0
<PackageReference Include="Icod.Terminal" Version="0.1.0" />
<PackageVersion Include="Icod.Terminal" Version="0.1.0" />
<PackageReference Include="Icod.Terminal" />
paket add Icod.Terminal --version 0.1.0
#r "nuget: Icod.Terminal, 0.1.0"
#:package Icod.Terminal@0.1.0
#addin nuget:?package=Icod.Terminal&version=0.1.0
#tool nuget:?package=Icod.Terminal&version=0.1.0
Icod.Terminal
Icod.Terminal is the managed, cross-platform live-terminal layer for the Icod library family. It is intended to sit between Icod.TermInfo and higher-level consumers such as Icod.DCurses, terminal-aware command-line tools, monitors, editors, pagers, and REPLs.
Status
Version 0.1.0 closes the initial live-terminal foundation milestone. T01-T11 and T12A-T12C are complete; T12D is the final tag-controlled release gate. The v0.1.0 tag is the publication trigger after the release commit passes the normal main validation matrix.
The first functional milestone has been met: watch, slabtop, and top operate through Icod.DCurses over the shared Icod.Terminal / Icod.TermInfo stack. The package contract has also passed structural, symbol/Source Link, dependency-closure, and clean net8.0 / net10.0 consumer validation on Windows, Linux, and macOS.
Architecture
Icod.TermInfo
^
|
Icod.Terminal
^
|
Icod.DCurses
^
|
watch / slabtop / top
Icod.TermInfo remains the immutable terminal-capability authority. Icod.Terminal owns live endpoint observation, terminal modes, input, dimensions, lifecycle, terminal identity, output setup, and reversible presentation-state mechanisms. Icod.DCurses owns cells, windows, virtual-screen state, and refresh/diff policy. A future Icod.Pty package remains an adjacent concern rather than a prerequisite.
Icod.Timing supplies the monotonic elapsed-time and cancellable-delay primitives used by Terminal's relative event timeouts and Escape-sequence ambiguity windows.
Installation
Install the package from NuGet.org:
dotnet add package Icod.Terminal --version 0.1.0
Quick start
The ordinary application entry point is TerminalSession:
using Icod.Terminal;
await using TerminalSession session = await TerminalSession.OpenAsync(
new TerminalSessionOptions {
InputMode = TerminalInputMode.CBreak,
EchoInput = false
}
);
TerminalEvent terminalEvent = await session.ReadEventAsync(
TimeSpan.FromSeconds( 1 )
);
The session borrows process-standard endpoints, owns only the terminal state transitions it applies, and restores its captured baseline during DisposeAsync().
Applications which genuinely need complete native mode observation, serialization, or custom endpoint/control backends may use the lower-level public contracts; ordinary interactive applications should prefer TerminalSession.
0.1 consumer contract
The T12B audit found no breaking public-API correction required before 0.1.0. The reviewed behavior and API surface are recorded in:
Important 0.1.x rules include:
- input is always an interactive terminal; output may be redirected only when explicitly permitted;
- canonical/cbreak/raw are semantic requests mapped separately to POSIX and Windows host models;
- unknown POSIX terminal names fall back safely rather than silently becoming xterm;
- input decoding is incremental and the Escape-prefix ambiguity window is bounded;
Available,Unavailable,Unsupported, andFailedremain distinct low-level outcomes;- session cleanup restores captured state and does not close borrowed caller/process endpoints;
- PTY/ConPTY creation and child-process hosting belong to a future adjacent
Icod.Ptypackage.
The 0.1.x runtime dependencies are Icod.TermInfo 1.0.0 and Icod.Timing 1.0.0. Icod.DCurses and Icod.ProcPs are consumers, not runtime dependencies of this package.
Target frameworks
The library targets:
net8.0;net10.0.
The codebase uses C# 13 and supports the terminal-control implementations provided for Windows, Linux, and macOS.
Build
On Windows:
build.cmd
On POSIX hosts:
sh build.sh
Both scripts support clean, restore, build, test, and pack. Running either script without an argument performs the complete sequence.
Development roadmap
See Icod.Terminal-Development-Roadmap.md for the architectural boundaries, 0.1.0 acceptance gates, and the path toward the stable 1.0.0 contract. The completed T02 extraction matrix is recorded in docs/T02-Extraction-Inventory-and-Contract-Classification.md, the T03 low-level contract is documented in docs/T03-Endpoint-Observation-and-Native-Mode-Parity.md, the T04 semantic mode contract is documented in docs/T04-Semantic-Input-Mode-Policy.md, the T05 session ownership contract is documented in docs/T05-TerminalSession-Lifecycle-and-Ownership.md, the T06 identity/output contract is documented in docs/T06-Terminal-Identity-TermInfo-and-Output-Setup.md, the T07 lifecycle contract is documented in docs/T07-Live-Dimensions-and-Lifecycle-Events.md, and the T08 input contract is documented in docs/T08-Input-Byte-Stream-and-Key-Event-Decoder.md.
The T09 presentation-lease contract is documented in docs/T09-Reversible-Terminal-Presentation-Leases.md. The T10 lifecycle-participant integration is recorded in docs/T10-DCurses-Lifecycle-Participant-Integration.md, the completed T11 ProcPs acceptance is recorded in docs/T11-ProcPs-Acceptance.md, the T12B public API/consumer review is recorded in docs/T12B-Public-API-and-Consumer-Contract.md, the completed T12C package gate is recorded in docs/T12C-Package-and-Fresh-Consumer-Validation.md, and final release closure is recorded in docs/T12D-0.1.0-Release-Closure.md.
License
Icod.Terminal is licensed under the GNU Lesser General Public License v3.0 or later. See LICENSE.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Icod.TermInfo (>= 1.0.0)
- Icod.Timing (>= 1.0.0)
-
net8.0
- Icod.TermInfo (>= 1.0.0)
- Icod.Timing (>= 1.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Icod.Terminal:
| Package | Downloads |
|---|---|
|
Icod.DCurses
Managed, cross-platform curses-like terminal UI library for .NET, built on Icod.TermInfo and Icod.Terminal. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.0 | 2,712 | 8/29/2026 |
| 0.3.0-alpha.8 | 62 | 8/28/2026 |
| 0.2.0 | 62 | 8/28/2026 |
| 0.2.0-alpha.6 | 82 | 8/27/2026 |
| 0.1.0 | 63 | 8/27/2026 |
| 0.1.0-alpha.13 | 53 | 8/27/2026 |
| 0.1.0-alpha.11 | 1,751 | 8/25/2026 |
| 0.1.0-alpha.10 | 69 | 8/25/2026 |
| 0.1.0-alpha.9 | 56 | 8/25/2026 |
0.1.0 establishes the cross-platform live-terminal foundation for .NET: session ownership and restoration, endpoint and mode control, input decoding, dimensions and lifecycle handling, Icod.TermInfo integration, and reversible presentation-state leases on Windows, Linux, and macOS.