콘텐츠로 이동

변경 내역

Continuum Router의 모든 주요 변경 사항은 이 파일에 문서화되어 있습니다.

형식은 Keep a Changelog를 기반으로 하며, 이 프로젝트는 Semantic Versioning을 따릅니다.

[0.22.0] - 2025-12-19

추가됨

  • 사전 빌드 바이너리 Docker 지원 - GitHub Releases에서 사전 빌드된 바이너리를 다운로드하는 Dockerfile 및 Dockerfile.alpine 추가 (#189)
    • 일반 사용을 위한 Debian Bookworm 기반 이미지 (~50MB)
    • 최소 배포를 위한 Alpine 3.20 기반 이미지 (~10MB)
    • TARGETARCH를 사용한 멀티 아키텍처 지원 (linux/amd64, linux/arm64)
    • 릴리스 버전 선택을 위한 VERSION 빌드 인자
    • 보안을 위한 비루트 사용자 실행
    • 이미지 메타데이터를 위한 OCI 라벨
  • 컨테이너 헬스 체크 CLI - 컨테이너 오케스트레이션을 위한 --health-check CLI 인자 구현 (#189)
    • 서버가 정상이면 종료 코드 0, 비정상이면 1 반환
    • 사용자 정의 헬스 엔드포인트를 위한 선택적 --health-check-url
    • 적절한 IPv6 주소 처리
    • 기본 5초 타임아웃
  • Docker Compose 빠른 시작 - 간편한 배포를 위한 docker-compose.yml 추가 (#189)
    • 설정을 위한 볼륨 마운트
    • 환경 변수 지원 (RUST_LOG)
    • 리소스 제한 및 헬스 체크
  • 자동화된 Docker 이미지 퍼블리싱 - 릴리스 워크플로우에 Docker 빌드 및 ghcr.io 푸시 추가 (#189)
    • 바이너리 릴리스 후 Debian 및 Alpine 이미지 빌드
    • 멀티 플랫폼 지원 (linux/amd64, linux/arm64)
    • semver로 자동 태깅 (VERSION, MAJOR.MINOR, latest)
    • Alpine 이미지는 -alpine 접미사로 태그
    • 더 빠른 빌드를 위한 GitHub Actions 캐시
  • MkDocs 문서 웹사이트 - Material 테마로 종합적인 문서 사이트 구축 (#183)
    • 시작하기, 기능, 운영, 개발 섹션이 있는 전체 네비게이션 구조
    • GitHub Pages 자동 배포를 위한 GitHub Actions 워크플로우
    • 사용자 정의 스타일시트 및 테마 구성
  • 한국어 문서 번역 - 모든 문서의 완전한 한국어 현지화 (#190)
    • 20개 문서 파일 모두 한국어로 번역
    • 네비게이션에 언어 전환기 (영어/한국어)
    • GitHub Actions 워크플로우에서 다국어 빌드
  • 의존성 보안 감사 - 취약점 스캔을 위한 cargo-deny 추가 (#192)
    • CI 워크플로우에서 보안 권고 확인
    • 라이선스 준수 검증
    • 의존성 소스 검증
  • Dependabot 통합 - Cargo 및 GitHub Actions 자동 의존성 업데이트 (#192)
  • 보안 정책 - 취약점 보고 프로세스를 포함한 종합적인 SECURITY.md 추가 (#191)

변경됨

  • 고아 아키텍처 문서를 MkDocs 사이트에 통합 (#186)
  • URL 친화적 파일명을 위해 문서 파일명을 소문자 케밥케이스로 변경 (#186)
  • 다양한 GitHub Actions를 최신 버전으로 업데이트 (checkout@v6, setup-python@v6, upload-artifact@v6 등)

수정됨

  • 헬스 체크 응답 검증 로직 버그 (연산자 우선순위 문제)
  • 설정 오류를 조용히 숨기던 주소 파싱 폴백
  • 헬스 체크에서 IPv6 주소 형식 지정 (이제 브라켓 표기법을 올바르게 사용)

보안

  • reqwest 0.11→0.12, prometheus 0.13→0.14, validator 0.18→0.20 업데이트
  • 더 나은 유지보수를 위해 dotenv를 dotenvy로 교체
  • 빌드 컨텍스트에서 민감한 파일 제외를 위한 .dockerignore 추가

[0.21.0] - 2025-12-19

추가됨

  • Gemini 3 Flash Preview 모델 - gemini-3-flash-preview 모델 지원 추가 (#168)
  • 백엔드 오류 전달 - 4xx 응답에 대해 백엔드의 상세 오류 메시지 전달 (#177)
    • OpenAI, Anthropic, Gemini 백엔드의 원본 오류 메시지 파싱 및 전달
    • 가능한 경우 param 필드 보존 (잘못된 파라미터 오류에 유용)
    • 백엔드 응답 파싱 불가 시 일반 오류 메시지로 폴백
    • OpenAI 호환 오류 형식 유지
    • 모든 백엔드 형식에 대한 오류 파싱 단위 테스트 포함
  • API 엔드포인트 기본 인증 모드 - API 엔드포인트에 대한 설정 가능한 인증 적용 (#173)
    • api_keys 설정에 새 mode 필드: permissive (기본값) 또는 blocking
    • permissive 모드: API 키 없는 요청 허용 (하위 호환성 유지)
    • blocking 모드: 인증된 요청만 처리, 미인증 요청은 401 수신
    • 보호 엔드포인트: /v1/chat/completions, /v1/completions, /v1/responses, /v1/images/*, /v1/models
    • 헬스 엔드포인트 (/health, /healthz)는 항상 인증 없이 접근 가능
    • 인증 모드 변경에 대한 핫 리로드 지원
    • 두 모드에 대한 포괄적인 통합 테스트
    • API.md, configuration.md, manpage 문서 업데이트

수정됨

  • UTF-8 멀티바이트 문자 손상 - 스트리밍 응답에서 UTF-8 멀티바이트 문자 손상 처리 (#179)
  • GPT Image response_format - GPT Image 모델에서 response_format 파라미터 제거 (#176)
  • 자동 검색 검증 - Anthropic을 제외한 모든 백엔드에 대해 자동 검색 허용 (#172)

변경됨

  • architecture.md 업데이트 및 문서 오류 수정 (#167, #169)
  • AGENTS.md 추가 및 CLAUDE.md 연결

[0.20.0] - 2025-12-18

추가됨

  • Gemini 이미지 변형 지원 - Gemini (nano-banana) 모델에 대한 이미지 변형 지원 추가 (#165)
  • Gemini 이미지 편집 지원 - Gemini (nano-banana) 모델에 대한 제한적 이미지 편집 지원 구현 (#164)
  • 향상된 이미지 생성 - 스트리밍 및 GPT Image 기능으로 /v1/images/generations 향상 (#161)
  • GPT Image 1.5 모델 - gpt-image-1.5 모델 지원 추가 (#159)
  • 이미지 변형 엔드포인트 - 이미지 변형을 위한 /v1/images/variations 엔드포인트 구현 (#155)
  • 이미지 편집 엔드포인트 - 이미지 편집(인페인팅)을 위한 /v1/images/edits 엔드포인트 구현 (#156)
    • 완전한 OpenAI Images Edit API 호환성
    • GPT Image 모델 지원: gpt-image-1, gpt-image-1-mini, gpt-image-1.5 (권장)
    • dall-e-2 모델 레거시 지원
    • 공유 유틸리티를 사용한 multipart form-data 파싱
    • PNG 이미지 검증 (형식, 크기, 정사각형 치수)
    • 선택적 마스크 검증 (원본 이미지와 치수 일치)
  • 공유 이미지 유틸리티 - 이미지 편집/변형 엔드포인트를 위한 공유 유틸리티 구현 (#154)
  • 외부 프롬프트 파일 - 외부 Markdown 파일에서 시스템 프롬프트 로딩 지원 (#146)
    • BackendPromptConfigModelPromptConfig에 새 prompt_file 필드
    • GlobalPromptConfig에 새 default_fileprompts_dir 필드
    • 경로 순회 공격 방지를 위한 안전한 경로 검증
    • 프롬프트 파일 관리를 위한 REST API 엔드포인트
    • 크기 제한이 있는 파일 캐싱 (최대 100개 항목, 총 50MB)
    • 프롬프트 파일에 대한 핫 리로드 지원
  • Solar Open 100B 모델 - Solar Open 100B 모델 메타데이터 추가
  • 자동 모델 검색 - 모델이 명시적으로 설정되지 않은 경우 백엔드가 /v1/models API에서 자동으로 사용 가능한 모델 검색 (#142)
    • OpenAI, Gemini, vLLM 백엔드가 자동 검색 지원
    • Ollama 백엔드는 vLLM의 검색 메커니즘 사용 (OpenAI 호환 API)
    • 10초 타임아웃으로 시작 차단 방지
    • 검색 실패 시 하드코딩된 기본값으로 폴백

변경됨

  • BackendFactory::create_backend_from_typed_config()가 비동기 모델 검색을 지원하기 위해 async로 변경
  • OpenAI, Gemini, vLLM의 백엔드 from_config() 메서드가 async로 변경

보안

  • API 키 수정 - 자격 증명 노출 방지를 위한 API 키 수정 구현 (#150)

성능

  • 바이너리 크기 최적화 - 릴리스 바이너리 크기를 20MB에서 6MB로 최적화 (70% 감소) (#144)

리팩토링

  • 이슈 #147의 우선순위 2를 위한 대용량 파일 분할
  • 각 파일을 500줄 미만으로 유지하기 위한 대용량 파일 분할 (#148)

[0.19.0] - 2025-12-13

추가됨

  • 런타임 설정 관리 API - 런타임에 설정을 보고 수정하기 위한 포괄적인 REST API (#139)
    • 설정 쿼리 API:
      • GET /admin/config/full - 민감 정보가 마스킹된 전체 설정 조회
      • GET /admin/config/sections - 15개 설정 섹션 전체 목록
      • GET /admin/config/{section} - 특정 섹션 설정 조회
      • GET /admin/config/schema - 클라이언트 측 검증을 위한 JSON Schema
    • 설정 수정 API:
      • PUT /admin/config/{section} - 섹션 설정 교체
      • PATCH /admin/config/{section} - 부분 업데이트 (JSON merge patch)
      • POST /admin/config/validate - 적용 전 설정 검증
      • POST /admin/config/apply - 핫 리로드로 설정 적용
    • 설정 저장/복원 API:
      • POST /admin/config/export - 설정 내보내기 (YAML/JSON/TOML)
      • POST /admin/config/import - 설정 가져오기 및 적용
      • GET /admin/config/history - 설정 변경 이력 조회
      • POST /admin/config/rollback/{version} - 이전 버전으로 롤백
    • 백엔드 관리 API:
      • POST /admin/backends - 새 백엔드 추가
      • GET /admin/backends/{name} - 백엔드 설정 조회
      • PUT /admin/backends/{name} - 백엔드 설정 업데이트
      • DELETE /admin/backends/{name} - 백엔드 제거
      • PUT /admin/backends/{name}/weight - 백엔드 가중치 업데이트
      • PUT /admin/backends/{name}/models - 백엔드 모델 목록 업데이트
    • API 키, 비밀번호, 토큰에 대한 민감 정보 마스킹
    • 모든 설정 섹션에 대한 JSON Schema 생성
    • 설정 이력 추적 (최대 100개 항목, 설정 가능)
    • 크기 기반 퇴거를 통한 메모리 효율적 이력 저장 (10MB 제한)
    • 스레드 안전성을 위한 AtomicU64 사용 원자적 버전 카운터
    • 오류 코드가 포함된 구조화된 오류 응답
  • Admin REST API 문서 - 포괄적인 개발자 가이드 (docs/admin-api.md)
    • 요청/응답 예제가 포함된 완전한 API 레퍼런스
    • Python, JavaScript/TypeScript, Go용 클라이언트 SDK 예제
    • 모범 사례 및 보안 고려사항
  • 통합 테스트 - 설정 관리 API 엔드포인트에 대한 33개 통합 테스트

수정됨

  • 심각: 설정 변경이 이제 실행 중인 시스템에 실제로 적용됨
  • 심각: JSON 문자열 저장 및 크기 기반 퇴거로 메모리 증가 제어
  • 높음: 입력 검증 추가 (1MB 콘텐츠 제한, 32레벨 중첩 깊이)
  • 높음: 민감 내보내기에 권한 상승 및 감사 로깅 필요
  • 높음: 포괄적인 민감 필드 감지 (30개 이상 패턴)
  • 중간: 검증 함수가 이제 실제 검증 수행
  • 중간: 버전 카운터에 AtomicU64로 경쟁 조건 수정
  • 중간: 허용된 백엔드 이름 문자에서 콜론 제거
  • 중간: 오류 코드가 포함된 구조화된 오류 응답
  • 중간: 초기화 플래그로 중복 이력 항목 방지
  • 낮음: 더 나은 성능을 위해 불필요한 클론 제거
  • 낮음: AdminConfig를 통해 제한 설정 가능
  • 낮음: 중복 검증 로직 리팩토링
  • 낮음: 엣지 케이스에 대한 테스트 커버리지 개선

변경됨

  • 모든 가이드에서 설정 관리 API 문서 향상
  • 새 관리 엔드포인트로 manpage 업데이트
  • 포괄적인 설정 관리 API 섹션으로 API.md 업데이트

[0.18.0] - 2025-12-13

추가됨

  • API 키별 속도 제한 - API 키별 속도 제한 구현 (#137)
    • 각 API 키에 대한 개별 속도 제한
    • 키당 분당 요청 수 설정 가능
  • API 키 관리 시스템 - 포괄적인 API 키 관리 및 설정 시스템
    • 다중 키 소스: 설정 파일, 외부 파일, 환경 변수
    • 키 속성: 스코프, 속도 제한, 만료, 활성화 상태
    • 키 설정 변경에 대한 핫 리로드 지원
  • Files API 인증 - Files API에 대한 인증 및 권한 부여 구현 (#131)
    • 파일 작업에 대한 API 키 인증
    • 파일 소유권 적용
    • 모든 파일에 대한 관리자 접근 제어
  • 런타임 설정 핫 리로드 - 런타임 설정 업데이트를 위한 완전한 핫 리로드 기능 (#130)
    • 자동 설정 파일 감시
    • 분류된 업데이트: 즉시, 점진적, 재시작 필요

변경됨

  • 모듈식 구조로 대규모 리팩토링
    • CLI 및 앱 유틸리티를 모듈식 구조로 추출 (#132)
    • converter.rs를 모듈식 구조로 분할 (#132)
    • 대용량 소스 파일을 모듈식 구조로 분할
    • findgeminibackend 함수 로직 통합
  • 리팩토링된 모듈 구조를 반영하도록 architecture.md 업데이트

수정됨

  • admin/metrics/files 엔드포인트에 ConnectInfo 확장 추가
  • API 키 관리의 보안 취약점 해결
  • API 키 관리의 코드 품질 문제 해결

문서

  • API 키 관리 문서 추가
  • 포괄적인 API 키 관리 테스트 추가

[0.17.0] - 2025-12-12

추가됨

  • Anthropic 백엔드 파일 콘텐츠 변환 - 라우터에 업로드된 파일을 이제 Anthropic 백엔드와 함께 사용 가능 (#126)
    • 파일 콘텐츠를 Anthropic 메시지 형식으로 자동 변환
    • base64 인코딩을 사용한 텍스트 및 문서 파일 지원
    • 파일 해결 미들웨어와 원활한 통합
  • Gemini 백엔드 파일 콘텐츠 변환 - 라우터에 업로드된 파일을 이제 Gemini 백엔드와 함께 사용 가능 (#127)
    • 파일 콘텐츠를 Gemini API 형식으로 자동 변환
    • 적절한 MIME 타입 처리를 통한 인라인 데이터 지원
    • 크로스 프로바이더 파일 지원으로 한 번 업로드한 파일을 모든 백엔드에서 사용 가능

수정됨

  • 스트리밍 파일 업로드 - 메모리 소진 방지를 위한 스트리밍 파일 업로드 구현 (#128)
    • 대용량 파일 업로드가 더 이상 전체 파일을 메모리에 로드하지 않음
    • 효율적인 메모리 사용을 위한 스트리밍 처리
    • 대용량 파일 업로드 시 OOM 오류 방지

변경됨

  • 없음

[0.16.0] - 2025-12-12

추가됨

  • OpenAI 호환 Files API - OpenAI Files API 엔드포인트 전체 구현 (#111)
    • multipart/form-data 지원 파일 업로드
    • 파일 목록, 조회, 삭제
    • 파일 콘텐츠 다운로드
    • 용도 지원: fine-tune, batch, assistants, user_data
  • 파일 해결 미들웨어 - 채팅 완료를 위한 자동 파일 콘텐츠 주입 (#120)
    • 파일 ID로 채팅 메시지에서 업로드된 파일 참조
    • 채팅 컨텍스트에 자동 콘텐츠 주입
  • 영속적 메타데이터 스토리지 - 서버 재시작 후에도 파일 메타데이터 유지 (#125)
    • 데이터 파일과 함께 저장되는 사이드카 JSON 파일 (.meta.json)
    • 파일에서 메타데이터 재빌드를 통한 시작 시 자동 복구
    • 고아 파일 감지 및 선택적 정리
  • OpenAI 백엔드 파일 처리 - 로컬에 업로드된 파일이 필요시 OpenAI로 전달됨 (#121, #122)
  • GPT-5.2 모델 지원 - OpenAI 백엔드에 GPT-5.2 모델 메타데이터 추가 (#124)
  • 서킷 브레이커 패턴 - 서킷 브레이커를 통한 자동 백엔드 장애 조치 (#93)
    • 상태: Closed → Open → Half-Open → Closed 사이클
    • 설정 가능한 실패 임계값 및 복구 타임아웃
    • 백엔드별 서킷 브레이커 인스턴스
    • 서킷 브레이커 상태 및 제어를 위한 관리자 엔드포인트
  • 관리자 엔드포인트 인증 - 인증 및 감사 로깅으로 관리자 엔드포인트 보안
  • 설정 가능한 폴백 모델 - 모델 사용 불가 시나리오에 대한 자동 모델 폴백 (#50)
    • 기본 모델에 대한 폴백 체인 정의 (예: gpt-4o → gpt-4-turbo → gpt-3.5-turbo)
    • 크로스 프로바이더 폴백 지원 (예: OpenAI → Anthropic)
    • 프로바이더 간 자동 파라미터 변환
    • 계층화된 장애 조치 보호를 위한 서킷 브레이커와 통합
    • 설정 가능한 트리거 조건 (오류 코드, 타임아웃, 연결 오류, 서킷 브레이커 오픈)
    • 폴백 사용 시 응답 헤더 표시 (X-Fallback-Used, X-Original-Model, X-Fallback-Model)
    • 폴백 모니터링을 위한 Prometheus 메트릭
  • Pre-commit Hook - 커밋 전 자동 코드 포맷팅 및 린팅

수정됨

  • 폴백 체인 검증 - 체인 검증을 Validate derive에 통합
  • 폴백 성능 - 폴백 체인 순회를 위한 인덱스 기반 조회 사용
  • 락 경합 - 스냅샷 패턴으로 FallbackService의 락 경합 감소
  • 보안 - 폴백 오류 헤더 및 메트릭 레이블 살균
  • 서킷 브레이커 보안 - 관리자 엔드포인트에 백엔드 이름 검증 추가
  • 스레드 안전성 - half-open 요청 제한을 위한 스레드 안전 CAS 루프 사용

변경됨

  • 문서 업데이트 - 폴백 설정, 서킷 브레이커, Files API에 대한 포괄적인 문서
  • 코드 품질 - clippy 경고 수정 및 코드 포맷팅
  • Pre-commit Hook 위치 - pre-commit hook을 .githooks 디렉토리로 이동

[0.15.0] - 2025-12-05

추가됨

  • Nano Banana API 지원 - OpenAI 호환 인터페이스로 Gemini 이미지 생성 API 지원 추가 (#102)
    • nano-banana 및 nano-banana-pro 모델 지원
    • OpenAI Images API와 Gemini Imagen API 간 자동 형식 변환
  • /v1/models 엔드포인트 분리 - 표준 경량 응답 vs 확장 메타데이터 응답 (#101)
    • /v1/models는 더 나은 성능을 위해 경량 응답 반환
    • /v1/models?extended=true는 상세 모델 정보를 위한 전체 메타데이터 반환

변경됨

  • StreamService 추출 - 모듈식 아키텍처를 위해 스트리밍 핸들러 로직을 전용 StreamService로 추출 (#106)
  • 재시도 로직 중복 제거 - proxy.rs에서 재시도 로직 코드 통합 (#103)

수정됨

  • 적절한 오류 전파 - HttpClientFactory에서 .expect() 패닉을 적절한 오류 전파로 교체 (#104)

성능

  • LRU 캐시 최적화 - 캐시 조회에 쓰기 락 대신 읽기 락 사용 (#105)

[0.14.2] - 2025-12-05

추가됨

  • 토큰 사용량 로깅 - 요청 완료 시 입력/출력 토큰 수 로깅 (#92)
  • 리포트 제외 목록 - 리포트에 대한 제외 목록 설정 추가

변경됨

  • 없음

수정됨

  • 없음

[0.14.1] - 2025-12-05

추가됨

  • TTFB 벤치마크 타겟 - Makefile에 TTFB 벤치마크 타겟 추가
  • 연결 사전 준비 - Anthropic, Gemini, OpenAI 백엔드에 대한 연결 사전 준비 추가

수정됨

  • Anthropic 백엔드 TTFT - 연결 풀링 및 HTTP/2로 Anthropic 백엔드 TTFT 최적화 (#90)
  • Gemini 백엔드 TTFT - 연결 풀링 및 HTTP/2로 Gemini 백엔드 TTFT 최적화 (#88)
  • 모델 메타데이터 별칭 매칭 - 모델 메타데이터 조회에서 별칭에 기본 이름 폴백 매칭 적용 (#84)

변경됨

  • 공유 HTTP 클라이언트 - HealthChecker와 요청 핸들러 간 HTTP 클라이언트 공유
  • 아키텍처 및 성능 문서 업데이트

[0.14.0] - 2025-12-04

추가됨

  • 전역 시스템 프롬프트 주입 - 라우터 전역 시스템 프롬프트 주입 추가 (#82)

수정됨

  • GitHub Actions - 더 이상 사용되지 않는 actions-rs/toolchain을 dtolnay/rust-toolchain으로 교체
  • macOS ARM64 빌드 - macOS ARM64 ring 빌드를 위한 RUSTFLAGS 추가
  • musl 빌드 - musl 크로스 컴파일 지원을 위해 rustls-tls로 전환

변경됨

  • GitHub Action runner 업데이트

[0.13.0] - 2025-12-04

추가됨

  • OpenAI Responses API (/v1/responses) - OpenAI Responses API 전체 구현 (#49)
    • 자동 만료가 있는 세션 기반 응답 관리
    • 만료된 세션에 대한 백그라운드 정리 작업
    • Responses API와 Chat Completions 간 요청/응답 형식 변환기
  • API 키용 SecretString - 모든 백엔드에서 SecretString을 사용한 안전한 API 키 저장 (#76)
  • 모델 메타데이터 오버라이드 - model-metadata.yaml을 통한 /v1/models 응답 필드 오버라이드 허용 (#75)

수정됨

  • 진정한 SSE 스트리밍 - /v1/responses API에 대한 적절한 Server-Sent Events 스트리밍 구현

변경됨

  • SseParser 즉시 모드 - 즉시 파싱 모드로 첫 응답 지연 감소
  • 문자열 할당 최적화 - 할당 감소로 성능 개선
  • 오류 처리 표준화 - 코드베이스 전체에 일관된 오류 처리 패턴

보안

  • 세션 접근 제어 - 세션 관리에 적절한 접근 제어 추가
  • 입력 검증 - Responses API에 대한 포괄적인 입력 검증

[0.12.0] - 2025-12-04

추가됨

  • SSRF 방지 모듈 - 포괄적인 SSRF 방지를 위한 새 UrlValidator 모듈 (#66)
  • 중앙화된 HTTP 클라이언트 팩토리 - 백엔드 간 일관된 HTTP 클라이언트 생성을 위한 HttpClientFactory (#67)

수정됨

  • 일관된 해시 알고리즘 - 적절한 라우팅을 위해 이진 검색에서 정확한 해시 일치 처리 (#72)
  • 패닉을 Option 반환으로 교체 - 패닉을 Option 반환으로 교체하여 신뢰성 향상 (#71)
  • 하드코딩된 인증 요구사항 제거 - /v1/models 엔드포인트에 더 이상 하드코딩된 인증 필요 없음
  • GitHub Actions - Projects V2 API 접근을 위해 GitHub App 토큰 사용

변경됨

  • OpenAI 모델 메타데이터 재구성 - 더 나은 유지보수성을 위해 모델 메타데이터를 패밀리별로 구성 (#74)
  • AnthropicStreamTransformer 추출 - Anthropic 스트림 변환을 위한 전용 모듈 (#73)
  • Backends 모듈 분할 - 더 깔끔한 아키텍처를 위해 backends mod.rs를 별도 모듈로 분할 (#69)
  • 임베디드 테스트 추출 - 더 나은 구성을 위해 테스트를 별도 파일로 이동 (#68)
  • RequestExecutor 추출 - 요청 실행을 위한 공유 공통 모듈 (#65)
  • HeaderBuilder 추출 - 인증 전략을 전용 모듈로 이동 (#64)
  • AtomicStatistics 추출 - 원자적 통계를 위한 공유 공통 모듈

기술 개선

  • 모듈식 아키텍처로 코드 구성 개선
  • 더 나은 관측성을 위한 통계 집계 구현
  • SSRF 방지 기능으로 보안 강화

[0.11.0] - 2025-12-03

추가됨

  • 네이티브 Anthropic Claude API 백엔드 (type: anthropic) - OpenAI 호환 엔드포인트 (#33)
    • CONTINUUM_ANTHROPIC_API_KEY 환경 변수에서 자동 API 키 로드
    • Claude 사고 모델을 위한 확장 사고 블록 지원
    • OpenAI에서 Claude로 reasoning 파라미터 변환 (reasoning_effort)
    • 플랫 reasoning_effort 파라미터 지원
  • Claude 4, 4.1, 4.5 모델 메타데이터 문서

수정됨

  • Anthropic/Gemini 백엔드에 대한 헬스 체크 및 모델 가져오기 개선
  • 압축 문제 방지를 위해 스트리밍 요청에 Accept-Encoding: identity 헤더 추가
  • 적절한 Accept-Encoding 처리를 위해 proxy.rs의 make_backend_request 수정

변경됨

  • 리팩토링: 코드 포맷팅 적용 및 clippy 경고 수정
  • 리팩토링: Accept-Encoding 헤더 대신 reqwest no_gzip/no_brotli/no_deflate 사용

[0.10.0] - 2025-12-03

추가됨

  • 네이티브 Google Gemini API 백엔드 (type: gemini) - OpenAI 호환 엔드포인트 (#32)
    • CONTINUUM_GEMINI_API_KEY 환경 변수에서 자동 API 키 로드
    • 사고 모델 (gemini-2.5-pro, gemini-3-pro)에 대한 300초 확장 스트리밍 타임아웃
    • 응답 잘림 방지를 위한 사고 모델의 자동 max_tokens 조정
    • reasoning_effort 파라미터 지원
  • 네이티브 OpenAI API 백엔드 (type: openai) - 내장 설정
    • CONTINUUM_OPENAI_API_KEY 환경 변수에서 자동 API 키 로드
    • /v1/models 응답에 내장 OpenAI 모델 메타데이터
  • OpenAI Images API 지원 (/v1/images/generations) - DALL-E 및 gpt-image-1 모델 (#35)
    • 설정 가능한 이미지 생성 타임아웃 (timeouts.request.image_generation)
    • 이미지 생성 파라미터에 대한 포괄적인 입력 검증
    • 이미지 생성 API에 대한 응답 형식 검증
  • OpenAI 및 API 키 백엔드에 대한 인증된 헬스 체크
  • 스트리밍 요청에 API 키 인증
  • 설정된 모델만 표시하도록 /v1/models 필터링
  • -c/--config로 명시적으로 지정된 경우 모든 설정 파일 경로 허용
  • .env.example 및 타입이 지정된 백엔드 설정 예제
  • GLM 4.6, Kimi K2, DeepSeek, GPT, Qwen3 시리즈에 대한 포괄적인 모델 메타데이터

수정됨

  • 사고 모델 (gemini-2.5-pro, gemini-3-pro)의 스트리밍 응답 잘림
  • Gemini 백엔드의 모델 ID 정규화 및 스트리밍 호환성
  • 최신 OpenAI 모델에 대해 max_tokensmax_completion_tokens로 변환
  • 모든 API 엔드포인트에 대한 올바른 URL 구성
  • 보안: 디버그 로그에서 민감 데이터 제거
  • 보안: DoS 공격 방지를 위한 요청 본문 크기 제한 추가

변경됨

  • 리팩토링: RequestType enum으로 요청 재시도 로직 통합
  • 리팩토링: 락 프리 통계 및 슬라이스 반환으로 Gemini 백엔드 성능 개선
  • Gemini 백엔드 문서 및 max_tokens 동작 문서 추가
  • 이미지 생성 API 문서 추가
  • model-metadata.yaml의 기능 명명 표준화

[0.9.0] - 2025-12-02

추가됨

  • 네이티브 Google Gemini API 백엔드 (type: gemini) - OpenAI 호환 엔드포인트 (#32)
    • CONTINUUM_GEMINI_API_KEY 환경 변수에서 자동 API 키 로드
    • 사고 모델 (gemini-2.5-pro, gemini-3-pro)에 대한 300초 확장 스트리밍 타임아웃
    • 응답 잘림 방지를 위한 사고 모델의 자동 max_tokens 조정
    • reasoning_effort 파라미터 지원
  • DALL-E 및 gpt-image-1 모델을 위한 OpenAI Images API 지원 (/v1/images/generations) (#35)
  • 설정 가능한 이미지 생성 타임아웃 (timeouts.request.image_generation)
  • GPT-5 패밀리, o-시리즈, 오디오/음성, 비디오 (Sora), 임베딩 모델을 포함한 OpenAI 모델의 포괄적인 메타데이터
  • 토큰 버킷 알고리즘을 사용한 향상된 속도 제한 (#11)
  • 포괄적인 Prometheus 메트릭 및 모니터링 (#10)
  • 설정 파일 마이그레이션 및 자동 수정 CLI 유틸리티 (#29)
  • 메트릭 엔드포인트에 대한 포괄적인 인증

수정됨

  • 심각: 토큰 리필에서 경쟁 조건 제거
  • 심각: SHA-256 해싱으로 API 키 보호
  • 심각: 무제한 버킷 증가를 통한 메모리 소진 방지
  • 심각: 헤더 인젝션 취약점 방지
  • 높음: X-Forwarded-For 조작을 통한 IP 스푸핑 방지
  • 높음: 메모리 누수 방지를 위한 메트릭 싱글톤 패턴 구현
  • 높음: 불필요한 문자열 할당 제거
  • 높음: 속도 제한을 위한 모델 추출 구현
  • 메트릭 폭발 DoS 공격 방지를 위한 포괄적인 카디널리티 제한 및 레이블 살균 추가
  • 패닉 조건 방지를 위한 오류 처리 개선
  • 설정 테스트에서 환경 변수 경쟁 조건 해결
  • 메트릭 RequestTimer의 통합 테스트 실패 수정
  • 메트릭 보안 모듈의 단위 테스트 실패 수정

변경됨

  • 리팩토링: 속도 제한에서 과도한 Arc 래핑 제거
  • 더 나은 유지보수성을 위한 문서 구조 재구성
  • 포괄적인 메트릭 문서 추가
  • 속도 제한 기능 문서 업데이트
  • 개발용 mock 서버 및 샘플 설정 파일 제거
  • 임시 테스트 파일 제거 및 gitignore 개선
  • 중복 man 페이지 제거 및 gitignore 업데이트
  • 올바른 레포지토리를 언급하도록 README.md 업데이트
  • 릴리스 워크플로우 업데이트

[0.8.0] - 2025-09-09

추가됨

  • 메타데이터 공유를 위한 모델 ID 별칭 지원 (#27)
  • 포괄적인 속도 제한 문서
  • 캐시 포이즈닝을 통한 DoS 방지를 위한 models 엔드포인트에 강력한 속도 제한

수정됨

  • 모든 백엔드가 비정상일 때 503 대신 빈 목록 반환 (#28)
  • 오류 처리 및 분류 개선
  • await 지점에서 보유된 MutexGuard에 대한 clippy 경고 해결

변경됨

  • 더 실용적인 /v1/models 엔드포인트 속도 제한 증가
  • configuration.md에 별칭 기능 문서 추가

[0.7.1] - 2025-09-08

수정됨

  • 홈 디렉토리 및 실행 파일 경로에 대한 설정 경로 검증 개선 (#26)

[0.7.0] - 2025-09-07

추가됨

  • 풍부한 메타데이터 지원으로 /v1/models 엔드포인트 확장 (#23) (#25)
  • 향상된 설정 관리 (#9) (#22)
  • 향상된 오류 처리를 포함한 고급 로드 밸런싱 전략 (#21)

수정됨

  • 하드코딩된 25초 제한 대신 config.yaml의 스트리밍 타임아웃 설정 사용

변경됨

  • 제외 목록에 yaml 추가

[0.6.0] - 2025-09-03

추가됨

  • GitHub Project 자동화 워크플로우
  • 포괄적인 타임아웃 설정 및 모델 문서 업데이트

수정됨

  • 하드코딩된 값 대신 config.yaml의 타임아웃 설정 사용 (#19)
  • clippy 경고 및 벤치마크 컴파일 문제 수정

변경됨

  • cargo fmt 적용

[0.5.0] - 2025-09-02

추가됨

  • 계층화된 설계를 갖춘 확장 가능한 아키텍처 (#16)
  • 포괄적인 통합 테스트 및 성능 최적화
  • 완전한 서비스 레이어 구현
  • 미들웨어 아키텍처 및 향상된 백엔드 추상화
  • CLI 및 설정 파일 지원을 포함한 설정 가능한 연결 풀 크기
  • YAML 지원을 포함한 포괄적인 설정 관리 (#7)
  • continuum-router용 Debian 패키징 및 man 페이지

수정됨

  • 테스트에서 Option 올바르게 처리
  • 모델 필드 없는 스트리밍 요청을 우아하게 처리하도록 테스트 업데이트
  • 테스트에서 부동 소수점 정밀도 및 타이밍 문제 해결
  • 객체 풀 및 SSE 파서에서 테스트 실패 및 교착 상태 해결
  • CI 테스트 실패 해결 및 테스트 성능 개선
  • CI 환경에서 설정 감시자 테스트 실패 해결
  • 초기 헬스 체크 경쟁 조건 해결
  • 오류 처리 및 재시도 로직의 심각한 보안 취약점
  • 타이밍 변동에 대한 타임아웃 테스트 허용 오차 조정

변경됨

  • 더 나은 가독성을 위해 복잡한 타입을 타입 별칭으로 추출
  • 모든 cargo fmt 및 clippy 경고 해결
  • 합리적인 기본값으로 재시도 설정을 선택적으로 변경
  • 설정 접근 최적화 및 포괄적인 타임아웃 관리 추가
  • 타임아웃 설정의 모델 이름을 최신 버전으로 업데이트
  • 완전한 문서 업데이트
  • 과대 모듈을 계층화된 아키텍처로 분할

성능

  • 설정 접근 최적화 및 포괄적인 타임아웃 관리 추가

[0.4.0] - 2025-08-25

추가됨

  • 헬스 모니터링을 포함한 모델 기반 라우팅 (#6)

수정됨

  • 더 나은 호환성을 위한 헬스 체크 통합 및 SSE 파싱 개선

변경됨

  • README.md 업데이트

[0.3.0] - 2025-08-25

추가됨

  • 실시간 채팅 완료를 위한 SSE 스트리밍 지원 (#5)

수정됨

  • 스트리밍 응답에서 비성공 상태 코드 처리
  • 백엔드가 404 또는 기타 오류 상태 코드를 반환해도 스트리밍 계속 허용
  • 클라이언트에 백엔드 오류 상태를 알리기 위해 SSE 오류 이벤트를 먼저 전송

[0.2.0] - 2025-08-25

추가됨

  • 여러 엔드포인트에서 모델 집계 (#4)

[0.1.0] - 2025-08-24

추가됨

  • OpenAI 호환 엔드포인트 및 프록시 기능
  • 사용 가능한 모델 목록을 위한 /v1/models 엔드포인트
  • 레거시 OpenAI completions API를 위한 /v1/completions 엔드포인트
  • 채팅 API를 위한 /v1/chat/completions 엔드포인트
  • 라운드 로빈 로드 밸런싱을 포함한 다중 백엔드 지원 (#1)
  • 적절한 오류 메시지를 포함한 정의되지 않은 라우트용 폴백 핸들러

수정됨

  • 모든 엔드포인트에서 오류 처리 일관성 개선

변경됨

  • 변경 내역 및 버전 정보로 README 업데이트

마이그레이션 노트

v0.16.0으로 업그레이드

  • 새 Files API: /v1/files에서 OpenAI 호환 Files API 사용 가능
    • 파인 튜닝, 배치 처리, 어시스턴트를 위한 파일 업로드
    • 파일은 영속적 메타데이터와 함께 로컬에 저장
    • config.yaml의 files_api 섹션을 통해 설정
  • 파일 해결: 채팅 완료에서 업로드된 파일 참조
    • 자동 콘텐츠 주입을 위해 채팅 메시지에서 파일 ID 사용
  • 영속적 메타데이터: 파일 메타데이터가 서버 재시작 후에도 유지
    • files_api 설정에서 metadata_storage: persistent (기본값) 설정
    • 고아 파일 자동 정리를 위해 cleanup_orphans_on_startup: true 설정
  • 서킷 브레이커: 자동 백엔드 장애 조치를 위해 config.yaml에 circuit_breaker 섹션 추가
    • 실패 임계값, 복구 타임아웃, half-open 요청 설정
  • 새 폴백 기능: 자동 모델 폴백을 위해 config.yaml에 fallback 섹션 추가
    • 폴백 체인 정의: fallback_chains: { "gpt-4o": ["gpt-4-turbo", "gpt-3.5-turbo"] }
    • fallback_policy에서 트리거 조건 설정
    • 크로스 프로바이더 폴백 지원 (예: OpenAI → Anthropic)
  • 서킷 브레이커 통합: 기존 서킷 브레이커와 통합하려면 trigger_conditions에서 circuit_breaker_open: true 설정
  • 응답 헤더: 폴백 사용 시 X-Fallback-Used 헤더 확인
  • GPT-5.2 지원: 새 GPT-5.2 모델 메타데이터 사용 가능
  • v0.15.0에서 호환성 깨짐 없음

v0.15.0으로 업그레이드

  • /v1/models 엔드포인트 분리: /v1/models 엔드포인트가 기본적으로 경량 응답 반환
    • 확장 메타데이터는 /v1/models?extended=true 사용
    • 기본 모델 정보만 필요한 클라이언트의 성능 향상
  • Nano Banana API: OpenAI 호환 인터페이스를 통한 Gemini 이미지 생성 (Imagen) 새 지원
    • nano-banana 또는 nano-banana-pro 모델 이름 사용
  • 오류 처리: 패닉 대신 적절한 오류 전파로 신뢰성 향상
  • 성능: LRU 캐시가 이제 더 나은 동시 성능을 위해 읽기 락 사용
  • v0.14.x에서 호환성 깨짐 없음

v0.13.0으로 업그레이드

  • 새 Responses API: OpenAI Responses API 호환성을 위해 /v1/responses 엔드포인트 사용 가능
    • 만료된 세션에 대한 백그라운드 정리로 세션 자동 관리
    • 진정한 SSE 스트리밍으로 실시간 응답 제공
  • 보안: API 키가 이제 모든 백엔드에서 보안 향상을 위해 SecretString 사용 (#76)
  • 모델 메타데이터: model-metadata.yaml을 통해 /v1/models 응답 필드 오버라이드 (#75)
  • v0.12.0에서 호환성 깨짐 없음

v0.12.0으로 업그레이드

  • 호환성 깨짐 없음: 이것은 코드 구성 개선을 위한 리팩토링 릴리스
  • 버그 수정: 일관된 해시 라우팅이 이제 정확한 해시 일치를 올바르게 처리
  • 보안: URL 검증을 위한 SSRF 방지 모듈 추가
  • 신뢰성: 더 나은 오류 처리를 위해 패닉을 Option 반환으로 교체
  • API 변경: /v1/models 엔드포인트에 더 이상 하드코딩된 인증 요구사항 없음

v0.11.0으로 업그레이드

  • 새 Anthropic 백엔드: 네이티브 Anthropic Claude API 지원을 위해 type: anthropic 백엔드 추가
    • 인증을 위해 CONTINUUM_ANTHROPIC_API_KEY 환경 변수 설정
    • 자동 파라미터 변환을 포함한 확장 사고 지원
    • OpenAI reasoning_effort 파라미터가 Claude의 사고 형식으로 자동 변환
  • 스트리밍 개선: Accept-Encoding 수정으로 모든 백엔드에서 적절한 스트리밍 보장
  • v0.10.0에서 호환성 깨짐 없음

v0.10.0으로 업그레이드

  • 새 OpenAI 백엔드: 네이티브 OpenAI API 지원을 위해 type: openai 백엔드 추가
    • 인증을 위해 CONTINUUM_OPENAI_API_KEY 환경 변수 설정
    • 내장 모델 메타데이터가 /v1/models 응답에 자동 포함
  • 이미지 생성 API: DALL-E 모델을 위한 새 /v1/images/generations 엔드포인트
    • timeouts.request.image_generation을 통해 타임아웃 설정 (기본값: 120초)
    • responseformat 검증 지원 (url 또는 b64json)
  • Gemini 개선: 사고 모델의 스트리밍 응답 잘림 수정
    • 모델 ID 정규화로 적절한 라우팅 보장
  • API 키 인증: 스트리밍 요청이 이제 API 키 인증 지원
  • 보안: 요청 본문 크기 제한으로 DoS 공격 방지
  • 최신 OpenAI 모델은 max_tokens 대신 자동으로 max_completion_tokens 사용

v0.9.0으로 업그레이드

  • 새 Gemini 백엔드: 네이티브 Google Gemini API 지원을 위해 type: gemini 백엔드 추가
    • 인증을 위해 CONTINUUM_GEMINI_API_KEY 환경 변수 설정
    • 사고 모델 (gemini-2.5-pro, gemini-3-pro)은 클라이언트가 4096 미만의 값을 보내면 자동으로 max_tokens: 16384 적용
  • 토큰 버킷 알고리즘을 사용한 향상된 속도 제한 사용 가능
  • config.yaml의 rate_limiting 섹션을 통해 속도 제한 설정
  • 인증을 포함한 Prometheus 메트릭이 /metrics 엔드포인트에서 사용 가능
  • 설정 파일 마이그레이션 및 수정을 위해 --migrate-config-file CLI 옵션 사용
  • 속도 제한에 여러 심각한 보안 수정 적용

v0.8.0으로 업그레이드

  • /v1/models 엔드포인트에 대해 속도 제한 활성화
  • 모든 백엔드가 비정상일 때 503 오류 대신 빈 목록 반환
  • 메타데이터 공유를 위한 모델 별칭 지원

v0.7.0으로 업그레이드

  • 향상된 설정 관리를 위해 설정 파일 업데이트 필요
  • 새로운 로드 밸런싱 전략 사용 가능
  • 스트리밍 타임아웃이 이제 config.yaml을 통해 설정 가능

v0.6.0으로 업그레이드

  • 타임아웃 설정이 이제 하드코딩된 값 대신 config.yaml에서 읽음
  • 타임아웃 설정을 포함하도록 설정 파일 업데이트

v0.5.0으로 업그레이드

  • 계층화된 설계를 포함한 대규모 아키텍처 리팩토링
  • 설정 관리가 이제 YAML 파일 지원
  • 보안 개선을 포함한 재시도 메커니즘 향상
  • 연결 풀 크기가 이제 설정 가능

이 변경 내역은 Continuum Router의 초기 릴리스부터 현재 버전까지의 실제 개발 이력을 반영합니다.