Task #833: rhwp-studio "다른 이름으로 저장" + 저장 cancel fallback download 정정#834
Open
jangster77 wants to merge 15 commits into
Open
Task #833: rhwp-studio "다른 이름으로 저장" + 저장 cancel fallback download 정정#834jangster77 wants to merge 15 commits into
jangster77 wants to merge 15 commits into
Conversation
…fallback 우회
본질: file 저장 흐름 2건 통합 정정.
(A) Save As 기능 부재 — Ctrl+Shift+S / 파일 메뉴 "다른 이름으로 저장" 추가.
(B) 저장 권한 프롬프트 (Chrome "변경사항 저장") 취소 시 fallback download 오발현
→ Downloads 폴더 의도하지 않은 저장 + chrome-extension viewer 자동 연결.
수정:
- file-system-access.ts: SaveDocumentOptions 에 forceSaveAs?: boolean 추가.
saveDocumentToFileSystem 분기 — forceSaveAs 시 currentHandle 우회 → 항상 picker.
- commands/file.ts:
· isUserCancelError(e) 모듈-레벨 helper 신규 (AbortError + NotAllowedError 검출)
· file:save catch 정정 — AbortError 단독 → isUserCancelError 사용
· file:save-as command 신규 (forceSaveAs: true + 동일 catch 패턴 + Ctrl+Shift+S
shortcut label + HWPX 비활성 가드 edwardkim#196 정합)
- shortcut-map.ts: Ctrl+Shift+S → file:save-as 등록 (영문 's' + 한글 IME 'ㄴ').
- index.html: 파일 메뉴 "저장" 아래 "다른 이름으로 저장(A)..." 항목 추가.
검증: tsc --noEmit clean.
다음 단계: Stage 2 (회귀) — cargo test + clippy + tsc 전체 재확인.
…회귀 부재 본질: 본 task 변경 (TS 만) 의 회귀 영향 검증. 검증 결과: - cargo test --release: 1351 passed, 0 failed (base = local/devel, Task edwardkim#825/826 PR edwardkim#832 머지 전. 본 task TS 만 변경이므로 Rust test 무영향 — 정상) - cargo clippy --release -- -D warnings: clean - npx tsc --noEmit: clean - WASM 재빌드 불필요 (TS 만 변경) 회귀 영향 분석: - forceSaveAs 는 optional (default false) → 기존 file:save 동작 유지 - isUserCancelError 는 기존 AbortError swallow + NotAllowedError 추가 swallow (기존 처리 회귀 부재 + cancel 정정만 추가) - 신규 file:save-as command + 신규 단축키 + 신규 메뉴 항목 → 기존 binding/메뉴 무영향 - Rust / WASM 무영향 다음 단계: Stage 3 — 작업지시자 시각 검증 + 보고서 + PR.
본질: file 저장 흐름 2건 통합 정정 완료. 작업지시자 시각 판정 통과. 산출물: - mydocs/report/task_m100_833_report.md (최종 보고서) - mydocs/orders/20260511.md (Task edwardkim#833 entry 추가) 시각 판정 통과 확인: (A) Save As - ✅ 파일 메뉴 "다른 이름으로 저장(A)..." 항목 표시 - ✅ showSaveFilePicker 다이얼로그 - ✅ Ctrl+Shift+S 단축키 (영문 + 한글 IME) - ✅ currentFileHandle 갱신 (이후 Ctrl+S 새 파일 overwrite) - ✅ Ctrl+S 회귀 부재 (B) Cancel fallback 정정 - ✅ 권한 프롬프트 취소 → download 미발현 - ✅ picker 취소 → download 미발현 - ✅ 정상 저장 회귀 부재 알려진 제약 (별도 follow-up): - HWPX 출처 파일은 file:save-as 도 비활성 (edwardkim#196 정합) closes edwardkim#833
# Conflicts: # mydocs/orders/20260511.md
…ders 갱신) # Conflicts: # mydocs/orders/20260511.md
# Conflicts: # mydocs/orders/20260511.md
… 후속 (5/11 orders 갱신) # Conflicts: # mydocs/orders/20260511.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rhwp-studio 의 file 저장 흐름 관련 결함 2건 통합 정정.
(A) Save As 기능 추가
본질: 현행
file:save(Ctrl+S) 만 존재,currentFileHandle자동 overwrite 로 새 파일명 저장 불가. 한컴오피스 표준 동작 (Ctrl+Shift+S) 부재.정정:
SaveDocumentOptions.forceSaveAs?: boolean옵션 추가 →currentHandle우회 + 항상showSaveFilePickerfile:save-ascommand 신규 (HWPX#196비활성 가드 정합)Ctrl+Shift+S(영문 + 한글 IMEㄴ)(B) 저장 권한 프롬프트 취소 시 fallback download 오발현 정정
본질: Chrome "변경사항을 저장하시겠습니까?" 권한 프롬프트 → "취소" 클릭 → catch 가
AbortError만 swallow →NotAllowedError등 다른 cancel 에러는 fallback path 진입 → blob URL download → chrome-extension viewer 자동 연결 chain.정정:
isUserCancelError(e)모듈-레벨 helper 신규 —AbortError + NotAllowedError통합 검출file:save+file:save-as양쪽 catch 동일 적용인프라 재사용
기존 인프라만 사용 (신규 인프라 도입 부재):
saveDocumentToFileSystem(기존)showSaveFilePicker(기존 picker)showSaveAsfallback dialog (기존)검증
cargo test --release: 1351 passed, 0 failed (TS 만 변경, Rust 무영향)cargo clippy --release -- -D warnings: cleannpx tsc --noEmit: clean변경 파일
rhwp-studio/src/command/file-system-access.tsforceSaveAs?: boolean옵션rhwp-studio/src/command/commands/file.tsisUserCancelErrorhelper +file:savecatch 정정 +file:save-ascommandrhwp-studio/src/command/shortcut-map.tsrhwp-studio/index.html알려진 제약 (별도 follow-up)
file:save-as도 비활성 (#196정합 —sourceFormat !== 'hwpx'가드 유지). HWPX 완전 변환기#197후 검토.closes #833
Test plan
🤖 Generated with Claude Code