Repository navigation
release: 관리자 권한 이전 및 모바일 QA 개선 (develop → main) - #179
Merged
Merged
Conversation
* docs: define club manager transfer MVP * feat(web): add manager transfer persistence model * feat(web): implement atomic manager transfer service * feat(web): expose manager transfer invitation API * feat(mobile): add manager transfer data contract * feat(mobile): add manager transfer invitation flow * fix(web): harden manager transfer completion * feat(mobile): complete manager transfer acceptance * docs: record manager transfer architecture * fix(web): preserve concurrent acceptance idempotency
* fix(mobile): unblock iOS splash startup * fix(mobile): tighten manager transfer acceptance flow * fix(android): stop intercepting insecure app links
* fix(db): allow repeated club manager assignments * fix: distinguish manager transfer failures * fix(auth): remove sensitive OAuth logging * test(web): keep handler tests outside API routes * test(ci): pass PostgreSQL URL to database tests * fix(auth): redact Apple callback logs
* refactor(web): 미참조 레거시 화면 및 유틸 제거 * refactor(web): home 페이지 제거 * refactor(web): 레거시 페이지 제거 마무리
* refactor(web): src entities를 서버 도메인 타입으로 통합 * refactor(web): 서버 도메인 상수와 운영 데이터를 제자리로 이동 * refactor(web): HTTP 계약을 서버 경계로 이동 * refactor(web): 서버 전용 유틸을 소유 계층으로 이동 src/의 모호한 공용 폴더에 있던 서버 전용 파일 두 개를 실제 소비 계층으로 옮긴다. 둘 다 HTTP 계약과 무관하며 소비자가 서버 한 곳뿐이다. - src/lib/Holder.ts -> server/infra/database/connection-holder.ts 유일한 소비자는 datasource.ts이고, 실제 역할은 첫 database connection이 준비될 때까지 service proxy를 대기시키는 것이다. 범용 서버 도구가 아니라 database 초기화 장치이므로 이름과 위치를 그에 맞춘다. - src/common/utils/formatYearMonth.ts -> server/domain/club/recruitment-year-month.ts 문자열 포맷 도구가 아니라 모집공고 yearMonth 값의 생성 규칙이다. club-recruitment.service.ts와 club-recruitment.entity.ts가 같은 규칙을 적용하므로 모집공고 domain에 둔다. 동작은 그대로 둔다. Holder의 Promise 동작과 formatYearMonth의 로컬 시간 계산은 손대지 않았고, 이름 정리나 시간대 정책 변경은 별도 작업이다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * test(web): App Links 배포 계약 테스트를 제자리로 이동 src/lib/app-links.test.ts -> tests/deployment/app-links.test.ts 이 테스트가 node:fs와 createRequire를 쓴다는 사실은 서버 domain에 속한다는 증거가 아니다. 실패하는 사건을 보면 위치가 드러난다. AASA 파일에서 경로가 빠질 때, iOS entitlement에서 associated domain이 사라질 때, Android manifest와 인증서 등록이 어긋날 때, Next.js가 association 파일의 JSON header를 잃을 때 실패한다. 하나의 서버 모듈이 아니라 배포되는 여러 플랫폼 사이의 약속을 검사하므로 tests/deployment가 그 실패 이유를 이름으로 드러낸다. 경로 가정은 그대로 유지된다. process.cwd() 기준 웹·모바일·workflow 파일 읽기는 영향이 없고, 새 위치도 기존과 같은 두 단계 깊이라 next.config.js의 상대 경로 ../../ 가 그대로 성립한다. App Links 설정을 바꾸는 PR이 이 이동만 독립적으로 되돌리거나 수정할 수 있도록 별도 커밋으로 둔다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * chore(web): 계층 간 import 방향을 Biome 규칙으로 고정 앞선 세 커밋이 서버의 타입, 상수, HTTP 계약을 server로 되돌렸지만 합의만으로는 되돌아가는 길이 열려 있다. 서버 정책이 다시 src/common에 추가되어도 지금은 아무 검사도 막지 못한다. noRestrictedImports로 두 방향을 차단한다. server/** ─X→ src/** src/** ─X→ server/service, server/provider, server/infra bare specifier와 상대 경로를 모두 막도록 각 group에 `**/` 접두 패턴을 함께 둔다. pages/api와 middleware는 서버 진입점이므로 대상이 아니다. src가 server/domain과 server/http/schemas를 참조하는 것은 허용한다. 현재 규칙은 type-only 여부를 표현하지 못하므로, 이 두 경로에서 값을 import할 때 브라우저 bundle에 서버 의존이 섞이지 않는지는 코드 리뷰가 계속 판단한다. 자동 검사는 위험한 실행 계층만 책임진다. biome check, typecheck, 전체 테스트와 프로덕션 빌드를 통과한다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: yabsed <yabsed@snu.ac.kr> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* chore(web): remove unsued images from public directory * chore(biome): enforce server-src dependency boundary in middleware * feature: new logo * chore(web): remove unused public assets * fix(web): restore manager transfer fallback logo --------- Co-authored-by: yabsed <yabsed@snu.ac.kr>
* fix: ios에서 textinput의 placeholder, value가 중앙정렬 되지 않던 문제 해결 * fix: ios에서 활동사진 상세보기 inset 미처리 수정 * feat: imageviewermodal에 스와이프 기능 추가 * fix: option button border로 인한 layout shift 해결 * fix: 동아리명이 길어질 때 cardTitleRow와 headerActions가 너무 가까워지는 문제 해결 * fix: user voice 바텀시트 레이아웃 수정 * fix: 활동 후기 뱃지 이모지 잘림 문제 해결 * fix: htmlview에서 heading lineheight 문제 해결 * fix: HtmlView에서 HTML 정규화 처리 추가 * fix: 키보드가 input을 가리는 문제 해결 * fix: 오타교정 아이콘 변경 * fix: 에셋 파일명 교체 * fix: js 애니메이션이 모두 끝난 후에 appinitialization screen이 표시되도록 변경 * fix: 시스템 폰트 의존성 제거 * fix: 검색 화면 새로고침 글리치 해결 * fix: textinput placeholder 중심이 간헐적으로 흔들리던 문제 해결 * fix: 기존 동아리 운영진 등록 검색 input placeholder 쏠림 해결 * fix: 동아리 후기 작성 뱃지 이모지 잘림 해결 * fix: 기존 동아리 운영진 등록 form 레이아웃 차이 해결 * fix: alertmodal이 사라질 때 뒷배경이 점멸하던 현상 해결 * fix: clubcard 디자인 변경사항 반영 * fix: 하단 탭바 높이 조정 * fix: 저장탭 제목 타이포그라피 변경 * fix: 저장한 동아리가 없을 때 탐색하러 가기 버튼 추가
* fix: ios 스플래시 스크린과 js 애니메이션 프레임 기준이 불일치하던 것을 해결 * chore: remove unused variable * fix: js 클론 적용
* feat: add admin feature guides * fix: add swipeable admin guide pages * fix: model admin guide page states * fix: align admin guide modal controls * fix: match admin guide modal chrome * fix: compose admin guide from shared app UI * fix: recreate admin guide figma states * feat: render figma admin guide window assets * added picture frames for registration * fix: format check * added separate profile picture * fix: design fixes for animations and icons * changed design to match figma prototype
동아리 추가 설명 인풋을 공통 TextField 컴포넌트로 교체하고, 소속 드롭다운의 채워짐 상태 테두리 색을 다른 인풋과 맞췄다. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
dennis0405
temporarily deployed
to
ios-dev-artifact
October 6, 2026 02:12 — with
GitHub Actions
Inactive
dennis0405
temporarily deployed
to
ios-dev-artifact
October 6, 2026 02:28 — with
GitHub Actions
Inactive
dennis0405
marked this pull request as ready for review
October 6, 2026 02:29
dennis0405
temporarily deployed
to
ios-dev-artifact
October 6, 2026 04:01 — with
GitHub Actions
Inactive
kimnamheeee
approved these changes
Oct 6, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
작업 내용
변경 이유
테스트한 내용
android-dev-release-apk-170생성: https://github.com/wafflestudio/allclear/actions/runs/37334508887 . 운영 AAB가 아니라 개발 QA용 APK입니다.최소 보안 패치 검증 — 2026-10-06
patch/web-image-security→ develop PR fix(web): Next.js·sharp 이미지 처리 최소 보안 패치 #181 CI 4/4 통과 후 squash merge (297a6250f4dcb098dc6e4d5be60f942c644acb79). https://github.com/wafflestudio/allclear/actions/runs/37404158465배포 전 추가 버그 수정 — 2026-10-06
patch/club-history-reviews→ develop PR fix: 저장 동아리 후기 표시 및 운영진 검색 기록 분리 #182 squash merge (c718bb3d0cb0c0bd697953e0512dbf272b496755).record_recent_search=false를 전달합니다. 일반 탐색/구버전 앱은 기본 true로 유지하며, 새 앱과 서버가 모두 반영되어야 등록 검색 기록 분리가 적용됩니다.배포 전 확인
260824_club_manager_transfer.sql→260904_club_manager_reversal.sql순서로 트랜잭션 적용 완료 (2026-10-06), postflight 및 웹 health-check 정상9d3a0d75)297a6250의 release CI 4/4 성공: https://github.com/wafflestudio/allclear/actions/runs/37404339852 (이전 체크 통과와 구분)c718bb3d의 새 release CI 4/4 성공: https://github.com/wafflestudio/allclear/actions/runs/37411723264머지 이후 순서 / 롤백
internal트랙만 업로드합니다. Play production 승격은 별도입니다.현재 GitOps 이전 이미지:
yny.ocir.io/ax1dvc8vmenm/allclear-prod/allclear-web:31986855579-1.장애 시 앱 이미지 롤백을 우선 검토합니다. DB down migration은 알림/초대 삭제 및 역방향 이전 이력 UNIQUE 복원 실패 위험이 있어 자동 실행하지 않습니다.
스크린샷 (선택)
체크