Skip to content

Windows UI redesign: Make Recycle Bin confirmation and operation results safe #127

Closed

Description

@chammoru

완료 · master 반영 및 v2.8.5 릴리즈 시작 — 2026-10-25

사용자가 커밋·푸시·병합·새 릴리즈를 명시적으로 승인하여 PR #145를 master에 병합했습니다 (79d5df5). v2.8.5 태그를 같은 병합 커밋에 푸시했고 릴리즈 워크플로가 시작된 것을 한 번 확인했습니다. 완료를 기다리며 반복 조회하지 않습니다. 합의한 구현·검증 범위가 완료되어 이 이슈를 completed로 닫습니다. 아래 로컬 검토/미병합 상태는 이전 단계의 이력입니다.

최종 실제 Viewer 전체 검사 15,478 PASS assertions, native exit 0 및 릴리즈 준비 후 core 검사·Viewer/Comparator Release x64 v143 빌드 통과. 로컬 버전은 0.0.0-dev를 유지합니다. 태그 푸시는 패키징·서명·GitHub Release 첨부 파일·Store 게시 완료를 뜻하지 않으며, 그 결과는 위 Actions를 기준으로 합니다.

최종 설계·검증 증거와 한계. 사용자 파일과 별도 디자인 파일은 보존했습니다. 다른 로드맵 이슈를 함께 닫지 않습니다.

대표 파일명·정확한 개수·제한을 명시한 상세 경로, 중립적인 Move to Recycle Bin/Cancel 기본값, 실제 Shell 결과에 근거한 부분 실패 안내를 반영했습니다. 기존 선택 대상·현재 이미지/비디오/RAW 복구·Browse 포커스를 유지합니다. 영구 삭제·앱 Undo·추정 진행률·#123 전체 선택 재설계는 추가하지 않았습니다. 실제 UI 확인에서는 취소만 했으며 자동 휴지통 테스트는 생성 fixture만 사용했습니다.

English: PR #145 is merged at 79d5df5, and v2.8.5 triggered release. Exact counts, representative original filenames, disclosed bounded full-path details, neutral action/default Cancel and actual per-item failure reporting are implemented and verified while retaining existing eligibility/source/frame/focus safety. No permanent deletion, app Undo, invented progress or broader #123 redesign is introduced. Close as completed. The final real Viewer suite passed 15,478 assertions/native exit 0, and release-preparation core/both Release builds passed. User media was not deleted. Packaging/signing/Store completion remains the tagged workflow's authority.


최신 상태 — 남은 확인/결과 UX 로컬 구현·검증 완료 (2026-10-25)

사용자가 #122·#127의 남은 검증·설계를 진행하도록 요청했습니다. origin/master e7e7370 기반 codex/issues-122-127-validation-recycle에 아래 구체 설계로 구현했습니다. 로컬 검토 단계이며 아직 커밋·푸시·병합·새 릴리즈하지 않았으므로 이슈는 열어 둡니다. v2.8.4의 현재 파일 삭제 안전성 작업에 더해, 이번에는 대표 파일명과 명시적인 확인/실패 UX까지 포함합니다.

구현한 작은 설계

  1. 기존 적격 미디어 선택 경로를 그대로 캡처합니다. 정확한 개수와 원문 파일명 3개를 표시하고 나머지 개수를 명시합니다. Show details에서 최대 10개의 전체 경로를 제공하며, 더 많으면 목록의 제한을 명시합니다. Windows UI redesign: Clarify selected files and their applicable menu actions #123 전체 선택 UI를 선행 구현하거나 선택 규칙을 바꾸지 않습니다.
  2. Windows 기본 TaskDialog의 중립적인 Move to Recycle Bin 버튼을 사용합니다. 초기/기본 동작은 Cancel이고 Escape도 취소입니다. 붉은 위험색·아이콘·추정 진행률·Undo는 추가하지 않습니다. OS 소유 대화상자의 기본 글꼴/고대비를 따릅니다.
  3. 실제 Shell 항목별 recycled 결과로 성공/실패 개수를 계산합니다. 실패 파일명 3개와 펼쳐 보는 실패 경로/가능한 Windows 오류 이유 10개를 제공하며 초과 개수를 명시합니다. 확인되지 않은 결과를 성공으로 추정하지 않습니다.
  4. 취소는 파일을 건드리지 않으며 확인 도중 폴더/generation 변경을 재검증합니다. 부분 실패 선택, 현재 이미지/정지·재생 프레임 복구, 다음→이전 생존 파일, 마지막 파일의 빈 화면/상태 및 Browse 포커스를 유지합니다. 전체 성공에 불필요한 추가 모달을 띄우지 않습니다. 영구 삭제와 앱 Undo는 범위 밖입니다.

실제 검증

  • 최종 실제 Viewer 전체 검사 15,478 PASS, native exit 0. 네이티브 확인창 1/2/4/5/25개 미리보기의 개수·Unicode 파일명·제한 표시·Cancel 기본값·실제 취소 반환을 포함합니다.
  • 실제 Shell 테스트에서는 생성한 fixture만 사용해 부분 잠금 실패/정확한 선택, 영구 삭제 fallback 거부, 현재 이미지 줌·이동·회전·ROI, autoplay 해제 중 비디오 재생/정지 프레임, RAW 해석·프레임 및 다음/이전/빈 상태를 검증했습니다. 사용자 사진은 삭제하지 않았습니다.
  • 실제 UI에서 Windows 텍스트 200%의 4개 파일 확인창과 고대비의 최종 1개 확인창을 확인하고 취소만 했습니다. Cancel 초기 포커스, 전체 accessible path, Show details→Hide details, 취소 후 Gallery 포커스를 확인했습니다. 관찰 중 발견한 And 1 more item. 단수 문구와 펼침/접기 라벨을 수정한 최종 빌드로 전체 검사를 통과했습니다.
  • Windows 배율·텍스트는 원래 100%, 고대비는 해제 상태로 원복했습니다. 내레이터는 실행하지 않았습니다. Core/layout/common UI 및 일반·검사용 Viewer/Comparator Release x64 v143 빌드 통과. 로컬 버전 0.0.0-dev.
  • 로컬 상세 기록 docs/verification/issues-122-127-completion.md; 최종 보고서 Tests/bin/x64/Release/issues122-127-full.txt. 병합/릴리즈와 최종 화면 승인은 별도입니다.

English: The user requested the remaining work. On the focused branch based on current master, native TaskDialog confirmation now shows the exact count, three original basenames and a disclosed, bounded ten-path expansion; the neutral Move to Recycle Bin action defaults to Cancel. Result feedback counts actual per-item Shell outcomes, names failures and provides bounded full paths/available localized Windows reasons without inventing success, progress, permanent-delete fallback or Undo. Existing selection eligibility and active-file/frame/focus recovery remain unchanged; this does not implement the broader #123 selection redesign. Final real Viewer full suite: 15,478 assertions, native exit 0. Native 1/2/4/5/25-item cancellation tests and generated-fixture partial failures/video/RAW recovery passed. Actual UI review at enlarged text and high contrast cancelled dialogs only; no user media was deleted. Original OS settings were restored. Local changes are not yet committed/pushed/merged/released; keep this issue open for review/delivery. No new tag or Store submission.


한국어 — 휴지통 이동 확인과 실제 작업 결과를 안전하게 표시

화면 시안

휴지통 이동 확인과 실제 작업 결과를 안전하게 표시 — Windows UI 제안

이미지를 클릭하면 크게 볼 수 있습니다. 순서도나 구현된 Windows 앱 스크린샷이 아닌 UI 화면 제안입니다. 이미지는 합성이고 수치는 설명용 예시입니다. 주변 조작 요소는 전체 계획의 맥락이며 이번 작업에서는 아래 범위만 구현합니다. 현재 빌드의 실제 변경 전·후 화면이라는 뜻이 아닙니다.

이번 작업의 목표

파일 작업의 영향과 실제 결과를 명확하게 보여줍니다.

작업 묶음: #113. 전체 설계와 반드시 유지할 기존 동작: #110.

선행 작업: #123

이번에 변경할 것

  • Move to Recycle Bin(휴지통으로 이동) 문구와 정확한 개수·대표 파일명을 사용합니다.

  • 확인 창의 초기 포커스는 Cancel(취소)로 둡니다. 일반적인 휴지통 명령은 시각적으로 중립적으로 표시합니다.

  • 부분 성공·실패를 정확하게 알립니다. 로딩·비어 있음·오류 안내를 일관되게 하고 근거 없는 진행률이나 Undo를 약속하지 않습니다.

이번 작업에서 하지 않을 것

영구 삭제, Undo 구현, 다중 선택 대상 규칙 변경, 네트워크 검색.

완료 조건

  • 취소하면 아무것도 제거되지 않습니다. 확인한 작업은 의도한 대상 파일에만 적용됩니다.

  • 부분 실패 시 남은 항목을 정확히 알리고 유효한 선택을 보존합니다.

  • 안내가 실제 작업을 설명하며 지원하지 않는 실행 취소를 약속하지 않습니다.

먼저 함께 결정할 질문

문구와 개수가 명확한가요? 초기 포커스를 취소에 두는 것이 적절한가요?

검토 상태: 위 최신 구현 설계와 로컬 검증을 완료했으며 최종 화면 검토·반영 대기. 이전 합성 시안은 참고이며 실제 구현은 위의 작은 설계를 따릅니다. 다른 작업 검토, 목업 조작, 이슈 등록은 이 작업의 승인이 아닙니다. 다음 작업으로 자동 진행하지 않습니다.

구현·검증 규칙

Windows MFC Viewer/Comparator만 대상입니다. #110과 AGENTS.md를 따르고 최신 origin/master에서 해당 작업용 브랜치를 시작합니다. 관계없는 변경은 보존하고 기존 명령·렌더링 경로를 재사용합니다. 영향을 받는 실제 앱 작업 흐름을 검증하고 공통 코드 또는 릴리즈에 민감한 변경에는 관련 로컬 핵심 테스트·빌드를 실행합니다. 실패는 수정하고 해당 검사를 반복한 뒤 PR/커밋, 실제 증거와 한계를 기록합니다. 목업 검사는 실제 Windows 앱 검증이 아닙니다. 이 작업은 릴리즈 태그·Store 게시·버전 증가를 승인하지 않습니다.


English original — 영어 원문 펼치기

Proposed UI screen

Recycle confirmation — proposed Windows UI

Click the image for full-size details. This is a UI screen proposal, not a flowchart or a screenshot of an implemented native build. Images are synthetic and values are illustrative. Surrounding controls are roadmap context; implement only this job's changes below. This is not a literal before/after claim about the current build.

One job, one outcome

Make the consequences and actual results of file operations clear.

Coordination epic: #113. Overall design and unchanged behavior contracts: #110.

Prerequisites: #123.

Changes in this job

  • Use Move to Recycle Bin wording and an exact count with representative filenames.

  • Start confirmation on Cancel and keep ordinary recycle actions visually neutral.

  • Report actual partial successes/failures; use coherent loading/empty/error feedback without invented progress or Undo.

Explicitly outside this job

Permanent deletion, implementing Undo, changing multi-selection eligibility or network discovery.

Done when

  • Cancel does not remove anything; confirmation targets only the intended eligible files.

  • Partial failures accurately name remaining items and preserve valid selection.

  • Feedback describes the correct operation and does not claim an unsupported undo.

Discuss this screen first

Is the wording/count clear, and is Cancel the right initial focus?

Review status: locally implemented and verified as specified above; final visual review/delivery pending. The historical synthetic image is reference, not the final native dialog. Reviewing another job, interacting with the mockup, or registering this issue does not approve this one. Do not automatically proceed to the next job.

Implementation and verification rules

Windows MFC Viewer/Comparator only. Follow #110 and AGENTS.md, start a focused branch from the current origin/master, preserve unrelated changes, and reuse existing command/rendering paths. Verify the affected native workflows and run the relevant local core tests/builds for shared or release-sensitive changes. Fix failures and repeat the affected checks; record PR/commit, actual evidence and limitations. Mockup checks are not native-app verification. This job does not authorize a release tag, Store publication or a version bump.

Activity

  1. chammoru commented on Oct 25, 2026

    @chammoru
    OwnerAuthor

    Merged the active-file recycling safety fix in PR #144 (6c1a087, master merge e7e7370) and pushed v2.8.4 to trigger release. Failed recycling now retains image/view/frame state, successful deletion keeps Browse keyboard focus, and removing the last image resets empty-view status. The real Browse integration suite passed 391 assertions twice; local Viewer and Comparator Release builds passed. Only generated fixture media was recycled.

    This implements a safety subset, not the entire confirmation/result UX design in #127. Representative filename presentation and the full agreed confirmation UX are not accepted by this change alone, so this issue stays open. See https://github.com/chammoru/Q1View/blob/v2.8.4/docs/verification/release-2.8.4.md for evidence, exclusions and the pre-existing Comparator CI timeout caveat.

    한국어: 현재 표시 파일 삭제의 실패 복구·포커스·빈 화면 상태를 v2.8.4에 반영했습니다. #127 전체 확인창/결과 UX가 완료된 것은 아니므로 닫지 않습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions