Skip to content

Icod.Terminal 1.19.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 05:27
· 33 commits to main since this release
b3f7adf

Icod.Terminal 1.19.0

Screen-output planning and downstream hardening

Version 1.19 implements the selected downstream hardening, semantic planner expansion, transaction qualification, and documentation/sample workstreams. The stable compatibility floor remains 1.0.0.

PlanCursorMove(...) now considers home followed by relative down/right movement and, on a known current row, carriage return followed by relative right movement. Complete expanded/padded costs determine selection; existing candidates win ties. Missing, malformed, oversized, or unevaluable optional routes do not invalidate independent usable candidates. Planning remains side-effect free, bounded, opaque, and session-owned.

Executable downstream qualification

The formerly compile-only renderer path now runs in a synthetic package harness. It verifies exact mixed output, rejects an unavailable unknown-rendition baseline before emission, and exercises stale-transaction rejection and fresh recovery. The controlled renderer remains directly dependent only on the candidate Terminal package; synthetic TermInfo setup stays in a separate test host and uses Terminal's transitive dependency.

Published DCurses 2.2.0 is exercised through initial and unchanged refreshes, changed text/rendition, resize/repaint, committed output failure, recovery, and close. The separate DCurses 1.6.0 compatibility witness remains required.

Transactions, documentation, and sample

Existing transaction bounds, single-use commitment, output epochs, manager ownership, cancellation, serialization, cleanup, and ordered failures remain unchanged. Additional tests distinguish dimension/resize observation without output from presentation restoration during resume, which invalidates previously created work.

The screen-output guide explains unavailable versus zero-byte plans, known versus unknown physical state, safe frame construction, and caller-owned recovery. The runnable sample owns an alternate-screen scope, demonstrates a safe frame or deliberate stale-transaction rejection followed by a fresh frame, and waits for q/Escape before cleanup. Its actual routines also run headlessly against the candidate package, covering unavailable dimensions/plans, input, cancellation, and transport failure. Failure reporting and selection of a subsequent repaint remain the host application's responsibility; the sample does not automatically retry failed output. The raster-placeholder sample now combines semantic cursor plans and opaque cells in screen transactions without direct TermInfo expansion.

Cursor-visibility composition remains deferred because presentation leases already own visibility restoration. No retained-screen/layout engine, keyboard/query redesign, new raster protocol family, or public extensibility mechanism is introduced.

Compatibility and qualification

Target frameworks remain net8.0, net9.0, and net10.0; the production TermInfo dependency advances to Icod.TermInfo 1.16.0 while Icod.Timing 1.0.0 remains unchanged. Optional integration tests and samples align with Icod.TermInfo.Inspection 1.16.0; Inspection and Source remain outside the production graph. No public library member or enum value changes. All three framework snapshots retain fingerprint:

48975f2c42f6c544e9c574a9b3d79f7e2b7b3ecb10ab1a5a0b7067749e38e65d

The stable candidate passed all nine jobs in workflow 36290312908. Windows, Linux, and macOS each passed 2,402 unit tests and 15 integration tests per framework. Candidate-package, public-API, XML, dependency, downstream, and cross-platform evidence is recorded in the 1.19 roadmap and PR #64, with exact source and artifact hashes. Merge, tagging, release creation, and publication remain maintainer actions.

See Compatibility-and-Versioning.md, Architecture.md, and Public-API-Baseline-1.19.md.