Skip to content

변경 이력

@platform/vue-debugger사용자 영향 중심 요약입니다. 각 항목은 자세한 설명이 있는 문서로 연결됩니다. 전체 원문은 패키지의 CHANGELOG.md를 보세요.

0.17.4 — 표시 정합 2건 (실습장 적대 검증 발견)

실습장 전 콘텐츠를 "따라하면 실제로 성공하는가"로 적대 검증하는 과정에서 확인된 디버거 표시 불일치를 수정했습니다: 취소된 요청이 통합 타임라인에 → null로 찍히던 것을 **'취소'**로(패널 표기와 대칭), dead click 주석 수치 정정.

0.17.3 — 감사 백로그 선별 종결 (타임라인 행 점프 · 함정 제거 · WONTFIX 확정)

감사 LOW 16건 중 실사용 경로를 건드리는 6건만 수정하고, 나머지는 실사용 신호가 나오기 전까지 안 하기로 확정(WONTFIX)한 릴리스입니다.

  • 타임라인 행 점프 완성 — 정보 탭 타임라인 행을 탭하면 이제 탭 전환에서 끝나지 않고 대상 패널의 해당 행으로 스크롤+강조됩니다(7개 패널 — 네트워크는 정확 매칭, 나머지는 시각 최근접). → 패널: 정보
  • report.endpoint 설정 함정 제거 — 전송 URL의 네트워크 추적 제외가 부분일치에서 정확 일치로 바뀌었습니다. / 같은 짧은 endpoint를 설정해도 전 트래픽이 네트워크 탭에서 사라지지 않습니다.
  • 호출 위치 오귀속 2건 수정axios.get('/')류 짧은 경로가 무관한 요청의 호출 위치를 가로채던 것(경로 경계 매칭), 연속 router.push에서 다음 이동이 이전 호출지를 물려받던 것(큐 정리 방향).
  • 리포트 캡처 시각에 날짜 표시 — 어제 리포트를 불러와도 '방금 것'과 구분됩니다.
  • 투어 Router 스텝 신설 — 실습장 투어가 이제 실제로 11개 패널 전부를 다룹니다(투어 전용 가드 라우트로 이탈 없이 차단·리다이렉트 재현).
  • 문서 버전 배지 자동화 — 우측 상단 배지가 v0.16.1로 정체돼 있던 것을 패키지 버전 자동 동기화로 교체.

WONTFIX 10건과 각 사유는 감사 리포트(저장소 docs/DEBUGGER-AUDIT-2026-07-27.md)의 "LOW — 처리 결정" 절에 기록되어 있습니다.

0.17.2 — 전면 감사 MED 일소 (예외 격리 완결 · 취소 표시 · 클립보드 폴백)

2026-07-27 감사의 확인 MED 11건을 일괄 수정한 버그픽스 릴리스입니다(0.17.1 HIGH 후속).

  • 수집기 예외 격리 완결 — storage 쓰기/쿠키·XHR/fetch 기록 준비·pinia 구독/액션 훅까지 전 수집 경로가 try/catch로 격리됩니다. 수집 코드가 어떤 예외를 만나도 앱의 setItem/fetch/$patch 호출은 영향받지 않습니다. 깊은 중첩 상태의 스냅샷 동결도 재귀 상한으로 안전해졌습니다.
  • 원복·수명 가드 — 디버거 제거(destroy) 시 Router의 push/가드 등록 함수 복원이 "현재 값이 우리 래퍼일 때만"으로 바뀌어, 디버거 이후에 붙은 다른 도구의 래핑을 제거하지 않습니다. 원복이 불가능한 경우에도 살아남은 래퍼가 죽은 수집기에 기록하지 않습니다(network·storage·router 공통).
  • 읽기 의존성 검사(0.17)의 관전자 효과 제거 — 컴포넌트 검사가 무관한 스토어의 lazy 게터를 강제 평가하지 않습니다(캐시 엿보기로 교체, 분류 정확도 유지).
  • 취소 요청이 '실패'로 보이던 오표시 수정 — AbortController로 취소된 요청은 네트워크 패널에서 중립 '취소'로 표시되고, '실패만' 필터에서 제외됩니다. → 패널: 네트워크
  • 스토리지 편집 안전장치 — local↔session 영역 전환 시 열려 있던 편집이 자동 취소됩니다(이전 영역의 옛 값이 새 영역의 같은 키에 저장되던 사고 경로 차단).
  • 에러 패널 가상화 + 지연 소스맵 복원 — 에러 폭주 시에도 화면 분량만 렌더하고, 소스맵 복원은 행을 펼칠 때만 실행합니다(저사양 WebView 프리즈 방지).
  • 클립보드 복사 폴백 — 사내 http·WebView(비보안 컨텍스트)에서도 cURL/값/리포트 복사가 동작합니다(execCommand 폴백). 실패하면 '복사 실패'를 표시해 무음 실패가 없습니다.

