Skip to content

Release: 뉴스 영어 학습 및 주요 기능 업데이트#191

Merged
DDINGJOO merged 85 commits into
mainfrom
feature/189-news-english-learning
Jan 23, 2026
Merged

Release: 뉴스 영어 학습 및 주요 기능 업데이트#191
DDINGJOO merged 85 commits into
mainfrom
feature/189-news-english-learning

Conversation

@DDINGJOO

@DDINGJOO DDINGJOO commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Test plan

  • 뉴스 목록 페이지 접근 및 기사 목록 확인
  • 뉴스 상세 페이지에서 키워드 학습
  • 단어 수집 후 단어장에서 NEWS 카테고리 확인
  • 캐치마인드 게임 생성 및 플레이
  • 다크 모드 전환 시 UI 확인
  • 로그인/회원가입 플로우 테스트

- Header: 로고, 네비게이션, 프로필 드롭다운, 알림, 다크모드 토글
- Sidebar: 학습 모드 메뉴, 접기/펼치기, 반응형
- Footer: 저작권, 링크
- MainLayout: Header + Sidebar + Content + Footer 통합
- ThemeContext: 다크모드 지원
- Dashboard: 학습 모드 카드 UI
…o-title

[FEAT] 메인 레이아웃 구현
- 영어공부: OPIC 연습, 작문 연습 하위 메뉴 추가
- 프리토킹: 사람들과, AI와 하위 메뉴 추가
- 하위 메뉴 접기/펼치기 기능 (Collapse)
- 펼침 상태 localStorage 저장
- Dashboard 학습 모드 카드 업데이트 (3개로 변경)
- Dashboard 이모지 제거
- ChatRoomCard 컴포넌트 추가
- FreetalkPeoplePage 페이지 구현
- 레벨 필터링, 검색 기능 추가
- 더미 데이터로 UI 테스트
…freetalk-people-list

[FEAT] 프리토킹(사람들과) 채팅방 리스트 페이지 구현
- 영어공부/프리토킹 -> 말하기연습/쓰기연습으로 최상단 카테고리 변경
- 말하기연습: 오픽연습, AI와 말해보기
- 쓰기연습: 사람들과 채팅하기, 작문연습
- localStorage 기본 펼침 상태 키 업데이트
- 관련 아이콘 변경 (Mic, Create)

Closes #28
- 영어공부/프리토킹 -> 말하기연습/쓰기연습으로 변경
- 말하기연습: 오픽연습, AI와 말해보기
- 쓰기연습: 사람들과 채팅하기, 작문연습
- 카드 설명 문구 업데이트
- 클릭 방식에서 호버 방식으로 변경
- onMouseEnter/onMouseLeave 이벤트 적용
- flexbox에서 Grid 레이아웃으로 변경하여 호버 시 레이아웃 깨짐 방지
- 카드 width 고정으로 안정적인 반응형 지원
…ategory-restructure

[FEAT] Sidebar 및 Dashboard 메뉴 카테고리 구조 변경
- height: 100%로 Grid 내 카드 높이 통일
- flexbox 레이아웃 적용으로 내부 콘텐츠 균일 배치
- Grid item에 display: flex, alignItems: stretch 적용
- Card에 width: 100% 추가
- height: 160px로 모든 카드 크기 통일
- 내용 길이에 관계없이 일정한 카드 크기 유지

Closes #31
- 참여자 아바타 그룹 제거
- 너비 300px, 높이 140px로 고정
- 높이 100px로 축소
- 생성일을 마지막 대화 옆으로 이동
- 생성일 날짜만 표시 (시간 제거)
- 입장 버튼 추가 (우측 상단, outlined 스타일)
- 비밀방 자물쇠 아이콘 표시
- 간단한 소개 표시 추가
- 생성일자 하단에 표시
- 카드 높이 140px로 조정
- 더미 데이터에 description, createdAt, isPrivate 추가
- 입장 버튼 클릭 시 모달 팝업
  - 일반방: 방 정보 확인 후 입장
  - 비밀방: 비밀번호 입력 후 입장
- 참여중 필터 추가 (레벨 필터 옆)
- 생성일 형식 변경 (연/월/일)
- 더미 데이터에 isJoined 필드 추가
…ard-fixed-size

[FIX] 채팅방 카드 고정 크기 적용
- .env.example 추가 (환경변수 템플릿)
- VITE_CHAT_API_URL, VITE_TEMP_USER_ID 환경변수 설정
- chatApi axios 인스턴스 생성
- chatRoomService 구현 (create, getList, getDetail, join, leave)
- messageService 구현 (send, getList)
- voiceService 구현 (synthesize)

Closes #38, #39
- FreetalkPeoplePage: mock 데이터 제거, API 연동 (무한스크롤)
- CreateRoomModal: 채팅방 생성 모달 컴포넌트 추가
- ChatRoomPage: 카카오톡 스타일 채팅 UI 구현
- 메시지 조회/전송 API 연동
- TTS 재생 버튼 구현

Closes #40, #41, #42, #43, #44, #45
- ChatContext를 통한 전역 채팅 상태 관리
- 드래그 가능한 플로팅 채팅 모달 구현
- 최소화/최대화 기능 추가
- 모든 메시지 TTS 재생 기능
- 페이지 이동 시에도 채팅 유지
- Redux store 초기화 오류 수정
- 스크롤바 hover 시에만 표시
…chatroom-list-api

