요청: crownyai-창모으기-dock단일-세로즐겨찾기
- 날짜: 2026-07-23 22:38:07
- 작업 경로: /Users/ef
요청 본문
ai.crowny.org 크라우니AI 브라우저 업데이트: 1)다른 창에서 한 창으로 모으기(창 병합) 2)새창 열어도 Dock 아이콘이 늘어나지 않고 한 아이콘 안에 창 리스트 3)크롬처럼 즐겨찾기 리스트를 좌측 세로형으로 전환 가능하게
관련 산출
(클로드가 작업 결과를 이어 기록)
작업 결과 (2026-07-23 완료)
아키텍처 전환: 단일창=단일프로세스 → 단일프로세스 멀티윈도우 (W2)
- 원인 진단: 구 "새 창"=
open -n새 프로세스 → Dock 아이콘 증식(실측 9개 프로세스 동시 가동). crowny-ai-main.m전면 개편(1062→1447줄): 창 단위CABrowserWindowController(크롬+컨텐트+집사+다운로드바+창별 옵저버 object 필터) 신설,CAAppDelegate=창 목록 관리+메뉴바(활성 창 라우팅). 헤더 계약(window/chrome/content)은 활성 창 게터로 유지(타 파일 무수정).- ⌘N/⌘⇧N/⋮새창/tear-off 전부 같은 프로세스 새 창 → Dock 아이콘 1개 + 창 목록(NSApp.windowsMenu 등재, 창 제목=활성 탭 제목 동기). 네이티브 창탭 병합 차단(tabbingMode Disallowed).
W1 창 병합
- 윈도우 메뉴 "모든 창을 이 창으로 병합"(⌘⇧M): 같은 프로세스 창 탭 직접 반입(AI홈 중복 제외) + 신버전 타 프로세스엔 분산알림
crowny.ai.mergeToPID(각자 탭을 N7 어댑션 IPC로 넘기고 종료). 구버전 프로세스는 탭 드래그(N7 IPC 경로 유지)로 회수 가능. - 탭 드롭 라우팅 개편: ①같은 프로세스 타 창 탭바(상단 88px) 히트=직접 이동 ②구버전 프로세스 창=기존 IPC ③히트 없음=같은 프로세스 새 창 tear-off.
W3 즐겨찾기 좌측 세로형
- View 메뉴 "즐겨찾기 좌측 세로 보기"(⌘⇧B, 체크 토글, NSUserDefaults
crowny.ai.bookmarkSidebar영속, 전 창 공통). - ON: 상단 가로 북마크바 접힘(크롬 120→88) + 좌측 220px 세로 사이드바(골드 점+라벨, 클릭=이동, 우클릭=새 탭/삭제 — B1② 동등). 스크린샷 육안 PASS.
W4 파인더 열기 = 새 창
application:openURLs:file:// = 새 창(복수 파일=한 창의 탭들), http(s)/crowny = 활성 창 탭(기존), 부팅 전=큐.
검증
make ai에러 0 → 스모크(pid 31072): 부트/창 생성 로그 PASS → AppleScript 메뉴 구동: 새 창=같은 프로세스 창 2개(캐스케이드 28px) → 병합=2→1창 → 세로 즐겨찾기 스크린샷 PASS.install-ai-app.sh설치+ad-hoc 재서명 → 실행 번들 심볼 확증(mergeToPID/bookmarkSidebar ASCII + 한글 메뉴 UTF-16LE 검색 각 1건 — 한글 NSString은 strings(ASCII)에 안 잡힘, UTF-16 검색 필수).- 실행 중인 구버전 9개 프로세스는 무접촉 — 앱 재시작 시 신버전 반영.
한선씨 동반
src/창관리.한선(탭드롭라우팅 4상/외부열기라우팅/병합반입판정/즐겨찾기표시면/크롬높이/탭바밴드히트/캐스케이드오프셋) 자체시험 22/22 티. 학습 intent=브라우저_멀티윈도우_창관리_4상라우팅.- VM 함정 재확인: 나눗셈 자연반올림(3/5=1)로
n-(n/5)*5모듈로 붕괴 → 뺄셈 루프로 우회.
관련 파일
- /Users/ef/CrownyBrowser/native/crowny-ai-main.m (백업 .bak-멀티윈도우-)
- /Users/ef/CrownyBrowser/src/창관리.한선
- 설치본 /Users/ef/CrownyBrowser/CrownyAI.app
잔여
- 구버전 9개 프로세스 재시작(사용자 타이밍) 후 실사용 확인. 세션 복원(창별 탭 복원)은 범위 외.
추가 작업 (2026-07-24 — W5 메뉴 단축키 + 탭바 + 버튼 여백)
- ⋮ 메뉴 단축키 라벨 완비: 즐겨찾기 추가/삭제 ⌘D · 방문 기록 ⌘Y · 설정 ⌘, (overlays.m). ⋮ 메뉴에 "모든 창을 이 창으로 병합 ⇧⌘M"·"즐겨찾기 좌측 세로/가로 보기 ⇧⌘B"(현재 모드 반영 동적 제목) 항목 추가(main.m chromeShowMenu 삽입).
- 메뉴바 실단축키 배선: 앱 메뉴 "설정… ⌘," / File "즐겨찾기 추가(⌘D, validateMenuItem 동적 추가↔삭제)"·"방문 기록(⌘Y — CAHistoryMiniPanel 소비측 재선언 관용구로 메뉴바에서 직접 오픈)".
- 탭바 + 버튼 우측 여백: 구 예약(trailPad2=16)이 탭끝→+ 갭 23px 미계상 → 만석 시 + 버튼이 창 끝 초과(+7px 산술 확인). 수정=avail이 갭 23+우측여백 24 정확 예약 + 최후 클램프 plusX≤barW−plusW−14 (chrome.m layoutTabBarContent).
- 검증: make ai 에러0 → 스모크: File 메뉴 신항목 2종 AX 확인·⌘Y 방문기록 패널 오픈 무크래시·탭 12개 생성. 스모크 중 사용자 실조작 감지(구버전 창→스모크 창 탭 드래그 adoptTab 수신 — 신기능 실전 첫 작동 확인)되어 GUI 자동화 즉시 중단, 잔여 검증은 결정형(산술+UTF-16 심볼)으로 대체. 설치+재서명 완료(메뉴 문자열 5종 UTF-16LE 확증). 앱 재시작 시 반영.
- 한선씨 동반 갱신: 창관리.한선 +탭가용폭/플러스X클램프 26/26 티, 재학습.
정정 반영 (2026-07-24 — W6 세로 탭 + 그룹핑 + 접이식 사이드바)
사용자 정정: "즐겨찾기가 아니라 열어놓은 탭들을 좌측 세로 정렬 + 탭 그룹핑. 즐겨찾기 세로도 유지, 사이드바 펼침/접힘."
- 사이드바를 세로 탭(상단 섹션) + 즐겨찾기(하단 섹션) 통합 패널로 확장(CABookmarkSidebarView 재작성, CASidebarHost 프로토콜로 행→컨트롤러 역호출).
- 세로 탭: 열린 탭 실시간 반영(onTabsChanged), 활성 탭 강조(액센트 배경+굵은 글씨), 클릭=활성화, 우클릭 메뉴={새 그룹으로 묶기…(NSAlert 이름 입력)/그룹 'X'에 추가/그룹에서 제거/탭 닫기}.
- 탭 그룹: 창 단위 인메모리(NSMapTable 약참조 — 탭 소멸 시 자동 정리, 세션복원 부재와 동급 수명). 그룹 헤더=색점(6색 순환)+이름+(개수), 클릭=그룹 접기/펼치기(▸/▾, 헤더만/헤더와탭). 그룹 탭은 색 인디케이터+들여쓰기로 군집 표시(실탭 순서 불변).
- 접이식: 헤더 «/» 버튼 — 펼침 220px ↔ 레일 36px(탭 점만: 활성 12px 액센트/비활성 8px, 클릭 전환, 툴팁=제목).
crowny.ai.sidebarCollapsed영속. - 메뉴 명칭 정정: "좌측 사이드바 (세로 탭·즐겨찾기)" ⇧⌘B (메뉴바+⋮ 동적 제목).
- 검증: make ai 에러0 + 설치+재서명 + 실행번들 UTF-16 심볼 6종 확증. 사용자 활동 감지(idle 0s)로 GUI 자동화 미실시 — 육안 검증은 앱 재시작 후 실사용 시점(잔여). 한선씨 창관리.한선 +사이드바폭/그룹행표시/그룹색인덱스/레일점지름 34/34 티, 재학습.