From 2c3a1602bd9b2cf15f434badada1aeb5541e3f34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B2=E1=84=8B=E1=85=AD=E1=86=BC=E1=84=90?= =?UTF-8?q?=E1=85=A2?= Date: Tue, 21 Apr 2026 08:35:33 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix(layout,toolbar):=20split-pane=20padding?= =?UTF-8?q?=20=EC=A0=9C=EA=B1=B0=20+=20overlay=20toolbar=20pd:sm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - split.tsx: split-pane 경로의 전체 padding 제거 (single-child 경로는 유지) - FinderToolbar: overlay surface control-group 5개에 pd:sm 추가 (height/padding 확보) --- src/interactive-os/layout/nodes/split.tsx | 2 +- src/interactive-os/ui/FinderToolbar.tsx | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/interactive-os/layout/nodes/split.tsx b/src/interactive-os/layout/nodes/split.tsx index 3dd00c0eb..0cb04bfed 100644 --- a/src/interactive-os/layout/nodes/split.tsx +++ b/src/interactive-os/layout/nodes/split.tsx @@ -54,7 +54,7 @@ defineLayoutNode('split', { return ( -
+
{childIds.map((childId) => renderNode(childId, 'split'))} diff --git a/src/interactive-os/ui/FinderToolbar.tsx b/src/interactive-os/ui/FinderToolbar.tsx index d87445f27..53171198b 100644 --- a/src/interactive-os/ui/FinderToolbar.tsx +++ b/src/interactive-os/ui/FinderToolbar.tsx @@ -105,15 +105,15 @@ export function FinderToolbar({ return (
{(onBack || onForward) && ( -
+
)} -
+
{showSort && ( -
+
{SORT_KEYS.map((key) => { const isActive = sortKey === key return ( @@ -142,7 +142,7 @@ export function FinderToolbar({
)} {showKindFilter && ( -
+
{KIND_KEYS.map((kind) => { const isActive = kindFilters!.includes(kind) return ( @@ -164,7 +164,7 @@ export function FinderToolbar({ {path}
)} -
+
From 8edb3bd38ec52921decfd602688ac295aa86256b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B2=E1=84=8B=E1=85=AD=E1=86=BC=E1=84=90?= =?UTF-8?q?=E1=85=A2?= Date: Tue, 21 Apr 2026 08:44:19 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix(hooks):=20guardBash=20=EB=A7=A5?= =?UTF-8?q?=EB=9D=BD=20=EC=9D=B8=EC=8B=9D=20=E2=80=94=20main=EC=97=90?= =?UTF-8?q?=EC=84=9C=EB=A7=8C=20=EC=B0=A8=EB=8B=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - reset --hard: main에서만 차단 (feature branch 복구 허용) - branch -D: main에서만 차단 (squash merge 후 삭제 허용) - push --force: --force-with-lease는 제외 (부정 lookahead) --- .claude/hooks/guardBash.mjs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.claude/hooks/guardBash.mjs b/.claude/hooks/guardBash.mjs index 4bcd07bf7..14037b99c 100644 --- a/.claude/hooks/guardBash.mjs +++ b/.claude/hooks/guardBash.mjs @@ -31,10 +31,10 @@ const BLOCKED = [ { pattern: /\bgit\s+checkout\s+(\.|--\s*\.\s*$)/, reason: 'git checkout . 금지 — git checkout -- [파일명]으로 개별 파일만 원복하세요' }, { pattern: /\bgit\s+restore\s+\.\s*$/, reason: 'git restore . 금지 — git restore [파일명]으로 개별 파일만 원복하세요' }, { pattern: /\bgit\s+clean\s+-[a-zA-Z]*f/, reason: 'git clean -f 금지 — rm [파일명]으로 개별 삭제하세요' }, - { pattern: /\bgit\s+reset\s+--hard\b/, reason: 'git reset --hard 금지 — git reset --soft 또는 git revert [커밋]을 사용하세요' }, - { pattern: /\bgit\s+push\s+[^|]*--force\b/, reason: 'git push --force 금지 — git push --force-with-lease를 사용하세요 (그래도 위험, 확인 필요)' }, - { pattern: /\bgit\s+push\s+[^|]*-f\b/, reason: 'git push -f 금지 — git push --force-with-lease를 사용하세요 (그래도 위험, 확인 필요)' }, - { pattern: /\bgit\s+branch\s+-D\b/, reason: 'git branch -D 금지 — git branch -d (소문자)를 사용하세요' }, + { pattern: /\bgit\s+reset\s+--hard\b/, reason: 'git reset --hard 금지 (main 브랜치) — feature branch에서는 허용', onlyMain: true }, + { pattern: /\bgit\s+push\s+[^|]*--force(?!-with-lease)\b/, reason: 'git push --force 금지 — git push --force-with-lease를 사용하세요' }, + { pattern: /\bgit\s+push\s+[^|]*\s-f\b/, reason: 'git push -f 금지 — git push --force-with-lease를 사용하세요' }, + { pattern: /\bgit\s+branch\s+-D\b/, reason: 'git branch -D 금지 (main 브랜치) — feature branch에서는 허용', onlyMain: true }, ] for (const { pattern, reason, onlyMain } of BLOCKED) { From 89780e1e2b022a1dc399d766b4b0f0b98705c6c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=8B=E1=85=B2=E1=84=8B=E1=85=AD=E1=86=BC=E1=84=90?= =?UTF-8?q?=E1=85=A2?= Date: Tue, 21 Apr 2026 08:47:25 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix(toolbar):=20pd:sm=20=EB=90=98=EB=8F=8C?= =?UTF-8?q?=EB=A6=BC=20=E2=80=94=20role=EC=B6=95=EC=9D=B4=20padding=20SSOT?= =?UTF-8?q?=EC=9D=B4=EB=AF=80=EB=A1=9C=20=EC=B6=94=EA=B0=80=20=EB=B6=88?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit control-group role 타입에 pd 축이 없음. overlay toolbar 크기 확보는 role 값 재검토 또는 surface 변경으로 별도 해결 필요 (follow-up). --- src/interactive-os/ui/FinderToolbar.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/interactive-os/ui/FinderToolbar.tsx b/src/interactive-os/ui/FinderToolbar.tsx index 53171198b..d87445f27 100644 --- a/src/interactive-os/ui/FinderToolbar.tsx +++ b/src/interactive-os/ui/FinderToolbar.tsx @@ -105,15 +105,15 @@ export function FinderToolbar({ return (
{(onBack || onForward) && ( -
+
)} -
+
{showSort && ( -
+
{SORT_KEYS.map((key) => { const isActive = sortKey === key return ( @@ -142,7 +142,7 @@ export function FinderToolbar({
)} {showKindFilter && ( -
+
{KIND_KEYS.map((kind) => { const isActive = kindFilters!.includes(kind) return ( @@ -164,7 +164,7 @@ export function FinderToolbar({ {path}
)} -
+