adjust whats new dialog word

This commit is contained in:
pa
2026-03-24 09:51:38 +09:00
parent 468696dfce
commit 0af5e33684
4 changed files with 38 additions and 27 deletions
+13 -7
View File
@@ -15,6 +15,12 @@
<h2 class="m-0 text-[23px] font-bold tracking-tight"> <h2 class="m-0 text-[23px] font-bold tracking-tight">
{{ t(whatsNewDialog.titleKey || 'onboarding.whatsnew.title') }} {{ t(whatsNewDialog.titleKey || 'onboarding.whatsnew.title') }}
</h2> </h2>
<p
v-if="whatsNewDialog.subtitleKey"
class="mt-1 text-[13px] text-muted-foreground">
{{ t(whatsNewDialog.subtitleKey) }}
</p>
</div> </div>
<!-- Feature Cards --> <!-- Feature Cards -->
@@ -88,7 +94,7 @@
<script setup> <script setup>
import { markRaw } from 'vue'; import { markRaw } from 'vue';
import { LayoutDashboard, Search, Activity, Images } from 'lucide-vue-next'; import { Search, FolderHeart, RefreshCw, MousePointerClick } from 'lucide-vue-next';
import { storeToRefs } from 'pinia'; import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
@@ -122,16 +128,16 @@
const iconMap = { const iconMap = {
search: markRaw(Search), search: markRaw(Search),
'layout-dashboard': markRaw(LayoutDashboard), 'folder-heart': markRaw(FolderHeart),
activity: markRaw(Activity), 'refresh-cw': markRaw(RefreshCw),
images: markRaw(Images) 'mouse-pointer-click': markRaw(MousePointerClick)
}; };
const hueMap = { const hueMap = {
search: '142', search: '142',
'layout-dashboard': '45', 'folder-heart': '340',
activity: '200', 'refresh-cw': '200',
images: '280' 'mouse-pointer-click': '45'
}; };
function resolveIcon(iconName) { function resolveIcon(iconName) {
+13 -12
View File
@@ -3000,28 +3000,29 @@
"cta": "Got It", "cta": "Got It",
"common": { "common": {
"got_it": "Got It", "got_it": "Got It",
"view_changelog": "View changelog", "view_changelog": "View All Changes",
"support": "Support VRCX" "support": "Support VRCX"
}, },
"releases": { "releases": {
"2026_04_05": { "2026_04_05": {
"title": "What's New in VRCX", "title": "Explore New Features",
"subtitle": "A few useful features you might not notice.",
"items": { "items": {
"quick_search": { "quick_search": {
"title": "Quick Search", "title": "Quick Search",
"description": "Find users, worlds, and avatars in seconds." "description": "Press Ctrl+K (⌘K) to find users, worlds, groups, and avatars."
}, },
"dashboard": { "local_favorite_groups": {
"title": "Dashboard", "title": "Local Favorites",
"description": "Build a workspace that fits how you use VRCX." "description": "Create unlimited custom friend groups beyond VRChat's limits."
}, },
"activity_insights": { "auto_status": {
"title": "Activity Insights", "title": "Auto Status",
"description": "See shared online time, Most Visited Worlds, and activity trends." "description": "Auto-switch status based on friend presence, filtered by group."
}, },
"my_avatars": { "right_click_menus": {
"title": "My Avatars", "title": "Context Menus",
"description": "Browse and manage your avatars with less friction." "description": "Right-click on friends, tables, and headers for quick actions."
} }
} }
} }
+9 -8
View File
@@ -6,16 +6,16 @@ const whatsNewReleases = Object.freeze({
icon: 'search' icon: 'search'
}, },
{ {
key: 'dashboard', key: 'local_favorite_groups',
icon: 'layout-dashboard' icon: 'folder-heart'
}, },
{ {
key: 'activity_insights', key: 'auto_status',
icon: 'activity' icon: 'refresh-cw'
}, },
{ {
key: 'my_avatars', key: 'right_click_menus',
icon: 'images' icon: 'mouse-pointer-click'
} }
] ]
} }
@@ -36,7 +36,7 @@ function normalizeReleaseVersion(version) {
/** /**
* @param {string} version * @param {string} version
* @returns {{titleKey: string, items: Array<{key: string, icon: string, titleKey: string, descriptionKey: string}>} | null} * @returns {{titleKey: string, subtitleKey: string, items: Array<{key: string, icon: string, titleKey: string, descriptionKey: string}>} | null}
*/ */
function getWhatsNewRelease(version) { function getWhatsNewRelease(version) {
const normalizedVersion = normalizeReleaseVersion(version); const normalizedVersion = normalizeReleaseVersion(version);
@@ -52,6 +52,7 @@ function getWhatsNewRelease(version) {
const baseKey = `onboarding.whatsnew.releases.${i18nKey}`; const baseKey = `onboarding.whatsnew.releases.${i18nKey}`;
return { return {
titleKey: `${baseKey}.title`, titleKey: `${baseKey}.title`,
subtitleKey: `${baseKey}.subtitle`,
items: release.items.map((item) => ({ items: release.items.map((item) => ({
...item, ...item,
titleKey: `${baseKey}.items.${item.key}.title`, titleKey: `${baseKey}.items.${item.key}.title`,
@@ -61,7 +62,7 @@ function getWhatsNewRelease(version) {
} }
/** /**
* @returns {{titleKey: string, items: Array<{key: string, icon: string, titleKey: string, descriptionKey: string}>} | null} * @returns {{titleKey: string, subtitleKey: string, items: Array<{key: string, icon: string, titleKey: string, descriptionKey: string}>} | null}
*/ */
function getLatestWhatsNewRelease() { function getLatestWhatsNewRelease() {
const versions = Object.keys(whatsNewReleases); const versions = Object.keys(whatsNewReleases);
+3
View File
@@ -19,6 +19,7 @@ import * as workerTimers from 'worker-timers';
const emptyWhatsNewDialog = () => ({ const emptyWhatsNewDialog = () => ({
visible: false, visible: false,
titleKey: '', titleKey: '',
subtitleKey: '',
items: [] items: []
}); });
@@ -199,6 +200,7 @@ export const useVRCXUpdaterStore = defineStore('VRCXUpdater', () => {
whatsNewDialog.value = { whatsNewDialog.value = {
visible: true, visible: true,
titleKey: release.titleKey, titleKey: release.titleKey,
subtitleKey: release.subtitleKey,
items: release.items.map((item) => ({ ...item })) items: release.items.map((item) => ({ ...item }))
}; };
@@ -218,6 +220,7 @@ export const useVRCXUpdaterStore = defineStore('VRCXUpdater', () => {
whatsNewDialog.value = { whatsNewDialog.value = {
visible: true, visible: true,
titleKey: release.titleKey, titleKey: release.titleKey,
subtitleKey: release.subtitleKey,
items: release.items.map((item) => ({ ...item })) items: release.items.map((item) => ({ ...item }))
}; };