Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions Icod.TermInfo-Post-1.0-Development-Roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
**Language:** C# 13
**Target frameworks:** `net8.0`; `net9.0`; `net10.0`
**Frozen runtime contract:** `1.0.0`
**Current release version:** `1.1.1`
**Current development version:** `1.2.0-Alpha-7`
**Next development line:** `1.2.0`
**Status:** C07 implementation candidate — build/test/package validation required
**Current tranche:** C07 — Round-trip and differential validation
**Current release version:** `1.2.0`
**Current development version:** `1.2.0`
**Next development line:** `1.3.0`
**Status:** 1.2.0 release closure
**Current tranche:** Final 1.2.0 release closure
**Primary objective:** Extend the terminfo ecosystem beyond runtime capability acquisition without destabilizing the frozen 1.0 runtime contract.

---
Expand Down Expand Up @@ -781,8 +781,13 @@ Release closure SHALL:
- pack and structurally validate all three NuGet and symbol packages;
- execute fresh runtime, Source, and Compiler package consumers on all three targets;
- verify the one-way dependency graph;
- publish the exact validated artifacts to NuGet.org and GitHub Packages;
- tag the exact validated/published commit as `v1.2.0`.
- pass the non-publishing Release validation workflow on the exact `main` commit;
- create and push immutable tag `v1.2.0` for that validated commit;
- require the tag workflow to repeat the complete Release gate on the tagged
commit before publishing the validated artifacts to NuGet.org and GitHub
Packages and creating the GitHub Release.

**Release audit:** [`docs/1.2.0-RELEASE-AUDIT.md`](docs/1.2.0-RELEASE-AUDIT.md)

---

Expand Down
6 changes: 3 additions & 3 deletions Icod.TermInfo.Compiler/Icod.TermInfo.Compiler.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@
<AssemblyName>Icod.TermInfo.Compiler</AssemblyName>
<RootNamespace>Icod.TermInfo.Compiler</RootNamespace>
<Configurations>Debug;Release;Staging</Configurations>
<Version>1.2.0-Alpha-7</Version>
<Version>1.2.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</PropertyGroup>

<PropertyGroup>
<PackageVersion>1.2.0-Alpha-7</PackageVersion>
<PackageVersion>1.2.0</PackageVersion>
<PackageId>Icod.TermInfo.Compiler</PackageId>
<Title>Icod.TermInfo.Compiler</Title>
<Authors>Timothy J. Bruce</Authors>
<Description>Managed deterministic terminfo compiler for Icod.TermInfo. The 1.2 line compiles .ti source or immutable TerminalDescription values and can publish explicit conventional terminfo directory layouts without native ncurses dependencies.</Description>
<PackageReleaseNotes>1.2.0-Alpha-7 implements C07: deterministic round-trip and differential validation against the checked-in T29 ncurses/tic corpus, including source compilation, binary parsing, and database-provider consumption.</PackageReleaseNotes>
<PackageReleaseNotes>1.2.0 completes C01-C07: deterministic legacy/wide and extended compiled-entry writing, Source compilation, conventional database-layout publication, and round-trip/differential validation against the checked-in ncurses/tic corpus.</PackageReleaseNotes>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>icon.png</PackageIcon>
<PackageProjectUrl>https://github.com/uniblab/Icod.TermInfo</PackageProjectUrl>
Expand Down
4 changes: 2 additions & 2 deletions Icod.TermInfo.Compiler/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ ncurses/`tic` differential validation.

## Install

For the C07 development package:
For the 1.2.0 release:

```text
dotnet add package Icod.TermInfo.Compiler --version 1.2.0-Alpha-7
dotnet add package Icod.TermInfo.Compiler --version 1.2.0
```

The package targets `net8.0`, `net9.0`, and `net10.0` and depends on the matching
Expand Down
6 changes: 3 additions & 3 deletions Icod.TermInfo.Source/Icod.TermInfo.Source.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@
<AssemblyName>Icod.TermInfo.Source</AssemblyName>
<RootNamespace>Icod.TermInfo.Source</RootNamespace>
<Configurations>Debug;Release;Staging</Configurations>
<Version>1.2.0-Alpha-7</Version>
<Version>1.2.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</PropertyGroup>

<PropertyGroup>
<PackageVersion>1.2.0-Alpha-7</PackageVersion>
<PackageVersion>1.2.0</PackageVersion>
<PackageId>Icod.TermInfo.Source</PackageId>
<Title>Icod.TermInfo.Source</Title>
<Authors>Timothy J. Bruce</Authors>
<Description>Managed terminfo source-language support for Icod.TermInfo. The 1.1 line parses and resolves .ti source into the stable TerminalDescription model without enlarging the runtime Icod.TermInfo package.</Description>
<PackageReleaseNotes>1.2.0-Alpha-7 coordinates Icod.TermInfo.Source with C07 while preserving the frozen 1.1 source-language public API, semantics, and 1.0.0.0 assembly identity.</PackageReleaseNotes>
<PackageReleaseNotes>1.2.0 coordinates Icod.TermInfo.Source with the completed 1.2 compiler release while preserving the frozen 1.1 source-language public API, semantics, and 1.0.0.0 assembly identity.</PackageReleaseNotes>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>icon.png</PackageIcon>
<PackageProjectUrl>https://github.com/uniblab/Icod.TermInfo</PackageProjectUrl>
Expand Down
6 changes: 3 additions & 3 deletions Icod.TermInfo.Source/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ values continue to reference `Icod.TermInfo` alone.

## Install

For the 1.1.1 release:
For the 1.2.0 release:

```text
dotnet add package Icod.TermInfo.Source --version 1.1.1
dotnet add package Icod.TermInfo.Source --version 1.2.0
```

