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 + } } }