Skip to content

Commit 79978b4

Browse files
committed
Merge feat/entire-review-v2-b1 into feat/entire-review-v2-b2
Resolve Charm v2/shared markdown renderer conflicts and make review synthesis cancellable with a visible generation message. Entire-Checkpoint: 80330c00dfa9
2 parents ed9ff97 + a76d144 commit 79978b4

169 files changed

Lines changed: 15021 additions & 2729 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.entire/settings.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"checkpoint_remote": {
88
"provider": "github",
99
"repo": "entireio/cli-checkpoints"
10-
}
10+
},
11+
"checkpoints_v2": true,
12+
"push_v2_refs": true
1113
}
1214
}

.github/workflows/e2e.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ jobs:
137137
echo "agents=$failed" >> "$GITHUB_OUTPUT"
138138
139139
- name: Notify Slack of E2E failure
140-
uses: slackapi/slack-github-action@03ea5433c137af7c0495bc0cad1af10403fc800c # v3.0.2
140+
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
141141
with:
142142
webhook: ${{ secrets.E2E_SLACK_WEBHOOK_URL }}
143143
webhook-type: incoming-webhook

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ jobs:
109109
if: ${{ always() && needs.release.result == 'failure' }}
110110
steps:
111111
- name: Notify Slack of release failure
112-
uses: slackapi/slack-github-action@03ea5433c137af7c0495bc0cad1af10403fc800c # v3.0.2
112+
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
113113
with:
114114
webhook: ${{ secrets.E2E_SLACK_WEBHOOK_URL }}
115115
webhook-type: incoming-webhook

.golangci.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,16 @@ linters:
106106
- empty
107107
- stdlib
108108
- grpc.DialOption
109+
- github.com/entireio/cli/cmd/entire/cli/summarize.Generator
109110
- github.com/entireio/cli/cmd/entire/cli/agent\..+
110111
- github.com/entireio/cli/cmd/entire/cli/review/types.Process
111112
- github.com/entireio/cli/cmd/entire/cli/review/types.AgentReviewer
113+
- github.com/entireio/cli/cmd/entire/cli/review.SynthesisProvider
112114
- github.com/entireio/cli/cmd/entire/cli/checkpoint.CommittedReader
113115
- github.com/entireio/cli/cmd/entire/cli/strategy.Strategy
114-
- github.com/entireio/cli/cmd/entire/cli/summarize.Generator
115-
- github.com/entireio/cli/cmd/entire/cli/review.SynthesisProvider
116+
- github.com/go-git/go-git/v6/x/plugin.Signer
116117
- github.com/go-git/go-git/v6/plumbing/storer.ReferenceIter
117118
- github.com/go-git/go-git/v6/plumbing.EncodedObject
118-
- github.com/go-git/go-git/v6/x/plugin.Signer
119119
- github.com/go-git/go-git/v6/storage.Storer
120120
- github.com/go-git/go-git/v6/plumbing/storer.EncodedObjectIter
121121
- github.com/entireio/cli/e2e/agents.Session

.goreleaser.yaml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,13 @@ homebrew_casks:
9090
description: "CLI for Entire"
9191
binaries:
9292
- entire
93-
completions:
94-
bash: "completions/entire.bash"
95-
zsh: "completions/entire.zsh"
96-
fish: "completions/entire.fish"
93+
generate_completions_from_executable:
94+
executable: entire
95+
shell_parameter_format: cobra
96+
shells:
97+
- bash
98+
- zsh
99+
- fish
97100
conflicts:
98101
- cask: entire@nightly
99102
skip_upload: auto
@@ -108,10 +111,13 @@ homebrew_casks:
108111
description: "CLI for Entire (nightly build)"
109112
binaries:
110113
- entire
111-
completions:
112-
bash: "completions/entire.bash"
113-
zsh: "completions/entire.zsh"
114-
fish: "completions/entire.fish"
114+
generate_completions_from_executable:
115+
executable: entire
116+
shell_parameter_format: cobra
117+
shells:
118+
- bash
119+
- zsh
120+
- fish
115121
conflicts:
116122
- cask: entire
117123
skip_upload: "{{ if not .Prerelease }}true{{ end }}"

