diff --git a/apps/web/public/sitemap-0.xml b/apps/web/public/sitemap-0.xml
index d99207b..9a8cc02 100644
--- a/apps/web/public/sitemap-0.xml
+++ b/apps/web/public/sitemap-0.xml
@@ -1,6 +1,6 @@
-https://www.singcode.kr/manifest.webmanifest2026-08-25T16:04:17.180Zweekly0.7
-https://www.singcode.kr/patch-notes2026-08-25T16:04:17.182Zweekly0.7
-https://www.singcode.kr2026-08-25T16:04:17.182Zweekly0.7
+https://www.singcode.kr/manifest.webmanifest2026-08-28T16:24:56.791Zweekly0.7
+https://www.singcode.kr/patch-notes2026-08-28T16:24:56.793Zweekly0.7
+https://www.singcode.kr2026-08-28T16:24:56.794Zweekly0.7
\ No newline at end of file
diff --git a/apps/web/src/app/popular/ArtistVotePanel.tsx b/apps/web/src/app/popular/ArtistVotePanel.tsx
index 95c1972..74ca962 100644
--- a/apps/web/src/app/popular/ArtistVotePanel.tsx
+++ b/apps/web/src/app/popular/ArtistVotePanel.tsx
@@ -137,118 +137,118 @@ export default function ArtistVotePanel() {
);
};
- if (!isAuthenticated) {
- return (
-
-
로그인하고 투표해보세요
-
- 보유 포인트로 이달의 아티스트를 뽑을 수 있어요.
-
-
- );
- }
-
return (
-
-
- 보유 포인트 {point}P
- {changedRows.length > 0 && (
-
- {' '}
- → 저장 후 {remainingPoint}P
-
- )}
-
-
-
- handleChangeQuery(event.target.value)}
- onFocus={() => setIsFocusAuto(true)}
- onBlur={() => setIsFocusAuto(false)}
- />
- {isFocusAuto && (
-
- )}
-
-
- {isSearchEmpty && (
-
- ‘{query.trim()}’ 검색 결과가 없어요.
-
- )}
+
+ {/* 비로그인이어도 투표 화면이 어떤 모습인지는 그대로 보여주고 안내 문구만 위에 덮는다.
+ inert는 아래 UI의 클릭·포커스·접근성 트리 노출을 한 번에 막아, 로그인 없이 조작되는 일이 없다. */}
+
+
+ 보유 포인트 {point}P
+ {changedRows.length > 0 && (
+
+ {' '}
+ → 저장 후 {remainingPoint}P
+
+ )}
+
-
-
- {rows.length === 0 ? (
-
- 검색해서 투표할 아티스트를 담아보세요.
-
- ) : (
- rows.map(row => (
-
handleChange(row.artist, amount)}
- onSubmit={handleSubmit}
- onDelete={() => handleDelete(row.artist)}
- />
- ))
+
+ handleChangeQuery(event.target.value)}
+ onFocus={() => setIsFocusAuto(true)}
+ onBlur={() => setIsFocusAuto(false)}
+ />
+ {isFocusAuto && (
+
)}
-
-
- {isOverPoint && (
-
- 포인트가 {-remainingPoint}P 부족해요. 투표값을 줄여주세요.
+ {isSearchEmpty && (
+
+ ‘{query.trim()}’ 검색 결과가 없어요.
)}
-
-
-
+ {!isAuthenticated && (
+
+
로그인하면 참여할 수 있어요
+
이 달의 아티스트를 직접 뽑아주세요.
+
+ )}
);
}
diff --git a/apps/web/src/app/popular/ChartGenreFilter.tsx b/apps/web/src/app/popular/ChartGenreFilter.tsx
index 331317a..eab0e54 100644
--- a/apps/web/src/app/popular/ChartGenreFilter.tsx
+++ b/apps/web/src/app/popular/ChartGenreFilter.tsx
@@ -3,7 +3,7 @@
import { useEffect, useRef } from 'react';
import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs';
-import { STR_TYPE_EMOJI, STR_TYPE_LABEL, StrType } from '@/types/tjChart';
+import { STR_TYPE_LABEL, StrType } from '@/types/tjChart';
// 장르가 12종이라 줄바꿈 없이 한 줄로 두고 가로 스크롤로 훑게 한다.
// TabsTrigger 기본 스타일의 flex-1(균등 분할)은 flex-none으로 해제해야 칩 너비가 라벨에 맞는다.
@@ -57,7 +57,6 @@ export default function ChartGenreFilter({ value, onChange }: ChartGenreFilterPr
{Object.values(StrType).map(type => (
- {STR_TYPE_EMOJI[type]}
{STR_TYPE_LABEL[type]}
))}
diff --git a/apps/web/src/app/search/SearchTour.tsx b/apps/web/src/app/search/SearchTour.tsx
index 0cca923..527981c 100644
--- a/apps/web/src/app/search/SearchTour.tsx
+++ b/apps/web/src/app/search/SearchTour.tsx
@@ -136,6 +136,9 @@ export default function SearchTour({
zIndex: 10000,
showProgress: true,
buttons: TOOLTIP_BUTTONS,
+ // 라이브러리 기본값 'close'는 continuous 모드에서 X를 눌러도 다음 단계로 넘어갈 뿐 투어가 끝나지 않는다.
+ // 'skip'이어야 상태가 SKIPPED가 되어 투어가 종료되고 '다시 보지 않기'까지 저장된다.
+ closeButtonAction: 'skip' as const,
skipBeacon: true,
// 라이브러리 기본값(고정 380px)은 375px 이하 모바일 화면에서 좌우로 넘친다.
// 뷰포트보다 넓어지지 않되, 넓은 화면에서는 기존 380px 상한을 유지한다.
diff --git a/apps/web/src/constants/tourDemoSong.ts b/apps/web/src/constants/tourDemoSong.ts
index 139bbe5..61fc1a4 100644
--- a/apps/web/src/constants/tourDemoSong.ts
+++ b/apps/web/src/constants/tourDemoSong.ts
@@ -6,12 +6,12 @@ import { SearchSong } from '@/types/song';
* 실제 검색 결과로 투어를 진행하면 곡 데이터가 바뀌거나 검색이 실패할 때 투어가 깨진다.
* 네트워크 없이 항상 같은 카드를 보여주도록 고정값을 쓴다.
*/
-export const TOUR_DEMO_SEARCH_TERM = '밤이 깊었나';
+export const TOUR_DEMO_SEARCH_TERM = '밤이 깊었네';
export const TOUR_DEMO_SONG: SearchSong = {
id: 'tour-demo-song',
- title: '밤이 깊었나',
- artist: '스판텍스',
+ title: '밤이 깊었네',
+ artist: '크라잉넛',
num_tj: '10101',
num_ky: '20202',
badges: [],
diff --git a/apps/web/src/types/tjChart.ts b/apps/web/src/types/tjChart.ts
index 11409d5..72f63e1 100644
--- a/apps/web/src/types/tjChart.ts
+++ b/apps/web/src/types/tjChart.ts
@@ -32,24 +32,6 @@ export const STR_TYPE_LABEL: Record = {
[StrType.RnbUrban]: 'R&B/어반',
};
-// 장르 뱃지 앞에 붙는 아이콘.
-// Windows의 Segoe UI Emoji에 글리프가 없으면 두부(tofu)로 깨지므로,
-// 국기(regional indicator)와 최신 이모지는 쓰지 않는다. 아코디언(U+1FA97)도 여기서 깨진다.
-export const STR_TYPE_EMOJI: Record = {
- [StrType.All]: '🏆',
- [StrType.Kpop]: '🎤',
- [StrType.Pop]: '🌍',
- [StrType.Jpop]: '🌸',
- [StrType.Ballad]: '💗',
- [StrType.Dance]: '💃',
- [StrType.Trot]: '📻',
- [StrType.Folk]: '🎸',
- [StrType.Ost]: '🎬',
- [StrType.RockMetal]: '🤘',
- [StrType.RapHiphop]: '🔥',
- [StrType.RnbUrban]: '🎷',
-};
-
export interface TjChartRankingSong extends Song {
rank: number;
}