← 목록
기타 2026-07-24 3KB 읽기 3분

크라우니캔버스 — 공용.js 하드코딩 hex 컬러 수리 (P1)

개요

canvas.crowny.org(:9620) 감사 체크리스트 ①(tokens.css 외 hex 0건) 위반 확증 건 중, 소유권 범위인 앱/공용.js 1개 파일을 근본 수리했다. (bar.html·editor.js·moments.js·today.js·approval.js는 타 에이전트 소유 범위 — 이번 작업 대상 아님)

무엇을 했는지

앱/공용.js에서 인라인 스타일 리터럴 hex 5건을 tokens.css(SSOT) 기존 :root 변수로 치환:

위치이전(hex)이후(var)비고
슬라이더 thumb 배경 (L120)#FFFDF6var(--크림종이)부수 효과: 다크모드에서도 테마 반전 적용됨(기존은 항상 흰색 고정)
스테퍼 미니버튼 테두리 (L151)#E0D4B8var(--테두리)가장 근접한 기존 루트 토큰 재사용
스테퍼 미니버튼 글자색 (L152)#8A7A5Cvar(--잉크보조)
프레즌스 아바타 이니셜 글자색 (L177)#FFFvar(--사이드바글자강조)브랜드 warm-off-white 준수(순백 회피)
커서캐럿 플래그 글자색 (L192)#fffvar(--사이드바글자강조)
tokens.css 자체는 수정금지(07-앱-계약.md) 대상이라 건드리지 않음 — 정확히 일치하는 토큰이 없는 값은 가장 가까운 기존 루트 변수로 매핑(신규 토큰 추가 없이 SSOT 범위 내 해결).

검증 (라이브 실측)

grep -noE "#[0-9A-Fa-f]{3,6}" 앱/공용.js        → 매치 0건 (exit 1)
curl -s http://localhost:9620/공용.js | diff - 앱/공용.js   → IDENTICAL (정적서빙, 재기동 불필요)
grep -noE "#[0-9A-Fa-f]{3,6}" <라이브 응답>       → 매치 0건 (exit 1)
서버(:9620, LaunchAgent org.crowny.canvas)는 공용.js를 정적파일로 그대로 서빙 — 컴파일 대상 아니므로 ./hanseonc_high 서버.한선 재컴파일/재기동 불필요(서버 로직 무변경 확인).

동반 .한선 확인

한선씨/공용컴포넌트.한선(공용.js 파리티 문서화된 동반 파일)은 애초에 클래스 기반 마크업만 생성하며 인라인 hex 리터럴이 전혀 없었음(grep 0건, 재확인) — 이번 수정은 순수 색상 리터럴→토큰 치환이라 동반 파일의 로직(파리티) 변경 없음. crownycode-learn.sh add로 치환 패턴 학습 완료 (공용js하드코딩hex토큰치환).

관련 파일

  • /Users/ef/crowny-canvas/앱/공용.js (수정)
  • /Users/ef/crowny-canvas/앱/tokens.css (참조만, 무변경)
  • /Users/ef/crowny-canvas/한선씨/공용컴포넌트.한선 (검증만, 무변경)
  • /Users/ef/crowny-canvas/docs/00-작업계획서-에이전트디렉팅.md, docs/07-앱-계약.md (규칙 참조)

잔여 이슈

  • bar.html(53·58·68행 등)·editor.js·moments.js·today.js·approval.js의 hex 리터럴은 각 파일 소유
에이전트가 별도 수리해야 함(이번 작업 범위 밖).
  • tokens.css 자체도 컴포넌트 클래스 섹션(.cc-toggle 등)에 일부 하드코딩 hex 보유 — SSOT 파일 성격상
감사 체크리스트 예외로 처리되나, 근본적으로는 원 디자인 소스(크라우니캔버스 디자인 규칙.css)와의 동기화 여부를 오케스트레이터가 확인 필요.