diff --git a/CHANGES.md b/CHANGES.md
index f6096ea..be16b62 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,23 @@
 # Changelog
 
+## 0.2.2 (2026-08-09)
+
+### pygittools
+
+- Add tag support to the official task schema.
+- Fix `pgt` worktree removals by using `index.remove` instead of `index.add`.
+- Split MCP-related dependencies into a separate `pygittools-mcp` package.
+
+### pygitweb
+
+- Add per-project and per-branch read/write permissions for repository access.
+- Display a user’s preferred username (or configured email) instead of a raw user ID.
+- Move the `pygitweb_pytesthtml` plugin into a separate project to decouple testing utilities.
+
+### Tests and docs
+
+- Improve OAuth2 coverage in `pygitweb` by mocking an identity provider.
+
 ## 0.2.1 (2026-07-26)
 
 ### pygittools
diff --git a/pygittools-mcp/pyproject.toml b/pygittools-mcp/pyproject.toml
index f9b421c..7360c9b 100644
--- a/pygittools-mcp/pyproject.toml
+++ b/pygittools-mcp/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
 
 [project]
 name = "pygittools-mcp"
-version = "0.1.0"
+version = "0.2.1"
 description = "MCP server exposing pygittools task boards to AI clients."
 requires-python = ">=3.11"
 dependencies = [
diff --git a/pygittools/pyproject.toml b/pygittools/pyproject.toml
index 23ef0e5..0ee04d0 100644
--- a/pygittools/pyproject.toml
+++ b/pygittools/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
 
 [project]
 name = "pygittools"
-version = "0.2.1"
+version = "0.2.2"
 description = "Hooks and task storage in Git"
 readme = "README.md"
 license = "MIT"
diff --git a/pygitweb/pyproject.toml b/pygitweb/pyproject.toml
index 41273fb..e9eb680 100644
--- a/pygitweb/pyproject.toml
+++ b/pygitweb/pyproject.toml
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
 
 [project]
 name = "pygitweb"
-version = "0.2.1"
+version = "0.2.2"
 description = "Gitweb reimplementation with FastAPI and Pygit2"
 readme = "README.md"
 license = "MIT"
diff --git a/uv.lock b/uv.lock
index 2da9452..68286c1 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1152,7 +1152,7 @@ wheels = [
 
 [[package]]
 name = "pygittools"
-version = "0.2.1"
+version = "0.2.2"
 source = { editable = "pygittools" }
 dependencies = [
     { name = "pygit2" },
@@ -1167,7 +1167,7 @@ requires-dist = [
 
 [[package]]
 name = "pygittools-mcp"
-version = "0.1.0"
+version = "0.2.1"
 source = { editable = "pygittools-mcp" }
 dependencies = [
     { name = "mcp" },
@@ -1182,7 +1182,7 @@ requires-dist = [
 
 [[package]]
 name = "pygitweb"
-version = "0.2.1"
+version = "0.2.2"
 source = { editable = "pygitweb" }
 dependencies = [
     { name = "fastapi", extra = ["standard-no-fastapi-cloud-cli"] },
