Skip to content

Icod.Terminal 1.11.0 — persistent raster resources and placements - #52

Merged
uniblab merged 84 commits into
mainfrom
feature/1.11.0-persistent-raster
Sep 12, 2026
Merged

Icod.Terminal 1.11.0 — persistent raster resources and placements#52
uniblab merged 84 commits into
mainfrom
feature/1.11.0-persistent-raster

Conversation

@uniblab

@uniblab uniblab commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Summary

Completes Icod.Terminal 1.11.0persistent raster resources and placements.

Version 1.11 adds a backend-neutral, session-owned terminal-resident raster ownership domain above the existing raw-raster and semantic capability-planning foundations.

Public 1.11 surface

  • TerminalCapability.PersistentRasterGraphics = 9, preserving existing values 0..8;
  • opaque TerminalRasterResource and TerminalRasterPlacement handles;
  • TerminalRasterPlacementOptions with independently optional Columns / Rows in 1..16384;
  • TerminalSession.CreateRasterResourceAsync(...);
  • TerminalRasterResource.CreatePlacementAsync(...);
  • TerminalRasterPlacement.UpdateAsync(...);
  • deterministic IAsyncDisposable cleanup for placements/resources.

The common API does not expose Kitty image ids, image numbers, placement ids, raw APC command dictionaries, or backend selection.

Ownership and lifecycle

  • persistent resource upload is acknowledged before a public handle is returned;
  • placement create/update acknowledgements are correlated through the existing authoritative query/input path;
  • a well-formed correlated ENOENT invalidates terminal-resident certainty and returns controlled Unavailable semantics;
  • persistent identities are session-generation scoped;
  • explicit invalidation and lifecycle generation changes stale existing handles without automatic replay/re-upload;
  • no arbitrary source-raster cache is retained after successful creation;
  • placement/resource bookkeeping is bounded to 4096 placements and 256 resources per session;
  • current cleanup deletes placements before resource data; stale cleanup is local-only;
  • direct Kitty transfer remains the reviewed persistent transport; no file/temp-file/shared-memory transport is introduced.

Ordinary RasterGraphics remains distinct from PersistentRasterGraphics, so verified Sixel can continue to satisfy ephemeral raster display without implying persistent ownership.

Deliberate exclusions

1.11 does not add Sixel persistence emulation, public protocol ids, source rectangles, z-order, Unicode placeholders, relative/pixel placement, animation, scene-graph ownership, image decoding/transcoding, PTY/ConPTY hosting, or DCurses cell/window/layout/damage policy.

Compatibility and qualification

  • stable package version: 1.11.0;
  • target frameworks: net8.0, net9.0, net10.0;
  • stable compatibility floor: 1.0.0;
  • final public API fingerprint:
    9336a1f6def1c4b02e86db813bae27f45b95af33f47a2cf10dccd4d1d44324f2.

Final PR head:

c16aaac5de0c5847798cc1659fcefa71e4f47a5f

Final Staging qualification:

workflow #1612 / 34699220283 — success

The unchanged final head passed:

  • Runtime Windows;
  • Runtime Linux;
  • Runtime macOS;
  • package candidate / public API freeze;
  • Package Foundation;
  • Package Presentation;
  • Package Semantic and hardening;
  • Package Stable 1.x release line;
  • validated package artifact.

Primary release authorities:

  • Icod.Terminal-1.11.0-Development-Roadmap.md
  • docs/C119-1.11.0-Release-Closure.md
  • docs/Persistent-Raster-Ownership.md
  • docs/Public-API-Baseline-1.11.md
  • docs/releases/1.11.0.md

Merge, main Release validation, v1.11.0 tagging, GitHub Release creation, and NuGet publication remain explicit maintainer actions.

@uniblab
uniblab marked this pull request as ready for review September 12, 2026 14:31
@uniblab
uniblab merged commit d7d9275 into main Sep 12, 2026
9 checks passed
@uniblab
uniblab deleted the feature/1.11.0-persistent-raster branch September 12, 2026 14:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant