Skip to content

Windows UI redesign — Viewer workspace/Browse epic: four focused jobs #112

Open
2 of 4 issues completed

Description

@chammoru

한국어 — 작은 작업별로 진행하는 작업 묶음

이 이슈는 관련 작업을 묶는 관리용 상위 이슈입니다. 한 번에 구현하거나 한꺼번에 설계 승인하는 단일 작업이 아닙니다. 아래 개별 이슈를 각각 검토·완료합니다. 실행 범위와 순서는 개별 이슈의 질문·좁은 범위·선행 작업을 기준으로 정합니다. 아래에 남겨 둔 기존 단계 전체 설계는 참고 자료입니다.

개별 작업 화면·논의 질문·완료 조건
Viewer 명령 표시줄과 상태 표시줄 정리 #120
Browse의 상위 폴더·드라이브 이동을 눈에 보이게 표시 #121
Gallery 폴더명을 줄바꿈한 뒤 마지막 줄만 … 처리 #122
선택 파일과 적용 가능한 메뉴 명령을 명확하게 표시 #123

화면 맥락

제안 화면

구현된 앱 화면이 아닌 UI 제안입니다. 그림의 모든 주변 요소가 아니라 현재 논의 중인 개별 작업의 범위만 구현합니다.

진행 상태: 개별 작업 논의 대기. 연결된 작업 모두에 실제 구현·검증 증거가 있을 때까지 이 상위 이슈를 열어 둡니다. 전체 계획의 첫 논의는 #117의 글꼴입니다. 다음 작업과 릴리즈를 자동으로 진행하지 않습니다.


시각적 설명과 논의

Viewer는 가운데 이미지, 왼쪽 Browse, 선택적으로 오른쪽 Info, 고정된 명령·상태 줄을 유지합니다. Browse 내부 선택 조작이 주 이미지를 밀어내지 않습니다.

아래 도식은 구조와 동작을 설명합니다. 정확한 픽셀 배치·글꼴 렌더링이나 구현된 Windows 앱 스크린샷이 아닙니다.

flowchart TD
  subgraph WINDOW["제안 Viewer 구조"]
    CMD["상단: File · Open · Browse · Fit · 100% · Scaling · Compare · Info"]
    subgraph WORK["작업 영역"]
      direction LR
      NAV["Browse<br/>상위 이동·경로<br/>List / Gallery<br/>폴더명 줄바꿈<br/>선택 파일 명령"]
      IMAGE["주 이미지<br/>기존 Fit / 수동 확대 규칙<br/>선택 색 입힘·서랍 애니메이션 없음"]
      INFO["선택적 Info<br/>좁은 창에서는 보조 패널 하나"]
      NAV --- IMAGE --- INFO
    end
    STATUS["하단: 실제 형식 · 배율 · 위치"]
    CMD --> WORK --> STATUS
  end
Loading
flowchart TD
  SELECT["선택한 작업 대상 파일"] --> COUNT{"몇 개인가?"}
  COUNT -- "1" --> SINGLE["단일 파일 명령"]
  COUNT -- "2–4" --> COMPARE["선택 파일 비교 + 휴지통으로 이동"]
  COUNT -- "5개 이상" --> RECYCLE["휴지통으로 이동; 비교 개수 제한 설명"]
  FOLDER["폴더 또는 [..]"] --> NAVIGATE["이동; 파일 일괄 삭제 대상에서 제외"]
Loading

기존 단계 전체의 논의 질문 — 참고

  • 명령 순서와 상위 이동·경로 조작을 쉽게 찾을 수 있나요?
  • 폴더 카드 크기와 여러 줄 표시가 특히 한글 이름을 충분히 읽게 해 주나요?
  • 파란색에만 의존하지 않고 열린 파일·선택 파일·키보드 포커스를 구별할 수 있나요?

참고 자료 상태: 승인은 위의 개별 작업 질문을 기준으로 합니다. 단계 전체의 참고 내용을 한 번에 구현하는 작업으로 취급하지 않습니다.


상위 이슈·의존성

상위: #110. #111에 의존합니다. 선행 작업을 완료·검증한 뒤 진행합니다.

목표

기존 서랍 동작을 보존하면서 콘텐츠 중심 Viewer와 찾기 쉬운 탐색·선택 명령을 제공합니다.

구현 범위

  • 1단계 공통 규칙으로 실제 크기를 측정한 한 줄 명령 영역과 읽기 전용 상태 영역을 만듭니다. Open/Browse/Fit/100%/Scaling/Compare/Info 및 File/View/Tools 접근을 유지하고 필요하면 낮은 우선순위 명령을 More로 옮깁니다.
  • 파일 연결 시작은 패널을 닫은 이미지 우선 상태로 유지합니다. Windows 기본 제목 표시줄, 전체 화면/Escape 동작을 유지합니다.
  • Browse 기본 폭은 280 DIP(240–440)이며 저장한 폭을 존중합니다. 눈에 보이는 상위 이동, 경로, List/Gallery, 썸네일 크기를 제공합니다.
  • D:\00\_temp → D:\00 → D:\ → 드라이브 목록을 유지합니다. 모든 실제 폴더·드라이브 루트에 첫 항목 [..], 최상위에 [C:\]/[D:\]를 표시합니다. UNC 루트 정책을 유지하고 이동 실패 시 이전 화면을 보존합니다.
  • 문자 중심 폴더 카드를 유지합니다. 13/18 글자를 왼쪽·위 정렬하고 사용 가능한 높이에서 줄바꿈한 뒤 마지막 줄만 … 처리합니다. 초기 높이 116 DIP·여백 8은 기본값이며 2줄/5줄 고정 제한이 아닙니다.
  • 썸네일 파일명은 기본 2줄입니다. Gallery 표시 대상과 모든 파일의 List 접근, 제한된 캐시, 보이는 항목 우선 로딩, 미리보기 불가 상태를 유지합니다.
  • 현재 파일·다중 선택 체크·키보드 포커스를 구분합니다. 한 번 클릭 선택, 두 번 클릭/Enter 열기, Ctrl/Shift 기준점, 폴더의 파일 일괄 삭제 제외를 유지합니다.
  • 선택 명령은 Browse 안에 두고 주 캔버스를 변경하지 않습니다. 비교는 대상 파일 2–4개에서만 표시하고 4개 초과는 제한을 설명합니다. 적용 가능한 상황별 명령만 노출하고 휴지통 이동을 정확하게 처리합니다.

완료 조건

  • 640×480/960×600/1440×900 DIP 및 텍스트 확대에서 글자를 줄이거나 명령을 자동 2줄로 만들지 않아도 접근할 수 있습니다.
  • 긴 한글·영문·공백 없는 이름·혼합 이름의 앞부분을 보존하고 줄바꿈 후 … 처리합니다. 전체 이름에 접근할 수 있습니다.
  • 드라이브/UNC 이동, 접근 불가 드라이브, List/Gallery 필터링, 외부 디렉터리 변경, 경로 기반 선택이 정확합니다.
  • 1/2/4/5개와 다수 선택의 명령·개수가 맞습니다. 파일 클립보드 작업과 이미지 캡처 작업을 혼동하지 않습니다.
  • E가 원자적으로 한 번 전환하고 길게 누른 반복을 무시합니다. 파일·프레임을 넘기지 않고 Fit은 한 번 재계산하며 작은 이미지는 100%, 수동 확대·이동은 검사 지점을 유지합니다.
  • 새 선택·포커스 표시가 주 이미지에 색을 입히거나 잘라내거나 과도한 디코딩·그리기를 유발하지 않습니다.

실행·완료 규칙

Windows MFC Viewer/Comparator만 대상이며 상위 설계와 AGENTS.md를 따릅니다. 최신 origin/master에서 작업 범위에 맞는 브랜치를 만들고 관계없는 변경을 보존합니다. 기존 명령 ID와 렌더링·데이터 경로를 재사용합니다. 관련 자동·수동 검사를 수행하고 공통 코드 또는 릴리즈에 민감한 코드 변경에는 로컬 CoreRegressionTests 및 두 Windows Release 빌드도 수행합니다. 브랜치/PR, 검증 증거, 남은 한계, 회귀 수정 내용을 기록합니다. 목업 또는 빌드 성공만으로 완료 처리하지 않습니다. 이 구현 단계에서는 릴리즈를 태그하거나 게시하지 않습니다.


English original — 영어 원문 펼치기

Coordination epic — work through the small jobs

This issue groups related work; it is not one implementation job or one all-at-once design approval. Review and complete the linked leaf issues separately. Their questions, narrow scopes and prerequisites govern execution. The older phase-wide material below is reference context.

Focused job UI screen, question and acceptance checks
Refine the Viewer command and status bars #120
Make Browse parent and drive navigation visible #121
Make Gallery folder names wrap before final-line ellipsis #122
Clarify selected files and their applicable menu actions #123

Screen context

Proposed screen context

This is a UI proposal, not an implemented screenshot. Implement only the boundary of the leaf job under discussion, not every contextual element visible in the picture.

Coordination status: awaiting job-level discussion. Keep this epic open until its linked jobs have actual implementation/verification evidence. The first discussion is #117, typography only. No automatic next-job work or release.


Visual walkthrough and discussion

The proposed Viewer keeps the image in the middle, Browse on the left, optional Info on the right, and commands/status in stable rows. Local selection controls do not push the main image around.

Schematic only: these diagrams explain structure and behavior, not exact pixel geometry, font rendering, or an implemented Windows screenshot.

flowchart TD
  subgraph WINDOW["Proposed Viewer structure"]
    CMD["Top: File · Open · Browse · Fit · 100% · Scaling · Compare · Info"]
    subgraph WORK["Workspace"]
      direction LR
      NAV["Browse<br/>Parent and path<br/>List / Gallery<br/>Wrapped folder names<br/>Selected-file actions"]
      IMAGE["Main image<br/>Existing Fit / manual zoom rules<br/>No selection tint or drawer animation"]
      INFO["Optional Info<br/>One side panel at a time in narrower windows"]
      NAV --- IMAGE --- INFO
    end
    STATUS["Bottom: actual format · scale · position"]
    CMD --> WORK --> STATUS
  end
Loading
flowchart TD
  SELECT["Selected eligible files"] --> COUNT{"How many?"}
  COUNT -- "1" --> SINGLE["Single-file commands"]
  COUNT -- "2–4" --> COMPARE["Compare selected + Move to Recycle Bin"]
  COUNT -- "5 or more" --> RECYCLE["Move to Recycle Bin; explain comparison limit"]
  FOLDER["Folder or [..]"] --> NAVIGATE["Navigate; never include in file batch deletion"]
Loading

Historical phase-level discussion prompts (reference)

  • Are the command order and parent/path controls easy to discover?

  • Is the proposed folder-card size and multiline wrapping readable enough, especially for Korean names?

  • Can you distinguish the currently open file, selected files, and keyboard focus without relying on blue alone?

Reference status: use the focused leaf-job questions above for approval. This phase-wide material is not one implementation job.


Parent and dependencies

Parent: #110. Depends on #111. Complete and verify prerequisites before this stage.

Goal

Provide a content-first Viewer with discoverable navigation and selection commands, preserving all existing drawer behavior.

Implementation scope

  • Create a measured one-row command area and read-only status area using Phase 1 roles: Open, Browse, Fit, 100%, Scaling, Compare, Info; retain File/View/Tools access and move lower-priority commands to More when needed.
  • File-association startup remains image-first with side panels closed. Keep native title bar and fullscreen/Escape behavior.
  • Browse defaults to 280 DIP (240–440), honors saved widths, and includes visible parent navigation, breadcrumb/path, List/Gallery controls, and thumbnail sizing.
  • Preserve D:\00\_temp → D:\00 → D:\ → drive list, with [..] at every real folder/drive root and [C:\]/[D:\] at the top. Retain UNC-root policy; failed traversal preserves the old view.
  • Keep typographic folder cards. Left/top-align 13/18 captions; use the available card height for wrapping before final-line ellipsis. Initial height 116 DIP/padding 8 is a default, not a fixed two/five-line limit.
  • Default thumbnail captions to two lines; preserve Gallery eligibility and full List access, bounded caches, visible-first loading, and unavailable-preview states.
  • Distinguish current file, multi-selection checks, and keyboard focus. Preserve single-click selection, double-click/Enter opening, Ctrl/Shift anchors, and folder exclusion from file batch deletion.
  • Keep selection actions inside Browse without resizing the main canvas. Show Compare only for 2–4 eligible files; >4 gets a limit explanation. Expose only applicable context commands and accurate Move to Recycle Bin behavior.

Acceptance criteria

  • Commands remain accessible at 640×480/960×600/1440×900 DIP and text enlargement without label shrinking or automatic second command rows.
  • Long Korean, English, unbroken, and mixed-script folder names show the beginning and wrap before ellipsis; full names remain accessible.
  • Drive/UNC traversal, inaccessible drives, List/Gallery filtering, external directory changes, and path-based selection work correctly.
  • 1/2/4/5/many selections produce the correct commands and counts; file clipboard and image capture actions are not conflated.
  • E toggles atomically, ignores held repeat, never advances file/frame, refits Fit once, keeps small images at 100%, and preserves manual zoom/pan anchors.
  • New selection and focus styling does not tint/crop the main image or trigger excess decode/paint work.

Execution and completion rules

Windows MFC Viewer/Comparator only; follow the parent specification and existing AGENTS.md. Start a focused branch from current origin/master and keep unrelated changes intact. Reuse existing command IDs and rendering/data paths. Run relevant automated/manual checks plus local CoreRegressionTests and both Windows Release builds for changes affecting shared or release-sensitive code. Record the branch/PR, verification evidence, remaining limitations, and any regression fixes. A mockup or build alone is not completion. Do not tag/publish a release in this implementation step.

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