From 247df4a230bda07f80ff4acc87efd009e8ed4eb9 Mon Sep 17 00:00:00 2001 From: okorion Date: Mon, 3 Aug 2026 14:27:32 +0900 Subject: [PATCH 1/3] =?UTF-8?q?[style]=20=EB=B0=98=EC=9D=91=ED=98=95=20?= =?UTF-8?q?=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=A0=95=EB=8F=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 변경 유형: style - 주된 영역: src/ - 변경 의도: src/의 시각 표현, 레이아웃, 접근성을 더 읽기 좋게 다듬습니다. Co-authored-by: Codex --- src/App.tsx | 28 +++++++- src/components/GalaxyScene.tsx | 12 +--- src/index.css | 126 +++++++++++++++++++++++++++------ 3 files changed, 132 insertions(+), 34 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 07350ea..029698d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -262,9 +262,35 @@ export default function App() {
+
+ +
    + {sceneBuckets.map((bucket) => { + const isSelected = bucket.kind === selectedKind + + return ( +
  • +
  • + ) + })} +
+
) })} - {buckets.map((bucket, index) => ( - - - {bucket.shortLabel} {bucket.count} - - - ))} ) } diff --git a/src/index.css b/src/index.css index 4205b65..e176454 100644 --- a/src/index.css +++ b/src/index.css @@ -484,6 +484,110 @@ input:focus-visible { position: relative; } +.orbit-legend { + position: absolute; + z-index: 2; + top: 16px; + left: 16px; + max-width: calc(100% - 32px); + padding: 9px; + border: 1px solid var(--color-border); + border-radius: var(--radius-frame); + background: var(--color-surface-strong); + box-shadow: 0 10px 28px rgb(54 82 116 / 12%); + backdrop-filter: blur(12px); + pointer-events: none; +} + +.orbit-legend-axis { + display: flex; + align-items: center; + gap: 7px; + margin: 0 2px 7px; + color: var(--color-subtle); + font-size: 9px; + font-weight: 800; + letter-spacing: 0.02em; +} + +.orbit-legend-axis-line { + width: 54px; + height: 1px; + position: relative; + background: var(--color-border); +} + +.orbit-legend-axis-line::before, +.orbit-legend-axis-line::after { + width: 4px; + height: 4px; + position: absolute; + top: 50%; + border: 1px solid var(--color-subtle); + border-radius: 50%; + background: var(--color-surface-strong); + content: ''; + transform: translateY(-50%); +} + +.orbit-legend-axis-line::before { + left: 0; +} + +.orbit-legend-axis-line::after { + right: 0; +} + +.orbit-legend ul { + display: flex; + flex-wrap: wrap; + gap: 5px; + margin: 0; + padding: 0; + list-style: none; +} + +.orbit-legend li { + min-height: 28px; + display: inline-flex; + align-items: center; + gap: 5px; + border: 1px solid var(--color-border); + border-radius: 5px; + padding: 4px 7px; + color: var(--color-muted); + background: var(--color-bg); + font-size: 11px; + line-height: 1; +} + +.orbit-legend li.selected { + color: var(--color-text); + background: var(--color-surface-strong); + box-shadow: inset 0 0 0 1px currentColor; +} + +.orbit-legend li strong { + color: var(--color-text); + font-variant-numeric: tabular-nums; +} + +.orbit-legend-ring { + width: 10px; + height: 10px; + flex: 0 0 auto; + border: 2px solid currentColor; + border-radius: 50%; +} + +.orbit-legend-selection { + padding-left: 5px; + border-left: 1px solid var(--color-border); + color: var(--color-subtle); + font-size: 9px; + font-weight: 800; +} + .galaxy-canvas canvas { display: block; } @@ -517,28 +621,6 @@ input:focus-visible { color: var(--color-subtle); } -.orbit-label { - display: block; - min-width: max-content; - padding: 3px 7px; - border: 1px solid var(--color-border); - border-radius: 5px; - background: var(--color-surface-strong); - box-shadow: 0 6px 16px rgb(54 82 116 / 10%); - font-size: 11px; - font-weight: 800; - line-height: 1.2; - opacity: 0.68; - pointer-events: none; - transform: translateX(-100%); - white-space: nowrap; -} - -.orbit-label.selected { - border-color: currentColor; - opacity: 1; -} - @media (max-width: 900px) { .workspace { grid-template-columns: 1fr; From 1e853e730bd7f9e289323bc22150d4f0fead6fb9 Mon Sep 17 00:00:00 2001 From: okorion Date: Mon, 3 Aug 2026 14:39:31 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[fix]=20red-team=20=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Codex red-team report의 차단 사유를 반영 - 자동 자가 개선 PR의 재검토를 위한 보정 커밋 추가 Co-authored-by: Codex --- src/components/GalaxyScene.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/GalaxyScene.tsx b/src/components/GalaxyScene.tsx index a7c70f2..ee8d4f5 100644 --- a/src/components/GalaxyScene.tsx +++ b/src/components/GalaxyScene.tsx @@ -115,7 +115,7 @@ export function GalaxyScene({ buckets, selectedKind, isRotating, resetRevision } const controlsRef = useRef>(null) return ( - + From 1e26f8a9469bb89b781d0c17c387c02e04ebacab Mon Sep 17 00:00:00 2001 From: okorion Date: Mon, 3 Aug 2026 15:13:30 +0900 Subject: [PATCH 3/3] =?UTF-8?q?[fix]=20red-team=20=EB=A6=AC=EB=B7=B0=20?= =?UTF-8?q?=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Codex red-team report의 차단 사유를 반영 - 자동 자가 개선 PR의 재검토를 위한 보정 커밋 추가 Co-authored-by: Codex --- src/App.tsx | 28 +------- src/components/GalaxyScene.tsx | 12 +++- src/index.css | 126 ++++++--------------------------- 3 files changed, 34 insertions(+), 132 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 029698d..07350ea 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -262,35 +262,9 @@ export default function App() {
-
- -
    - {sceneBuckets.map((bucket) => { - const isSelected = bucket.kind === selectedKind - - return ( -
  • -
  • - ) - })} -
-
) })} + {buckets.map((bucket, index) => ( + + + {bucket.shortLabel} {bucket.count} + + + ))} ) } diff --git a/src/index.css b/src/index.css index e176454..4205b65 100644 --- a/src/index.css +++ b/src/index.css @@ -484,110 +484,6 @@ input:focus-visible { position: relative; } -.orbit-legend { - position: absolute; - z-index: 2; - top: 16px; - left: 16px; - max-width: calc(100% - 32px); - padding: 9px; - border: 1px solid var(--color-border); - border-radius: var(--radius-frame); - background: var(--color-surface-strong); - box-shadow: 0 10px 28px rgb(54 82 116 / 12%); - backdrop-filter: blur(12px); - pointer-events: none; -} - -.orbit-legend-axis { - display: flex; - align-items: center; - gap: 7px; - margin: 0 2px 7px; - color: var(--color-subtle); - font-size: 9px; - font-weight: 800; - letter-spacing: 0.02em; -} - -.orbit-legend-axis-line { - width: 54px; - height: 1px; - position: relative; - background: var(--color-border); -} - -.orbit-legend-axis-line::before, -.orbit-legend-axis-line::after { - width: 4px; - height: 4px; - position: absolute; - top: 50%; - border: 1px solid var(--color-subtle); - border-radius: 50%; - background: var(--color-surface-strong); - content: ''; - transform: translateY(-50%); -} - -.orbit-legend-axis-line::before { - left: 0; -} - -.orbit-legend-axis-line::after { - right: 0; -} - -.orbit-legend ul { - display: flex; - flex-wrap: wrap; - gap: 5px; - margin: 0; - padding: 0; - list-style: none; -} - -.orbit-legend li { - min-height: 28px; - display: inline-flex; - align-items: center; - gap: 5px; - border: 1px solid var(--color-border); - border-radius: 5px; - padding: 4px 7px; - color: var(--color-muted); - background: var(--color-bg); - font-size: 11px; - line-height: 1; -} - -.orbit-legend li.selected { - color: var(--color-text); - background: var(--color-surface-strong); - box-shadow: inset 0 0 0 1px currentColor; -} - -.orbit-legend li strong { - color: var(--color-text); - font-variant-numeric: tabular-nums; -} - -.orbit-legend-ring { - width: 10px; - height: 10px; - flex: 0 0 auto; - border: 2px solid currentColor; - border-radius: 50%; -} - -.orbit-legend-selection { - padding-left: 5px; - border-left: 1px solid var(--color-border); - color: var(--color-subtle); - font-size: 9px; - font-weight: 800; -} - .galaxy-canvas canvas { display: block; } @@ -621,6 +517,28 @@ input:focus-visible { color: var(--color-subtle); } +.orbit-label { + display: block; + min-width: max-content; + padding: 3px 7px; + border: 1px solid var(--color-border); + border-radius: 5px; + background: var(--color-surface-strong); + box-shadow: 0 6px 16px rgb(54 82 116 / 10%); + font-size: 11px; + font-weight: 800; + line-height: 1.2; + opacity: 0.68; + pointer-events: none; + transform: translateX(-100%); + white-space: nowrap; +} + +.orbit-label.selected { + border-color: currentColor; + opacity: 1; +} + @media (max-width: 900px) { .workspace { grid-template-columns: 1fr;