@einsia/agent-git 0.2.15 → 0.2.17
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 +87 -0
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,93 @@ its [GitHub Release](https://github.com/Einsia/agent-git/releases), and the
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.2.17] - 2026-10-02
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
- Remote control on the web can send messages into a Claude Code session that is
|
|
16
|
+
running in another process, such as the Claude desktop app or the `claude` CLI,
|
|
17
|
+
through Claude Code's cross-session messaging (Claude Code 2.1.224 or later). The
|
|
18
|
+
running session stays the only writer of its transcript: a message sent during a
|
|
19
|
+
turn is read between tool calls, and an idle session starts a new turn with it.
|
|
20
|
+
In bypass-permissions mode, the device owner's messages go through a relay that
|
|
21
|
+
agit's Claude Code Stop hook (installed by `agit setup`) starts once a turn ends
|
|
22
|
+
in that mode; Claude Code holds everyone else's messages, and the owner's while
|
|
23
|
+
no relay runs, for approval on the machine. Only a workspace owner may send
|
|
24
|
+
messages to a session whose transcript shows it has ever run in
|
|
25
|
+
bypass-permissions mode, or records no permission mode at all.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- `agit push <owner/repo@branch> --to <existing repository>` (and `agit project sync`
|
|
30
|
+
copies of sessions claimed elsewhere) no longer push the source repository's
|
|
31
|
+
`main` file line. The destination keeps its own `main`; before, the copy failed
|
|
32
|
+
as a rejected non-fast-forward, or fast-forwarded the destination's shared files
|
|
33
|
+
to the source's. A destination the push creates still receives the source's `main`.
|
|
34
|
+
- A Claude Code prompt whose record starts with a runtime-injected block, such as the
|
|
35
|
+
worktree reminder the desktop app puts ahead of a session's first message, is
|
|
36
|
+
kept as the turn's prompt instead of being dropped with the injection, whether
|
|
37
|
+
the reminder is a separate text block or leads the same string. Such a session
|
|
38
|
+
lost its opening prompt, and one with a single prompt had no turn to save or
|
|
39
|
+
upload.
|
|
40
|
+
- Remote control publishes a turn that finished while the device's sign-in had
|
|
41
|
+
lapsed as soon as authentication recovers, instead of waiting for the next turn.
|
|
42
|
+
- Opening a device from the web no longer stalls when the device's first discovery
|
|
43
|
+
reply is lost: the controller retries the read-only discovery once.
|
|
44
|
+
|
|
45
|
+
## [0.2.16] - 2026-10-02
|
|
46
|
+
|
|
47
|
+
### Added
|
|
48
|
+
|
|
49
|
+
- Each settled commit records the runtime's own name for the session in
|
|
50
|
+
`session/meta.json` as `title`: the latest Claude Code title (`custom-title`,
|
|
51
|
+
falling back to an older transcript's `summary`) or the Codex thread name from
|
|
52
|
+
`session_index.jsonl`. A rename appears from the next settlement on. The
|
|
53
|
+
`agit: unnamed` and `agit <owner/repo@branch>` placeholders that agit's own
|
|
54
|
+
SessionStart hook assigns are not recorded. The title is protected like other
|
|
55
|
+
metadata observations and is not part of encrypted metadata projection.
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- Privacy processing runs in a bounded local worker. Detected secrets receive
|
|
60
|
+
reversible placeholders when their originals can be saved. Incomplete scans
|
|
61
|
+
keep completed replacements; unavailable storage, scan failures and timeouts
|
|
62
|
+
skip the affected privacy work and let conversation operations continue.
|
|
63
|
+
- Signed-in accounts obtain an automatically generated cloud dictionary key.
|
|
64
|
+
Without a usable key, mappings remain in private local pending storage. Push,
|
|
65
|
+
login and fetch schedule encrypted dictionary synchronization independently;
|
|
66
|
+
another signed-in device can restore mappings after synchronization succeeds.
|
|
67
|
+
- Local default, global user and repository user rules share one policy path.
|
|
68
|
+
Explicit blocks override allows, and allows override heuristic findings.
|
|
69
|
+
Recovery records survive rule changes without becoming permanent block rules.
|
|
70
|
+
- Uploads require no secret-finding review or cloud privacy-policy resolution.
|
|
71
|
+
Existing Git history is preserved. LFS payloads are outside privacy processing;
|
|
72
|
+
their authorization, availability and integrity checks remain in place.
|
|
73
|
+
- This release requires the matching backend update to remove older server
|
|
74
|
+
privacy gates. A skipped local transformation may retain original sensitive
|
|
75
|
+
content, and pending dictionaries become recoverable on other devices only
|
|
76
|
+
after successful encrypted synchronization.
|
|
77
|
+
|
|
78
|
+
- Project Stop hooks start session uploads in a background process and return
|
|
79
|
+
immediately. Project status reports the resulting upload state.
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- Automatic project binding installs hooks for available runtimes that support
|
|
84
|
+
them; other runtime sessions remain publishable through project sync.
|
|
85
|
+
|
|
86
|
+
- Live output preserves every emitted fragment and the remaining stream tail
|
|
87
|
+
when local privacy processing is unavailable.
|
|
88
|
+
- Legacy native message identifiers stored as secret placeholders can be restored
|
|
89
|
+
without changing unmasked carrier identities.
|
|
90
|
+
|
|
91
|
+
- `agit project sync` publishes a session that another repository already claims, such
|
|
92
|
+
as one started from a desktop RC project, as a separate copy of that claim's branch
|
|
93
|
+
in the project repository, instead of failing with "session already belongs to another
|
|
94
|
+
repository". The original claim and the RC project's own publication target are
|
|
95
|
+
unchanged; each later sync refreshes the copy. `--history none` keeps excluding such
|
|
96
|
+
earlier sessions.
|
|
97
|
+
|
|
11
98
|
## [0.2.15] - 2026-10-01
|
|
12
99
|
|
|
13
100
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@einsia/agent-git",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.17",
|
|
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.
|
|
53
|
-
"@einsia/agent-git-linux-arm64": "0.2.
|
|
54
|
-
"@einsia/agent-git-darwin-x64": "0.2.
|
|
55
|
-
"@einsia/agent-git-darwin-arm64": "0.2.
|
|
56
|
-
"@einsia/agent-git-win32-x64": "0.2.
|
|
52
|
+
"@einsia/agent-git-linux-x64": "0.2.17",
|
|
53
|
+
"@einsia/agent-git-linux-arm64": "0.2.17",
|
|
54
|
+
"@einsia/agent-git-darwin-x64": "0.2.17",
|
|
55
|
+
"@einsia/agent-git-darwin-arm64": "0.2.17",
|
|
56
|
+
"@einsia/agent-git-win32-x64": "0.2.17"
|
|
57
57
|
}
|
|
58
58
|
}
|