# v0.4.3 + changelog skill

`35555f5`→[main](/content/gh/entireio/git-sync/commits/main/index.html)·

## Changes

- .claude/skills/changelog

- ASKILL.md+88
  
- MCHANGELOG.md+20

````
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88

---
name: changelog
description: >
  Generate or update the CHANGELOG.md for a new release version.
  Use when the user says "generate changelog", "update changelog", "write release notes",
  or asks to prepare a changelog for a version like "changelog for 0.5.3".
---

# 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:

```bash
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:

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

### Added

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

### Changed

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

### Fixed

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

### Housekeeping

- Maintenance item ([#101](https://github.com/entireio/git-sync/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/git-sync/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
````

The format is based on [Keep a Changelog](https://keepachangelog.com/),
and this project adheres to [Semantic Versioning](https://semver.org/).

## [0.4.3] - 2026-05-07

### Added

- `--bootstrap-strategy=topo` for merge-heavy repos: walks every reachable commit in deterministic topological order so batched bootstrap can place sub-pack boundaries inside side-branch ancestry ([#41](https://github.com/entireio/git-sync/pull/41))
- `--progress` for live per-side throughput across `sync`, `replicate`, `bootstrap`, and `fetch`, with rolling-window rate, hostname-aware labels, inline pack subdivision, and an end-of-run summary under `--stats` ([#37](https://github.com/entireio/git-sync/pull/37))
- Per-subcommand `--help` after the CLI moved to cobra; bare `git-sync` lists subcommands on stdout instead of printing the full usage block as an error ([#35](https://github.com/entireio/git-sync/pull/35))
- README cover image and embedded demo videos for `git-sync plan` and `git-sync sync` ([#30](https://github.com/entireio/git-sync/pull/30), [#31](https://github.com/entireio/git-sync/pull/31))

### Changed

- Batched bootstrap stream-parses the pack and aborts doomed pushes ~5% in instead of waiting for the body-limit rejection; subdivision converges in 1–2 rounds instead of 6+ on blob-heavy repos ([#40](https://github.com/entireio/git-sync/pull/40))
- Post-rejection subdivision sizes splits from observed pack bytes (4× when the server cut us off mid-stream, 2× otherwise) and ratchets the bytes-per-object estimate up after each 413 ([#38](https://github.com/entireio/git-sync/pull/38))
- Batched bootstrap recombines upcoming checkpoints when consecutive packs underuse the target limit, recovering pack granularity after heavy regions; already-pushed checkpoints are also passed as fetch `have`s on later rounds ([#42](https://github.com/entireio/git-sync/pull/42))
- Relay-only syncs skip the upfront `FetchToStore`; the materialized fallback lazy-fetches the source closure only when force, prune, or divergent refs require it ([#34](https://github.com/entireio/git-sync/pull/34))

### Fixed

- Sync into targets that share reachability with the source: tolerate pruned objects in the materialized walker, accept branch creates and `no-thin` targets in incremental relay, and surface diagnostic headers (`Cf-Ray`, `Server`, `X-Request-Id`) on opaque 5xx ([#33](https://github.com/entireio/git-sync/pull/33))

## [0.4.2] - 2026-04-30

First public release. `git-sync` mirrors refs from a source remote to a target.
