Skip to content

Implement 1.29.0 bounded clipboard transfers - #87

Merged
uniblab merged 23 commits into
mainfrom
docs/1.29.0-clipboard-roadmap
Oct 11, 2026
Merged

uniblab merged 23 commits into
mainfrom
docs/1.29.0-clipboard-roadmap

Conversation

@uniblab

@uniblab uniblab commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Icod.Dedit needs clipboard transfers beyond 64 KiB. This implements the approved design as 1.29.0-alpha.1, preserving 64 KiB defaults while allowing applications to opt into independent read/write budgets up to 16 MiB.

Changes

  • Add immutable TerminalClipboardOptions to session options, with validated decoded-byte limits and checked frame geometry.
  • Encode writes directly into one complete ordered frame; enforce strict UTF-8 byte limits before output.
  • Incrementally accumulate larger replies only after exact OSC 52 selection correlation, using the existing input reader and query ownership.
  • Bound malformed/oversized reply recovery, preserve trailing input and late-query isolation, and fail unresolved input closed.
  • Add explicit CLI read/write/generated fixtures, independent capacity switches, and a consented 131,072-byte compatibility scenario. Help/startup never touches the clipboard; reports omit contents.
  • Update public API/XML and fresh-package consumers, roadmap, usage guide, privacy/versioning docs, changelog and alpha notes. Dependencies remain unchanged.

Verification

Linux x64, SDK 10.0.100, Release:

  • Solution and compatibility sample build: zero warnings/errors.
  • Full unit suite: 2,925 passed per target on .NET 8, 9 and 10, followed by an additional concurrent-session budget test passing on all targets (2,926 unique cases per target).
  • TermInfo integration: 15 passed per target.
  • Package build, exact headers/licenses, identical cross-TFM API, fresh-package clipboard smoke and compatibility sample smoke passed.
  • Existing published DCurses 1.6.0/2.2.0 and Terminal-owned screen acceptance passed on all targets.
  • API diff against regenerated 1.28 baseline is additive only.
  • Allocation tests cover 64 KiB / 1 MiB / 16 MiB and incremental scanning. The 64 KiB encoder allocates 87,424 bytes versus 262,216 on 1.28.
  • Inline author review covered bounds, ownership, malformed recovery, cancellation, disposal, memory growth and public-only consumers.

API SHA-256: 3239c1682724f7a4df4b55cf1c29117d23d3bfd88e23c3c8c715a5d48cced517.

Contract and remaining release gates

These are local resource budgets; OSC 52 has no capacity handshake or write acknowledgement. Ordinary input/unrelated protocol ceilings remain unchanged. Customized ordinary buffers still need room for the selection prefix; wrong-selection frames retain legacy ordinary handling.

All live clipboard environments remain NotRun. Whole-session peak-memory profiling and final GitHub matrix results remain explicit qualification gates; component measurements and analytical storage bounds are documented separately. Maintainer owns stable promotion, merge, tags and publication.

Published implementation: c96c47a85c3a44355c2824c45dd74b5a6f4eca20. Its tree exactly matches the locally qualified tree. GitHub validation run 38101867887 was queued at handoff; no CI success is claimed yet.

@uniblab uniblab self-assigned this Oct 11, 2026
@uniblab uniblab changed the title Plan 1.29.0 bounded clipboard transfers Implement 1.29.0 bounded clipboard transfers Oct 11, 2026
@uniblab
uniblab merged commit 0dc9b18 into main Oct 11, 2026
10 checks passed
@uniblab
uniblab deleted the docs/1.29.0-clipboard-roadmap branch October 11, 2026 03:43
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