Textual 패널 구현·수정 시 사용. DataTable cross-highlight, reactive 바인딩, Modal 등록/해제, CSS 스코프, 키 바인딩 패턴. agentlens의 panels/, app.py, app.tcss를 작업하거나, Textual 위젯/UI 관련 변경을 할 때 반드시 이 스킬을 사용할 것.
agentlens TUI의 패널 구현에 사용하는 Textual 패턴 가이드.
src/agentlens/panels/ 하위, 파일 1개 = 위젯 1개src/agentlens/app.tcss 단일 파일. 인라인 DEFAULT_CSS = "" 비움 패턴 유지src/agentlens/app.py — compose, key bindings, 패널 조합cursor_type = "row" + zebra_stripes = True가 agentlens 기본_sanitize_cell()을 거쳐 ANSI escape/비인쇄 문자 제거MAX_PENDING 캡으로 pending 큐 크기 제한references/datatable.md 참조post_message)references/datatable.md의 cross-highlight 섹션 참조Screen 기반 모달: app.push_screen() / app.pop_screen()panels/ 하위 개별 파일 (예: detail_modal.py, session_path_input.py)references/modal.md 참조reactive() 디스크립터로 상태 바인딩watch_* 메서드로 변경 시 UI 갱신references/reactive.md 참조TimelinePanel > DataTable { ... } 형태.add_class() / .remove_class() (인라인 style 금지)references/css.md 참조app.py의 BINDINGS 리스트에 등록m(mode), o(orientation), p(panes)d(detail), s(session switch), S(path input)assert self._table is not None 또는 if self._table is None: return_updating 플래그: 재진입 방지