@arbiterforge/ca-pi 0.10.4 → 0.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,7 +10,7 @@ project context. You decide. codeArbiter enforces.
10
10
  <img alt="Claude Code plugin" src="https://img.shields.io/badge/Claude_Code-plugin-d97757">
11
11
  <img alt="Codex plugin" src="https://img.shields.io/badge/OpenAI_Codex-plugin-10a37f">
12
12
  <img alt="Pi Feature Forge preview" src="https://img.shields.io/badge/ca--pi-Feature_Forge_preview-d97757">
13
- <img alt="version 2.17.3" src="https://img.shields.io/badge/version-2.17.3-2b7489">
13
+ <img alt="version 2.17.4" src="https://img.shields.io/badge/version-2.17.4-2b7489">
14
14
  <img alt="core lanes" src="https://img.shields.io/badge/core_lanes-18-555">
15
15
  <img alt="skills" src="https://img.shields.io/badge/skills-23-555">
16
16
  <img alt="agents" src="https://img.shields.io/badge/agents-19-555">
@@ -117,7 +117,7 @@ Approve the normal plugin trust prompt, open the target repository, and continue
117
117
 
118
118
  ### Codex CLI
119
119
 
120
- The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.9.3`;
120
+ The public GitHub-slug flow is **available now**. The repository currently ships `ca-codex 0.9.4`;
121
121
  the dated end-to-end public-install record discovered `ca-codex 0.2.4` from release `v2.8.13`.
122
122
  Current packaging and shared-core parity are continuously verified, while that dated live-install
123
123
  record stays labeled rather than being silently promoted to evidence for a newer adapter:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arbiterforge/ca-pi",
3
- "version": "0.10.4",
3
+ "version": "0.10.5",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -4,6 +4,12 @@ All notable changes to `ca-pi` are documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.10.5] - 2026-09-05
8
+
9
+ ### Fixed
10
+
11
+ - Upgrade earlier codeArbiter-managed Git hook shims after ownership-banner wording changes while preserving foreign hooks.
12
+
7
13
  ## [0.10.4] - 2026-09-05
8
14
 
9
15
  ### Fixed
@@ -117,8 +117,9 @@ from _durabilitylib import is_ephemeral_path
117
117
  from _gitexec import (git_executable, root_bound_git_env,
118
118
  trusted_git_executable, trusted_python_executable)
119
119
 
120
- SENTINEL = (
121
- "# codeArbiter-managed git hook (#161) — this SHIM is refreshed by any live "
120
+ SENTINEL = "# codeArbiter-managed git hook (#161)"
121
+ SHIM_NOTICE = (
122
+ "# This SHIM is refreshed by any live "
122
123
  "host's session (it is host-neutral, ADR-0014); the plugin-specific enforcer "
123
124
  "entries it dispatches to (.git/codearbiter-hooksd/*.path) each self-heal "
124
125
  "only on THAT plugin's own next session (#556) — edits here are overwritten."
@@ -581,6 +582,7 @@ def _shim(dropin_dir, phase):
581
582
  return (
582
583
  "#!/bin/sh\n"
583
584
  f"{SENTINEL}\n"
585
+ f"{SHIM_NOTICE}\n"
584
586
  f"D={quote(_shell_path(dropin_dir))}\n"
585
587
  f'if [ -e "$D/{_TRUSTED_IDENTITY_FILE}" ] || [ -L "$D/{_TRUSTED_IDENTITY_FILE}" ]; then\n'
586
588
  f' [ -f "$D/{_TRUSTED_IDENTITY_FILE}" ] || exit 1\n'
@@ -860,7 +862,11 @@ def install(root):
860
862
  desired = _shim(dropin_dir, phase)
861
863
  if os.path.exists(dest):
862
864
  existing = _read(dest)
863
- if existing is not None and SENTINEL not in existing:
865
+ lines = existing.splitlines() if existing is not None else []
866
+ managed = len(lines) >= 2 and lines[0] == "#!/bin/sh" and (
867
+ lines[1] == SENTINEL or lines[1].startswith(f"{SENTINEL} — ")
868
+ )
869
+ if existing is not None and not managed:
864
870
  _warn(f"an existing {phase} hook is not codeArbiter-managed — leaving it "
865
871
  f"untouched. For git-level enforcement, call "
866
872
  f"'{os.path.basename(enforcer)} {phase}' from it (see includes docs).")
@@ -11,7 +11,7 @@ import hostapi # noqa: E402
11
11
  class PiHost(hostapi.Host):
12
12
  name = "pi"
13
13
  adapter_name = "@arbiterforge/ca-pi"
14
- adapter_version = "0.10.4"
14
+ adapter_version = "0.10.5"
15
15
  update_target = "ca-pi"
16
16
  update_tag_prefix = "ca-pi-v"
17
17
  update_command = "pi update npm:@arbiterforge/ca-pi"
@@ -313,7 +313,7 @@ class Host:
313
313
 
314
314
  name = "claude"
315
315
  adapter_name = "ca"
316
- adapter_version = "2.17.3"
316
+ adapter_version = "2.17.4"
317
317
 
318
318
  # Update-notifier descriptor. Each independently versioned host overrides
319
319
  # these three values in its per-plugin _host.py. Keeping the target,