Skip to content

Conversation

@ohah
Copy link
Owner

@ohah ohah commented Oct 26, 2025

feat: 모던 UI 리디자인 및 사용자 경험 개선

📋 요약

이 PR은 모던한 다크 테마로 리디자인하고, 사용자 경험을 크게 개선합니다. Monaco Editor의 키보드 단축키를 수정하고, 불필요한 UI 요소를 제거하여 더 깔끔하고 직관적인 인터페이스를 제공합니다.

🚀 주요 변경사항

🎨 모던 UI 리디자인

  • macOS 스타일 창 제어: 빨강, 노랑, 초록 창 제어 버튼 추가
  • 다크 테마: 모던한 외관을 위한 slate 색상 팔레트 구현
  • 깔끔한 헤더 바: 호버 애니메이션이 있는 실행 버튼 추가
  • 단순화된 출력 패널: 불필요한 보더와 섹션 제거, 실행 결과만 표시
  • 향상된 타이포그래피: JetBrains Mono, Fira Code, Consolas로 개선된 폰트 스택

🎯 사용자 경험 개선

  • 키보드 단축키 수정: Cmd+Enter만 코드 실행, 일반 Enter는 줄바꿈
  • 불필요한 UI 제거: 초기화 버튼 제거로 인터페이스 단순화
  • 출력 패널 개선: 실행 결과만 표시하는 깔끔한 디자인
  • 타입 안전성: Monaco Editor의 정확한 타입 사용

⚡ 코드 에디터 최적화

  • Monaco Editor 설정 개선: 더 나은 폰트와 스크롤링으로 사용자 경험 향상
  • 키보드 단축키 수정: Cmd+Enter만 코드 실행, 일반 Enter는 줄바꿈만
  • 부드러운 애니메이션: 커서 부드러운 애니메이션과 스크롤링 유지
  • 타입 안전성: EditorProps['onMount']를 사용한 정확한 TypeScript 타입

🎯 개선된 사용자 경험

  • 커스텀 스크롤바: 다크 테마에 맞는 스타일링된 스크롤바
  • 선택 색상: 커스텀 선택 하이라이팅
  • 버튼 애니메이션: 호버 및 활성 상태 전환
  • 반응형 레이아웃: 더 나은 패널 리사이징 및 레이아웃 관리

🔧 기술적 세부사항

경로 별칭

// TypeScript
"baseUrl": ".",
"paths": {
  "@/*": ["./src/*"]
}

// Vite
resolve: {
  alias: {
    '@': path.resolve(__dirname, './src')
  }
}

FSD 레이어 규칙

  • 명확한 의존성 방향 강제
  • 관심사의 적절한 분리
  • 재사용 가능한 컴포넌트 아키텍처
  • @ 별칭을 사용한 깔끔한 import 경로

Monaco Editor 설정

const editorOptions = {
  cursorSmoothCaretAnimation: 'on',
  smoothScrolling: true,
  fontFamily: 'JetBrains Mono, Fira Code, Consolas, Monaco, monospace',
  // ... 기타 최적화된 설정
};

🎨 UI 스크린샷

이전

  • 기본 회색 테마
  • 여러 섹션이 있는 복잡한 출력 패널
  • 일관성 없는 스타일링
  • 상대 경로 import

이후

  • slate 색상을 사용한 모던 다크 테마
  • 깔끔하고 미니멀한 출력 패널
  • macOS 스타일 창 제어
  • @ 별칭을 사용한 절대 경로 import

🧪 테스트

  • 모든 기존 테스트 통과
  • TypeScript 컴파일 성공
  • Vite 빌드 프로세스 정상 작동
  • Monaco Editor 키보드 단축키 정상 작동
  • FSD 아키텍처 규칙 강제

📝 주요 변경사항

  • UI 레이아웃: 헤더와 출력 패널의 완전한 리디자인
  • 키보드 단축키: Cmd+Enter만 코드 실행, 일반 Enter는 줄바꿈
  • UI 요소 제거: 초기화 버튼 제거로 인터페이스 단순화
  • 출력 패널: 실행 결과만 표시하는 깔끔한 디자인
  • CSS 클래스: slate 색상과 함께 Tailwind CSS 4.x 사용으로 업데이트

🔄 마이그레이션 가이드

로컬 변경사항이 있다면:

  1. 새로운 UI 레이아웃에 맞게 컴포넌트 업데이트
  2. 키보드 단축키 동작 변경에 주의 (Cmd+Enter만 실행)
  3. 초기화 버튼 관련 코드 제거
  4. 새로운 색상 체계에 맞게 커스텀 CSS 업데이트

📚 참고 자료

🔗 관련 커밋

  1. feat: redesign UI with modern dark theme and simplified output
  2. refactor: remove reset button and simplify output panel
  3. fix: ensure code execution only works with Cmd+Enter
  4. refactor: improve Monaco Editor key binding and type safety

🎯 장점

  1. 직관적인 사용자 경험: Cmd+Enter만으로 코드 실행, 실수 방지
  2. 깔끔한 인터페이스: 불필요한 버튼 제거로 집중도 향상
  3. 모던한 디자인: runJS와 같은 세련된 다크 테마
  4. 향상된 성능: 최적화된 Monaco Editor 설정
  5. 타입 안전성: 정확한 TypeScript 타입으로 개발 안정성 향상
  6. 부드러운 애니메이션: 사용자 경험을 향상시키는 시각적 피드백

🚀 다음 단계

  • 더 많은 코드 에디터 테마 추가
  • 코드 스니펫 구현
  • 파일 관리 기능 추가
  • 코드 공유 기능 구현
  • 더 많은 실행 언어 지원 추가

ohah added 4 commits October 27, 2025 02:56
- Add macOS-style window controls and header bar
- Implement modern dark theme with slate colors
- Add execution and clear buttons with hover animations
- Simplify output panel to show only execution results
- Remove unnecessary borders and sections for cleaner look
- Improve Monaco Editor configuration with better fonts and scrolling
- Add custom scrollbar styling and selection colors
- Update tests to match new UI text content

UI now resembles modern code editors like runJS with clean, minimal design.
- Remove 珥덇린??(reset) button from header
- Remove TrashIcon import and clearResult usage
- Simplify output panel to show only execution results
- Remove unnecessary placeholder content and borders
- Update test to check for execution button instead of placeholder text

UI is now cleaner with only the essential execution functionality.
- Add Monaco Editor options to prevent accidental execution
- Disable quick suggestions and auto-completion on Enter
- Remove unused PlayIcon import from OutputPanel
- Ensure only Cmd+Enter (or Ctrl+Enter) triggers code execution
- Regular Enter key only performs line breaks as expected

This prevents accidental code execution when users press Enter for line breaks.
- Use EditorProps['onMount'] type for better type safety
- Implement proper Cmd+Enter key binding in Monaco Editor
- Remove commented code and clean up implementation
- Ensure only Cmd+Enter triggers code execution, not regular Enter
- Maintain smooth cursor animations and user experience

The editor now properly handles keyboard shortcuts with correct TypeScript types.
@ohah ohah requested a review from Copilot October 26, 2025 18:45
@ohah ohah self-assigned this Oct 26, 2025
@ohah ohah added the enhancement New feature or request label Oct 26, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements a modern dark theme redesign and improves user experience by switching to a slate color palette, simplifying the UI by removing unnecessary elements, and refining keyboard shortcuts so that only Cmd+Enter executes code while Enter creates newlines.

  • Modern dark theme using slate colors with macOS-style window controls
  • Simplified output panel showing only execution results
  • Fixed Monaco Editor keyboard shortcuts to prevent accidental code execution

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
apps/executeJS/src/widgets/output-panel/output-panel.tsx Simplified output panel to display only execution results with dark theme styling
apps/executeJS/src/widgets/code-editor/code-editor.tsx Updated Monaco Editor with proper TypeScript types and keyboard shortcut configuration
apps/executeJS/src/pages/editor/editor-page.tsx Added header with execution button and applied dark theme styling throughout
apps/executeJS/src/pages/editor/editor-page.test.tsx Updated test to match new UI text
apps/executeJS/src/index.css Added global dark theme styles including scrollbar and selection styling

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

</Text>
</Flex>
</Box>
<div className="h-screen w-full p-6 bg-slate-900" />
Copy link

Copilot AI Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using h-screen makes the empty state panel full viewport height instead of matching its container height. This should be h-full to properly fill the parent container.

