유리 둘, 계약 하나
아이폰과 아이패드의 Smolder 는 유니버설 앱 하나지, 계약 둘인 제품 둘이 아니야. 같은 게이트웨이들, 같은 기기 권한, 같은 데몬 정체성, 크롬의 같은 잔불. 사이즈 클래스는 세션을 몇 개 볼 수 있는지를 바꾸지, 거기서 뭘 해도 되는지를 바꾸지 않아. 아이폰은 세션 하나에 포커스해. 아이패드는 둘을 보여 줄 수 있어. 앱이 둘이면 입력 계약을 틀릴 곳도 둘, TestFlight 배포 흐름도 둘, 핀도 둘이야. 행업이 한쪽 유리에선 살해가 되고 다른 쪽에선 분리가 될 여지까지 생겨.
여기서 유니버설은 마케팅 단어가 아니야. 아이패드가 "진짜 주머니 터미널"이 되고 아이폰이 더 느슨한 뇌의 뷰어가 되는 걸 거절하는 거야. 일하는 계약은 양쪽 다 호스트 일 이어가기야. 호스트 세션을 열고 맥 옆에서 거기에 치고, 호스트를 통해 셸이나 CLI 를 열어. "뷰어일 뿐"이라서 칠 수 없는 아이폰은 두 번째 제품이야. 더 크다는 이유로 아이폰이 못 하는 걸 하는 아이패드도 두 번째 제품이야. 둘 다 계약 하나 시험에 져.
보이는 건 둘, 키보드 포커스는 하나
아이패드는 호스트 세션 둘을 화면에 올릴 수 있어. 투영의 사치야. 판마다 자기 상태를 따로 들고 있어. 칠 수 있음, 홀드 중, 다른 쪽이 홀드 중, 관찰 중. 그리고 키보드 포커스는 정확히 하나에만 있어. 포커스된 판은 Keyboard here 라고 말해. 조종이 승인된 기기라면 다른 판은 칠 수는 있지만 지금 키가 가는 곳은 아니라고 말해. 다른 판을 탭하면 키보드 포커스가 옮겨 가. 누구한테서 뭘 뺏는 게 아니야. 같이 치는 계약에서는 뺏기는 게 없으니까.
아이패드에 하드웨어 키보드를 붙이면 치는 게 너무 자연스러워져. 그래서 포커스가 헷갈릴 수 없어야 해. 키 입력은 Keyboard here 를 보여 주는 판 하나로만 가. 커서가 마지막에 칠한 판으로 가지도, 둘 다로 가지도 않아. 읽기만 승인된 기기는 유리 크기가 뭐든 아무 데도 못 쳐.
사이즈 클래스는 권한을 찍어내지 않아
회전, 분할 보기, Stage Manager. 그건 사각형을 몇 개 볼 수 있는지를 바꿔. 입력을 주지도 않고 호스트를 리사이즈하지도 않아. 격자는 여전히 마지막으로 친 쪽을 따라가. 사이즈 클래스 콜백이 판의 권한을 바꾸거나 데몬에 크기를 보내는 날이 오면, 관찰이 계약을 리사이즈한 거고, 그건 PTY 를 리사이즈하는 것보다 나빠.
전달은 TestFlight 로 바이너리 하나. 트랙 7 이 그 파이프라인을 고집할 거야. 이 레슨이 고집하는 이유는: 계약 하나는 흘러가는 앱 둘을 못 견뎌. 목적지 트랙의 나중 이정표(체크포인트, 직접 SSH, 키)도 앱 하나의 이정표지, 아이패드 전용 SSH 클라이언트와 아이폰 전용 뷰어가 아니야. 그걸 섞으면 주머니가 제품 둘이라고 가족을 가르친 거야. 아니야. 불 하나, 유리 크기 둘, 키가 있을 때 키의 주인 하나, 그리고 오늘은 분명한 키보드 포커스 하나.