0.17.1 — 전면 감사 HIGH 일소 (redact 완결 · 관전자 효과 차단 · Esc 컨텍스트)

2026-07-27 전면 감사(코어 적대적 검토 + 문서-코드 대조 + 실동작 검증)에서 확인된 HIGH 5건을 일괄 수정한 버그픽스 릴리스입니다.

  • redact 마스킹 완결report.redact: true가 상태·스토리지·네트워크 본문만 가리고 같은 데이터의 복사본(뮤테이션 before/after 스냅샷, 액션 인자, 타임라인 detail, URL의 ?token=… 쿼리, 선택 컴포넌트 값 미리보기)은 평문으로 두던 문제를 봉합했습니다. redact를 켜고 전송/저장한 리포트에서 토큰이 새는 경로가 사라집니다. → 보안
  • "검사 안 하면 비용 0" 계약 복구 — 패널을 닫으면 선택 컴포넌트의 변경 추적(sync watcher)도 함께 정지합니다(이전엔 닫아도 계속 돌았음). 선택한 컴포넌트가 언마운트되거나 KeepAlive로 비활성화되면 추적을 자동 정지하고 토스트로 알립니다 — 비활성 컴포넌트의 computed를 디버거가 계속 재계산하던 관전자 효과 제거.
  • Esc가 컨텍스트를 인식 — 값 편집·검색 입력·도움말 팝오버 안의 Esc는 이제 그 컨텍스트만 취소하고 패널은 닫지 않습니다. 호스트 앱에서 누른 Esc(모달 닫기 등)도 더는 가로채지 않습니다. 패널 닫기는 디버거에 포커스가 있을 때의 Esc 또는 닫기 버튼/Alt+Shift+D.
  • 문서 사이트 webpack 안내 4곳 교정VUE_APP_DEBUGGER OR 단독 구패턴(운영 누출 위험)을 통합 가이드__VDBG_STAGING__ AND 표준으로 치환하고, 재발 방지 검사를 다중행·표·산문 변형까지 잡도록 보강했습니다.
  • 플레이그라운드 투어 데모 복구/api 이중 접두사로 투어 3부(성공/느림/401/500)와 race/storm 케이스가 404로 왜곡되던 문제 수정.

0.17.0 — 2인 패널 전면 검토 반영 (읽기 의존성 맵 · 비활성 탭 동결)

