From 2cc6a6e487733c9c09dd8532f510a33165bff95f Mon Sep 17 00:00:00 2001 From: sanjeok77 Date: Fri, 14 Aug 2026 09:15:47 +0900 Subject: [PATCH] \ chore: Update version.json and app.apk for v1.0.0 initial release\ --- app.apk | Bin 5276255 -> 5276251 bytes scratch/release.py | 109 ++++++++++++++++++++------------------------- version.json | 12 ++--- 3 files changed, 54 insertions(+), 67 deletions(-) diff --git a/app.apk b/app.apk index 308026a24dad6f07b2fa9f5e6df1f9d8003a9af7..1f680860bbc711a6bffc73c2979516cb7a927000 100644 GIT binary patch delta 17184 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 delta 17201 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 diff --git a/scratch/release.py b/scratch/release.py index ada3b42..8b5037c 100755 --- a/scratch/release.py +++ b/scratch/release.py @@ -6,33 +6,32 @@ import shutil token = "e3b515eaa0a6683c921ca3bf718e281ed30a6075" owner_repo = "sanjeok77/ShiftRing" -tag = "v2.3.0" -title = "v2.3.0 - One UI 8.5 전면 통일 & 법정 대체공휴일 수식 & 복합 연장근무 & 알람 그룹 순서 자동 정렬 대규모 완성 릴리즈" -body = """## 🚀 Shiftring v2.3.0 대규모 마이너 릴리즈 +tag = "v1.0.0" +title = "v1.0.0 - ShiftRing 정식 첫 릴리즈" +body = """## 🚀 ShiftRing v1.0.0 정식 첫 릴리즈 -### 🌟 전면 통합 및 주요 개선 완료 사항 -1. **설정 화면 4개 탭 One UI 8.5 전면 통일**: - - 기본설정, 알람설정, 부가기능, 근무관리 전체 탭에 24dp 라운드 카드(`bg_oneui_settings_card`) 및 36dp 스퀘어클 Soft-tint 아이콘(`bg_oneui_icon_container`) 시스템 완벽 적용 - - 모든 드롭다운(Spinner)을 One UI 20dp 라운드 팝업(`bg_spinner_popup_oneui`), 12dp 알약 선택자 및 6dp 수직 오프셋으로 전면 통일 -2. **대한민국 법정 대체공휴일 수식 100% 정밀화**: - - 대통령령 관공서 공휴일 개정안을 반영하여 현충일(6/6), 신정(1/1) 제외 및 설날/추석 일요일 겹침, 단일 공휴일 토/일 겹침 수식 완벽 적용 -3. **이달의 누적 연장근무 복합 가산 수식**: - - 토요일 기본 특근(1일당 2h) + 달력 지정 '주맞'(+4h), '야맞'(+4h), '교육'(+2h) 자동 누적 정산 -4. **알람 그룹 순서 자동 정렬 & 6개 근무 지원**: - - 알람 목록 그룹 순서를 `주간(주) -> 석간(석) -> 야간(야) -> 주간 맞교대(주맞) -> 야간 맞교대(야맞) -> 기타`로 고정 정렬 - - 그룹 마스터 스위치 및 아코디언 접기/펼치기 유지 - - 알람 추가/수정 시 6개 근무타입(주/석/야/주맞/야맞/기타) 비율 맞춤 선택 지원 -5. **메인 달력 유체 모션 & 요약 칩 바**: - - 삼성 캘린더 `PathInterpolator(0.22, 1, 0.36, 1)` 기반 부드러운 수평 슬라이드 + 미세 페이드 + 미세 스케일 모션 - - 상단 `주간 N일 | 석간 N일 | 야간 N일 | 연장 N시간` 실시간 요약 칩 바 +현대자동차 / 다양한 교대근무자를 위한 스마트 교대근무 캘린더 & 맞춤 알람 솔루션 + +### 🌟 주요 기능 및 탑재 사항 +1. **One UI 8.5 라운드 카드 디자인 시스템**: + - 24dp 라운드 카드, 36dp 스퀘어클 Soft-tint 아이콘 시스템 + - 20dp 라운드 팝업창 및 12dp 알약 선택자 One UI 드롭다운(Spinner) 전면 통일 +2. **대한민국 법정 대체공휴일 100% 정밀 수식**: + - 대통령령 관공서 공휴일 개정안 정밀 적용 (현충일/신정 제외, 주요 공휴일 및 설날/추석 대체공휴일 연동) +3. **이달의 누적 연장근무 복합 정산**: + - 토요일 기본 특근(2h) + 주맞(4h) + 야맞(4h) + 교육(2h) 자동 누적 합산 +4. **알람 하이브리드 그룹화 & 순서 자동 정렬**: + - `주간(주) -> 석간(석) -> 야간(야) -> 주간 맞교대(주맞) -> 야간 맞교대(야맞) -> 기타` 고정 정렬 + - 그룹 마스터 On/Off 스위치 및 아코디언 접기/펼치기 + - 6개 근무 선택(주/석/야/주맞/야맞/기타), 알람 라벨 및 15분전 사전 알림 지원 +5. **삼성 캘린더 동일 수평 유체 슬라이드 모션 & 요약 칩 바**: + - 삼성 One UI 8.5 캘린더 동일 전체 폭 수평 슬라이드 애니메이션 (`PathInterpolator(0.22, 1, 0.36, 1)`) + - 실시간 요약 칩 바 (`주간 N일 | 석간 N일 | 야간 N일 | 연장 N시간`) - 하루 메모 3줄 직관 표시 및 달력 5줄 고정 / 6줄 스크롤 최적화 - - 날짜 이동 모달 팝업 내부 취소/이동 버튼 및 근무 글자 20sp 대형화 -6. **배터리 최적화 4-Tier 다중 폴백**: - - Samsung Device Care (`com.samsung.android.lool`) 연동으로 100% 이동 보장 -7. **One UI 8.5 앱 업데이트 다이얼로그**: - - 32dp 라운드 카드, #007AFF 선명 블루 버튼, `bg_oneui_progressbar.xml` 실시간 퍼센트 채움 애니메이션 -8. **Android 14/15 호환 및 정식 서명키(release.jks) 유지**: - - `need to declare` 오류 완전 방지 및 덮어쓰기 업데이트 100% 지원""" + - 상단 알람 시간 단일행 간결 표시 (`오늘: 07:00 | 내일: 15:00`) +6. **배터리 최적화 4-Tier 다중 폴백 & One UI 업데이트 다이얼로그**: + - Samsung Device Care 연동 및 부드러운 프로그레스 애니메이션 +7. **Android 14/15 호환 및 정식 서명키(release.jks) 적용**""" apk_path = "app/build/outputs/apk/release/app-release.apk" if not os.path.exists(apk_path): @@ -41,55 +40,43 @@ if not os.path.exists(apk_path): print(f"Using APK at: {apk_path}") -# Check if release already exists +# Create Gitea Release url = f"https://git.webpluss.net/api/v1/repos/{owner_repo}/releases" headers = {"Authorization": f"token {token}", "Content-Type": "application/json"} -try: - req = urllib.request.Request(f"{url}/tags/{tag}", headers=headers) - with urllib.request.urlopen(req) as resp: - existing = json.loads(resp.read()) - release_id = existing["id"] - print(f"Existing release found with ID: {release_id}. Updating...") - # Update existing release - edit_url = f"{url}/{release_id}" - edit_data = json.dumps({"name": title, "body": body}).encode() - edit_req = urllib.request.Request(edit_url, data=edit_data, headers=headers, method="PATCH") - with urllib.request.urlopen(edit_req) as edit_resp: - print("Release details updated successfully.") -except Exception as e: - # Create new release - print("Creating new release...") - data = json.dumps({"tag_name": tag, "name": title, "body": body, "draft": False, "prerelease": False}).encode() - req = urllib.request.Request(url, data=data, headers=headers, method="POST") - with urllib.request.urlopen(req) as response: - result = json.loads(response.read()) - release_id = result["id"] - print(f"Created Gitea Release successfully. Release ID: {release_id}") +data = json.dumps({"tag_name": tag, "name": title, "body": body, "draft": False, "prerelease": False}).encode() +req = urllib.request.Request(url, data=data, headers=headers, method="POST") +with urllib.request.urlopen(req) as response: + result = json.loads(response.read()) + release_id = result["id"] + print(f"Created Gitea Release successfully. Release ID: {release_id}") # Upload APK asset upload_url = f"https://git.webpluss.net/api/v1/repos/{owner_repo}/releases/{release_id}/assets" print(f"Uploading APK to {upload_url}...") -# Check existing assets and delete if present -try: - assets_req = urllib.request.Request(upload_url, headers=headers) - with urllib.request.urlopen(assets_req) as resp: - assets = json.loads(resp.read()) - for asset in assets: - if asset["name"] == "app.apk": - del_url = f"https://git.webpluss.net/api/v1/repos/{owner_repo}/releases/{release_id}/assets/{asset['id']}" - del_req = urllib.request.Request(del_url, headers=headers, method="DELETE") - urllib.request.urlopen(del_req) - print(f"Deleted old asset {asset['id']}.") -except Exception as e: - print(f"Error checking assets: {e}") - curl_cmd = f'curl -s -X POST "{upload_url}?name=app.apk" -H "Authorization: token {token}" -F "attachment=@{apk_path}"' upload_result = subprocess.run(curl_cmd, shell=True, capture_output=True, text=True) print(f"Upload output: {upload_result.stdout}") +upload_json = json.loads(upload_result.stdout) +apk_uuid = upload_json.get("uuid") +direct_url = upload_json.get("browser_download_url", f"https://git.webpluss.net/attachments/{apk_uuid}") + # Copy APK to project root shutil.copy2(apk_path, "app.apk") print("Updated app.apk at project root.") + +# Update version.json +v_info = { + "versionCode": 100, + "versionName": "1.0.0", + "apkUrl": direct_url, + "changelog": "v1.0.0: ShiftRing 정식 첫 릴리즈 - One UI 8.5 디자인 시스템, 교대근무 캘린더, 맞춤 알람 및 법정 공휴일/연장근무 자동 계산", + "forceUpdate": False +} +with open("version.json", "w", encoding="utf-8") as f: + json.dump(v_info, f, ensure_ascii=False, indent=2) + +print(f"Updated version.json with apkUrl: {direct_url}") print(f"Release {tag} process finished!") diff --git a/version.json b/version.json index d6cac4f..7b6e549 100644 --- a/version.json +++ b/version.json @@ -1,7 +1,7 @@ -{ - "versionCode": 100, - "versionName": "1.0.0", - "apkUrl": "", - "changelog": "v1.0.0: ShiftRing 정식 첫 릴리즈 - One UI 8.5 디자인 시스템, 교대근무 캘린더, 맞춤 알람 및 법정 공휴일/연장근무 자동 계산", - "forceUpdate": false +{ + "versionCode": 100, + "versionName": "1.0.0", + "apkUrl": "https://git.webpluss.net/attachments/b1ec7eac-997c-4a33-bbb5-91a0f11ce9cf", + "changelog": "v1.0.0: ShiftRing 정식 첫 릴리즈 - One UI 8.5 디자인 시스템, 교대근무 캘린더, 맞춤 알람 및 법정 공휴일/연장근무 자동 계산", + "forceUpdate": false } \ No newline at end of file