Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .changeset/env3-foreground-guidance-766.md

This file was deleted.

12 changes: 0 additions & 12 deletions .changeset/in-app-graceful-detach-748.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/mock-getConsentedUserData-798.md

This file was deleted.

23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
# Changelog

## 0.1.142

### Patch Changes

- c2d9764: env3 러너/대시보드에 "테스트 완료까지 앱 전면 유지" 안내 추가 — 2026-07-08 실기기 관측(46/8/6 부분 run vs 78/0/13 클린 완주)으로 원인이 확정된 백그라운드 suspend 연쇄 실패(iOS WebView JS suspend → evaluate 60s 타임아웃 → relay WS 사망 → 잔여 파일 전연쇄 실패)에 대한 사전 안내. 원인이 사용자 행동이라 suspend 감지/재개 로직 대신 안내 한 줄로 대응(Page visibility 신호가 relay 죽음과 동시에 끊기므로 사전 안내가 실효적 해법).

- QR 대시보드(attach 페이지) 스캔 절차에 마지막 단계로 추가 — sandbox(env 2, `attach.sandbox.step4`)·intoss(env 3, `attach.intoss.step5`) 양쪽 family, ko/en 모두.
- `devtools-test` CLI의 러너 터미널 출력(scan-wait 배너) — `attach-orchestrator.ts`의 공유 `header`에 한 줄 추가, `start_attach` MCP 도구 결과와 CLI 표준출력 양쪽에 동일하게 실림.
- (선택) evaluate 타임아웃이 재시도까지 실패했을 때의 최종 에러 메시지에 진단 힌트 추가(`relay-worker.ts`) — "기기 앱이 백그라운드로 갔을 수 있음"을 덧붙여 사후 진단을 빠르게.

Closes #766.

- 22653eb: in-app 디버그 표면에 graceful detach 추가 — run 종료 시 우리가 주입한 오버레이·상태를 정리해 미니앱을 조작 가능 상태로 되돌린다 (#748).

run7 실기기 관측(디버그 세션 종료 후 "Debugger Disconnected" 잔존)의 (b)-가설 코드 원인은 우리 표면 3건이었다: ① CDP로 주입된 `#__ait_debug_indicator` 배지가 종료 후 영구 잔존(`attach-orchestrator.ts` `buildIndicatorExpression`가 렌더, `relay-factory.ts` `close()`가 disconnected로만 바꾸고 제거는 안 함), ② eruda 인-페이지 콘솔이 unmount 없이 잔존, ③ keepAwake가 `beforeunload`에서만 복구돼 세션 종료(비-unload) 시 화면이 계속 awake.

- **배지**(`buildIndicatorExpression`): disconnected 상태를 non-blocking(`pointer-events:none` 즉시)·self-dismissing(창 이후 fade→DOM 제거)으로 변경. 재연결(`ait:relay-ws-state` open) 시 self-dismiss 취소·재마운트(transient 터널 blip은 배지를 날리지 않음), 컨트롤러는 유지돼 재주입 시 `window.WebSocket` 이중 래핑 없음. 기본 disconnected 라벨을 ko-primary `디버거 연결 끊김`으로.
- **in-app**(`attach.ts` `detachDebugSurface()`): 단일 idempotent·비-throw 정리 함수. 배지 제거 + eruda unmount(`unmountEruda()`) + keepAwake 복구. relay WS 종료의 모든 경로에 배선 — 비-4401 종료는 grace window 후(재연결 시 취소), 4401(TOTP 만료=종결)은 즉시, `error`는 방어적 스케줄, `pagehide`는 즉시(beforeunload-safe). `#478` fail-fast 보존을 위해 WS observer proxy는 의도적으로 유지.

경계(가설 a): 스피너 + 전체 터치 무반응은 우리 레이어 밖 — 우리 표면은 full-viewport 요소·body 스크롤/pointer 잠금·capture-phase 리스너가 없어 구조적으로 모든 입력을 흡수할 수 없다. 네이티브 토스 앱 오버레이는 JS로 해제 불가라 시도하지 않고 코드 주석으로 명시. 실기기 run7 재현 확인은 폰-게이트라 다음 env3 세션에서 검증 예정.

- adab590: `getConsentedUserData` mock 추가 — `@apps-in-toss/web-framework` 2.x stable 라인에만 존재하는 export(3.0-beta 표면엔 부재, `PermissionError`의 역비대칭)를 mock 표면에 반영. `appLogin`/`getAnonymousKey` async-bridge 패턴을 미러해 `aitState.state.auth.consentedUserData`(기본 `{ USER_NAME: 'mock-user-name' }`, `aitState.patch('auth', …)`로 dial)를 resolve. 타입 asymmetry는 기존 `AssertIfPresent`로 처리(3.0-beta는 skip, 2.x는 strict `AssertCompat` 게이트) — `as unknown as` 캐스트 불필요(선언 shape를 로컬 재선언, 반환값이 선언 타입 내부라 구조적 호환). 다운스트림 sdk-example 배선은 sdk-example#331. Closes #798.

## 0.1.141

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@ait-co/devtools",
"version": "0.1.141",
"version": "0.1.142",
"description": "Development tools for Apps in Toss mini-apps — mock SDK, floating devtools panel, and universal bundler plugin",
"type": "module",
"engines": {
Expand Down
Loading