CHANGELOG.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,46 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/),
66
and this project adheres to [Semantic Versioning](https://semver.org/).
77

8+
## [0.6.0] - 2026-05-04
9+
10+
### Added
11+
12+
- Detection of pushes to protected branches, with a clearer warning before the push proceeds ([#1033](https://github.com/entireio/cli/pull/1033))
13+
- Improved auth token management in the CLI ([#1050](https://github.com/entireio/cli/pull/1050))
14+
- `entire explain --generate` now supports external agents for summary generation ([#1044](https://github.com/entireio/cli/pull/1044))
15+
- `entire search` TUI gains a unified palette with the activity view, markdown snippet rendering, and shell completions ([#1053](https://github.com/entireio/cli/pull/1053))
16+
- Homebrew now prompts users to update when a new version is released, and Homebrew cask completions are generated at install time ([#1057](https://github.com/entireio/cli/pull/1057), [#1085](https://github.com/entireio/cli/pull/1085))
17+
- Nested perf spans render in traces for richer debugging ([#1073](https://github.com/entireio/cli/pull/1073))
18+
19+
### Changed
20+
21+
- CLI restructured around `session` / `checkpoint` / `agent` / `auth` / `doctor` command groups ([#1062](https://github.com/entireio/cli/pull/1062))
22+
- Charm TUI stack upgraded to v2; dispatch repo links added to the dispatch wizard ([#1048](https://github.com/entireio/cli/pull/1048))
23+
- TUI navigation help aligned across `entire activity` and `entire search` ([#1058](https://github.com/entireio/cli/pull/1058), [#1064](https://github.com/entireio/cli/pull/1064))
24+
- `entire explain` generated summary is now formatted ([#1078](https://github.com/entireio/cli/pull/1078))
25+
- Auto-update prompt aligned across all installers ([#1083](https://github.com/entireio/cli/pull/1083))
26+
- TTY detection simplified via `testing.Testing()` and OS-level process detachment ([#1029](https://github.com/entireio/cli/pull/1029))
27+
- Switched secret scanning back to betterleaks, with tightened redaction coverage and improved database credential redaction ([#1043](https://github.com/entireio/cli/pull/1043), [#1045](https://github.com/entireio/cli/pull/1045), [#1068](https://github.com/entireio/cli/pull/1068))
28+
- Checkpoints v2 (work in progress): expose CLI version to external agents for compact transcripts; cleaner migration output and completion message; use checkpoint creation time for generation calc with a lower default retention; push v2 refs in parallel ([#1032](https://github.com/entireio/cli/pull/1032), [#1059](https://github.com/entireio/cli/pull/1059), [#1088](https://github.com/entireio/cli/pull/1088), [#1089](https://github.com/entireio/cli/pull/1089), [#1094](https://github.com/entireio/cli/pull/1094))
29+
30+
### Fixed
31+
32+
- Cursor sessions no longer get mis-identified as Claude Code ([#1082](https://github.com/entireio/cli/pull/1082))
33+
- `entire explain` works with partial-clone checkpoint repositories ([#1069](https://github.com/entireio/cli/pull/1069))
34+
- Agent-neutral wording in the `entire explain` empty-state message ([#1086](https://github.com/entireio/cli/pull/1086))
35+
- False PATH conflict detection in the installer ([#1038](https://github.com/entireio/cli/pull/1038))
36+
- Checkpoints v2 migration: preserve attribution metadata; clean up v1-named transcript files on `/full/current`; handle missing v1 sessions; check archived v2 transcripts; correct generation packing ([#1035](https://github.com/entireio/cli/pull/1035), [#1034](https://github.com/entireio/cli/pull/1034), [#1071](https://github.com/entireio/cli/pull/1071), [#1080](https://github.com/entireio/cli/pull/1080), [#1091](https://github.com/entireio/cli/pull/1091))
37+
38+
### Housekeeping
39+
40+
- Centralized TUI keybindings via `bubbles/key` in preparation for Bubble Tea v2 ([#1060](https://github.com/entireio/cli/pull/1060))
41+
- Expanded checkpoints v2 validation coverage and pruned subsumed tests in the strategy package ([#1012](https://github.com/entireio/cli/pull/1012), [#1077](https://github.com/entireio/cli/pull/1077))
42+
- Dependency bumps: go-dependencies group (incl. `posthog-go` 1.12.1 → 1.12.4), `goreleaser/goreleaser-action` 7.1.0 → 7.2.1, `slackapi/slack-github-action` 3.0.1 → 3.0.3 ([#1031](https://github.com/entireio/cli/pull/1031), [#1087](https://github.com/entireio/cli/pull/1087), [#1055](https://github.com/entireio/cli/pull/1055), [#1016](https://github.com/entireio/cli/pull/1016), [#1095](https://github.com/entireio/cli/pull/1095))
43+
44+
### Thanks
45+
46+
Thanks to @KuaaMU for making the `entire explain` empty-state message agent-neutral!
47+
848
## [0.5.6] - 2026-04-24
949

1050
### Added

CLAUDE.md

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ This repo contains the CLI for Entire.
1111
### Commands (`cmd/`)
1212

1313
- `entire/`: Main CLI entry point
14-
- `entire/cli`: CLI utilities and helpers
14+
- `entire/cli`: CLI utilities and helpers (Cobra commands, helpers, group roots)
1515
- `entire/cli/commands`: actual command implementations
1616
- `entire/cli/agent`: agent implementations (Claude Code, Gemini CLI, OpenCode, Cursor, Factory AI Droid, Copilot CLI) - see [Agent Integration Checklist](docs/architecture/agent-integration-checklist.md) and [Agent Implementation Guide](docs/architecture/agent-guide.md)
1717
- `entire/cli/strategy`: strategy implementation (manual-commit) - see section below
@@ -20,6 +20,45 @@ This repo contains the CLI for Entire.
2020
- `entire/cli/integration_test`: integration tests (simulated hooks)
2121
- `e2e/`: E2E tests with real agent calls (see [e2e/README.md](e2e/README.md))
2222

23+
### Command Layout
24+
25+
The CLI is organized around five noun groups plus a small set of top-level
26+
verbs. The groups are the canonical home for each verb; legacy top-level
27+
shortcuts remain functional but hidden, and emit a deprecation hint pointing
28+
at the canonical group form.
29+
30+
- `session` (alias: `sessions`): `list`, `info`, `stop`, `attach`, `resume`, `current`
31+
- `checkpoint` (aliases: `cp`, `checkpoints`): `list`, `explain`, `rewind`, `search`
32+
- `agent`: bare opens the interactive agent selector, plus `list`, `add`, `remove`
33+
- `configure`: bare prints help and a hint pointing at `entire agent`; flags
34+
manage non-agent settings (telemetry, git-hook installation mode, strategy
35+
options, summary provider). Agent CRUD lives under `entire agent`.
36+
- `auth`: `login`, `logout`, `status`, `list`, `revoke`
37+
- `doctor`: bare runs the scan-and-fix flow, plus `trace`, `logs`, `bundle`
38+
39+
Top-level lifecycle and standalone commands: `enable`, `disable`, `status`,
40+
`login`, `logout`, `clean`, `version`, `dispatch`, `activity`, `help`,
41+
`configure`.
42+
43+
Hidden top-level shortcuts (functional, emit a one-line deprecation hint):
44+
`rewind``checkpoint rewind`, `resume``session resume`, `attach`
45+
`session attach`, `explain``checkpoint explain`, `trace``doctor trace`.
46+
Cobra-native aliases (no hint): `sessions``session`, `cp`/`checkpoints`
47+
`checkpoint`. The `search` top-level remains hidden without a hint.
48+
49+
Deprecated top-level alias (functional, prints cobra deprecation message):
50+
`reset``clean`.
51+
52+
Hidden infrastructure commands: `hooks`, `migrate`, `trail`,
53+
`curl-bash-post-install`, `__send_analytics`.
54+
55+
The `hideAsAlias(cmd, canonical)` helper in `cmd/entire/cli/aliascmd.go`
56+
marks a command Hidden and sets cobra's `Deprecated` field so the hint
57+
renders to stderr on every invocation while the command stays functional.
58+
Diagnostic subcommands live alongside `doctor.go` as `doctor_logs.go` and
59+
`doctor_bundle.go`. Group roots and noun-group children live in files
60+
named `<noun>_group.go` and `<noun>_<verb>.go` respectively.
61+
2362
## Tech Stack
2463

2564
- Language: Go 1.26.x
@@ -419,6 +458,8 @@ The manual-commit strategy (`manual_commit*.go`) does not modify the active bran
419458
- `manual_commit_logs.go` - Session log retrieval and session listing
420459
- `manual_commit_hooks.go` - Git hook handlers (prepare-commit-msg, post-commit, post-rewrite, pre-push)
421460
- `manual_commit_reset.go` - Shadow branch reset/cleanup functionality
461+
- `cleanup.go` - Cleanup discovery/deletion, including archived v2 generation retention
462+
- `generation_repair.go` - Archived v2 generation metadata repair from raw transcript timestamps
422463
- `session_state.go` - Package-level session state functions (`LoadSessionState`, `SaveSessionState`, `ListSessionStates`, `FindMostRecentSession`)
423464
- `hooks.go` - Git hook installation
424465

README.md

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ cd your-project && entire enable
7474
entire status
7575
```
7676

77-
After the initial setup, use `entire configure` to add/remove agents or update setup-related options, and use `entire enable` / `entire disable` to toggle Entire on or off.
77+
After the initial setup, use `entire agent` to add or remove agents, `entire configure` to update non-agent settings, and `entire enable` / `entire disable` to toggle Entire on or off.
7878

7979
## Release Channels
8080

@@ -104,7 +104,8 @@ On a repo that has not been enabled yet, `entire enable` runs the initial enable
104104
After setup:
105105

106106
- Use `entire enable` to turn Entire back on if the repo is currently disabled.
107-
- Use `entire configure` to change which agents are installed or to update setup-related settings.
107+
- Use `entire agent` to add or remove agents.
108+
- Use `entire configure` to update non-agent settings (telemetry, hooks, checkpoint remote, summary provider).
108109

109110
The hooks capture session data as you work. Checkpoints are created when you or the agent make a git commit. Your code commits stay clean, Entire never creates commits on your active branch. All session metadata is stored on a separate `entire/checkpoints/v1` branch.
110111

@@ -121,7 +122,7 @@ entire status # Check current session status anytime
121122
If you want to undo some changes and go back to an earlier checkpoint:
122123

123124
```
124-
entire rewind
125+
entire checkpoint rewind
125126
```
126127

127128
This shows all available checkpoints in the current session. Select one to restore your code to that exact state.
@@ -131,7 +132,7 @@ This shows all available checkpoints in the current session. Select one to resto
131132
To restore the latest checkpointed session metadata for a branch:
132133

133134
```
134-
entire resume <branch>
135+
entire session resume <branch>
135136
```
136137

137138
Entire checks out the branch, restores the latest checkpointed session metadata (one or more sessions), and prints command(s) to continue.
@@ -232,16 +233,20 @@ go test -tags=integration ./cmd/entire/cli/integration_test -run TestLogin
232233
| Command | Description |
233234
| ---------------- | ------------------------------------------------------------------------------------------------- |
234235
| `entire clean` | Clean up session data and orphaned Entire data (use `--all` for repo-wide cleanup) |
235-
| `entire configure` | Configure agents and setup options for the current repository |
236+
| `entire agent` | Add, remove, or list agent integrations for the current repository |
237+
| `entire configure` | Update non-agent settings (telemetry, git hook, strategy options, summary provider) |
236238
| `entire disable` | Remove Entire hooks from repository |
237239
| `entire doctor` | Fix or clean up stuck sessions |
238240
| `entire enable` | Enable Entire in your repository |
239-
| `entire explain` | Explain a session or commit |
241+
| `entire checkpoint` | List, explain, rewind, and search checkpoints |
242+
| `entire checkpoint explain` | Explain a session, commit, or checkpoint |
243+
| `entire checkpoint rewind` | Rewind to a previous checkpoint |
240244
| `entire login` | Authenticate the CLI with Entire device auth |
241-
| `entire resume` | Switch to a branch, restore latest checkpointed session metadata, and show command(s) to continue |
242-
| `entire rewind` | Rewind to a previous checkpoint |
245+
| `entire session` | View and manage agent sessions tracked by Entire |
246+
| `entire session resume` | Switch to a branch, restore latest checkpointed session metadata, and show command(s) |
247+
| `entire session attach` | Attach to a previously detached session |
243248
| `entire status` | Show current session info |
244-
| `entire sessions` | View and manage agent sessions tracked by Entire |
249+
| `entire doctor trace` | Show hook performance traces |
245250
| `entire version` | Show Entire CLI version |
246251

247252
### `entire enable` Flags
@@ -272,33 +277,37 @@ entire enable --force
272277
entire enable --local
273278
```
274279

275-
`entire enable` is primarily for turning Entire on. On an unconfigured repo it will also bootstrap setup, but once the repo is already configured, `entire configure` is the clearer command for managing agents and setup options.
280+
`entire enable` is primarily for turning Entire on. On an unconfigured repo it will also bootstrap setup. Use `entire agent` for adding or removing agents, and `entire configure` for non-agent settings.
276281

277282
### `entire configure`
278283

279-
Use `entire configure` after the repo is already set up and you want to change the configuration without framing the action as an enable/disable toggle.
284+
Use `entire configure` to update non-agent settings on a repo that's already set up. Agent installation lives under `entire agent`.
280285

281286
Typical uses:
282287

283-
- Add another agent
284-
- Remove an agent
285-
- Reinstall hooks for selected agents
286-
- Update settings such as `--checkpoint-remote` or `--skip-push-sessions`
288+
- Toggle telemetry
289+
- Reinstall the Entire git hook (`--force`, `--absolute-git-hook-path`)
290+
- Update strategy options such as `--checkpoint-remote` or `--skip-push-sessions`
291+
- Pick a summary provider for `entire explain --generate`
287292

288293
**Examples:**
289294

290295
```bash
291-
# Add or remove agents interactively
296+
# Show help and the hint pointing to 'entire agent'
292297
entire configure
293298

294-
# Install or refresh hooks for one agent non-interactively
295-
entire configure --agent claude-code --force
299+
# Opt out of telemetry
300+
entire configure --telemetry=false
296301

297-
# Update setup settings on an existing repo
302+
# Reinstall the Entire git hook with an absolute binary path
303+
entire configure --absolute-git-hook-path
304+
305+
# Update strategy options on an existing repo
298306
entire configure --checkpoint-remote github:myorg/checkpoints-private
299307

300-
# Remove one agent's hooks
301-
entire configure --remove claude-code
308+
# Add or remove an agent
309+
entire agent add claude-code
310+
entire agent remove claude-code
302311
```
303312

304313
## Configuration

cmd/entire/cli/activity_render.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"strings"
1111
"time"
1212

13-
"github.com/charmbracelet/lipgloss"
13+
"charm.land/lipgloss/v2"
1414
"golang.org/x/term"
1515
)
1616

0 commit comments

Comments
 (0)