베타(0.17.0-beta.1~3, 브랜치 전용)와 0.16.1 안정판을 각각 2인 리드 패널(FE·브라우저 플랫폼)이 전면 검토한 뒤, 그 결과만으로 구성한 릴리스입니다.

  • 읽기 의존성 맵(신규, trackReads 기본 on) — 스토리지 패널에 "어느 코드가 어느 기준정보 키를 읽는가"를 호출 스택(소스맵 복원)으로 역인덱스. 캡처는 키당 고유 출처 16곳(+중복 예산 48)·관측 키 500개로 유계, 값은 원본 그대로 반환(앱 무영향). ⚠ storage['k'] 괄호/점 접근은 스펙상 관측 불가 — "출처 0곳 ≠ 미사용". → 패널: 스토리지 · 옵션 trackReads
  • 비활성 탭 동결 — KeepAlive에 캐시된 '방문한 탭'이 이벤트마다 오프스크린 재계산되던 비용(0.15.0부터 잠복 — 대형 스토어/수 MB 스토리지에서 실측 최대 ×4.5)을 동결하고, 재방문 시 1회만 따라잡습니다. 활성 탭 체감은 불변.
  • 기록 정확성 2건 — XHR 인스턴스 재사용(레거시 폴링 유틸) 시 이전 요청 기록이 다음 응답으로 덮이던 오염 수정, 콘솔 '오래된 로그 N건 버려짐' 배너가 0건에도 상시 표시되던 오표시 수정.
  • cURL 복사 안전화 — URL·content-type까지 셸 이스케이프('복사→터미널 붙여넣기' 인젝션 차단) + 복사 버튼 확인 고지.
  • iOS 스택 품질Error.stackTraceLimit을 낮추지 않고 올리기만(Math.max(prev, 60)) — iOS(JSC 기본 100)에서 깊은 체인의 상위 호출자가 잘리던 문제 방지.
  • 메모리 — 스토리지 변경 로그의 값 미리보기 2,000자 상한(수 MB setItem이 버퍼·리포트에 통째로 쌓이던 것 봉합).
  • 브리지 rejection 재보고 — 디버거 관측이 앱의 unhandledrejection(Sentry류 포함)을 가로채는 것을 에러 패널 재보고로 보상(정직 고지 포함). → 격리·호환·한계
  • 문서·예제 누출 패턴 일소 — 출하 README/SETUP·독스트링·데모의 구패턴(MODE 미결합) 11곳 치환 + 재발 방지 grep 게이트, webpack 변형 안전 패턴 제시. → 보안·누출 차단
  • 검토 전문(저장소): docs/DEBUGGER-BETA-REVIEW-2026-07-02.md · docs/DEBUGGER-0.16.1-REVIEW-2026-07-02.md. 베타의 Slice 2(stale 배지)·Slice 3(3중 정합성)은 검토 결과 미반영(오탐/미탐 실측 — 재설계 백로그).

0.16.1 — 앱 무영향 하드닝 (순수 디버거 적대 감사)

  • fetch 응답 타이밍(ZERO-1) — 응답 본문 미리보기를 백그라운드로 읽어, 앱의 await fetch()가 디버거의 본문 읽기를 기다리지 않게(큰 text/JSON에서 관찰되던 지연 제거, XHR과 대칭).
  • console 수집 격리(ZERO-2) — 원본 출력을 먼저 내보내고 수집은 try/catch로 격리 → 어떤 인자(toJSON·toString·getter throw)에도 디버거 예외가 앱으로 전파되거나 원본 로그를 삼키지 않음.
  • errorHandler 수집 격리(ZERO-3) — 우리 기록이 던져도 앱의 기존 핸들러는 반드시 호출.
  • 남는 한계(정직 고지): app.mixin은 Vue 한계로 destroy 후 잔존(prod 0), 래퍼 .name/.length 비보존, 활성 시 핫패스 동기 캡처 비용 존재. → 격리·호환·한계

