@einsia/agent-git 0.2.12 → 0.2.14

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -8,6 +8,132 @@ its [GitHub Release](https://github.com/Einsia/agent-git/releases), and the
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.2.14] - 2026-09-30
12
+
13
+ ### Added
14
+
15
+ - `agit project bind` enrolls a selected directory and its unbound subdirectories
16
+ in an existing repository, with explicit history import and automatic upload
17
+ choices. `project sync` retries synchronization, `project status` reports local
18
+ results, and `project unbind` pauses project capture. Codex and Claude Code hooks
19
+ preserve existing session claims and enforce the current project policy before
20
+ publishing.
21
+
22
+ ### Fixed
23
+
24
+ - Repeated Remote Control history reads reuse bounded, authenticated secret
25
+ dictionary records and compiled protection patterns. Changed ciphertext,
26
+ keys, or protection rules invalidate the corresponding cached state.
27
+ - Release builds optimize for runtime speed to reduce history projection and
28
+ secret scanning latency.
29
+ - Remote Control retries failed local session saves while idle, without requiring
30
+ another user turn to resume archiving.
31
+ - Push uses authenticated remote history to avoid rescanning already-published
32
+ objects, while continuing to inspect new objects and their selected LFS payloads.
33
+ Use `--audit` when a complete history review is needed.
34
+ - Native history reads take authenticated, bounded dictionary snapshots without
35
+ waiting for a dictionary writer. Conservative pattern filtering avoids scanning
36
+ history for secret patterns that cannot occur while preserving redaction rules.
37
+ - Compatible Cloud servers can read native history through a scoped project
38
+ controller without opening a separate session controller. Project controllers
39
+ remain read-only and cannot subscribe to or change a conversation.
40
+ - Completed RC turns retain durable archive jobs until protected publication has
41
+ a receipt. A daemon restart retries pending jobs without starting the model or
42
+ requiring a viewer to open the conversation.
43
+ - Settlement subprocesses retry temporary executable-busy failures within a
44
+ bounded window while retaining the current authority lease.
45
+
46
+ ## [0.2.13] - 2026-09-30
47
+
48
+ ### Changed
49
+
50
+ - **Installations that skip install scripts are counted.** An installation whose
51
+ installer recorded no install receipt, such as one run through `npx`, with
52
+ npm `--ignore-scripts`, or by a package manager that skips install scripts,
53
+ now records one from its first user command, marked
54
+ `receipt_origin=first_command`; installer receipts are marked
55
+ `receipt_origin=installer`. Setup, hooks, MCP, RC, background processes and
56
+ commands an installer runs never record it, so a create-agit receipt keeps its
57
+ acquisition key. Installations whose statistics state predates this release,
58
+ or whose `AGIT_HOME` already held older state, are never reported this way. See
59
+ [First-command receipt](docs/telemetry.md#acquisition-funnel-contract).
60
+
61
+ - **Session reuse and invitation counts on the Hub.** When `agit run` continues
62
+ a session line or forks from a point on one, it sends the Hub one receipt
63
+ naming the repository, the source session ID and commit, whether the run
64
+ continues or forks, and the per-process operation ID, so the Hub can count
65
+ how often sessions are picked up. A continue is reported once the session is
66
+ ready to launch, a fork once its branch exists, and a `--mine` fork to the
67
+ repository it copied. The receipt is sent in the background only for
68
+ checkouts of the configured Hub, only from a settled session, and never with
69
+ renewed credentials: an expired sign-in sends nothing. A Hub that is
70
+ unreachable or refuses it never changes the run's output or exit code.
71
+ `agit fork` and `agit resume` stay offline.
72
+ `agit repo invite <owner/repo>@<branch>` also tells the Hub which session its
73
+ link opens. The download attribution headers still carry no arguments or
74
+ names. See
75
+ [Session reuse and invitations](docs/telemetry.md#session-reuse-and-invitations).
76
+
77
+ ### Fixed
78
+
79
+ - Remote Control can return a fresh, bounded native history page with watch
80
+ admission, avoiding a separate network round trip when opening a conversation.
81
+ Native history transfers negotiate compression, preserving complete tool
82
+ results and compatibility with older clients and servers. Optional history
83
+ reads do not block the daemon or prevent a successful live subscription.
84
+ - Device name changes synchronize to Cloud without enrolling another device.
85
+ - Failed session publication retries while the conversation is idle, so a
86
+ transient upload failure does not require another user message to recover.
87
+
88
+ - `agit login` checks that it can save credentials under `AGIT_HOME` before it
89
+ asks the Hub for anything. An agent sandbox that refuses writes there no
90
+ longer uses up the human's approval: login stops with the directory to allow
91
+ and says no login request was created, and `agit login --complete` leaves the
92
+ approved sign-in unclaimed so the same command finishes it later. If saving
93
+ still fails after sign-in, the new Hub session is signed out again.
94
+ - Signing in from an agent no longer fails when the agent runtime stops the
95
+ waiting `agit login`. Every browser and device-code request is recorded
96
+ privately under `AGIT_HOME` when the Hub creates it, and
97
+ `agit login --complete` without a value finishes it from any later process,
98
+ including an interrupted `agit login --device`. `--complete` now waits for
99
+ the approval for up to 90 seconds (`--wait <seconds>`, `0` checks once)
100
+ instead of checking once, keeps waiting through a failed poll, keeps the
101
+ request when the wait runs out, and forgets it when the Hub says it expired
102
+ or was already used. Running the printed `--complete` command again after
103
+ the sign-in finished reports success instead of "no longer valid". A new
104
+ `agit login` finishes a request the human already approved instead of
105
+ replacing it. `agit whoami --check`, `agit commit` and commands that stop
106
+ with "not logged in" first claim an approved request once, and otherwise
107
+ point to `agit login --complete` instead of a new login. Signing out cancels
108
+ a sign-in still being claimed: a session approved after `agit logout` is
109
+ signed out again instead of saved, and a session a concurrent sign-in saved
110
+ while `agit logout` ran is revoked with the credentials it removes. A second
111
+ `agit login --complete` or a new `agit login` started while another process
112
+ claims the same sign-in waits for it and reports success instead of "no
113
+ longer valid" or a new login link.
114
+ - Local state problems read as local problems. `agit whoami --check` reports
115
+ an unwritable home or a held credential lock instead of "can't reach" the
116
+ Hub, `agit doctor` checks that `AGIT_HOME` is writable, and every command
117
+ that meets one exits with the precondition code. Messages name the agit lock
118
+ another process holds and say that agit's lock files are released when their
119
+ process exits and must not be deleted; credential locks give up after a
120
+ bounded wait, and session locks say what they are waiting for.
121
+ - Re-importing a session describes its claim: a registration is saved by the
122
+ import, a saved session says where and how to record later turns, and a
123
+ session saved elsewhere says how to move it. The link file path is no longer
124
+ offered as a next step, and a failed import restores the session's previous
125
+ link, including none.
126
+ - A session targeted at `main` is refused before anything is adopted or
127
+ created, with the reason and an example branch in the caller's syntax.
128
+ - `agit push` leaves an `origin` that already points at the destination alone
129
+ and writes a changed one under the repository lock, so a manual push and a
130
+ hook's auto-push no longer collide on `.git/config`. Git failures on a held
131
+ lock say not to delete it while a git process runs; a refused write says the
132
+ checkout is not writable instead.
133
+ - `agit setup` recognizes its own hooks by their arguments, so installing from
134
+ another executable path replaces the old entry instead of adding a second
135
+ one.
136
+
11
137
  ## [0.2.12] - 2026-09-28
12
138
 
13
139
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@einsia/agent-git",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "description": "Version control for agent sessions — the agit CLI plus skills/hooks/MCP wiring for Claude Code, Codex, OpenCode and Cursor. The AgentGit hub deploys separately.",
5
5
  "keywords": [
6
6
  "agit",
@@ -49,10 +49,10 @@
49
49
  "access": "public"
50
50
  },
51
51
  "optionalDependencies": {
52
- "@einsia/agent-git-linux-x64": "0.2.12",
53
- "@einsia/agent-git-linux-arm64": "0.2.12",
54
- "@einsia/agent-git-darwin-x64": "0.2.12",
55
- "@einsia/agent-git-darwin-arm64": "0.2.12",
56
- "@einsia/agent-git-win32-x64": "0.2.12"
52
+ "@einsia/agent-git-linux-x64": "0.2.14",
53
+ "@einsia/agent-git-linux-arm64": "0.2.14",
54
+ "@einsia/agent-git-darwin-x64": "0.2.14",
55
+ "@einsia/agent-git-darwin-arm64": "0.2.14",
56
+ "@einsia/agent-git-win32-x64": "0.2.14"
57
57
  }
58
58
  }