Skip to content

Releases: grapefruit0205/click

v1.3.0 — Conditional JS reuse on Windows

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 13 Sep 11:09
Immutable release. Only release title and notes can be modified.
6f46bff

Both marketplaces pin v1.3.0; updating v1.2.0 installs it.

  • Python 3.10+ is asked for, not assumed. When the Claude Code launcher finds no usable interpreter (it also skips the macOS stub that only offers the command line tools) or the one it found is too old, the prompt hook shows what to install (systemMessage) and tells the model not to use click-gate until a new session; tool hooks stay silent, so nothing is blocked. The Codex Windows batch launcher prints the same instructions. (#148)
  • Portable observer transport. Each observed Node process announces its inspector endpoint in an endpoint-<pid>.json file the controller polls for, instead of a FIFO the runner had to mkfifo and hold open. (#149)
  • Conditional JS reuse on Windows. The Windows backend hands the framework observer the ETW events it captured, and a projection module answers from them what the strace projection answers on Linux: every process started and stopped inside the capture, and which files the observed process consumed after the collector acknowledged its inspector session. The collector's own transport, the null device, pre-acknowledgement metadata probes, created outputs and inherited standard handles are set aside; every other read is bound by content, and a probed path that is absent binds as one that must stay absent. The inspector collector runs on Windows with its own profile; external rows are spelled C:/dir/file; the receipt binds the inbox logman/tracerpt pair as its backend. The sessions need an elevated session; without elevation checks run and same-state receipts still reuse. (#150)
  • The native random-state reader builds on Windows. With the MSVC tools on PATH (a developer prompt) and this Node version's headers (MSI install or node-gyp cache), the reader that samples V8's per-realm PRNG state and shared-buffer bytes compiles and links through an import library generated from node.exe's own export table — nothing is downloaded. SHA-256 is computed in the reader itself. Without the toolchain a Windows check that consumes Math.random or shared memory stays ineligible, as before. (#151)
  • Framework entry points run by node are the framework's check. node <root>/node_modules/jest/bin/jest.js … and node <root>/node_modules/vitest/vitest.mjs … are recognized as the jest and vitest checks (the launchers are cmd shims on Windows; the entry point stays one process on every host). The Windows CI job now runs the real jest/vitest worker paths and the conditional Hook path under ETW with Node 22.23.2. (#151)

Windows requirements for the JS observer: Git for Windows (Claude Code), an elevated session for the ETW sessions, and a developer prompt plus Node headers for the random-state reader.

Full notes: RELEASE_NOTES.md

v1.2.0 — Claude Code on Windows

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 13 Sep 06:02
Immutable release. Only release title and notes can be modified.
964c72d

Both marketplaces pin v1.2.0; updating v1.1.1 installs it.

  • Claude Code on Windows. The Claude Code package's Hook command is now sh "${CLAUDE_PLUGIN_ROOT}/hooks/claude_hook.sh", a POSIX launcher that Claude Code runs through sh -c on Linux and macOS and through Git Bash on Windows; it selects py -3, python or python3 (skipping the Microsoft Store alias stub and the py launcher's exit 103), runs the adapter in UTF-8 mode, and normalizes the backslash plugin root Claude Code substitutes. On Windows the adapter renders rewritten click-gate commands for Git Bash (forward-slash interpreter and script paths, bounded encoded transport), reads and writes the host's JSON as UTF-8, and the resident worker no longer requires the Codex Windows bridge: runner renderers are registered per host and activated per event.
  • Receipts are reused on Windows. The environment fingerprint spells Windows search-path entries one way: every MSYS hop (Git Bash, then sh) re-spells them for a native child (trailing separators, doubled separators, drive letter case), and the Hook runs one hop deeper than the Bash tool, so the same directories used to carry two identities and no receipt was reused. The rebound notice now names the variables that differed (never their values).
  • Windows CI drives the packaged hooks and rewritten commands through Git Bash with a default-install PATH and proves the resubmitted check is reused; interpreter selection is covered on every OS with fake interpreters. Windows needs Git for Windows (Claude Code's Bash tool); the PowerShell tool is not rewritten yet. Python checks are the Windows scope; conditional JS reuse stays Linux-only. (#146)

Full notes: RELEASE_NOTES.md

v1.1.1 — English by default

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 13 Sep 04:12
Immutable release. Only release title and notes can be modified.
76ea130

Patch release. Both marketplaces pin v1.1.1; updating v1.1.0 installs it.

  • English is the default language. The runner's result line, the reuse notice and the Evidence directive's reference to it were Korean on every host; they now render through the dashboard's translation tables in the language CLICK_LANGUAGE or the POSIX locale selects, and the fallback for any other locale is English:
    [Click result] 1 of 4 executed · 3 current (inputs unchanged since their last pass, reused) · About 45s of reruns avoided (estimate); ...
    click-gate status follows the same rule, and the dashboard opens in the browser language (Korean or Simplified Chinese when that is what the browser reports, English otherwise) until a language is chosen. Host output is no longer cut at the summary-line value limit, the runner writes it as UTF-8 so a Windows console code page neither alters the · separator nor drops the line, and the token_ab benchmark accepts the result line in every language. (#144)
  • Plugin listing metadata. The Codex manifest declares a logo, a screenshot taken from a recorded session, and HTTPS privacy and terms links; a new docs/privacy.md states what Click stores, where, and that it opens no connection beyond loopback; a .codexignore excludes tests, docs and other hosts' distributions from the Codex package; the Claude Code marketplace declares strict: true and the ./dist/claude path form. The plugin scanner used in CI scores 94/100 (A) instead of 86; the remaining deduction is its preference for a local Codex marketplace source, which Click keeps as an immutable release tag on purpose. (#142)

Full notes: RELEASE_NOTES.md

v1.1.0 — plain click-gate verify -- <check argv>

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 12 Sep 15:25
Immutable release. Only release title and notes can be modified.
0b81f99

Install on Claude Code

claude plugin marketplace add grapefruit0205/click
claude plugin install click@click

Update

claude plugin marketplace update click && claude plugin update click@click
codex plugin marketplace upgrade click && codex plugin add click@click

Restart and start a new task after updating.

Changes

  • Plain click-gate verify -- <check argv>. One check without the JSON envelope: the evidence id is derived from the argv (E_ plus twelve hex digits of its SHA-256), so resubmitting the same command resubmits the same check; the class is the command's minimum verification class; the working directory is the tool call's. The Evidence directive injected on every prompt now shows this form. Batches, explicit ids, reporting and a different workdir keep the JSON form.

Why: in eight paired Opus 5 sessions (Click on vs off, 40 s fixture) the ~200-character JSON the model typed for every test cycle was the main output-token overhead of running with Click (cost +6–11% against session time −68%). Two further sessions with the plain form used it for every cycle and brought the Click-on cost to the Click-off level ($0.57 vs $0.60 median, n=2 — a direction, recorded as an addendum with its transcripts).

Full notes: RELEASE_NOTES.md.

v1.0.1 — receipts survive other plugins

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 12 Sep 14:15
Immutable release. Only release title and notes can be modified.
b541499

Install on Claude Code

claude plugin marketplace add grapefruit0205/click
claude plugin install click@click

Update

claude plugin marketplace update click && claude plugin update click@click
codex plugin marketplace upgrade click && codex plugin add click@click

Restart and start a new task after updating.

Changes

  • Receipts survive other installed plugins on Claude Code. The host appends every installed plugin's bin directory to the tool call's search path, and v1.0.0's environment fingerprint dropped only Click's own. With any second plugin installed, the Hook-side and runner-side fingerprints differed on every request (Verification runner environment changed after preparation) and no receipt was ever reused. Every plugins/cache/<marketplace>/<plugin>/<version>/bin entry is now treated as host-owned wherever Click itself is loaded from; the executables a check resolves stay fingerprinted by content, so a plugin that shadowed one would still change the receipt.

Found while recording eight paired Opus 5 sessions (Click on vs off on a 40 s fixture: session time −68%, test executions −50%, cost +6–11%). Verified end to end in a headless Claude Code session with a second plugin installed: no environment-changed message, four shards executed once, the identical second request reused all four.

Full notes: RELEASE_NOTES.md.

v1.0.0 — automatic Evidence observation

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 12 Sep 08:51
Immutable release. Only release title and notes can be modified.
b621c00

Install on Claude Code

claude plugin marketplace add grapefruit0205/click
claude plugin install click@click

Update on Codex CLI

codex plugin marketplace upgrade click
codex plugin add click@click

Restart and start a new task after updating.

What v1.0.0 is

v1.0.0 publishes the automatic Evidence observation work that main carried
as the v0.97 candidate since v0.96.1. Both marketplaces pin v1.0.0.

Changes

  • Automatic input observation. Supported Evidence checks prepare local
    input capture automatically. Complete signed inputs establish per-check
    reuse without owner-written dependency JSON; owner declarations and shard
    partition rules remain intact. Observations whose only gaps are a followed
    child, concurrent threads or dynamic introspection are stored as
    conditional and back explicitly disclosed conditional reuse.
  • Conditional JS reuse. Default Node/Vitest/Jest checks can issue
    separately attested conditional receipts after two requested executions
    learn and compare inputs, including ignored files. Completeness is
    disclosed as unproven in host output, dashboard and reports. Runtime-only
    reads that vary between identical executions (glibc's overcommit probe, the
    runtime cgroup probes, V8 re-opening its own image) no longer refuse a
    receipt; Node Workers are detected explicitly and denied one.
  • Recovery and safety. Losing capture after an observed baseline never
    downgrades to Git-only reuse; completion rechecks reused inputs after sibling
    execution and invalidates only the affected evidence; SIGTERM retains output
    and stops the admitted target; native preparation publishes caches
    atomically.
  • Automatic sharding in Evidence mode. A broad unittest/pytest/Vitest/Jest
    parent check without a committed plan is sharded from Click's own proposal,
    kept in Click's state per repository, validated like a committed plan on
    every request, and regenerated when the inventory changes. Nothing is
    written into the repository.
  • Concurrent shard execution. Shard children run in forked workers on
    Linux (CLICK_VERIFICATION_WORKERS, default core count up to 8) with
    results consumed in submission order, so output, receipts and fail-fast
    behaviour match a sequential run.
  • Receipts outlive the host session. Passing receipts are archived per
    repository root; a new session starts from them as successor candidates and
    the existing requalification decides what is still valid.
  • Fewer spurious reruns. Observed-input identity is content-based
    (equal-content saves, checkouts and touch keep receipts); the receipt
    environment fingerprint is an allowlist with a normalized search path;
    project __pycache__ is derived, not observed.
  • Faster fixed cost. Runtime identity checks and git resolution are
    memoized per process, each observed input is read once per reuse decision,
    and the host-runtime input index is built once per runner (six-shard
    fixture: runner 9.35 s → 6.16 s).
  • Host output. click-gate status prints three short lines (JSON via
    --json); checks are named by the caller's evidence id; reused checks
    report the output the host did not read again as a disclosed estimate; the
    Evidence prompt context is a directive to run checks through
    click-gate verify.
  • Node Inspector controller exits on its own after reporting instead of
    being terminated after a five-second wait on every observed JS execution.

The stabilization note about the historical opposite-child decision remains
open; see docs/architecture/automatic-observation.md. Full details in
RELEASE_NOTES.md.

v0.96.1 — Claude Code plugin

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 11 Sep 02:12
Immutable release. Only release title and notes can be modified.

Install on Claude Code

claude plugin marketplace add grapefruit0205/click
claude plugin install click@click

Update on Codex CLI

codex plugin marketplace upgrade click
codex plugin add click@click

Changes

  • Click now installs as a Claude Code plugin from the same repository:
    claude plugin marketplace add grapefruit0205/click then
    claude plugin install click@click. The generated dist/claude package
    shares the Codex runtime, resident Hook worker, evidence ledger, and
    click-gate command surface; only the inbound event is normalized.
  • The Claude Code adapter binds Click's turn identity to Claude Code's
    per-prompt prompt_id, so first-line @Click bypass/@Click cancel and
    later-turn Guarded approval keep their one-use, separate-turn proof. Events
    without a prompt identity fail closed for every turn-bound action.
  • MultiEdit and NotebookEdit record Edit mutation boundaries; TodoWrite
    and ExitPlanMode receive plan advisories only. Successful receipts bind a
    distinct claude known-surfaces coverage digest and cannot be reused as
    Codex or Antigravity receipts. No Claude Code Browser tool is bound.
  • A rewritten click-gate command is merged back over the original Claude
    Code tool_input, because Claude Code replaces updatedInput wholesale.
    Evidence state lives under ${CLAUDE_PLUGIN_DATA}; Windows is not part of
    the Claude Code package.
  • Turn-identity and bypass/cancel messages no longer name Codex; the resident
    worker and dashboard identity accept either host manifest. Codex behavior is
    otherwise unchanged from v0.96.0.

Codex behavior is otherwise unchanged from v0.96.0. Validated by CI run 34552459037 on release/v0.96.1.

Click v0.96.0

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 09 Sep 04:33
Immutable release. Only release title and notes can be modified.
76941a3

Click v0.96.0 makes incremental verification more selective while keeping uncertainty conservative.

  • Rejects shard layouts whose selected child plus management overhead is slower than the parent.
  • Defers duplicate Evidence bootstrap child execution to the ordinary one-use baseline runner and supports bounded long-running setup checks.
  • Adds owner-committed file-input policy v2 for child-specific cross-revision reuse, including ignored files and directory membership.
  • Keeps stable bounded Vitest/Jest groups for inventories larger than 64 files.
  • Shares one request-local Git preflight and records SIGTERM interruption without leaving a passing receipt.
  • Adds paired equivalent-work evaluation that counts setup, failures, retries, and the final full audit.

Existing automatic sharding init/status/refresh, policy v1, complete inventory, authorized shard reuse, and conservative parent fallback remain supported.

The included short CLI fixture is intentionally reported as slower with Click. This release does not claim whole-agent, token, production, or tens-of-minutes savings.

Click v0.95.0

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 09 Sep 02:18
Immutable release. Only release title and notes can be modified.
624b83a
  • Automatic shard proposals preserve the exact parent's dependency declarations
    and each existing child's inputs without inheriting unrelated checks' scopes.
    Previously broad owner declarations are not silently narrowed.
  • Supported static Vitest/Jest profiles distinguish test-body changes from
    file-selection changes. Assertion edits and new cases inside the same file
    retain the split; file membership and discovery configuration still require
    validation. Python test-case structure checks remain in place.
  • Child identities bind their own commands and covered files independently of
    sibling changes. A complete, committed shard refresh retains compatible old
    results only as stale candidates. Repeated edits retain the last successful
    candidate, but current inputs, receipts and reuse authority must be rechecked.
    Legacy results require a fresh baseline instead of receiving narrower bindings.
  • A child with changed inputs or insufficient reuse evidence executes. All
    affected children execute for shared changes; an incomplete or invalid split
    retains the original parent fallback. Static dependency analysis alone never
    authorizes skipping verification.
  • GitHub CI selects repository, distribution and maintained local-link checks
    for bounded documentation or version-only changes. Runtime, Hook, reuse,
    sharding, policy, CI and unknown changes retain the full platform matrix.
    Release tags and manual runs also select full CI. Existing required-check
    names remain, and failed, cancelled or missing checks cannot pass the gate.
  • Automatic sharding init/status/refresh, complete inventory, authorized shard
    reuse, conservative parent fallback and generated Antigravity parity remain
    release acceptance criteria. See child verification continuity
    and CI change scopes for behavior and limits.
    No new whole-task time or token-saving claim is made.

Validation: all 38 jobs in the final PR CI and merged-main CI passed, including Linux/macOS/Windows, native observation, automatic sharding and integration coverage. The release commit security scan also passed.

CI preparation corrected test fixtures that depended on the host Git identity or Windows' default Bash launcher. Earlier Windows native capture failures remain in the check history; the final checks passed without weakening incomplete-observation rejection or reuse requirements.

Merged in PR #101. Release commit: 624b83a89350dead6fc46031b54b37c72dc2ef36.

Click v0.94.1

Choose a tag to compare

@grapefruit0205 grapefruit0205 released this 08 Sep 23:09
Immutable release. Only release title and notes can be modified.
886e465
  • Maintained architecture documents, canonical prompts, completed phase packages,
    and historical evidence now have explicit entry points under docs/README.md,
    docs/architecture/, and docs/history/. Historical records keep their original
    contents and literal paths where those paths are part of the evidence.
  • The canonical Click skill reference and generated Antigravity package now point
    to the reorganized multilingual expansion record. Relative Markdown links and
    generated distribution parity were validated after the move.
  • Runtime behavior is unchanged. Automatic sharding init/status/refresh,
    complete-inventory enforcement, authorized shard reuse, and conservative parent
    fallback remain required regressions. The focused local suites passed 87 tests
    with 2 platform-only skips, and pull request #99 passed the Linux, macOS, and
    Windows matrix after one transient Windows native-observation job was rerun.