Skip to content

chore: release 3.3.0, and put 3.2.0's notes back - #23

Merged
jlc488 merged 1 commit into
mainfrom
chore/release-3.3.0
Aug 8, 2026
Merged

chore: release 3.3.0, and put 3.2.0's notes back#23
jlc488 merged 1 commit into
mainfrom
chore/release-3.3.0

Conversation

@jlc488

@jlc488 jlc488 commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

먼저, 제 실수를 정정합니다

3.2.0은 이미 출시돼 있었습니다.

GitHub Release  v3.2.0  draft=false  2026-07-30
Maven Central   3.2.0   게시됨
tag v3.2.0   →  c99bb0e

제가 gradle.propertiesVERSION=3.2.0-SNAPSHOT을 "3.2.0 미출시"로 읽었는데, 그건 다음 개발 버전을 가리키는 관례입니다. 태그와 Maven Central을 먼저 확인했어야 했습니다. 그 오독 위에서 보안 수정 2건과 릴리스 커밋이 main에 올라갔습니다.

잘못 나간 것은 없습니다. v3.2.0 태그를 옮기지 않았으므로 배포된 아티팩트와 태그는 여전히 일치합니다. 되돌려야 했던 건 CHANGELOG뿐입니다.

이 PR이 하는 일

1. [3.2.0] 섹션을 출시본 그대로 복원 — 세 파일 모두 git show v3.2.0:바이트 단위 동일 검증했습니다.

OK   CHANGELOG.md
OK   docs/changelog.md
OK   docs/changelog.ko.md

이미 Maven Central에 나간 버전의 노트를 고치면 아티팩트와 changelog가 어긋납니다 — 애초의 실수보다 나쁩니다.

2. 새 항목 2건을 [3.3.0]으로 이동 — 리다이렉트 홉 정합성, 스캐너 스킴 커버리지.

3. 버전 참조 3.3.0으로gradle.properties, README 양어, installation 가이드 양어, index 양어. changelog 이력은 손대지 않았습니다.

왜 3.2.1이 아니라 3.3.0인가

  • RedirectGuard신규 공개 API
  • SsrfGuardedHttpClient가 리다이렉트를 스스로 따라가는 delegate를 거부Redirect.NORMAL을 넘기던 사람은 깨집니다

그 호출부는 지금까지 홉 검증을 하나도 못 받고 있었습니다. 그러니 이 깨짐은 수정이 드러난 것이지만, 어쨌든 깨짐이고 패치 번호는 그걸 숨깁니다.

major를 안 올리는 건 org 규칙상 major가 Spring Boot major를 뜻하기 때문입니다. 대신 Migration 섹션이 그 무게를 집니다newHttpClient()/newBuilder().build()는 이미 NEVER라 대부분 영향 없고, NORMAL/ALWAYS를 넘기던 코드는 그것만 빼면 된다고 적었습니다.

검증

./gradlew build BUILD SUCCESSFUL, 239 tests, failures=0.

머지 후 v3.3.0 태그 → Maven Central + GitHub Release.

3.2.0 was already released — GitHub Release dated 2026-07-30, artifacts
on Maven Central, tag v3.2.0 pointing at c99bb0e. I had read
`VERSION=3.2.0-SNAPSHOT` in gradle.properties as "3.2.0 is unreleased",
when it is the ordinary marker for the next development version. Two
security fixes and a release commit went onto main under that
misreading.

Nothing shipped wrongly: the v3.2.0 tag was never moved, so the published
artifact and its tag still agree. What had to be undone was the
changelog. The [3.2.0] section in all three files is restored to exactly
what shipped — verified byte-identical against `git show v3.2.0:` — and
the two new entries move into a new [3.3.0].

3.3.0 rather than 3.2.1: RedirectGuard is new public API, and
SsrfGuardedHttpClient now REFUSES a delegate that follows redirects
itself, which breaks anyone who passed Redirect.NORMAL. Those callers
were getting no hop validation at all, so the break is the fix becoming
visible — but it is a break, and a patch number would hide it. Major
stays 3 because in this org the library major tracks the Spring Boot
major, so the migration note carries the weight instead.

Version references bumped in gradle.properties, both READMEs, both
installation guides and both index pages. Changelog history untouched.

Verified: ./gradlew build BUILD SUCCESSFUL, 239 tests, failures=0.
@jlc488
jlc488 merged commit 786d1f4 into main Aug 8, 2026
1 check passed
@jlc488
jlc488 deleted the chore/release-3.3.0 branch August 8, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant