diff --git a/Info.plist b/Info.plist
index 9e83ac8..fd53b90 100644
--- a/Info.plist
+++ b/Info.plist
@@ -9,8 +9,8 @@
CFBundleExecutablePlusCodex
CFBundleIconFilePlusCodex.icns
CFBundlePackageTypeAPPL
-CFBundleShortVersionString1.2.0-beta.1
-CFBundleVersion22
+CFBundleShortVersionString1.2.0
+CFBundleVersion23
LSMinimumSystemVersion14.0
LSUIElement
NSHighResolutionCapable
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 7ca55f2..9d12b5c 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,3 +1,60 @@
+# PlusCodex v1.2.0
+
+Gemini 연동과 AI별 메뉴바 표시 커스텀을 추가했습니다.
+
+PlusCodex의 **v1.0.0~v1.9.9는 베타 버전**입니다. 이번 버전도 베타이며, 기존 앱의 업데이트 경로를 유지하기 위해 GitHub Latest로 제공합니다.
+
+## 주요 변경사항
+
+### Gemini 및 Antigravity
+
+- Gemini 5시간·주간·Argon 사용량과 초기화 시간 표시
+- Antigravity 작업 상태 및 완료·실패·확인 대기 알림 연동
+- 현재 채팅 읽음 감지 및 읽은 작업의 알림 정리
+- Antigravity 또는 Gemini CLI 로그인 상태 확인
+- Gemini 활성화 시 손쉬운 사용 권한 안내, 허용 확인 후 자동 활성화
+- 권한 요청 재시도와 설정 복귀 후 상태 갱신 개선
+
+### 메뉴바 및 설정
+
+- AI별 메뉴바 표시 형식과 실시간 미리보기 추가
+- `{auto}%`, `{5h}% | {1w}%`, `{auto}% | {auto_time}` 등 자유로운 조합 지원
+- Gemini의 `{argon}%`, `{argon_time}` 토큰 지원
+- 기본값은 5시간 한도 우선, 없으면 주간 한도 선택
+- 사용량의 사용한 양·남은 양 구분은 기존 설정에 적용
+- 켜진 AI만 표시하고 아이콘·이름·도움말 정렬 개선
+- 작은 호버 도움말에서 지원 토큰 확인·복사 및 빠른 선택 지원
+- 입력창 복사·붙여넣기·실행 취소·다시 실행 개선
+
+### 알림 및 안정성
+
+- AI 알림 로고에 흰 배경 적용, Codex 로고는 검정으로 표시
+- 설치·업데이트 후 필요한 권한 안내 개선
+- 로컬 개발 빌드의 인증서 서명 선택을 일관되게 유지하도록 개선
+- PR 빌드, 36개 회귀 테스트 및 필수 CI 검사 추가
+- 메뉴바 클릭 관련 비동기 회귀 테스트의 대기 조건 개선
+
+## 설치 및 업데이트
+
+- 기존 앱: 앱의 업데이트 확인 기능 이용
+- 수동 설치: [PlusCodex-1.2.0.dmg](https://github.com/hyxx-su/PlusCodex/releases/download/v1.2.0/PlusCodex-1.2.0.dmg)
+- 지원 환경: Apple Silicon Mac, macOS 14 이상
+- 기존 설정과 저장된 깨우기 채팅 유지
+- Gemini를 켜려면 macOS 손쉬운 사용 권한 필요. 권한은 사용자가 직접 허용
+- 현재 채팅 감지 보조 기능은 채팅 주소와 UI 메타데이터를 확인하며 대화 본문을 읽거나 저장하지 않음
+
+## 알려진 제한 사항
+
+- AI 앱의 설치·로그인 상태, 제공되는 한도 및 외부 앱 버전에 따라 사용 가능한 값이 달라짐
+- 알림 전달은 macOS 알림 권한·집중 모드·알림 스타일의 영향을 받음
+- 알림 로고 표시 방식은 macOS 버전에 따라 달라질 수 있음
+- 모든 플랜의 실제 계정, 다른 Mac의 설치·업데이트, 장시간 잠자기 복귀 동작은 별도 실사용 확인 필요
+- 이 배포본은 Apple Development 서명이며 **Developer ID 서명·Apple 공증은 적용되지 않음**
+- Sparkle 업데이트 서명은 업데이트 파일과 피드의 무결성을 검증하며 Apple 공증을 대체하지 않음
+- PlusCodex는 OpenAI 또는 Google의 공식 앱이 아님
+
+---
+
# PlusCodex v1.2.0-beta.1
이번 베타에서는 **작업 상태와 알림 동작을 개선하고, 사용량 표시와 패치노트 화면을 정리했습니다.**
diff --git a/Resources/PatchNotes.json b/Resources/PatchNotes.json
index f6259c5..61dda01 100644
--- a/Resources/PatchNotes.json
+++ b/Resources/PatchNotes.json
@@ -1,4 +1,42 @@
[
+ {
+ "version": "v1.2.0",
+ "publishedAt": "2026-10-20T05:40:00Z",
+ "url": "https://github.com/hyxx-su/PlusCodex/releases/tag/v1.2.0",
+ "body": "# PlusCodex v1.2.0\n\n- Gemini 사용량 및 Antigravity 작업 상태 연동\n- Gemini 작업 알림과 현재 채팅 읽음 감지\n- AI별 메뉴바 표시 형식과 초기화 시간 커스텀\n- 토큰 도움말과 빠른 선택, 입력창 편집 단축키 개선\n- 손쉬운 사용 권한 안내와 허용 후 활성화 흐름 개선\n\nPlusCodex v1.0.0~v1.9.9는 베타 버전입니다.",
+ "summary": {
+ "ko": "• Gemini 사용량·작업 알림 연동\n• AI별 메뉴바 표시 커스텀",
+ "en": "• Gemini usage and task alerts\n• Custom menu-bar formats"
+ },
+ "highlights": {
+ "ko": [
+ "Gemini 5시간·주간·Argon 사용량 및 초기화 시간 표시",
+ "Antigravity 작업 상태와 완료·실패·확인 대기 알림 연동",
+ "현재 채팅 읽음 감지와 읽은 작업의 알림 정리",
+ "Gemini 활성화 시 손쉬운 사용 권한 안내 및 허용 후 자동 활성화",
+ "AI별 메뉴바 표시 형식과 실시간 미리보기 추가",
+ "자동 선택·5시간·주간·Argon 및 초기화 시간 토큰 지원",
+ "사용 중인 AI만 표시하고 아이콘·이름·도움말 정렬 개선",
+ "작은 호버 도움말에서 토큰 복사 및 빠른 선택 지원",
+ "입력창 복사·붙여넣기 및 실행 취소·다시 실행 개선",
+ "AI 알림 로고의 흰 배경과 검정 Codex 로고 적용",
+ "PR 빌드·36개 회귀 테스트 및 필수 CI 검사 추가"
+ ],
+ "en": [
+ "Gemini five-hour, weekly and Argon usage with reset times",
+ "Antigravity task status and completion, failure and attention alerts",
+ "Current-chat read detection and read-task notification cleanup",
+ "Accessibility permission guidance and Gemini activation after approval",
+ "Per-AI menu-bar formats with live previews",
+ "Auto, five-hour, weekly, Argon and reset-time tokens",
+ "Enabled providers only, with aligned icons, names and help controls",
+ "Compact hover help with token copying and Quick Select",
+ "Copy, paste, undo and redo improvements in format fields",
+ "White-backed notification logos and a black Codex logo",
+ "PR builds, 36 regression checks and a required CI gate"
+ ]
+ }
+ },
{
"version": "v1.2.0-beta.1",
"publishedAt": "2026-10-14T12:24:13Z",
diff --git a/Sources/PatchNotesView.swift b/Sources/PatchNotesView.swift
index db2989f..d700f3f 100644
--- a/Sources/PatchNotesView.swift
+++ b/Sources/PatchNotesView.swift
@@ -18,7 +18,15 @@ struct PatchNote: Decodable {
guard let url = bundle.url(forResource: "PatchNotes", withExtension: "json"),
let data = try? Data(contentsOf: url),
let notes = try? JSONDecoder().decode([PatchNote].self, from: data) else { return [] }
- return notes.sorted { $0.version.compare($1.version, options: .numeric) == .orderedDescending }
+ // Compare the base first; a release precedes its own beta in descending order.
+ return notes.sorted {
+ let lhs = $0.version.split(separator: "-", maxSplits: 1)
+ let rhs = $1.version.split(separator: "-", maxSplits: 1)
+ let baseOrder = String(lhs[0]).compare(String(rhs[0]), options: .numeric)
+ if baseOrder != .orderedSame { return baseOrder == .orderedDescending }
+ if lhs.count != rhs.count { return lhs.count < rhs.count }
+ return $0.version.compare($1.version, options: .numeric) == .orderedDescending
+ }
}
}