prjct-cli 2.43.2 → 2.43.4

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/CHANGELOG.md CHANGED
@@ -2,8 +2,31 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ### Performance
6
+ - **Hot recall queries now use the type index.** Every `type LIKE 'memory.%'` filter (recall, vault index, embeddings backfill anti-join, memory cap, transcript dedup) was a full `SCAN events` — SQLite can't derive scan bounds from a parameterized LIKE. Rewritten as indexed range predicates with exact-parity tests; cost stays flat as the events table grows.
7
+ - **Prompt hook git snapshot cached for 3s.** The UserPromptSubmit hook forked 3 git processes per turn (~40ms); agentic bursts forked hundreds. The daemon now reuses the snapshot within a 3s TTL per cwd.
8
+ - **Upgrade migration no longer opens every project DB.** A `.cli-version` marker per project dir reduces the post-upgrade scan from a SQLite open per directory (~3ms × tens of thousands of dirs ≈ up to a minute) to one tiny file read each.
9
+ - Vault writes skip redundant per-file `mkdir` syscalls (dir-ensured cache with delete-retry fallback).
10
+
5
11
  ### Fixed
6
- - **CRITICAL: the memory cap no longer deletes knowledge.** `capEntries` (runs on every `prjct sync`) counted ALL `memory.%` events against the 500-row cap — high-churn telemetry (`memory.post_edit` fires on every file edit) inflated the total and the age-ordered delete silently destroyed the OLDEST remembered decisions/gotchas/learnings while keeping hundreds of newer telemetry rows. `memory.remember.*` is now invisible to the cap (count and delete); knowledge leaves the log only via `prjct forget`. The delete is also exact-id based instead of an id-range sweep. If a past sync capped your project: the `memories` mirror table still holds the rows with their original ids — restorable.
12
+ - **Vault can no longer go stale across upgrades.** The regen fingerprint now includes the CLI version: every upgrade forces one cheap full regen per project, so a builder/format change always renders (previously the old fingerprint blocked new output until unrelated inputs changed).
13
+ - **Codex detected in non-interactive shells.** `detectCodex` accepts `~/.codex/auth.json` (a logged-in install) as evidence alongside binary-on-PATH — hooks/daemon run without the interactive PATH, which silently skipped Codex MCP wiring and skill repair.
14
+ - Removed dead `memoryService.search()` (1,000-row JS substring scan, zero callers — `prjct search` uses the FTS5 + semantic blend).
15
+ - Archive-storage tests no longer leak a real-path SQLite connection across the pathManager patch (stray async sync-publish could cache it and hijack the next test's isolation).
16
+
17
+ ## [2.43.4] - 2026-06-11
18
+
19
+ ### Performance
20
+
21
+ - indexed range queries, git TTL cache, version-aware vault fingerprint, upgrade-scan guard (#428)
22
+
23
+
24
+ ## [2.43.3] - 2026-06-11
25
+
26
+ ### Bug Fixes
27
+
28
+ - Codex first-class — skill under 1KB cap, MCP wiring, real AGENTS.md, doctor checks (#427)
29
+
7
30
 
8
31
  ## [2.43.2] - 2026-06-11
9
32
 
package/README.md CHANGED
@@ -509,6 +509,14 @@ Codex is detected by the `codex` CLI on PATH (context file `AGENTS.md`). The
509
509
  sandbox is non-interactive/non-TTY, so prjct-cli emits the same static, prompt-free
510
510
  status line as any agent; add `--md` for fully markdown-structured output.
511
511
 
512
+ **What does Codex get from prjct?**
513
+ Three surfaces, all installed/healed automatically: a compact skill at
514
+ `~/.codex/skills/prjct/SKILL.md` (kept under Codex's ~1KB skill cap), the
515
+ prjct MCP server wired into `~/.codex/config.toml` (`prjct_*` tools), and a
516
+ vendor-neutral routing block in the project's `AGENTS.md` written by
517
+ `prjct init`. Codex has no lifecycle hooks, so AGENTS.md + MCP are its
518
+ session-start context and live tool surface.
519
+
512
520
  **How do I quickly find the local `.prjct/` directory?**
513
521
  It's in your **project repo root** (created by `prjct init` / first `prjct`
514
522
  command) and is `.gitignore`d — that's why `git status` never shows it. Find it:
package/bin/prjct CHANGED
@@ -91,15 +91,19 @@ ensure_setup() {
91
91
  # postinstall is unreliable (--ignore-scripts, npm policies), so the
92
92
  # bin shim self-heals on every invocation. mtime-based: source newer
93
93
  # than dest → overwrite. Common case (skill up-to-date) = two stats.
94
- SKILL_SRC="$ROOT_DIR/templates/skills/prjct/SKILL.md"
95
- if [ -f "$SKILL_SRC" ]; then
96
- for SKILL_DEST in "$HOME/.claude/skills/prjct/SKILL.md" "$HOME/.codex/skills/prjct/SKILL.md"; do
97
- SKILL_DIR=$(dirname "$SKILL_DEST")
98
- if [ ! -f "$SKILL_DEST" ] || [ "$SKILL_SRC" -nt "$SKILL_DEST" ]; then
99
- mkdir -p "$SKILL_DIR" 2>/dev/null
100
- cp "$SKILL_SRC" "$SKILL_DEST" 2>/dev/null
101
- fi
102
- done
94
+ # Each agent gets ITS OWN template: Codex enforces a hard ~1KB limit
95
+ # on the whole SKILL.md and silently rejects the entire skill when
96
+ # the (much larger) Claude baseline lands there.
97
+ install_skill() {
98
+ if [ -f "$1" ] && { [ ! -f "$2" ] || [ "$1" -nt "$2" ]; }; then
99
+ mkdir -p "$(dirname "$2")" 2>/dev/null
100
+ cp "$1" "$2" 2>/dev/null
101
+ fi
102
+ }
103
+ install_skill "$ROOT_DIR/templates/skills/prjct/SKILL.md" "$HOME/.claude/skills/prjct/SKILL.md"
104
+ # Codex only if present — don't create ~/.codex on machines without it
105
+ if [ -d "$HOME/.codex" ] || command -v codex >/dev/null 2>&1; then
106
+ install_skill "$ROOT_DIR/templates/codex/SKILL.md" "$HOME/.codex/skills/prjct/SKILL.md"
103
107
  fi
104
108
  }
105
109