Skip to content

Develop Icod.DCurses 1.4.0 interaction routing - #29

Merged
uniblab merged 90 commits into
mainfrom
1.4.0-interaction-routing
Sep 14, 2026
Merged

uniblab merged 90 commits into
mainfrom
1.4.0-interaction-routing

Conversation

@uniblab

@uniblab uniblab commented Sep 12, 2026

Copy link
Copy Markdown
Owner

Develops Icod.DCurses 1.4.0 interaction routing from the published v1.3.0 baseline.

Objective

Add deterministic, application-owned interaction routing over the existing semantic input, geometry, panel, and Terminal ownership foundations: bounded interaction regions, deterministic hit testing, logical focus/traversal/repair, semantic key gestures and command identities, panel-aware precedence, and curses-shaped pointer preferences/leases.

The release deliberately does not become a widget framework, hidden event loop, automatic layout owner, callback dispatcher, or raw terminal protocol layer.

Qualified progress

  • T1401 — interaction contract/public-surface candidate freeze — complete on d70b6a9892812a624c810ae115daaafd636d2192, workflow #722 / 34712277620, all seven green.
  • T1402 — bounded interaction-region registry — complete on 3da87891c88be225bbc4ac71312ecf66cdbee5ff, workflow #731 / 34713008427, all seven green.
  • T1403 — deterministic hit testing and panel precedence — complete on 137261e9417077734c0e4006cd3ea28920022f2b, workflow #736 / 34718054041, all seven green.
  • T1404 — logical focus, traversal, and repair — complete on 7ab6ab0ba20ac5e8e6107bccb13a7ce0cab5be02, workflow #740 / 34720084187, all seven green.
  • T1405 — semantic keyboard gestures — complete on bf57ed9b87a40d762b969c09c88d44a0bbd0678b, workflow #744 / 34720691390, all seven green.
  • T1406 — command bindings and structured routing — complete on 6652e211934256def436c032d0117aa24f803197, workflow #754 / 34729934304, all seven green.
  • T1407 — pointer-shape abstraction and Terminal-owned lease integration — complete on 83a636cf8b4192394cb6c25bf0b6322eb06003e4, workflow #763 / 34732179437, all seven green.
  • T1408 — resize, panel, disposal, and lifecycle coherence — complete on 1fca652d9a7a6ba32ccf01274a7e4dff1135f785, workflow #765 / 34732542836, all seven green.
  • T1409 — application interaction acceptance sample — complete on 021a040d0a76bb168e3e88b0f71c4401baf3b10c, workflow #780 / 34762612934, all seven green.
  • T1410 — performance/allocation/adversarial hardening — complete on 69072508e90b3e21c6dfa58b277610e90867f683, workflow #785 / 34763523520, all seven green.
  • T1411 — public API/package/documentation/licensing regret gate — complete on 570715e0764f9791fe197462a953df6eccf6105a, workflow #797 / 34773668892, all seven green with Icod.Terminal 1.13.0 and Icod.TermInfo 1.12.0.
  • T1412 — RC/stable-source closure — complete. Final 1.4.0-rc.1 head 7f6bcedf70b9cd5cd15bf2a2a53437e23dac3c2f passed workflow #802 / 34774226736 across all seven jobs after a test-only timeout hardening correction. Stable-source 1.4.0 then passed workflow #808 / 34774590867; the final release-facing documentation head 267f633e323f732ed041735210a86eda608a4697 passed workflow #810 / 34774819745 across all seven jobs.

The frozen 1.4 interaction API is:

62 exported types
491 canonical declared contract lines
sha256 8afe72deaa5354ee072de8ae17b04d8a1a0a8f730d5e3a737b4a47a539379147

T1405 adds the immutable CursesKeyGesture identity and terminal-independent matching semantics. T1406 adds CursesCommand, bounded local/global gesture registries, immutable CursesInteractionResult, and deterministic Text/Key/Paste/Mouse routing without application callbacks. T1407 adds the 30-value DCurses pointer-shape vocabulary, region/hit pointer preferences, and a DCurses lease wrapper which delegates reversible state ownership to Icod.Terminal without exposing Terminal pointer types publicly. T1408 proves resize/panel/lifecycle coherence. T1409 adds the public-DCurses-only interaction acceptance sample. T1410 freezes hot-path allocation/performance ceilings, maximum-capacity churn, deterministic replay, failure atomicity, and the no-callback/no-hidden-I/O boundary. T1411 completes the stable-API/package/docs/licensing regret review and refreshed dependency qualification without an API correction. T1412 promotes the accepted implementation/API through RC and stable-source identity and finishes exact-head release qualification.

During RC qualification, Windows ARM64 exposed a nondeterministic acceptance-test timeout: one rich-input test reused a single five-second cancellation token across seven sequential event reads. The unchanged RC job passed on rerun, confirming no production regression; the test was then hardened to use one bounded timeout per read. No production implementation or public API changed as part of that correction, and the hardened final RC and stable-source matrices are fully green.

Release evidence

  • Icod.DCurses-Development-Roadmap.md
  • Icod.DCurses-1.1.0-to-1.4.0-Development-Roadmap.md
  • Icod.DCurses-1.4.0-Development-Roadmap.md
  • docs/Public-API-Fingerprint-1.4.json
  • docs/T1401-Interaction-Contract-and-Public-API-Candidate.md
  • docs/T1405-Semantic-Keyboard-Gestures.md
  • docs/T1406-Command-Bindings-and-Structured-Routing.md
  • docs/T1407-Pointer-Shape-Integration.md
  • docs/T1408-Resize-Panel-Disposal-and-Lifecycle-Coherence.md
  • docs/T1409-Interaction-Acceptance-Sample.md
  • docs/T1410-Interaction-Performance-Allocation-and-Adversarial-Hardening.md
  • docs/T1411-Public-API-Package-Documentation-and-Regret-Gate.md
  • docs/T1412-RC-and-Stable-1.4.0-Closure.md

Development sequence

  • T1401 — interaction contract/public-surface candidate freeze — complete
  • T1402 — bounded interaction-region registry — complete
  • T1403 — deterministic hit testing and panel precedence — complete
  • T1404 — logical focus/traversal/repair — complete
  • T1405 — semantic keyboard gestures — complete
  • T1406 — command bindings and structured routing — complete
  • T1407 — pointer-shape integration — complete
  • T1408 — resize/panel/lifecycle coherence — complete
  • T1409 — application acceptance sample — complete
  • T1410 — performance/allocation/adversarial hardening — complete
  • T1411 — API/package/docs/licensing regret gate — complete
  • T1412 — RC/stable-source closure — complete

Baseline and final source identity

v1.3.0 resolves to c10ca043a666b85225f2d3b8955a1ac2075b0d31.

Published 1.3 contract:

51 exported types
406 canonical declared contract lines
sha256 a655bd85e3c88f5bf38ad0d43a148e3bd06a9e943bbf3e3aa2e21575ffb07424

Final 1.4 source identity:

Version         1.4.0
PackageVersion  1.4.0
AssemblyVersion 1.0.0.0
Icod.Terminal   1.13.0
Icod.TermInfo   1.12.0

PR #29 final qualified head is 267f633e323f732ed041735210a86eda608a4697. It is release-ready source pending explicit merge approval. Merge, main Release qualification, tag v1.4.0, GitHub Release creation, and NuGet publication remain separate explicit actions.

@uniblab
uniblab merged commit 48d591a into main Sep 14, 2026
7 checks passed
@uniblab
uniblab deleted the 1.4.0-interaction-routing branch September 14, 2026 01:21
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