0.16.0 — axios 호출 위치 추적 (traceAxios)

  • traceAxios(instance)(옵트인) — axios는 내부 비동기 경계로 전송 시점엔 호출 체인이 끊겨, 네트워크 탭에 axios 내부 프레임만 보입니다. 인스턴스에 한 줄이면 호출 시점에 체인을 잡아 onMounted부터의 전체 호출자를 복원합니다. → axios 호출 위치 추적
  • 동작 무영향(검증됨) — 순수 pass-through, 요청에 헤더 무주입(method+URL 매칭 → HMAC 서명 API 안전), 안 켜면 0 비용, untraceAxios로 원복. 구현 전에 '앱 동작·서버가 받는 요청 바이트 동일'을 먼저 실측 검증.
  • (플레이그라운드) /#/lab/callstack에 추적 OFF vs ON 대조 카드.

0.15.2 · 0.15.3 — 스토리지 패널 개선

  • 가상화 + 키/값 검색·하이라이트 + 개수 표기 + 값 복사 — 대용량 세션/로컬 스토리지에서 렉 없이 좁혀 보기. → 패널: 스토리지

0.15.1 — 보안 하드닝 (금융권 감사)

  • 누출 분기 mode 명시화MODE === 'staging'을 AND로 박아, 셸/CI 환경변수 VITE_DEBUGGER=on이 새도 production 누출 0. → 보안·누출 차단
  • 누출 게이트 binnpx vue-debugger-leak-check <dist>(의존성 0, 마커 3종 스캔, 누출 시 exit 1)를 자사 CI에 배선. → 보안 2층
  • attachDebugger 트립와이어 — 활성화 시 콘솔에 끌 수 없는 경고(운영 콘솔에 보이면 누출). → 보안 3층
  • production 소스맵 0(검증계만 hidden).

0.15.0 — 성능 · UX

  • 탭 전환 즉각화(KeepAlive) — 패널을 탭마다 재마운트하지 않고 캐시 → 저사양 PC에서 재방문 즉각, 검색/필터 상태 유지.
  • 컴포넌트 트리 가상화 — 화면 분량(~30행)만 DOM에 → '모두 펼치기'한 초대형 트리도 부드럽게. → 패널: 컴포넌트
  • 네트워크 헤더(요청/응답) — 401·CORS·캐시·쿠키 디버깅. → 패널: 네트워크
  • 노드 수 표기 — 트리 헤더에 컴포넌트 N개, 상한 시 N / 5000.
  • 트리 ↑/↓ 키 내비 추가.

0.14.x — 콜스택 · 인과 맥락

  • 소스맵 콜스택 — 개발자 호출자를 앞에서부터 최대 5스텝 강조, 가장 깊은 줄에 호출 위치 → 배지. 내부 .map 요청은 네트워크 탭 비기록.
  • 인과 맥락(breadcrumb) — 네트워크·에러에 직전 클릭·네비게이션 등을 시간순으로(Sentry/Datadog식, 저비용). .then·타이머 경계로 콜스택이 끊겨도 "무엇이 이끌었나"는 남음. → 패널: 네트워크
  • cURL 복사 — 요청을 curl(헤더·본문 포함)로 복사해 재현.
  • 컴포넌트 트리 검색/접기 — 검색·필터, ▸/▾ 접기, ⊟/⊞ 모두 접기/펴기.
  • 실습 데모: 8443 플레이그라운드 /#/lab/callstack(콜스택 복원 가능/불가)·/#/lab/tree(트리 검색/접기).

0.13.0 — 보안 옵션 · 정확성

  • report.redact(민감정보 마스킹·옵트인)·report.allowHosts(전송 호스트 화이트리스트) 신설. → 옵션·보안
  • untraceGuards API, traceGuards 멱등화. → 라우터 가드 추적
  • Pinia 되돌리기 전체 상태 교체 복원, fetch 스트리밍 상한(OOM 방지), dead-click 판정 700→1000ms.

0.12 이하 — 기반

11개 패널·Shadow DOM 격리·런타임 의존성 0(peer vue만)·프로덕션 dead-code 제거. 설계 배경은 격리·호환·한계를 보세요.

개발/검증 환경 전용 인페이지 Vue 디버거 · 진짜 프로덕션엔 코드가 들어가지 않습니다