docs: track @since maintenance in the release process Note in the Version + SONAME review step that the same exported-symbol, enum, and macro diff must also drive the Doxygen @since tags in include/jwt.h, so any API new at a release is annotated with the version that introduced it. Calls out the asymmetry: new enum values and #cmakedefine macros are not linker symbols (no SONAME-triple change) but still need @since. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Ben Collins <bcollins@libjwt.io>
diff --git a/CLAUDE.md b/CLAUDE.md index fa63bd5..c6632c0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md
@@ -41,6 +41,16 @@ - Any symbol removed or changed -> `current++, revision=0, age=0` (SONAME-major break). SONAME major = `current - age`, and has stayed `14` across all of 3.x. + The **same** symbol/enum/macro diff also drives the Doxygen `@since` tags in + `include/jwt.h` — maintain them in this same review (the baseline + `@since 3.0.0`..`3.5.0` pass was PR #305). Anything new at the release — a + function, typedef/enum/struct, enum value, documented macro, or + `*_freep`/`*_auto_t` helper — must carry `@since X.Y.Z` for the version being + released. Note the asymmetry with the triple: new enum values and `#cmakedefine` + macros are **not** linker symbols (so they don't move `current`/`age`) but they + **still** need `@since` — e.g. v3.5.0's `JWT_ALG_ML_DSA_*` / `JWK_KEY_TYPE_AKP` + are `@since 3.5.0` despite the revision-only bump. + 2. **Branch + commit** — `release-X.Y.Z` off master; edit **only** `LibJWTVersions.cmake` (plus any now-stale doc note, as v3.4.0 dropped the "v3 overhaul" warning). `git commit -s` titled `Release vX.Y.Z` with a body documenting