# Changelog

## 0.1.0

Initial Tagfold release package.

### What it does

A page under **Project Settings** lists project work item tag definitions and
visible work item usage counts. It suggests similar tags and provides reviewed
rename, merge and named-delete actions. Merge receipts report per-item outcomes;
cancellation stops further processing but does not undo completed writes. The
extension reads and writes through Azure DevOps, can download `tags.csv` and
merge receipts to your device, and does not send product telemetry to Bacumi.

### Highlights

- **Duplicate detection with four reasons**: differ only by case, by a
  separator (`tech-debt` / `techdebt`), a likely typo, or just look
  similar — each group suggesting which tag to keep.
- **Group merge**: merge several source tags into one target in a single
  job, with live counters as it runs and one combined receipt when it's
  done — not one run per tag.
- **Merge safety net**: a live recount, a sample of affected items, and a
  note about revisions before every merge, with a typed confirmation above
  500 items.
- **Merge receipt:** a downloadable CSV records work item IDs, source and
  target tag names, results and error details. It can report updated, unchanged,
  failed, not-started and outcome-unknown items; it is not an undo file.
- **Cancellation:** stops further processing. Confirmed writes remain, and a
  dispatched write whose response is lost may have an unknown outcome. Inspect
  current tags and the receipt before retrying; there is no automatic rollback.
- **Bulk cleanup:** unavailable in this release. A zero visible work item count
  does not prove a shared tag definition is unused; it may still be used by
  work items the user cannot read or by pull request labels.
- **Inline rename** with live validation; renaming to a name that already
  exists offers "merge instead?" rather than failing.
- **CSV export** of the full tag list with counts.
- Tag counts show "unknown" instead of a misleading zero while loading, and
  merge and delete reviews show the currently observed scope before writing.
- Merge uses bounded rechecks and keeps source definitions. Failed, unreadable
  or unobserved work items can retain their source tags; use the receipt and
  current organization state to assess coverage before retrying.
- Merge writes retry automatically when Azure DevOps is busy, and back off
  their own pace rather than pushing through a rate limit.
- Clear loading, empty-project, no-matching-filter, read-only (no manage
  permission) and per-tag count-error states.
- Accessible: keyboard support throughout, live-region status updates, and
  visible focus in Windows high-contrast mode.
