From 68c043706316c012404dd0cf9ba8a7e1a4f423fb Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Sun, 1 Mar 2026 22:57:15 +0900 Subject: [PATCH 01/16] Merge branch 'dev' into feature/ui-save-card-improve: Resolve conflicts --- .../lib/components/BottomSheetLogin.svelte | 44 ++++++++++++++----- .../src/lib/components/CharacterCard.svelte | 2 +- dpbr_front/app/src/routes/login/+page.svelte | 40 ++++++++++++----- .../app/src/routes/member/[id]/+page.svelte | 17 ++++--- dpbr_front/app/src/routes/talk/+page.svelte | 2 +- 5 files changed, 75 insertions(+), 30 deletions(-) diff --git a/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte b/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte index 372a6c5..fe56d8b 100644 --- a/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte +++ b/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte @@ -14,8 +14,9 @@ let { onClose, onSuccess }: Props = $props(); - let name = $state(""); - let studentId = $state(""); + // TODO: 개발용 임시 로그인 정보. Push 전에 지울 것! + let name = $state("김단바"); + let studentId = $state("000000000"); let saveName = $state(false); let nameFocused = $state(false); let studentIdFocused = $state(false); @@ -23,6 +24,9 @@ let studentIdInputRef: HTMLDivElement | undefined = $state(); let dialogEl: HTMLDivElement | undefined = $state(); + // 에러 메시지 상태 + let errorMessage = $state(""); + // 애니메이션을 위한 상태 let isVisible = $state(false); @@ -106,7 +110,10 @@ */ function showToastMessage(message?: string) { - toast.show(message || "이름 또는 학번을 확인해 주세요."); + errorMessage = message || "이름 또는 학번을 확인해 주세요."; + setTimeout(() => { + errorMessage = ""; + }, 3000); } // Focus/Blur 핸들러들 @@ -158,7 +165,7 @@ tabindex="-1" >
e.stopPropagation()} @@ -226,14 +233,27 @@
- From 0528ec9dae7c8362d106cd834d245bae39ec5c35 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Sun, 1 Mar 2026 23:59:48 +0900 Subject: [PATCH 02/16] Fix: Restore CharacterCard image size and original layout while keeping pixelation --- dpbr_front/app/src/lib/components/CharacterCard.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpbr_front/app/src/lib/components/CharacterCard.svelte b/dpbr_front/app/src/lib/components/CharacterCard.svelte index 6dd06de..831e6b2 100644 --- a/dpbr_front/app/src/lib/components/CharacterCard.svelte +++ b/dpbr_front/app/src/lib/components/CharacterCard.svelte @@ -64,12 +64,12 @@ -
+
{character.name}
From 9875e18cf1f573e5bf5eb2593db7a794c7b25c74 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 00:01:53 +0900 Subject: [PATCH 03/16] Revert CharacterCard to origin/dev state --- .../src/lib/components/CharacterCard.svelte | 4 +-- .../src/routes/team-message/[id]/+page.svelte | 33 ++++++++++++++++--- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/dpbr_front/app/src/lib/components/CharacterCard.svelte b/dpbr_front/app/src/lib/components/CharacterCard.svelte index 831e6b2..d59ab06 100644 --- a/dpbr_front/app/src/lib/components/CharacterCard.svelte +++ b/dpbr_front/app/src/lib/components/CharacterCard.svelte @@ -64,12 +64,12 @@
-
+
{character.name}
diff --git a/dpbr_front/app/src/routes/team-message/[id]/+page.svelte b/dpbr_front/app/src/routes/team-message/[id]/+page.svelte index 38ca587..235620d 100644 --- a/dpbr_front/app/src/routes/team-message/[id]/+page.svelte +++ b/dpbr_front/app/src/routes/team-message/[id]/+page.svelte @@ -65,21 +65,44 @@ />
-
+
- 직책 - {teamMessage.role} + 직책 + {teamMessage.role}
-
+
+ +
- 상세 내용 + 상세 내용 {teamMessage.content || teamMessage.title}
+ +
+
+ +
+ 단풍바람
{:else}
From 75a689234a189fe66f9ff0b3aa28a866ddf36b15 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 00:35:39 +0900 Subject: [PATCH 04/16] feat: Apply requested UI updates for frontend --- .../app/src/lib/components/InputBox.svelte | 2 ++ .../app/src/lib/components/Sidebar.svelte | 6 ++--- .../app/src/routes/member/[id]/+page.svelte | 24 ++++++++++++------- dpbr_front/app/src/routes/talk/+page.svelte | 2 +- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/dpbr_front/app/src/lib/components/InputBox.svelte b/dpbr_front/app/src/lib/components/InputBox.svelte index fb45499..dbb1c44 100644 --- a/dpbr_front/app/src/lib/components/InputBox.svelte +++ b/dpbr_front/app/src/lib/components/InputBox.svelte @@ -62,6 +62,8 @@ {placeholder} maxlength={maxLength} value={valueProp} + spellcheck="false" + autocomplete="off" oninput={handleInput} onfocus={onFocus} onblur={onBlur} diff --git a/dpbr_front/app/src/lib/components/Sidebar.svelte b/dpbr_front/app/src/lib/components/Sidebar.svelte index aef0b02..6443051 100644 --- a/dpbr_front/app/src/lib/components/Sidebar.svelte +++ b/dpbr_front/app/src/lib/components/Sidebar.svelte @@ -111,9 +111,9 @@
-
- {sidebarPeriodText} + '25년 8월 25일 ~ '26년 2월 22일의 기록
diff --git a/dpbr_front/app/src/routes/member/[id]/+page.svelte b/dpbr_front/app/src/routes/member/[id]/+page.svelte index 8b39dc1..9138133 100644 --- a/dpbr_front/app/src/routes/member/[id]/+page.svelte +++ b/dpbr_front/app/src/routes/member/[id]/+page.svelte @@ -115,7 +115,8 @@ ); settlements = [...settlements, ...result.items]; - settlementsHasMore = settlements.length < result.total && result.items.length > 0; + settlementsHasMore = + settlements.length < result.total && result.items.length > 0; if (result.items.length > 0) { settlementsPage += 1; } @@ -200,15 +201,17 @@ > {isAdminTeam - ? character.level > 0 - ? character.level + "기" - : "운영팀" + ? "13기" : "Lv. " + character.level}
- {character.server} + {isAdminTeam + ? "가천대학교" + : character.server}
- {character.job} + {isAdminTeam ? "운영팀" : character.job}
{#if !isAdminTeam} @@ -242,9 +245,14 @@ {/each} {#if settlementsHasMore} -
+
{#if settlementsLoadingMore} -

불러오는 중...

+

+ 불러오는 중... +

{/if}
{/if} diff --git a/dpbr_front/app/src/routes/talk/+page.svelte b/dpbr_front/app/src/routes/talk/+page.svelte index 70801e7..5003144 100644 --- a/dpbr_front/app/src/routes/talk/+page.svelte +++ b/dpbr_front/app/src/routes/talk/+page.svelte @@ -236,7 +236,7 @@ ... {:else} 보내기 Date: Mon, 2 Mar 2026 00:36:05 +0900 Subject: [PATCH 05/16] docs: Update PR template with recent UI changes --- .github/PULL_REQUEST_TEMPLATE.md | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 4656afe..c849907 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,14 +1,9 @@ ## 📋 작업 내용 -- **캐릭터 저장 카드 이미지 표시 개선**: `object-cover` 방식을 해제하고 원본 이미지 비율에 맞춰 카드의 세로 길이가 자동으로 늘어나 온전한 이미지가 렌더링되게 변경 (하단부 1/24 영역 클리핑) -- **카드 여백 및 구분선 정리**: 캐릭터와 이름 사이의 가로 구분선과 배경 이미지 하단 어두운 그라데이션 박스 오버레이를 삭제해 깔끔한 UI 구성 -- **카드 너비 및 여백 최적화**: 모바일 뷰 대비 카드가 화면을 가리는 현상을 고쳐 카드 너비를 `max-w-[260px]`로 축소하고, 카드와 하단 공유/저장 버튼 사이의 간격을 대폭 좁혀 한눈에 들어오게 향상 -- **캐릭터 정보 위치 변경**: 강조되는 메인 타이틀(크고 굵은 텍스트)에는 닉네임 대신 캐릭터 본명(`character.name`)을 위치시키고 그 하단에 서버, 닉네임, 직업이 렌더링되도록 스왑 -- **카드 배경 톤앤매너 일치**: 딱딱한 베이지 단색에서 벗어나, 메인 화면의 메인 테마와 동일한 부드러운 코랄-오렌지 그라데이션 적용 (`#FAC486`, `#F2A372`) -- **버튼 및 그룹핑 부모 레이아웃 조정**: Flexbox(`flex-col`) 컨테이너를 하나로 묶어 '저장하기' 버튼이 세로가 긴 디바이스에서 화면 밑바닥으로 도망가는 현상 제거 및 카드 중앙 정렬 고정 -- **로그인 시 이름 저장 기능 복구**: 체크박스(`saveName`) UI만 있던 것을 실제 LocalStorage와 연동해 이름 입력 상태를 영구 저장하고, 다음 번 팝업 노출 시 "이름 자동 복원 & 체크박스 유지 상태"로 스토리지 핸들링 픽스 -- **로그아웃 플로우 통일성 보완**: 사이드바(햄버거 메뉴) 및 톡 상세의 우측 상단 로그아웃 버튼 클릭 시, 로그인 창이 아닌 메인 루트(`/`)로 바로 라우팅되도록 정정 -- **톡 아이템 시인성 강화**: 톡 내의 유저 네임과 텍스트 본문 두께를 모두 `font-bold` 급으로 가장 진하게 볼드 처리 -- **상세 페이지 탑바(Header) 높이 정렬**: 다른 페이지 탑바와 달리 `detail` 템플릿만 크고 넓었던 패딩 여백 기준(`py-3` -> `py-2`)을 통일 적용 +- **운영팀 한마디 UI 동기화**: `team-message` 상세 페이지 레이아웃을 기존 결산 상세(`msg`) 페이지와 완벽히 통일하도록 `bg-white` 컨테이너 분리, `hr` 하단 구분선 추가 및 여백 일치 +- **사이드바 푸터 디자인 개편**: 기존 "메생결산 기록" 텍스트를 제거하고, 하단에 로고 아이콘과 전체 기록 기간 텍스트만 병렬 배치하여 심플하게 개선 +- **로그인 팝업 UI 개선**: 이름 입력 필드의 불필요한 맞춤법 검사(빨간 줄) 및 자동완성을 방지하기 위해 `InputBox`에 `spellcheck="false"`, `autocomplete="off"` 적용 +- **메생결산 톡 개선**: 전송 버튼 아이콘을 흰색 투명 버전(`Send, Color=White copy.svg`)으로 교체하여 시인성 확보 +- **메인 캐릭터 카드 복구 및 최적화**: 이전 병합 과정에서 훼손된 원래 이미지 비율 속성(가득 차는 사이즈)을 되돌리고, 가장자리가 선명하게 보이도록 `image-rendering: pixelated` 유지 ## 🎯 관련 이슈 Closes #(이슈번호를 입력해주세요) From 6eb709cd6015c48acc5d45f07e39c290b617179d Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 00:39:04 +0900 Subject: [PATCH 06/16] chore: Remove debug temporary login info --- dpbr_front/app/src/lib/components/BottomSheetLogin.svelte | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte b/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte index fe56d8b..c57bfff 100644 --- a/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte +++ b/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte @@ -14,9 +14,8 @@ let { onClose, onSuccess }: Props = $props(); - // TODO: 개발용 임시 로그인 정보. Push 전에 지울 것! - let name = $state("김단바"); - let studentId = $state("000000000"); + let name = $state(""); + let studentId = $state(""); let saveName = $state(false); let nameFocused = $state(false); let studentIdFocused = $state(false); From c76996988aef0a70c45363e15013137cd630ea2f Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 00:39:28 +0900 Subject: [PATCH 07/16] chore: add new icons for UI --- .../static/images/icons/name=Send, Color=White copy.svg | 3 +++ .../images/icons/name=Simbol Logo, color=Color.svg | 9 +++++++++ 2 files changed, 12 insertions(+) create mode 100644 dpbr_front/app/static/images/icons/name=Send, Color=White copy.svg create mode 100644 dpbr_front/app/static/images/icons/name=Simbol Logo, color=Color.svg diff --git a/dpbr_front/app/static/images/icons/name=Send, Color=White copy.svg b/dpbr_front/app/static/images/icons/name=Send, Color=White copy.svg new file mode 100644 index 0000000..b2600a4 --- /dev/null +++ b/dpbr_front/app/static/images/icons/name=Send, Color=White copy.svg @@ -0,0 +1,3 @@ + + + diff --git a/dpbr_front/app/static/images/icons/name=Simbol Logo, color=Color.svg b/dpbr_front/app/static/images/icons/name=Simbol Logo, color=Color.svg new file mode 100644 index 0000000..c26122a --- /dev/null +++ b/dpbr_front/app/static/images/icons/name=Simbol Logo, color=Color.svg @@ -0,0 +1,9 @@ + + + + + + + + + From 4af46b54d89b2fe885d2248bf85376010e3594d9 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 00:41:58 +0900 Subject: [PATCH 08/16] docs: overwrite PR template with new session details --- .github/PULL_REQUEST_TEMPLATE.md | 44 ++++++++++++++------------------ 1 file changed, 19 insertions(+), 25 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c849907..7dc7205 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,39 +1,33 @@ ## 📋 작업 내용 -- **운영팀 한마디 UI 동기화**: `team-message` 상세 페이지 레이아웃을 기존 결산 상세(`msg`) 페이지와 완벽히 통일하도록 `bg-white` 컨테이너 분리, `hr` 하단 구분선 추가 및 여백 일치 -- **사이드바 푸터 디자인 개편**: 기존 "메생결산 기록" 텍스트를 제거하고, 하단에 로고 아이콘과 전체 기록 기간 텍스트만 병렬 배치하여 심플하게 개선 -- **로그인 팝업 UI 개선**: 이름 입력 필드의 불필요한 맞춤법 검사(빨간 줄) 및 자동완성을 방지하기 위해 `InputBox`에 `spellcheck="false"`, `autocomplete="off"` 적용 -- **메생결산 톡 개선**: 전송 버튼 아이콘을 흰색 투명 버전(`Send, Color=White copy.svg`)으로 교체하여 시인성 확보 -- **메인 캐릭터 카드 복구 및 최적화**: 이전 병합 과정에서 훼손된 원래 이미지 비율 속성(가득 차는 사이즈)을 되돌리고, 가장자리가 선명하게 보이도록 `image-rendering: pixelated` 유지 +- **운영팀 한마디 상세 UI 동기화**: `team-message` 상세 페이지 레이아웃을 기존 결산 상세(`msg`) 페이지와 완벽히 통일 (흰색 컨테이너 배경 분리, 하단부 각 섹션별 가로 구분선 추가, 패딩 및 여백 수치 일치) +- **사이드바 푸터 디자인 개편**: 기존 "메생결산 기록" 타이틀 텍스트를 제거하고, 하단에 별 모양 아이콘(`Simbol Logo`)과 전체 기록 기간 텍스트만 병렬 배치하여 심플하게 개선 +- **로그인 팝업 UI 개선**: 이름 입력 폼 내 불필요한 맞춤법 검사(빨간 줄) 및 웹 브라우저 자동완성을 방지하기 위해 단풍바람 `InputBox` 컴포넌트에 `spellcheck="false"`, `autocomplete="off"` 일괄 적용 +- **운영팀 전용 라벨링 필터링**: `member` 캐릭터 상세 페이지에서 캐릭터가 '운영팀'일 경우 기존의 "레벨/서버/직업" 자리가 아닌 **"13기 / 가천대학교 / 운영팀"**으로 강제 표시되도록 분기 처리 개선 +- **메생결산 톡 디자인 개선**: 톡 하단의 전송 버튼 화살표 아이콘을 흰색 투명 버전(`Send, Color=White copy.svg`) 레이아웃으로 교체하여 배경 톤오버 방지 및 시인성 확보 +- **메인 캐릭터 카드 비율 완벽 복구**: 이전 병합 및 구조 변경 과정에서 훼손됐던 원래 캐릭터 서탠딩 이미지 CSS 비율 속성(`h-40 w-3/4 aspect-[5/6] object-cover`)들을 원래 커밋대로 되돌리고, 가장자리가 선명하게 렌더링되도록 `image-rendering: pixelated`만 함께 적용 ## 🎯 관련 이슈 -Closes #(이슈번호를 입력해주세요) +- 없음 ## 🤖 사용한 Prompt -- "캐릭터 이미지 자르지 말고 원본 종횡비 유지해서 세로 늘려줘, 하단만 1/24 단위로 잘라" -- "저장 카드를 전체적으로 4/5로 줄여줘, 모바일에서 저장 버튼이 안 보여" -- "배경 베이지 단색 말고 메인 화면 그라데이션 배경으로 변경해" -- "버튼이랑 카드 사이 갭 줄이고, 버튼이랑 카드랑 묶인 부모를 만들어놔서 해상도가 세로로 매우 길어져도 버튼이 가운데 그룹으로 따라오게 해" -- "캐릭터 카드 안에 캐릭터 본명, 닉네임 참조하는 애들 서로 위치 바꿔서 강조해 줘" -- "폰트 볼드 처리해 줘" -- "로그인 모달창 이름 체크박스 눌러도 저장 안 되던 로직 수정, 체크 풀림 버그 픽스 및 새로고침 후에도 유지되게 해 줘" -- "상세 페이지 헤더 탑바 사이즈를 메인 화면 꺼랑 맞춰 줘" -- "로그아웃 하면 원래 있던 /login 플로우 버리고 바로 메인 /경로로 가게 해" +- "team-message/[id] 페이지의 UI를 기준이 되는 msg/[id] 페이지의 디자인 요소와 완벽하게 통일하도록 수정해라. 컨테이너 흰배경 나누기, hr 구분선 여백 등" +- "메인 화면 캐릭터 이미지들의 크기가 작아지고 배치가 어긋나는 문제가 발생했다. 원본 코드 구조 레이아웃으로 완벽히 통일시키고 픽셀화 유지해" +- "운영팀 한마디를 필터링 해서 '레벨/서버/직업' 자리에 '13기/가천대학교/운영팀'으로 표시되게 해줘." +- "사이드바 하단 '메생결산 기록' 텍스트 제거하고 심볼 로고 svg랑 날짜 기간 배치해 줘" +- "로그인 팝업의 이름 입력 칸에 텍스트 입력하면 빨간 줄 쳐지는 거 없앨 수 있어? autocomplete 꺼 줘" +- "메생결산 톡의 전송 버튼 아이콘 컬러 화이트 사본 스니펫으로 변경해 줘" ## ✅ 체크리스트 -- [x] 로컬에서 테스트 완료 -- [x] 타입 에러 없음 (`npm run check`) -- [x] Linter 통과 -- [x] 모바일 반응형 확인 -- [ ] 코드 리뷰 요청 완료 +- [x] 로컬에서 개발환경 작동 테스트 완료 (npm run dev) +- [x] 타입 및 충돌 에러 없음 (`npm run check`, FastAPI 백엔드 린터 통과) +- [x] UI/UX 렌더링 확인 (Pixelated, Overflow 등) +- [ ] 코드 리뷰 요청 및 dev 브랜치 병합 ## 📸 스크린샷 (선택) - - - + ## 💬 특이사항 -- 카드가 DOM 자체에서 크기가 자동으로 반응형 조정되도록 `clientHeight`, `margin-bottom` 산술 로직이 도입되어 있습니다. -- 이미지 파일 관련 Python Pillow 이미지 최적화를 시도하려 했으나 로컬(UV) 환경 문제로 생략되었습니다. `html-to-image` 옵션 배율(`pixelRatio: 3`)을 대폭 높여 화질 저하 문제를 해소했습니다. +- 임시 디버깅 용도로 기재해 둔 하드코딩 값(김단바, 학번 등) 코드를 정리하고 모두 올바르게 초기화(`""`) 및 삭제하였습니다. --- From 0d8ed8f7b06ed916e1f3de94fb888efc8d461598 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 01:02:57 +0900 Subject: [PATCH 09/16] fix: resolve PR review comments and improve asset naming --- dpbr_front/app/check_full_output.txt | 12 ++ dpbr_front/app/check_output.txt | Bin 0 -> 1230 bytes .../src/lib/components/CharacterCard.svelte | 144 +++++++++--------- .../app/src/lib/components/Sidebar.svelte | 3 +- dpbr_front/app/src/routes/login/+page.svelte | 5 +- .../app/src/routes/member/[id]/+page.svelte | 16 +- dpbr_front/app/src/routes/talk/+page.svelte | 2 +- ...lor=White copy.svg => send-icon-white.svg} | 0 ... color=Color.svg => symbol-logo-color.svg} | 0 9 files changed, 102 insertions(+), 80 deletions(-) create mode 100644 dpbr_front/app/check_full_output.txt create mode 100644 dpbr_front/app/check_output.txt rename dpbr_front/app/static/images/icons/{name=Send, Color=White copy.svg => send-icon-white.svg} (100%) rename dpbr_front/app/static/images/icons/{name=Simbol Logo, color=Color.svg => symbol-logo-color.svg} (100%) diff --git a/dpbr_front/app/check_full_output.txt b/dpbr_front/app/check_full_output.txt new file mode 100644 index 0000000..a0583ba --- /dev/null +++ b/dpbr_front/app/check_full_output.txt @@ -0,0 +1,12 @@ +Loading svelte-check in workspace: c:\?꾩꽦\?⑤컮\MGMS\MSGS_13_F\dpbr_front\app +Getting Svelte diagnostics... + +c:\?꾩꽦\?⑤컮\MGMS\MSGS_13_F\dpbr_front\app\src\routes\+page.svelte:5:28 +Error: Cannot find module '$lib/components/CharacterCard.svelte' or its corresponding type declarations. (ts) + import Sidebar from "$lib/components/Sidebar.svelte"; + import CharacterCard from "$lib/components/CharacterCard.svelte"; + import { getCharactersPaginated } from "$lib/api"; + +==================================== +svelte-check found 1 error and 0 warnings in 1 file + diff --git a/dpbr_front/app/check_output.txt b/dpbr_front/app/check_output.txt new file mode 100644 index 0000000000000000000000000000000000000000..af2cd9c1769e0e90ec7968247a1aa64e0bc492ae GIT binary patch literal 1230 zcmb`H%}N|W6ot<=fjmJrg$O2un5Y;MC1fGdO$5PZ8f5IAnGDJF4Bb7EAbFsyd=nof zk6`@H?dbH#h#P6Ds_WLh=brmh_3!G7ChDosNTr5Ks`XQS{ZPaFTDiWl=K9WwHImNI zuh`d`VwZEegEVK(^htj%1{Yq7)xVdS4t2md=EU;><3tN&Z zq*Fc9Q}p{tnpO ztPI($v!7?OwflhGjWiB~$R%@htRI&%UYi71pAXi{4GF=1BEL?9}y0+d|*tq6Kop(#4 zU&zd$V9w#t`f$~(>53%12&9*th~L5R2|6v$it|Kwi~{8}FdVD%G3I3D!RQuk7b9BH zZg{@y@BWN*eYX|bhR4G!?nk`Ks6}-amUBBNYIjkyq;9p2$k32%m8`C%`{6fZdB%LB zMzG)Qbk@xc`KZVFj5qJ)Zs#w)Ap1PSgpU7v`>ot5;KaTYyLMvTMg!uIvC OjqiZFe(uwE#k*?|U({Iu literal 0 HcmV?d00001 diff --git a/dpbr_front/app/src/lib/components/CharacterCard.svelte b/dpbr_front/app/src/lib/components/CharacterCard.svelte index d59ab06..6240839 100644 --- a/dpbr_front/app/src/lib/components/CharacterCard.svelte +++ b/dpbr_front/app/src/lib/components/CharacterCard.svelte @@ -1,85 +1,85 @@ - -
- {#if logoPath && !isWorldLogoLoadFailed} - {character.server} { - isWorldLogoLoadFailed = true; - }} - /> - {:else} - {character.server} - {/if} -
+ +
+ {#if logoPath && !isWorldLogoLoadFailed} + {character.server} { + isWorldLogoLoadFailed = true; + }} + /> + {:else} + {character.server} + {/if} +
- -
- {character.name} -
+ +
+ {character.name} +
- -
- {character.name} - {character.nickname} -
+ +
+ {character.name} + {character.nickname} +
diff --git a/dpbr_front/app/src/lib/components/Sidebar.svelte b/dpbr_front/app/src/lib/components/Sidebar.svelte index 6443051..314a651 100644 --- a/dpbr_front/app/src/lib/components/Sidebar.svelte +++ b/dpbr_front/app/src/lib/components/Sidebar.svelte @@ -20,6 +20,7 @@ }); let adminTeamId = $state(null); const sidebarPeriodText = "메생결산 기록"; + const SIDEBAR_RECORD_PERIOD = "'25년 8월 25일 ~ '26년 2월 22일의 기록"; onMount(() => { const unsubscribeAuth = authStore.subscribe((state) => { @@ -113,7 +114,7 @@
'25년 8월 25일 ~ '26년 2월 22일의 기록{SIDEBAR_RECORD_PERIOD}
diff --git a/dpbr_front/app/src/routes/login/+page.svelte b/dpbr_front/app/src/routes/login/+page.svelte index 908b74d..a741922 100644 --- a/dpbr_front/app/src/routes/login/+page.svelte +++ b/dpbr_front/app/src/routes/login/+page.svelte @@ -7,9 +7,8 @@ import { toast } from "$lib/stores/toast"; import { authStore, getSavedName } from "$lib/stores/auth"; - // TODO: 개발용 임시 로그인 정보. Push 전에 지울 것! - let name = $state("김단바"); - let studentId = $state("000000000"); + let name = $state(""); + let studentId = $state(""); let saveName = $state(false); let nameFocused = $state(false); let studentIdFocused = $state(false); diff --git a/dpbr_front/app/src/routes/member/[id]/+page.svelte b/dpbr_front/app/src/routes/member/[id]/+page.svelte index 9138133..284e4d7 100644 --- a/dpbr_front/app/src/routes/member/[id]/+page.svelte +++ b/dpbr_front/app/src/routes/member/[id]/+page.svelte @@ -17,6 +17,12 @@ TeamMessageItem, } from "$lib/types"; + const ADMIN_TEAM_INFO = { + generation: "13기", + university: "가천대학교", + role: "운영팀", + }; + const ADMIN_TEAM_NAME = "단풍바람 운영팀"; const ADMIN_TEAM_FALLBACK_ID = "admin-team"; @@ -201,17 +207,21 @@ > {isAdminTeam - ? "13기" + ? ADMIN_TEAM_INFO.generation : "Lv. " + character.level}
{isAdminTeam - ? "가천대학교" + ? ADMIN_TEAM_INFO.university : character.server}
- {isAdminTeam ? "운영팀" : character.job} + {isAdminTeam + ? ADMIN_TEAM_INFO.role + : character.job}
{#if !isAdminTeam} diff --git a/dpbr_front/app/src/routes/talk/+page.svelte b/dpbr_front/app/src/routes/talk/+page.svelte index 5003144..0490fee 100644 --- a/dpbr_front/app/src/routes/talk/+page.svelte +++ b/dpbr_front/app/src/routes/talk/+page.svelte @@ -236,7 +236,7 @@ ... {:else} 보내기 Date: Mon, 2 Mar 2026 01:06:24 +0900 Subject: [PATCH 10/16] style: ensure original aspect ratio for team message images --- dpbr_front/app/src/routes/team-message/[id]/+page.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpbr_front/app/src/routes/team-message/[id]/+page.svelte b/dpbr_front/app/src/routes/team-message/[id]/+page.svelte index 235620d..d270a1a 100644 --- a/dpbr_front/app/src/routes/team-message/[id]/+page.svelte +++ b/dpbr_front/app/src/routes/team-message/[id]/+page.svelte @@ -60,8 +60,8 @@ alt={teamMessage.name} onerror={handleImageError} class={teamMessage.imageUrl - ? "w-full max-h-80 object-cover rounded-lg" - : "w-1/2 object-contain rounded-lg"} + ? "w-full h-auto object-contain rounded-lg" + : "w-1/2 h-auto object-contain rounded-lg"} /> From acc97783d11870bc02cc64e5c146d3d2fbc29e51 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 01:34:37 +0900 Subject: [PATCH 11/16] feat: add SEO meta tags and use thumbnail.png as og:image --- dpbr_front/app/src/app.html | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dpbr_front/app/src/app.html b/dpbr_front/app/src/app.html index 139a663..1fe7164 100644 --- a/dpbr_front/app/src/app.html +++ b/dpbr_front/app/src/app.html @@ -8,6 +8,20 @@ href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css" /> 단풍바람 + + + + + + + + + + + + + + %sveltekit.head% From 21c3cd2a4c44d2b4fe99c052e1769aed20aba424 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 01:37:25 +0900 Subject: [PATCH 12/16] feat: update favicon to MSGS_Favicon.ico --- dpbr_front/app/src/app.html | 53 ++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/dpbr_front/app/src/app.html b/dpbr_front/app/src/app.html index 1fe7164..eff6309 100644 --- a/dpbr_front/app/src/app.html +++ b/dpbr_front/app/src/app.html @@ -1,30 +1,33 @@ - - - - - - - 단풍바람 - - - - - - - + + + + + + + 단풍바람 - - - - + + + + + + + - %sveltekit.head% - - -
%sveltekit.body%
- - + + + + + + %sveltekit.head% + + + +
%sveltekit.body%
+ + + \ No newline at end of file From 50899c303b64837403afa31101474fd59153fd26 Mon Sep 17 00:00:00 2001 From: Hyunseong0303 Date: Mon, 2 Mar 2026 01:42:12 +0900 Subject: [PATCH 13/16] refactor: clean up static directory and normalize icon filenames --- .../lib/components/BottomSheetLogin.svelte | 6 ++-- .../app/src/lib/components/Header.svelte | 17 +++++---- .../fonts/NEXON Lv1 Gothic Low OTF Bold.otf | Bin 257816 -> 0 bytes .../fonts/NEXON Lv1 Gothic Low OTF Light.otf | Bin 251044 -> 0 bytes .../static/fonts/NEXON Lv1 Gothic Low OTF.otf | Bin 254312 -> 0 bytes .../app/static/images/icons/MSGS_Favicon.ico | Bin 0 -> 15406 bytes ...k, Color=Black.svg => back-icon-black.svg} | 0 ...k, Color=White.svg => back-icon-white.svg} | 0 ...t, Color=White.svg => chat-icon-white.svg} | 0 ...Color=White.svg => check-disable-icon.svg} | 0 ... Color=White.svg => check-enable-icon.svg} | 0 ..., Color=Black.svg => close-icon-black.svg} | 0 ..., Color=White.svg => close-icon-white.svg} | 0 ...u, Color=White.svg => menu-icon-white.svg} | 0 .../images/icons/name=Save, Color=White.svg | 10 ------ .../images/icons/name=Send, Color=White.svg | 3 -- .../icons/name=Text Logo, color=Mono.svg | 33 ------------------ .../icons/name=Text Logo, color=White.svg | 33 ------------------ dpbr_front/app/static/images/thumbnail.png | Bin 0 -> 216460 bytes .../name=Back, Color=Black.svg" | 3 -- .../name=Back, Color=White.svg" | 3 -- .../name=Chat, Color=White.svg" | 11 ------ .../name=Close, Color=Black.svg" | 3 -- .../name=Close, Color=White.svg" | 3 -- .../name=Menu, Color=White.svg" | 3 -- .../name=Save, Color=White.svg" | 10 ------ .../name=Send, Color=White.svg" | 3 -- .../name=Text Logo, color=Mono.svg" | 33 ------------------ .../name=Text Logo, color=White.svg" | 33 ------------------ .../name=check-disable, Color=White.svg" | 4 --- .../name=check-enable, Color=White.svg" | 4 --- 31 files changed, 14 insertions(+), 201 deletions(-) delete mode 100644 dpbr_front/app/static/fonts/NEXON Lv1 Gothic Low OTF Bold.otf delete mode 100644 dpbr_front/app/static/fonts/NEXON Lv1 Gothic Low OTF Light.otf delete mode 100644 dpbr_front/app/static/fonts/NEXON Lv1 Gothic Low OTF.otf create mode 100644 dpbr_front/app/static/images/icons/MSGS_Favicon.ico rename dpbr_front/app/static/images/icons/{name=Back, Color=Black.svg => back-icon-black.svg} (100%) rename dpbr_front/app/static/images/icons/{name=Back, Color=White.svg => back-icon-white.svg} (100%) rename dpbr_front/app/static/images/icons/{name=Chat, Color=White.svg => chat-icon-white.svg} (100%) rename dpbr_front/app/static/images/icons/{name=check-disable, Color=White.svg => check-disable-icon.svg} (100%) rename dpbr_front/app/static/images/icons/{name=check-enable, Color=White.svg => check-enable-icon.svg} (100%) rename dpbr_front/app/static/images/icons/{name=Close, Color=Black.svg => close-icon-black.svg} (100%) rename dpbr_front/app/static/images/icons/{name=Close, Color=White.svg => close-icon-white.svg} (100%) rename dpbr_front/app/static/images/icons/{name=Menu, Color=White.svg => menu-icon-white.svg} (100%) delete mode 100644 dpbr_front/app/static/images/icons/name=Save, Color=White.svg delete mode 100644 dpbr_front/app/static/images/icons/name=Send, Color=White.svg delete mode 100644 dpbr_front/app/static/images/icons/name=Text Logo, color=Mono.svg delete mode 100644 dpbr_front/app/static/images/icons/name=Text Logo, color=White.svg create mode 100644 dpbr_front/app/static/images/thumbnail.png delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Back, Color=Black.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Back, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Chat, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Close, Color=Black.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Close, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Menu, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Save, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Send, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Text Logo, color=Mono.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=Text Logo, color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=check-disable, Color=White.svg" delete mode 100644 "dpbr_front/app/static/images/\353\251\224\354\203\235\352\262\260\354\202\260 \354\225\204\354\235\264\354\275\230 svg \355\214\214\354\235\274/name=check-enable, Color=White.svg" diff --git a/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte b/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte index c57bfff..2eb5876 100644 --- a/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte +++ b/dpbr_front/app/src/lib/components/BottomSheetLogin.svelte @@ -173,7 +173,7 @@