Suggested change
<div className="h-screen w-full p-6 bg-slate-900" />
<div className="h-full w-full p-6 bg-slate-900" />

Copilot uses AI. Check for mistakes.
Comment on lines +76 to +78
quickSuggestions: false,
suggestOnTriggerCharacters: false,
acceptSuggestionOnEnter: 'off' as const,
Copy link

Copilot AI Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These options disable autocomplete suggestions entirely. While the comment mentions preventing Enter key execution, these settings remove helpful code completion features. Consider removing these lines since the keyboard shortcut configuration already ensures Enter only creates newlines.

Suggested change
quickSuggestions: false,
suggestOnTriggerCharacters: false,
acceptSuggestionOnEnter: 'off' as const,

Copilot uses AI. Check for mistakes.
onExecute?.(currentValue);
}
);

Copy link

Copilot AI Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Empty line should be removed as it serves no purpose after the closing brace of the addCommand block.

Suggested change

Copilot uses AI. Check for mistakes.
Comment on lines 69 to 91
.btn-primary {
@apply bg-blue-600 hover:bg-blue-700 active:bg-blue-800;
@apply transition-all duration-200 ease-in-out;
@apply transform hover:scale-105 active:scale-95;
}

.btn-secondary {
@apply bg-slate-700 hover:bg-slate-600 active:bg-slate-500;
@apply transition-all duration-200 ease-in-out;
@apply transform hover:scale-105 active:scale-95;
}

/* 코드 블록 스타일링 */
.code-block {
@apply bg-slate-950 border border-slate-700 rounded-lg;
@apply font-mono text-sm text-slate-300;
@apply overflow-x-auto;
}

/* 로딩 애니메이션 */
.loading-spinner {
@apply animate-spin w-5 h-5 border-2 border-blue-500 border-t-transparent rounded-full;
}
Copy link

Copilot AI Oct 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CSS classes .btn-primary, .btn-secondary, .code-block, and .loading-spinner are defined but never used in the codebase. The execute button uses inline Tailwind classes instead. Remove these unused utility classes or apply them to actual components.

Suggested change
.btn-primary {
@apply bg-blue-600 hover:bg-blue-700 active:bg-blue-800;
@apply transition-all duration-200 ease-in-out;
@apply transform hover:scale-105 active:scale-95;
}
.btn-secondary {
@apply bg-slate-700 hover:bg-slate-600 active:bg-slate-500;
@apply transition-all duration-200 ease-in-out;
@apply transform hover:scale-105 active:scale-95;
}
/* 코드 블록 스타일링 */
.code-block {
@apply bg-slate-950 border border-slate-700 rounded-lg;
@apply font-mono text-sm text-slate-300;
@apply overflow-x-auto;
}
/* 로딩 애니메이션 */
.loading-spinner {
@apply animate-spin w-5 h-5 border-2 border-blue-500 border-t-transparent rounded-full;
}
/* 코드 블록 스타일링 */
/* 로딩 애니메이션 */

Copilot uses AI. Check for mistakes.
@ohah ohah changed the title Feat/UI imporve feat: 모던 UI 리디자인 및 사용자 경험 개선 Oct 26, 2025
ohah added 2 commits October 27, 2025 03:48
- Remove .btn-primary, .btn-secondary, .code-block, .loading-spinner classes
- These classes were defined but never used in the codebase
- Execute button uses inline Tailwind classes instead
- Clean up CSS to remove dead code

Addresses Copilot AI review feedback on PR #4
- Fix code style issues in 4 files:
  - editor-page.test.tsx
  - editor-page.tsx
  - code-editor.tsx
  - output-panel.tsx
- Apply Prettier formatting rules consistently
- Resolve CI/CD formatting check failures

Addresses GitHub Actions formatting check failure
@ohah ohah merged commit fc5fecd into main Oct 26, 2025
4 checks passed
ohah added a commit that referenced this pull request Dec 12, 2025
- Remove .btn-primary, .btn-secondary, .code-block, .loading-spinner classes
- These classes were defined but never used in the codebase
- Execute button uses inline Tailwind classes instead
- Clean up CSS to remove dead code

Addresses Copilot AI review feedback on PR #4
ohah added a commit that referenced this pull request Dec 12, 2025
feat: 모던 UI 리디자인 및 사용자 경험 개선
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants