# Changelog Generation

Generate a changelog entry for a new release by analyzing merged PRs since the last tag.

## Parameters

The user provides:

- **Version number** \-\- e.g., `0.5.3`
- **Additional PRs** \- optionally, PRs not yet merged that should be included

## Step 1: Gather Data

1. Find the previous release tag: `git tag --sort=-version:refname | head -1`
2. List all merge commits since that tag: `git log <tag>..HEAD --merges --format='%s' | grep -v "Merge branch"`
3. Get PR details with: `gh pr list --state merged --base main --search "merged:><tag-date>" --json number,title,author --limit 50`
4. List contributors: `git log <tag>..HEAD --format='%an' --no-merges | sort | uniq -c | sort -rn`

## Step 2: Identify External Contributors

To determine if a contributor is external, check for an `@entire.io` email:

```
1

git log --all --format='%an <%ae>' --author="<name>" | sort -u
```

If they have an `@entire.io` email anywhere in git history, they are **internal**. Only list external contributors in the Thanks section.

Also check the memory file at `memory/project_team_members.md` for known internal/external mappings.

## Step 3: Write the Entry

Insert the new version section at the top of `CHANGELOG.md`, after the header and before the previous version.

### Format

Follow the existing style in CHANGELOG.md exactly:

```
## [X.Y.Z] - YYYY-MM-DD

### Added

- Feature description with context ([#123](https://github.com/entireio/cli/pull/123))

### Changed

- Change description ([#456](https://github.com/entireio/cli/pull/456))

### Fixed

- Bug fix description ([#789](https://github.com/entireio/cli/pull/789))

### Housekeeping

- Maintenance item ([#101](https://github.com/entireio/cli/pull/101))

### Thanks

Thanks to @contributor for description of contribution!
```

### Style Rules

- **Sections**: Added, Changed, Fixed, Housekeeping, Thanks. Omit empty sections.
- **Each bullet**: starts with a dash, concise description, PR link(s) at the end
- **Group related PRs** into a single bullet when they're part of the same feature/fix
- **Work-in-progress features**: call out explicitly, e.g., "Feature X (work in progress): ..."
- **Known limitations**: note inline, e.g., "Note: subagent tracking is not yet supported due to..."
- **Thanks section**: only external contributors. Name what they contributed specifically.
- **Dependency bumps**: group into a single Housekeeping bullet unless a bump fixes a notable bug
- **PR links**: always use full URL format `[#N](https://github.com/entireio/cli/pull/N)`
- **No trailing period** on bullet items
- **Date**: use the current date in YYYY-MM-DD format

### Categorization Guide

- **Added**: new features, new commands, new agent integrations, new CI workflows
- **Changed**: behavior changes, API changes, UX changes, migrations
- **Fixed**: bug fixes, E2E fixes, agent-specific fixes
- **Housekeeping**: dependency bumps, docs, refactors, CI improvements, test improvements

I've added the **0.7.8** changelog entry (dated 2026-06-30). Summary of what I did:

**Scope:** 88 PRs merged since the `v0.7.7` tag. I excluded the 26 PRs already documented in the 0.7.7 entry and the changelog PR itself (#1460), leaving ~60 PRs documented across the standard sections.

**Highlights captured:**

- **Added:**`entire import` (6 agents), `entire repo clone`/`visibility`/mirror flags, control-plane CRUD, checkpoint policy, cross-repo session adoption, multi-agent review profiles, the OpenAI Privacy Filter (#1214), `.worktreeinclude`, and a batch of trail (WIP) subcommands.
- **Changed/Fixed:** compact transcript metadata, versioned User-Agent + git telemetry, core-routing display fixes, the copilot phantom-session fix, ULID checkpoint IDs, and trail WIP fixes.
- **Housekeeping:** the large pluggable-checkpoint-store refactor (9 PRs grouped), CI/E2E work, lint cleanup, and grouped dependency bumps.

**Contributor classification:** I verified emails via git history and GitHub. Newly confirmed **external** contributors went into the Thanks section — @SnowingFox, @suhaanthayyil, @Mohit-Katyal, @ronaldtebrake. `matthiaswenz` resolved to `@entire.io` (internal). I updated `project_team_members.md` with all five new classifications.

Two notes for your review:

- I used **0.7.8** as the version (matches the existing nightly tags). Let me know if you intended a different number.
- I left the changelog uncommitted, consistent with the prior `changelog 0.7.7` PR flow (#1460) where the changelog lands in its own PR.
