# ai_read.md

## 역할
AIWK 공통 core 라이브러리 폴더입니다. chrome.* 직접 의존은 피하고 bridge/adapter를 통해 환경별로 분리합니다.

## 로딩/상속 규칙
현재 host 기준 부모 후보만 본다. 존재하는 폴더만 상위 → 하위 순서로 로드한다. 형제 도메인은 보지 않는다.

## 주요 파일
- domain.json: 선택 설정 파일
- index.json: 선택 안내/진입 파일
- modules.json: 설치 가능한 모듈 목록
- *.rule.json: 실행 조건
- *.js / *.css / *.html / i18n/*.json: 기능/스타일/문구

## 자동 실행 여부
로더는 modules.json과 사용자의 설치/사용 설정을 확인한 뒤 enabled 상태만 실행 후보로 본다. ai_read.md는 실행하지 않는다.

## 주의사항
JSON/i18n은 하위가 상위를 덮어쓴다. JS/CSS는 상위부터 하위 순서로 로드한다.

## v059 notes
- ZIP 패치 루트는 `/mnt/d/_St` 기준으로 `aiwk/...`, `NR/userdir_A1/...`, `AIWK_PC/...`, `y/...` 폴더를 그대로 유지한다.
- 모든 접속창에는 기본 채팅창을 둔다. `to:`는 `aiwk://room_id@group.project.client#endpoint` 형식을 기본으로 한다.
- NR 글자는 Node-RED 편집기 링크이고, NR 접속 버튼은 링크가 아니라 N1로 `aiwk_ping`을 보낸다.
- Node-RED route는 `group.project.client#endpoint`이며 room_id는 register 필드/인증용으로만 사용한다.

## v060
- WSS/NR 상태는 전송 성공만으로 연결 완료로 보지 않는다. result 수신 시 `last_roundtrip_at`, `verified_ok`를 기록한다.
- Node-RED 자동유지는 ping 전송 후 응답 수신 전까지 `확인중`으로 표시한다.


## v061
- popup → active tab 메시지 bridge 복구.
- content.js에 AIWK_EXT4_COMM_CONTROL / AIWK_BUILD_DIAGNOSTIC_REPORT listener 복구.
- toast를 중앙 고정형으로 변경하고, 통신 상태 안내를 inline notice로 추가.
- 저장 프로필 표시/정리를 권장 client_id 기준으로 강화.
- 송수신 성공 표시는 pong/chat_ack/route_result 수신 기준으로 유지.


## v102-stage4.9-ext4-store-resize-noise-fix
- Chrome 탭 title 표준을 `상태이모지 client_id R:0000 T:0000 - 원타이틀` 형식으로 고정한다.
- 예: `🟢 A1 R:0000 T:0000 - CMD`, `🔴 A2 R:0000 T:0000 - ChatGPT - zip도구`.
- 원래 title 앞에 붙은 기존 AIWK prefix는 제거하고 원타이틀만 뒤에 유지한다.
- 상태 이모지는 온라인/오프라인/재접속/교체 상태를 탭 목록에서 바로 구분하기 위한 관제 표시다.

## v092 tab-scoped title/launcher 표시 원칙

- `AIWK.comm.updateWindowTitle()`은 `tabProfileActive=true`일 때만 browser title에 상태/client/counter prefix를 붙인다.
- `tabProfileActive=false`이면 기존 AIWK prefix를 제거하고 원래 title을 유지한다.
- WSS/BUS 자동 유지 루프도 현재 탭이 활성 profile을 가진 경우에만 자동 시작한다.
- 이 기준은 새 탭에 전역 clientId가 잘못 붙는 문제를 막기 위한 안전장치다.

## v094 AIWK.comm 자동 유지 규칙
- setTabClientActive(true)는 단순 title 표시뿐 아니라 자동 유지 타이머의 재기동 지점이다.
- WSS: 접속유지 ON이면 연결이 없을 때 재접속 예약을 건다.
- BUS: 접속유지 ON이면 주기적으로 tabbus register를 반복해 service_worker registry 손실에 대응한다.
- NR: 접속유지 ON이면 주기적으로 N1에 ping을 보내고, WSS가 끊겨 있으면 먼저 WSS 재접속을 시도한다.


## v102-stage4.9-ext4-store-resize-noise-fix
- WSS 인증등록 버튼은 현재 탭 저장 후 같은 통신 제어 경로(`wss_connect`)로 WSS socket open → token register를 수행한다.
- AIWK.root.get 기본 fallback을 core/win 양쪽에 보장하여 최초 접속 창 생성 오류를 막는다.
- aiwk_ext4에는 큰 token/profile/log 값을 중복 저장하지 않고 quota 초과 시 compact한다.
- token 표시를 `🔐/🔓`로 정리한다.