The package depends on the matching `Icod.TermInfo` version and targets
`net8.0`, `net9.0`, and `net10.0`.

Version 1.1.1 is a maintenance release and does not change the 1.1 source-language public API or semantics.
Version 1.2.0 coordinates Source with the 1.2 compiler release and does not change the frozen 1.1 source-language public API or semantics.

## What the 1.1 line provides

Expand Down
6 changes: 3 additions & 3 deletions Icod.TermInfo.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@
<AssemblyName>Icod.TermInfo</AssemblyName>
<RootNamespace>Icod.TermInfo</RootNamespace>
<Configurations>Debug;Release;Staging</Configurations>
<Version>1.2.0-Alpha-7</Version>
<Version>1.2.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
</PropertyGroup>
<PropertyGroup>
<PackageVersion>1.2.0-Alpha-7</PackageVersion>
<PackageVersion>1.2.0</PackageVersion>
<PackageId>Icod.TermInfo</PackageId>
<Title>Icod.TermInfo</Title>
<Authors>Timothy J. Bruce</Authors>
<Description>Managed, dependency-free .NET terminfo library for terminal capability metadata, compiled terminfo parsing and database discovery, ANSI/DEC/xterm and Windows profiles, parameter expansion, color semantics, and padding-aware output.</Description>
<PackageReleaseNotes>1.2.0-Alpha-7 advances the coordinated 1.2 compiler line to C07 while preserving the frozen Icod.TermInfo runtime public contract, dependency-free runtime package, and 1.0.0.0 assembly identity.</PackageReleaseNotes>
<PackageReleaseNotes>1.2.0 coordinates the completed 1.2 Source and Compiler package family while preserving the frozen Icod.TermInfo runtime public contract, dependency-free runtime package, and 1.0.0.0 assembly identity.</PackageReleaseNotes>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>icon.png</PackageIcon>
<PackageProjectUrl>https://github.com/uniblab/Icod.TermInfo</PackageProjectUrl>
Expand Down
53 changes: 43 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,43 @@

`Icod.TermInfo` is a managed, dependency-free .NET implementation of the low-level terminal-capability model traditionally supplied by `libtinfo`.

Version 1.1.1 is the current maintenance release of the 1.1 line. It preserves the frozen 1.0 runtime contract and the 1.1 source-language feature set provided by the optional `Icod.TermInfo.Source` package.
Version 1.2.0 is the current coordinated release. It preserves the frozen 1.0
runtime contract and frozen 1.1 Source contract while adding the optional
`Icod.TermInfo.Compiler` package.

The published 1.1.1 packages target `net8.0` and `net10.0`. Beginning with the 1.2
development line, the supported consumer matrix expands to `net8.0`, `net9.0`,
and `net10.0`; the packages use C# 13, contain no native ncurses/terminfo
payload, and are intended to run on Windows, Linux, and macOS.
The published 1.2.0 package family targets `net8.0`, `net9.0`, and `net10.0`;
the packages use C# 13, contain no native ncurses/terminfo payload, and are
intended to run on Windows, Linux, and macOS.

## Install

For the 1.1.1 release, runtime-only consumers use:
For the 1.2.0 release, runtime-only consumers use:

```text
dotnet add package Icod.TermInfo --version 1.1.1
dotnet add package Icod.TermInfo --version 1.2.0
```

Applications which need terminfo source-language support use:

```text
dotnet add package Icod.TermInfo.Source --version 1.1.1
dotnet add package Icod.TermInfo.Source --version 1.2.0
```

`Icod.TermInfo.Source` depends on the matching `Icod.TermInfo` package. Applications which only load compiled terminfo or consume `TerminalDescription` values continue to reference `Icod.TermInfo` alone.
Applications which compile terminfo source or write conventional compiled
terminfo databases use:

The same validated package artifacts are intended for NuGet.org and GitHub Packages. Repository development can reference the corresponding project directly.
```text
dotnet add package Icod.TermInfo.Compiler --version 1.2.0
```

`Icod.TermInfo.Source` depends on the matching `Icod.TermInfo` package.
`Icod.TermInfo.Compiler` depends on the matching Runtime and Source packages.
Applications which only load compiled terminfo or consume `TerminalDescription`
values continue to reference `Icod.TermInfo` alone.

The same validated package artifacts are published to NuGet.org and GitHub
Packages. Release closure and tag-publication requirements are recorded in
`docs/1.2.0-RELEASE-AUDIT.md`.

## 1.x stability contract

Expand Down Expand Up @@ -80,6 +93,26 @@ The optional `Icod.TermInfo.Source` package adds the source-language path withou

The source package is optional. Compiled-database users and higher-level terminal consumers do not acquire it transitively through `Icod.TermInfo`.

## What 1.2 adds

The optional `Icod.TermInfo.Compiler` package completes the managed inverse of
the existing compiled-term acquisition path:

- deterministic legacy `0432` and wide `01036` compiled-entry writing;
- standard and ncurses extended-capability emission;
- automatic or explicit format selection with strict representation validation;
- direct compilation from resolved `TerminalDescription` values;
- `.ti` source compilation through the existing Source parser and inheritance
resolver, preserving Source diagnostics;
- controlled publication into explicit conventional terminfo directory layouts;
- safe path derivation, overwrite policy, and failure-resistant database writes;
- semantic source → resolve → write → parse round-trip validation;
- byte-for-byte determinism checks and pinned ncurses/`tic` differential corpus
coverage.

Compiler remains opt-in. The Runtime package remains dependency-free, Source
depends only on Runtime, and Compiler depends on Runtime and Source.

## Getting started

Terminal resolution remains explicit and conservative. A normal application can
Expand Down
Loading
Loading