You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/maintenance/backlog-triage.ko.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,8 @@
37
37
| 대용량/메모리/RecyclerView 크래시 |`#219`, `#235`, `#442`, `#523`|`planned-fast-follow`|`#728`에서 큰 파일 byte cache 제한과 문자열 검색 결과 상한/stable key를 먼저 넣었다 |`#728` 병합 후 실제 150MB 파일과 긴 문자열 리스트로 재검증하고 나머지 OOM 경로를 분리 |
38
38
| 회전/상태 복원 크래시 |`#160`|`covered-by-open-pr`|`#728`에서 Activity 재생성 시 외부 import intent 재처리를 막는 1차 가드를 넣었다 |`#728` 병합 후 실제 회전 회귀를 확인하고 정리 |
39
39
|`.so`/ELF/autosetup |`#514`, `#543`, `#576`, `#137`|`covered-by-open-pr`|`#728`에서 64-bit ELF machine type 매핑과 override autosetup 재적용 경로를 먼저 수정했다 |`#728` 병합 후 실제 `.so` 샘플로 재검증하고 남는 parser 문제만 분리 |
40
-
| crash report 저신호 묶음 |`#716`, `#672`, `#512`, `#508`, `#507`, `#490`, `#438`, `#376`, `#280`|`needs-repro`| 제목만으로는 원인 판단이 어렵고 재현 자료가 부족하다 | 공통 템플릿으로 추가 정보 요청 후 재현 안 되면 정리 |
40
+
| 구형 Android archive 감지 크래시 |`#507`, `#508`|`covered-by-open-pr`|`#728`에서 archive 확장자 fast path와 `NoClassDefFoundError` 방어를 넣어 구형 Android의 Commons Compress 감지 크래시 경로를 우회했다 |`#728` 병합 후 Android 6~7 계열에서 archive chooser와 open 경로를 재확인하고 정리 |
41
+
| crash report 저신호 묶음 |`#716`, `#672`, `#512`, `#490`, `#438`, `#376`, `#280`|`needs-repro`| 제목만으로는 원인 판단이 어렵고 재현 자료가 부족하다 | 공통 템플릿으로 추가 정보 요청 후 재현 안 되면 정리 |
41
42
| SWF 요청 |`#721`|`planned-fast-follow`| 모바일 SWF 확장/디컴파일 요구는 남아 있지만 추적 스레드는 하나로 줄었다 | 기준선 병합 후 포맷 확장 우선순위에서 다시 평가 |
42
43
| 포맷 확장 요청 |`#120`, `#116`, `#124`, `#129`|`planned-fast-follow`|`#129`는 `#728`에서 generic archive extraction으로 먼저 흡수했고, 나머지는 기준선 복구 후가 맞다 |`#129`는 `#728` 병합 후 정리하고 나머지는 포맷별 난이도와 수요를 다시 평가 |
43
44
| export/저장 유틸 |`#123`, `#159`, `#720`|`covered-by-open-pr`|`#728`에서 project ZIP export, detail `.txt` 저장, import 파일명 정규화/테스트를 함께 정리했다 |`#728` 병합 후 실제 기기에서 export/save 동작 확인하고 정리 |
Copy file name to clipboardExpand all lines: docs/maintenance/implementation-log.ko.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,6 +43,7 @@
43
43
| 이슈 `#95` imported project reopen 경계 정리 | exported project ZIP을 import한 뒤 `sourceFilePath`, `generatedFolder`, `project_info.json` 경로를 새 프로젝트 디렉터리 기준으로 재작성하고, temp extract 경로 매핑을 제거하도록 바꿨다 | SAF나 로컬 파일에서 가져온 project archive를 다시 열었을 때 삭제된 temp extract 경로나 예전 경로를 계속 참조하는 문제를 막아 reopen/open 경계를 실제 프로젝트 위치로 닫았다 |`app/src/main/java/com/kyhsgeekcode/disassembler/project/ProjectManager.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/ProjectManagerTest.kt`| 완료 |
44
44
| 이슈 `#95` project archive / 기존 project reopen 연결 | chooser의 `Open as project` 흐름이 기존 project 디렉터리와 exported project ZIP을 실제로 열도록 연결하고, project zip은 `project_info.json` 존재 여부로 판별하게 바꿨다 | 이전에는 `openProject` 플래그가 state에만 저장되고 실질 동작이 없어서 reopen 경계가 끊겨 있었는데, 이제 기존 project 디렉터리는 바로 열고 exported project ZIP은 바로 import할 수 있다 |`app/src/main/java/com/kyhsgeekcode/disassembler/project/ProjectManager.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/viewmodel/MainViewModel.kt`, `app/src/main/java/com/kyhsgeekcode/filechooser/model/FileItem.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/viewmodel/ProjectOpenActionTest.kt`| 완료 |
45
45
| 이슈 `#129``.ar` archive 지원 | 공용 archive extractor를 추가하고, Compose/legacy drawer의 archive 확장 경로를 ZIP 전용 구현에서 generic archive extractor로 교체했다 | archive 판정은 되는데 실제 확장은 ZIP만 되던 불일치를 제거해서 `.ar` 같은 지원 가능한 archive도 실제로 탐색 가능하게 만들었다 |`app/src/main/java/com/kyhsgeekcode/Util.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/ui/FileDrawerTree.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/FileDrawerListItem.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/FileDrawerListAdapter.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/ArchiveExtractionTest.kt`| 완료 |
46
+
| 이슈 `#507`, `#508` 구형 Android archive 감지 크래시 | archive 판정에 확장자 fast path를 추가하고, Commons Compress 탐지/추출 경로가 `NoClassDefFoundError`를 앱 크래시로 터뜨리지 않도록 방어했다. ZIP 추출기는 첫 엔트리 뒤 스트림을 닫던 버그도 같이 수정했다 | Android 6~7 계열에서 `ArchiveStreamFactory.detect(...)`가 내부적으로 사용할 수 없는 클래스를 건드리며 죽던 경로를 우회했고, ZIP/APK/JAR/AAR는 안전한 내장 경로로 처리하도록 바꿔 chooser와 archive open 경계를 안정화했다 |`app/src/main/java/com/kyhsgeekcode/FileExtensions.kt`, `app/src/main/java/com/kyhsgeekcode/Util.kt`, `app/src/test/java/com/kyhsgeekcode/ArchiveDetectionTest.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/ArchiveExtractionTest.kt`| 완료 |
46
47
| 프로젝트 경로/파일명 회귀 방지 | 프로젝트 상대경로 계산과 import 파일명 정규화를 pure helper로 분리 | 단위 테스트가 가능하도록 로직을 분리하고 경계 케이스를 줄였다 |`app/src/main/java/com/kyhsgeekcode/disassembler/project/ProjectManager.kt`, `app/src/main/java/com/kyhsgeekcode/disassembler/viewmodel/MainViewModel.kt`| 완료 |
47
48
| 회귀 테스트 부재 |`ProjectManager`, 저장소 권한, Hex 레이아웃, import 파일명 테스트 추가 | 최소한의 유지보수 안전망을 확보했다 |`app/src/test/java/com/kyhsgeekcode/disassembler/ProjectManagerTest.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/PermissionUtilsTest.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/ui/components/HexViewLayoutTest.kt`, `app/src/test/java/com/kyhsgeekcode/disassembler/viewmodel/ImportedFileNameTest.kt`| 완료 |
48
49
@@ -78,6 +79,7 @@
78
79
| project export archive 테스트 | 통과 | ZIP 엔트리가 절대경로를 포함하지 않고 `sourceFilePath`, `baseFolder/...`로 묶이는지 확인 |
79
80
| details export file name 테스트 | 통과 | detail 저장 파일명이 원본 파일명 기반으로 생성되고 금지 문자를 제거하는지 확인 |
80
81
| generic archive extraction 테스트 | 통과 | ZIP과 `.ar`가 같은 extractor로 풀리고 path traversal 항목은 거부되는지 확인 |
82
+
| archive detection 회귀 테스트 | 통과 | 지원 확장자는 fast path로 archive로 인식하고, ZIP/APK/JAR/AAR 경로는 구형 Android에서도 Commons Compress 탐지 크래시 없이 처리하는 기반을 고정 |
81
83
| workflow YAML 파싱 | 통과 |`.github/workflows/ci.yml`, `.github/workflows/release.yml` 모두 Ruby YAML 파서 기준 확인 |
0 commit comments