← 목록
기타 2026-07-19 4KB 읽기 4분

estel.crowny.org 앱 공통 셸 구축 (EstelApp)

개요

에스텔 QI(estel.crowny.org) 재구축 작업 중 "앱 공통 셸" 담당분. 디자인 핸드오프 (/Users/ef/Downloads/design_handoff_estel_qi/)의 에스텔 앱.dc.html 프로토타입을 hifi 그대로 재구현해 EstelApp 전역 API를 정의했다. 9개 모듈(sky/qi/lab/puzzle/ vault/learn/partner/hw/ops)은 각자 EstelApp.registerModule(id, def)로 셸에 등록만 하면 되는 구조.

무엇을 했는지

  • 앱.html — 문서 골격(ko/charset/viewport/title), Pretendard+JetBrains Mono CDN,
README Design Tokens를 :root CSS 변수로 전량 선언, 상단 브라운 바(h46 #3D2B1F)· 상태바(h30 #2E2117)·9개 모듈 <section id="mod-*">·⌘K 팔레트·도움말 FAB·토스트 루트 마크업. 셸.js 다음 모듈/{sky,qi,lab,puzzle,vault,learn,partner,hw,ops}.js 순서로 스크립트 로드.
  • 셸.jsEstelApp 전역 구현:
  • registerModule(id, def): css <style data-mod> 주입, 탭 재렌더(7px 모듈색 도트+
  • ⌘n mono), lazy-mount(#mod-<id>def.html 첫 활성화 시 주입 후 def.mount(el) 1회 호출), 미등록 모듈은 "모듈 준비 중…" 스텁으로 셸이 죽지 않게 처리.
  • go(id) / ⌘·Ctrl+1–9 단축키(+토스트) / ⌘K 팔레트(자연어 입력→모듈 이동·
  • "QI 콘솔로 보내기" 라우팅, estel:ask CustomEvent로 qi 모듈에 전달) / esc 닫기.
  • 상태바 refreshStatus(): 트윈 구축자 19,683(3⁹)·오늘 별하늘 n/5 장면(state.daily
  • 기반 동적)·시드 재현 100%(#7FBF8E)·엔진 LIVE·우측 정직 경계 문구(#8F7E68).
  • 도움말 FAB: 4레벨(어린이/빠른/일반/전문가) 토글, helpTexts()에 프로토타입
  • 9모듈×4레벨 전문 그대로 이식.
  • 토스트: 하단 중앙 #1E2150/골드 보더, 2.2–2.6s 자동 소멸.
  • audit(text, undoable): append-only + localStorage(estel.audit.v1), auditUndo
  • 원본 삭제 없이 취소 엔트리 추가. window.EstelApp.auditLog로 노출.
  • state/twinAdd/save: 계약 스키마(twin.axes 5축·daily·blueprints),
  • localStorage 키 estel.state.v1, log3/gaugeFill/stage/POW3 헬퍼 제공.
    • node --check 셸.js 구문 검사 통과.
    • 한선씨 동반(글로벌 규칙): 셸.한선(POW3 테이블·모듈 레지스트리·log₃ 산식·상태바/
    도움말 텍스트 조립 등 순수 로직 미러, crownyc run 검증 7/7 통과), 앱.한선 (HTML 실물 파일을 읽기()로 직접 읽어 필수 id 21개·스크립트 10개·토큰 색 12개를 포함하나()로 결정형 검증하는 골격 게이트, 실측 45/45 통과). `crownycode-learn.sh add`로 두 패턴 학습 완료.

    관련 파일 경로

    • /Users/ef/crowny-estel/앱.html
    • /Users/ef/crowny-estel/셸.js
    • /Users/ef/crowny-estel/셸.한선 (동반, crownyc 검증 7/7)
    • /Users/ef/crowny-estel/앱.한선 (동반, HTML 골격 게이트 45/45)
    • 디자인 SSOT: /Users/ef/Downloads/design_handoff_estel_qi/README.md,
    DEVELOPER_GUIDE.md, 에스텔 앱.dc.html

    잔여 이슈

    • 모듈/{sky,qi,lab,puzzle,vault,learn,partner,hw,ops}.js 9개는 별도 서브에이전트
    담당 — 아직 EstelApp.registerModule 호출부가 없으면 각 탭은 "모듈 준비 중…" 스텁으로 표시됨(셸 자체는 정상 동작).
    • 서버 API(/api/estel/ai, /api/quantum/run) 연동 및 로컬 결정론 폴백은 각 모듈
    구현 시 처리 — 셸은 라우팅(⌘K → qi 모듈 CustomEvent)까지만 제공.
    • 실브라우저 E2E 스모크(⌘1–9, ⌘K, 도움말 4레벨, 토스트)는 9개 모듈이 모두 붙은
    뒤 통합 검증 권장.