[FEAT] 채팅방 API 연동 및 채팅 UI 구현
- 최소화 시 현재 위치 저장 후 우측 하단으로 자동 이동
- 최대화 시 저장된 위치로 복원

Closes #47
…-minimize

[FIX] 채팅 모달 최소화 시 우측 하단 이동
- SettingsContext 추가 (localStorage 저장)
- 설정 페이지에 음성 선택 UI 추가 (MALE/FEMALE)
- voiceService에 voice 파라미터 추가
- ChatRoomModal에서 선택된 음성으로 TTS 재생

Closes #49
…ice-settings

[FEAT] TTS 음성 선택 기능
- voiceService.synthesize: text -> messageId, roomId 파라미터 변경
- ChatRoomPage, ChatRoomModal handlePlayTTS 수정
- 백엔드 API 스펙 변경에 따른 필수 대응
hye-inA and others added 26 commits January 16, 2026 16:13
* feat : 비밀번호 강도 표시 UI 구현

* feat : 이메일 인증 UI 구현

* feat : 이메일 인증 코드 확인 연동

* fix : signup page 에러 수정
- Adjusted spacing, removed redundant whitespace, and reorganized imports in various components
- Ensured consistent application of updated formatting rules
- WebSocket 이벤트 핸들러에서 중첩 데이터 구조 처리 (data.data || data)
- 메시지 타입 대소문자 모두 처리 (round_end/ROUND_END 등)
- 타이머 자동 스킵 시 stale closure 문제 해결 (useRef 사용)
- 연결 안 된 상태에서 에러 대신 조용히 실패 처리
- 게임 중 채팅 메시지 비눗방울 애니메이션 추가
- Prioritize `word` field in game state updates
- Add default round timing logic and handle cases with missing scores
- Remove unnecessary `/skip` command as backend auto-handles ROUND_END transitions
- Replaced shades of blue with green across various components for cohesive theming
- Updated text, backgrounds, borders, and gradients to match the new green palette
- Added `CatchmindLobbyPage` for room list viewing, room creation, and entry.
- Added `CatchmindPlayPage` for gameplay, including drawing, guessing, and real-time updates using WebSocket.
- Introduced `BubbleOverlay` component for in-game animations and effects.
- Added `CatchmindLobbyPage` for room list viewing, room creation, and entry.
- Added `CatchmindPlayPage` for gameplay, including drawing, guessing, and real-time updates using WebSocket.
- Introduced `BubbleOverlay` component for in-game animations and effects.
- Added `CatchmindLobbyPage` for room list viewing, room creation, and entry.
- Added `CatchmindPlayPage` for gameplay, including drawing, guessing, and real-time updates using WebSocket.
- Introduced `BubbleOverlay` component for in-game animations and effects.
Replace hardcoded AWS URLs with environment variable references only.
This ensures all API endpoints are configured via VITE_* env vars.
# Conflicts:
#	.github/workflows/github-jira-pr-sync.yml
- 뉴스 도메인 추가 (pages, services)
  - NewsListPage: 뉴스 목록 (레벨/카테고리 필터, 무한 스크롤)
  - NewsDetailPage: 기사 상세 (TTS, 북마크, 키워드 수집)
  - NewsQuizPage: 퀴즈 (타이머, 점수, 배지)
  - NewsWordsPage: 수집 단어 관리
  - NewsStatsPage: 학습 통계
  - newsService: API 서비스

- App.jsx 업데이트
  - Dashboard에 실제 API 데이터 연동 (오늘 학습 단어, 뉴스 학습 등)
  - ReportsPage에 실제 API 데이터 연동
  - 뉴스 라우트 추가

- Sidebar 메뉴에 뉴스 학습 추가 (작문 카테고리 하위)
- i18n 번역 추가 (한국어/영어)
…n improvements (#193)

- Added new badge types and categories for news-related achievements (badgeConstants.js, BadgeCard.jsx).
- Implemented category filtering for WordListPage with improved UI for filtering and displaying categories.
- Enhanced NewsDetailPage:
  - Improved keyword display layout and introduced dynamic word card styles.
  - Added support for collecting words with NEWS category preset.
  - Handled new API responses for articles and keywords.
- Integrated getDashboardStats API for consistent activity and stats fetching (App.jsx, newsService.js).
- Updated translations for category-related labels (translations.js).
Resolved conflicts:
- vite.config.js: use develop's API URL
- gameTheme.js: keep cyan color (#06b6d4) for games
- BadgeCard.jsx: keep NEWS badge support
- vocabService.js: keep category parameter
- translations.js: keep news/recentActivity translations
- HorizontalNav/index.jsx: use cyan for games
- Sidebar/index.jsx: use cyan for games
- App.jsx: keep news imports, routes, and useEffect
@github-actions github-actions Bot added frontend Frontend code changes layer:api API/Services layer labels Jan 23, 2026
@github-actions

github-actions Bot commented Jan 23, 2026

Copy link
Copy Markdown

Jira: MESP-268

@DDINGJOO DDINGJOO merged commit 1e351f1 into main Jan 23, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

frontend Frontend code changes layer:api API/Services layer

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants