게시
계획된 제출과 검수 흐름. 아직 제출을 받지 않는 이유와 필요해질 항목.
마켓플레이스 제출은 아직 열려 있지 않습니다. 제출 API, tiffy app publish 명령, 샌드박스 실행, 관리 콘솔 검수 큐 모두 구현되지 않았습니다. 지금 만들 수 있는 것은 tiffy-app check까지 통과하는 앱입니다. 워커 런타임 자체는 지금 실제로 동작합니다만, 실행하는 것은 이 저장소에 내장(builtIn)으로 등록된 앱뿐이고 마켓플레이스로 설치된 서드파티 코드는 아직 실행하지 않습니다.
계획된 흐름
제출 → 정적 검사 → 샌드박스 실행 → 사람 검수 → 승인 → 게시
↘ 반려(사유) ↘ 회수(사유)
- 제출:
<id>-<version>.tiffyapp(tar.gz) 파일 하나. 안에tiffy-app.json,dist/,schemas/,surfaces/,i18n/,icon.svg,screenshots/(1~5장),LICENSE,CHANGELOG.md와 개발자 키로 서명한signature파일이 들어갑니다. 제출 경로는 CLI(tiffy app publish)만 계획되어 있고, 개발자 콘솔 업로드는 그 다음입니다. - 정적 검사:
tiffy-app check와 같은 코드가 매니페스트 스키마, 서명, 소유권, 버전 중복, 금지된 import,network:형식, i18n 완비, 번들 크기, 라이선스와 스크린샷 존재, irreversible 도구의 approval을 확인합니다. 실패는 파일과 줄 번호까지 즉시 돌려줄 계획입니다. - 샌드박스 실행: 격리된 워커에서 모의
ctx로 install → enable → 도구 각 1회 → 트리거 1회 → disable → uninstall을 돌립니다. 선언 밖 호스트로 나가려는 시도가 하나라도 있으면 탈락합니다. 로그의 비밀 패턴, 자원 상한 초과도 탈락 사유입니다. - 사람 검수: 관리 콘솔에서 매니페스트 요약, scope를 사람 말로 옮긴 목록, 스크린샷, 자동 검사 결과, 이전 버전과의 diff를 한 화면에 보고 승인 또는 반려합니다.
- 승인이 곧 게시: 번들은 제출 시점에 이미 저장되어 있으므로 승인은 상태를
published로 바꾸는 것뿐이고, 별도 빌드나 복사가 없습니다.
퍼블리셔 등록
앱 id는 <publisher>.<name> 형태입니다(예: acme.mail). 제출하려면 먼저 개발자 설정에서 퍼블리셔 이름을 등록해야 합니다.
- 계정당 하나, 선착순, 한 번 정하면 바꿀 수 없습니다.
- 영문 소문자로 시작하고 소문자, 숫자, 하이픈만 씁니다.
tiffy,usetiffy,admin,system,official은 예약어라 등록할 수 없습니다.tiffy.로 시작하는 id는 Tiffy 공식(내장) 앱만 쓸 수 있고,tiffy-app check와 제출 API가 이를 강제합니다(reserved_publisher).- 제출한 매니페스트 id의 퍼블리셔가 등록한 퍼블리셔와 다르면 제출 API가 거부합니다(
publisher_mismatch). 퍼블리셔를 등록하지 않고 제출하면publisher_required로 거부됩니다. - 이 두 검사가 사칭 방지의 전부입니다. 도메인 소유권 같은 별도 검증은 두지 않습니다.
준비해 둘 것
지금 앱을 만들면서 미리 갖춰 두면 좋은 것들입니다.
- 스크린샷: 1~5장.
tiffy-app check는screenshots/폴더가 비어 있으면 경고만 내지만, 발행 때는 최소 1장이 필요할 계획입니다. - 라이선스:
LICENSE파일. 매니페스트의license필드와 함께 갑니다. - CHANGELOG:
CHANGELOG.md에 버전마다 항목을 남깁니다. - i18n 완비:
i18n/ko.json과i18n/en.json의 키가 완전히 같아야 합니다.tiffy-app check가 이미 이것을 검사합니다.
계획된 검수 기준
사람 검수는 세 가지만 봅니다.
- 권한이 설명과 맞는가: 캘린더 앱이
mail.send를 요구하면 반려됩니다. - 설명과 스크린샷이 사실인가: 앱이 실제로 하지 않는 일을 한다고 적으면 반려됩니다.
- 이름과 아이콘이 다른 앱이나 브랜드를 사칭하지 않는가.
앞의 정적 검사와 샌드박스 실행을 통과하지 못한 제출은 이 검수 큐에 오르지 않을 계획입니다.
그 밖의 계획
- 자동 승인 갱신: minor·patch 버전은 설치된 곳에 자동 적용됩니다. scope가 늘거나 major 버전이면 사용자 재승인이 필요하고, 그 전까지는 이전 버전이 계속 돕니다.
- 회수(revoke): 문제가 발견되면 운영자가 버전이나 앱 전체를 회수할 수 있고, 설치된 곳은 다음 실행부터 비활성화되며 사용자에게 알림이 갑니다.
- 단계적 공개: 개발자의 첫 앱은 승인 뒤에도 설치 수 상한을 두고, 문제 보고 없이 일정 기간이 지나면 자동으로 풉니다.
이 문서는 계획된 마켓플레이스 설계 중 지금 시점에 실제로 확인할 수 있는 부분만 요약한 것이고, 위 항목들은 구현 전까지 언제든 바뀔 수 있습니다.