빌드 작업이 없습니다.
diff --git a/src/pages/launcher/LauncherCommonSettingsPage.tsx b/src/pages/launcher/LauncherCommonSettingsPage.tsx
index e301e4f..ffdc40c 100644
--- a/src/pages/launcher/LauncherCommonSettingsPage.tsx
+++ b/src/pages/launcher/LauncherCommonSettingsPage.tsx
@@ -1,4 +1,4 @@
-import { MoreHorizontal, Plus, SlidersHorizontal, Trash2 } from 'lucide-react';
+import { ChevronLeft, ChevronRight, MoreHorizontal, Plus, SlidersHorizontal, Trash2 } from 'lucide-react';
import { useEffect, useMemo, useState, type FormEvent } from 'react';
import { Badge, Button, Card, CardHeader, Modal } from '../../components/ui';
import { useToast } from '../../components/toast';
@@ -33,6 +33,8 @@ const emptyForm: FormState = {
isSecret: false
};
+const settingsPageSize = 10;
+
function maskValue(setting: LauncherCommonSetting) {
if (!setting.isSecret) return setting.value;
if (!setting.value) return '-';
@@ -61,8 +63,11 @@ export function LauncherCommonSettingsPage() {
const [editing, setEditing] = useState
(null);
const [form, setForm] = useState(emptyForm);
const [saving, setSaving] = useState(false);
+ const [page, setPage] = useState(1);
const loadingVisible = useMinimumLoading(loading);
+ const totalPages = Math.max(1, Math.ceil(settings.length / settingsPageSize));
+ const pagedSettings = settings.slice((page - 1) * settingsPageSize, page * settingsPageSize);
const summary = useMemo(() => ({
total: settings.length,
endpoint: settings.filter((item) => item.type === 'endpoint').length,
@@ -84,6 +89,10 @@ export function LauncherCommonSettingsPage() {
refresh();
}, []);
+ useEffect(() => {
+ setPage((currentPage) => Math.min(currentPage, totalPages));
+ }, [totalPages]);
+
const openCreate = () => {
setEditing(null);
setForm(emptyForm);
@@ -192,7 +201,7 @@ export function LauncherCommonSettingsPage() {
등록된 설정이 없습니다. |
) : null}
- {settings.map((setting) => (
+ {pagedSettings.map((setting) => (
|
@@ -214,6 +223,31 @@ export function LauncherCommonSettingsPage() {
+
+
+ {loading ? '불러오는 중' : `총 ${settings.length}건 · ${page} / ${totalPages}`}
+
+
+
+
+
+
+
{files.map((file) => (
@@ -510,12 +510,6 @@ export function LauncherSourcePage() {
- {activeForm.repository ? (
-
- 저장소 열기
-
-
- ) : null}
@@ -618,7 +612,7 @@ export function LauncherSourcePage() {
title="커밋 내역 상세"
onClose={() => setDiffTarget(null)}
className="max-w-[min(98vw,1800px)]"
- bodyClassName="max-h-[84vh] px-4 py-4"
+ bodyClassName="max-h-[70vh] px-4 py-4"
footer={}
>
{diffTarget ? (
diff --git a/src/pages/launcher/LauncherVersionsPage.tsx b/src/pages/launcher/LauncherVersionsPage.tsx
index 67fe550..c40cad7 100644
--- a/src/pages/launcher/LauncherVersionsPage.tsx
+++ b/src/pages/launcher/LauncherVersionsPage.tsx
@@ -267,12 +267,6 @@ export function LauncherVersionsPage() {
커밋 {latestBackendBuild?.commitSha || '-'}
-
-
-
|