크라우니캔버스 — 공용.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) | #FFFDF6 | var(--크림종이) | 부수 효과: 다크모드에서도 테마 반전 적용됨(기존은 항상 흰색 고정) |
| 스테퍼 미니버튼 테두리 (L151) | #E0D4B8 | var(--테두리) | 가장 근접한 기존 루트 토큰 재사용 |
| 스테퍼 미니버튼 글자색 (L152) | #8A7A5C | var(--잉크보조) | |
| 프레즌스 아바타 이니셜 글자색 (L177) | #FFF | var(--사이드바글자강조) | 브랜드 warm-off-white 준수(순백 회피) |
| 커서캐럿 플래그 글자색 (L192) | #fff | var(--사이드바글자강조) | |
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)와의
동기화 여부를 오케스트레이터가 확인 필요.