Repository navigation
Releases: cklukas/ckVision
Release list
ckVision 1.1.0
ckVision 1.1.0 is a minor release. It adds one public type and fixes how a session ends when its terminal goes away. Code that already catches std::system_error needs no changes.
Added
ckv::term::TerminalLost, astd::system_error, reports that the terminal a session runs on is gone.PosixTerminalandWindowsTerminalthrow it when output can no longer be written or console input can no longer be read.
Fixed
- A terminal that goes away no longer ends the process with
SIGABRT.Application::step()andrun_until()treated the backend's session-ending exception as an application-callback failure. They aborted with "application callback threw", and macOS showed a crash report. Every callback boundary now letsTerminalLostthrough to the caller, even when a callback was painting, ringing the bell or setting the title as the terminal went away. Exceptions that application code throws itself still end the process as before. PosixTerminalnow notices when its input hangs up (end of file or a read error in raw mode). It delivers whatever the input still held, a recovered paste included, and then throwsTerminalLost. Before, a session that drew nothing waited forever on input that could no longer arrive.
Upgrading
Catch ckv::term::TerminalLost around the loop that drives Application. Let the Application and the terminal unwind, which restores the terminal, and report what() afterwards.
Package
The attached ckvision-client-1.1.0-143679f7.tar.gz contains the installable macOS ARM64 SDK, runnable examples, source documentation and 225 generated figures. It was built from public source commit 143679f704605b18527f6a7ab8cacb5603ecbbae. Archive SHA-256: 6a6b79bd3c9e03fc94fd54444a51cc737a8a9ee4fee741433a25495711cd2813.
Verification
- The internal source had a clean macOS ARM64 Release build with zero warnings and passed 233/233 tests.
- The filtered public snapshot independently passed a warning-free Release build, 227/227 non-PTY tests, 4/4 PTY tests and a strict documentation build.
- GitHub CI on the exact commit passed all seven jobs: Linux, macOS and Windows Release, the address, undefined-behaviour and thread sanitizers, and fuzz. One of the two runs needed a rerun of its Windows job, because a timing-bound ConPTY test timed out the first time.
- The package was built warning-free from a clean export of the public commit. Its 225 figures match the public source byte for byte, and its installed CMake package declares 1.1.0.
The acceptance items disclosed for 1.0.0 remain open: the waived five-app walkthrough, the idle-host p99 and theme-switch baselines, and formal milestone acceptance. Full history is in CHANGES.md.
ckVision 1.0.0
ckVision 1.0.0 is the owner-directed first major release of the framework. It promotes the verified 0.1.19 implementation to a public C++ and CMake package compatibility contract. This version promotion changes version metadata, version-bearing visual evidence, and documentation; it does not claim new runtime features beyond 0.1.19. Public API additions use minor versions, compatible fixes use patch versions, and incompatible public changes require a new major version.
The attached ckvision-client-1.0.0-f3bea2ee.tar.gz contains the installable macOS ARM64 SDK, runnable examples, source documentation, and 225 generated figures. It was built from the public source commit f3bea2ee050592df24426f3bab25d427fa8ab30a. Archive SHA-256: 423bfd06a4a5663fd0208c5379e40a9376de84bc6fc1f42845315f823aa1136f.
Verification: a clean macOS ARM64 Release build of the internal source passed 233/233 tests with zero warnings. The filtered public snapshot independently passed a clean warning-free Release build, 227/227 non-PTY tests, 4/4 PTY tests, and a strict documentation build. All seven jobs in the exact-commit GitHub CI run passed: Linux, macOS and Windows Release, address/undefined/thread sanitizers, and fuzz. The client archive's installed binaries match its clean package build; all 225 figures match the public source.
Known acceptance items: the owner waived the interactive five-app walkthrough for the 0.1.19 release and directed that the idle-Mac p99 and theme-switch baseline be skipped. This 1.0.0 version promotion carries those disclosed exceptions; neither is reported as a passing check. The performance baseline and formal roadmap milestone acceptance remain open. Version 1.0.0 is a compatibility commitment, not a claim that the software has no defects.
ckVision 0.1.19
ckVision 0.1.19 delivers the Progress Lab task display variants and the Mac client SDK bundle.
The attached ckvision-client-0.1.19-6b865375.tar.gz contains the installable macOS ARM64 CMake package, example applications, source documentation, and 225 generated figures. It was built from the public source snapshot 6b865375 and verified independently of the internal development tree. Archive SHA-256: 8695a3d208fd3d09716966a13acc258caca3e7cafea4d4465bbb4007711e13f8.
Verification: clean warning-free Release builds and full CTest suites on macOS ARM64 (233/233), Linux ARM64 (233/233), and Windows ARM64 (227/227); Linux ASan/UBSan with all 11 fuzz corpora (244/244); Linux TSan (232/232); benchmark smoke; modern Windows ConPTY (34/34). The filtered public snapshot separately passed a clean Release build, 227 non-PTY and four PTY tests, and a strict documentation build. All seven GitHub CI jobs passed on the public commit.
The owner approved this release and explicitly waived the interactive five-app walkthrough. The owner also directed that the idle-Mac p99 and theme-switch baseline be skipped for this release. Those measurements remain open in the roadmap; this release does not claim that they passed.
ckVision 0.1.18
ckVision 0.1.18 adds generic, read-only Windows executable-image inspection.
inspect_windows_process_image() validates bounded PE/COFF headers and checks
the host's supported user-mode architectures without executing the candidate.
It distinguishes invalid paths, unavailable files, malformed images and
unsupported architectures. This handles the observed x64-on-ARM64 case where
GetBinaryTypeW rejects a system executable that Windows can actually launch.
Compatibility is a preflight observation, not a guarantee of successful launch,
dependency resolution, trust or file identity at a later time.
Installed-package consumer tests now preserve the selected generator, platform,
toolset and MSVC runtime instead of accidentally changing target architecture.
The optional ConPTY deployment test harness retries only transient native
access/sharing cleanup refusals, within a fixed deadline; permanent and
unrelated errors still fail. Production process-lifetime policies are unchanged.
Verification covers strict macOS and Linux builds, native Windows ARM64 and x64
execution on ARM64, ASan/UBSan with fuzz corpora, TSan, benchmarks, documentation
and the complete seven-job GitHub CI run for this exact published snapshot.
The optional selected ConPTY runtime passed all 34 native qualification cases
on both tested architectures. This library release does not claim completion
of any application's Windows port.
ckVision 0.1.17
ckVision 0.1.17 adds optional, explicitly pinned app-local ConPTY deployment
to its source and installed CMake package.
ckvision_deploy_conpty takes a build-owned executable target, an existing
official archive, its approved SHA256, the application architecture, and a
contained install destination. It does not download anything, choose a default
runtime, or know about an application's server, sessions or installer policy.
- Validate the archive pin, package identity/license/version, and PE/COFF
architecture and executable/DLL kind before deployment. - Match the DLL to the application ABI and include every required console
host, including ARM64 for an x64 application under Windows-on-ARM emulation. - Refresh deployment on ordinary builds as well as link completion, recheck
changed archives, and isolate changed pins from stale extracted payloads. - Install only the selected runtime files, Microsoft's MIT notice, and an
explicit package identity record.
See the deployment documentation.
The dependency-free inbox ConPTY backend remains available; the caller owns
runtime selection and distribution.
Verification of clean private 40e522c5: AppleClang21 Release230/230,
LLVM23 Debug ASan/UBSan plus fuzz240/240 and TSan229/229; Debian13 ARM64
GCC13.3 Release230/230; Windows11 ARM64 MSVC17 strict Release223/223 plus
34/34 actual helper-deployed ConPTY1.24.261001001 cases. The filtered public
snapshot c89d0d7b independently builds without warnings, passes228/228,
benchmark budgets and strict documentation. All seven jobs of exact public
GitHub CI37265637549
succeeded before this release was created.
Known qualification: on the named native verification host, Microsoft
runtime1.25.260930003 fails two graphics negotiation/resize cases while the
other32 pass. The cause is not established. The October1.24 maintenance
runtime passes all34; no runtime is implicitly selected by the library helper.
These checks do not certify an adopter's live UI or installed application.
ckVision 0.1.16
ckVision 0.1.16 adds reusable captured native helper processes, with private
binary stdin and independent bounded stdout/stderr. These helpers do not open
a terminal or ConPTY.
It also adds a generic detached-process launch service for independently
living processes. This service has no application/server/session semantics.
ProcessLaunchSpecsupplies one invocation/environment model for terminal
and captured children, including explicit Windows command-processor syntax.- The injected
ProcessRunnercontract uses a borrowed monotonic clock.
Success requires all input delivered and a known normal zero exit. - Native Windows and POSIX runners drain capped streams while enforcing an
idle-progress deadline. Only actual transferred bytes count as progress. - Descendant handling is required: release after known successful completion,
or terminate on completion. Failures/timeouts clean the owned process group
or job. Windows permits only private child standard handles to be inherited. - macOS uses atomic close-by-default spawn actions; POSIX preserves the
caller's signal policy and reaps the actual root. Native failures retain
typed status and full native error/exit codes. DetachedProcessLauncherconsumes the same explicit launch specification.
Its Windows implementation creates the child suspended, verifies freedom
from every ancestor job before resuming it, and reports typed refusal and
separate cleanup outcomes. No handles are inherited; application readiness
and shutdown remain the adopter's responsibility.
API migration: TerminalLaunchSpec now derives from ProcessLaunchSpec, and
TerminalEnvironmentPolicy is renamed ProcessEnvironmentPolicy. This is
a pre-1.0 public API change; update adopters rather than adding compatibility
workarounds. See captured helper documentation.
Verification: clean private commit b8aca7e5 passes macOS Release229/229,
Debian13.6 ARM64 GCC13.3 Release/FORTIFY229/229, and Windows11 ARM64 MSVC
Release222/222. The same frozen compiled inputs pass LLVM23 Debug ASan/UBSan
plus ten fuzz corpora239/239, and TSan228/228. Eight compiled captured-backend
mutations and an actual Windows detachment-guard omission fail their intended
assertions; all production mutations are restored and rebuilt. The exact
filtered public snapshot a38928cf passes227/227 and strict documentation
generation. All seven jobs in GitHub CI run 37243144550
succeed at that exact public commit, including hosted Windows, macOS, GCC,
ASan, UBSan, TSan and fuzz gates.
This library release is not a claim that ckmux's complete
Windows UI, persistence acceptance, installed release or installer is finished.
ckVision 0.1.15
ckVision 0.1.15 adds reusable, observation-only native process resources.
- Full-width signed ProcessId preserves every Windows DWORD; -1 means no process.
- TerminalSubsession exposes optional CPU/resident/private-resident observations with explicit availability and native errors.
- Explicit Windows process/job samplers observe owned and nested jobs. Job CPU includes exited children; memory describes current live working-set pages, never virtual commit charge.
- Missing member reads make totals unavailable rather than presenting partial sums as complete measurements. No sampler changes privileges or guesses membership from parent PIDs.
- Native regressions cover permission refusal, expanding membership, exited CPU workers and real ConPTY descendants. Compiled live-only CPU and commit-as-resident mutations fail their intended assertions.
Local clean-commit gates: macOS and Linux Release226/226, Windows ARM64 MSVC
Release218/218, macOS LLVM23 ASan/UBSan plus ten fuzz corpus entries236/236,
and TSan225/225. All CTest exits0, zero compiler warnings and normal benchmark
gates pass. The filtered source snapshot passes220 non-PTY plus four PTY
entries and strict documentation generation. Publication additionally requires
all seven GitHub CI jobs at this exact source commit to succeed.
ProcessId is a public signature change: adopters overriding process_id()
must return the new type instead of int. This library release does not claim
that an adopter's native UI, statistics wire integration or installer is complete.
ckVision 0.1.14
ckVision 0.1.14 adds reusable native text and process-launch composition.
- Strict UTF-8/UTF-16 conversion is public and shared by native adapters.
- Shared CRT argv encoding preserves empty/Unicode/quoted values and trailing
backslashes, with the executable token's distinct filename grammar. - FileTraceSink opens Unicode Windows filenames natively and refuses malformed
UTF-8 and embedded NULs without truncating names. - CkTest retains single evaluation and real failure reporting under strict MSVC
constant-condition warnings. Installed-consumer fixtures use their actual
compiler, and nested child fixtures wait for reader acknowledgement.
Public commit be5ca6c11bae745f9abab1be1d43f3b5aa0025f7 passes all seven GitHub
CI jobs in run 37198293532: macOS/Linux/Windows Release, address/undefined/thread
sanitizers and fuzz. Clean isolated private-commit gates pass Mac and Linux
Release 225/225, Windows ARM64 MSVC Release 216/216, LLVM 23 Mac ASan/UBSan
plus fuzz 235/235 and TSan 224/224. Normal benchmark gates pass. Independent
filtered-publication verification passes 219 non-PTY and four PTY entries and
strict documentation generation. Native and delayed-reader compiled negative
regressions fail their intended assertions and pass after restoration.
This is a library release, not completed Windows ckmux support. Subsequent
owned-process resource observation work is not included in this release.
ckVision 0.1.13
ckVision 0.1.13 adds native Windows terminal diagnostics parity.
- WindowsTerminal accepts ordered output capture and graphics tracing, and
reports the existing decoder's cumulative SGR mouse-report count. - Capture includes normal restoration from installation onward. Empty and
throwing diagnostic callbacks cannot suppress native output or restoration. - POSIX and Windows use one capability-summary formatter. Native regressions
exercise real console output, recording/replay and two changing ConPTY sizes,
including trace disabling while the terminal remains active.
Public commit e001070f34a2c908ab2d0f2624d908314b052391 passed all seven GitHub
CI jobs in run 37174128133: macOS/Linux/Windows Release, address/undefined/thread
sanitizers and fuzz. Local strict gates pass Mac 223/223, Linux Release 223/223,
Linux ASan/UBSan plus fuzz 233/233, Linux TSan 222/222 and native Windows ARM64
213/213. Benchmark gates and compiled negative regressions pass. Independent
filtered publication passes 217 non-PTY and four PTY tests and strict docs.
This is a library release, not a completed Windows ckmux port. Subsequent
Unicode trace-file path work is an isolated candidate and is not included.
ckVision 0.1.12
ckVision 0.1.12 adds scalable native Windows readiness and fixes quiet input deadlines.
WindowsWaitSetowns native wait-completion packets and a completion port.
It accepts more than 64 sources without production worker threads or a
global registry, coalesces duplicates, retires canceled generations and
rearms sources on the next call. Native failures are explicit.WindowsTerminaluses this backend for console input, wake and extra sources.
Native tests cover 130 events changing state after registration, process exit,
cancellation races, handle cleanup, isolation and public console integration.InputDecoderadvertises lone Escape's quiet deadline. POSIX terminal polling
services quiet deadlines after every wait outcome, so continuously ready IPC
sources cannot indefinitely defer Escape. Windows indefinite waits also see
the decoder deadline. No application timeout relaxation is needed.
The exact public commit cfe9fdfda4a3c3e7091de0831326689a32d49686 passed all
seven GitHub CI jobs in run 37169919485: macOS/Linux/Windows Release,
address/undefined/thread sanitizers and fuzz. Local strict gates pass Mac
222/222, Linux Release 222/222, Linux ASan/UBSan plus fuzz 232/232,
Linux TSan 221/221, and native Windows ARM64 211/211. Benchmark gates,
compiled regression mutations, independent filtered-snapshot verification
and strict documentation pass.
This is a library release, not a completed Windows ckmux port. Subsequent native
terminal diagnostics work remains an isolated candidate and is not included.