최근 수정사항
pytmux 는 활발히 개선되고 있습니다. 이 페이지는 날짜별 변경 내역으로, 2026년 6월 2일 첫 커밋부터 지금까지 더해지거나 바뀐 내용을 모아 둔 곳입니다 (6월 30일 소개 사이트 공개가 그 중간 이정표입니다). 대부분은 그날 바로 반영됩니다.
읽는 법. 지금은 변화가 잦아 하루 단위로 묶어
최신 날짜가 맨 위에 오도록 정리합니다. 여기 적힌 것은 실제로 화면에서
보이고 체감되는 변화 위주이며, 내부 성능·안정화 작업은 요약만 적었습니다.
전체 변경 이력은 GitHub 커밋 로그에 있습니다.
날짜 제목 옆 zip 링크는 그날 마지막 커밋 시점의 소스를 내려받는 링크입니다 —
공개 미러가 시작된 2026-06-17 이후 날짜에만 붙고, 무엇이 담기는지는 아래에 적었습니다.
zip 이 두 벌입니다. 2026-08-01 부터 저장소에 Rust GUI 클라이언트가
함께 들어와, 날짜별 스냅샷을 두 가지로 나눠 걸었습니다.
2026-07-31 이전 날짜에는 GUI 가 저장소에 없었으므로 pytmux zip ⬇ 한 벌만 붙습니다.
- pytmux zip ⬇ — 파이썬 TUI 한 벌(서버 + 터미널 클라이언트). client/ 를 뺀 트리라 약 3.5MB 입니다. 쓰는 데 필요한 것은 이쪽이 전부입니다.
- pytmux-gui.zip ⬇ — 위에 GUI 클라이언트 소스와 선빌드 바이너리(macOS·리눅스·윈도우)까지 담은 전체 트리. 바이너리가 함께 들어 있어 약 25MB 입니다.
2026-07-31 이전 날짜에는 GUI 가 저장소에 없었으므로 pytmux zip ⬇ 한 벌만 붙습니다.
GUI 클라이언트는 아직 알파입니다 — 쓰실 때는 파이썬 TUI 클라이언트를 권합니다.
pytmux 는 같은 서버에 붙는 클라이언트를 두 벌 갖고 있습니다. 그중 파이썬 TUI(터미널에서 도는
python3 pytmux.py)가 정본이고, 기능·번역·안정성이 모두 이쪽 기준입니다.
Rust GUI(pytmux-gui)는 개발 중이라
정본만큼 다듬어지지 않았고, 빠진 조작과 거친 자리가 남아 있습니다.
구경하거나 시험해 보시는 것은 환영이지만, 실제 작업은 TUI 로 하시는 편이 안전합니다.
GUI 가 무엇을 목표로 하는지·지금 어디까지 왔는지는 GUI 클라이언트 소개에 정리해 두었습니다.
GUI 가 무엇을 목표로 하는지·지금 어디까지 왔는지는 GUI 클라이언트 소개에 정리해 두었습니다.
2026-08-02 일요일 pytmux zip ⬇ pytmux-gui.zip ⬇
- 플러그인 시계·달력 같은 패널을 덮는 화면을 이제 서버가 그립니다 — 두 클라이언트에 같은 그림이 뜹니다.
플러그인이 그리는 화면(큰 시계, 이번 달 달력, 파일 관리자 mdir)은 지금까지 파이썬 클라이언트 안에서 그려졌습니다 —
그리는 코드가 파이썬·Textual 모양이라 소켓을 건너가지 못했고, 그래서 GUI 클라이언트에는 손으로 옮긴 것만 있었습니다(옮기지 않은 것은 아예 안 보였습니다).
이제 서버가 "이 화면은 이렇게 생겼다"를 그림이 아니라 설명으로 내려보내고, 클라이언트가 자기 방식대로 그립니다. 플러그인 한 벌을 만들면 두 클라이언트 모두에 뜹니다 — 이 페이지의 GUI 소개에 실은 달력 컷이 그렇게 뜬 화면입니다. - 화면 아래쪽 Claude 요약 구역이 기본으로 접힙니다 — 패널이 여섯 줄 넓어졌습니다.
이 구역은 늘 펼쳐져 있었고, 그만큼 터미널 화면이 상시로 여섯 줄 좁았습니다. 훑어보는 용도의 요약이 화면의 주인공(패널)을 밀어내고 있던 셈입니다.
이제 머리줄만 남고 접힙니다. 머리줄에는 개수(Claude 3개)가 함께 적혀 있어 "없다"로 읽히지 않고, 그 자리를 눌러 다시 펼 수 있습니다. - 언어 GUI 클라이언트도 한국어·영어를 따라옵니다 — 두 클라이언트가 같은 파일을 봅니다.
서버가 만들어 보내는 문구(알림·확인 물음 등)는 클라이언트가 번역해 보여 주는데, GUI 쪽에 아직 빠진 문구가 남아 있었습니다. 이번에 그 목록을 서버 정본에서 기계로 뽑아 맞췄습니다.
언어 선택은 파이썬 클라이언트와 같은 파일에 저장됩니다 — 한쪽에서 lang en 하면 다른 쪽도 다음 기동부터 그 언어로 뜹니다. - 문서 소개 사이트에 GUI 클라이언트 소개 페이지를 새로 만들고, 날짜별 소스 zip 을 두 벌로 나눴습니다.
GUI 가 무엇을 목표로 하는지·지금 어디까지 왔는지·어떤 코드 위에 서 있는지(warp 터미널의 MIT 부분)를 실제 화면과 함께 정리했습니다.
이 페이지 맨 위에도 GUI 는 아직 알파이니 파이썬 TUI 를 쓰시라는 안내를 붙였습니다.
날짜 옆 zip 링크는 이제 pytmux zip ⬇(파이썬 TUI 만 · 약 3.5MB)와 pytmux-gui.zip ⬇(GUI 소스·바이너리 포함 · 약 25MB) 두 벌입니다 — 쓰는 데 필요한 것은 앞의 것이 전부입니다. 같은 날 사이트 배경을 한 단 밝게 조정했습니다(어두운 층 사다리를 통째로 한 칸 올렸습니다).
2026-08-01 토요일 pytmux zip ⬇ pytmux-gui.zip ⬇
- 저장소 개발 중인 GUI 클라이언트가 공개 저장소에 함께 들어왔습니다.
pytmux 는 하나의 서버에 여러 클라이언트가 붙는 구조입니다. 지금까지 공개된 것은 터미널에서 도는 파이썬 클라이언트 한 벌이었고,
별도로 만들던 Rust GUI 클라이언트는 다른 곳에 있었습니다. 이제 한 저장소에 들어와,
서버와 클라이언트가 같은 커밋으로 함께 움직입니다 — 프로토콜이 바뀌면 서버와 두 클라이언트가 한 번에 같이 바뀝니다.
소스와 함께 미리 빌드한 실행 파일 3종(macOS·리눅스·윈도우)이 client/build/ 에 들어 있어, Rust 를 깔지 않아도 받아서 바로 띄워 볼 수 있습니다. 다만 아직 알파입니다 — 자세한 것은 GUI 클라이언트 소개를 봐 주세요.
이 바이너리들 때문에 저장소 zip 이 3.5MB 에서 25MB 로 커졌습니다. 그래서 이 페이지의 날짜별 zip 을 두 벌로 나눴습니다(위 안내 참고). - 배포 실행 파일은 이제 GitHub 액션이 굽습니다 — 굽는 사람의 흔적이 남지 않도록.
손으로 빌드한 실행 파일에는 빌드한 사람 컴퓨터의 소스 경로가 그대로 박힙니다(오류 위치 표시용으로 컴파일러가 넣습니다).
실측으로 macOS 판에 345건, 윈도우 판에 1,034건이 들어 있었고, 실행 파일은 한 번 올리면 되돌리기가 어렵습니다.
이제 깨끗한 러너에서 굽습니다 — 개인 컴퓨터 경로가 애초에 끼어들지 않고, 윈도우·리눅스 판을 위해 그 OS 컴퓨터를 따로 갖고 있을 필요도 없습니다(GUI 는 크로스 빌드가 안 됩니다). - 정리 클라이언트는 둘입니다 — 터미널용 파이썬 TUI, 그리고 창으로 뜨는 GUI. 한동안 Rust 로 만든 터미널 클라이언트도 함께 있었지만, 같은 자리에 제품이 두 벌일 이유가 없어 지웠습니다(터미널은 파이썬 정본 한 벌). pytmux --native 플래그도 함께 사라졌습니다 — GUI 는 pytmux-gui 를 직접 실행합니다.
2026-07-31 금요일 pytmux zip ⬇
- 탭 Esc 뒤 숫자로 탭을 전환할 때, 아주 드물게 누른 번호의 다음 탭이 열리던 것을 고쳤습니다.
번호를 누르는 그 짧은 순간 다른 창(또는 자동화)이 탭을 열거나 닫아 탭 순서가 밀리면, 화면에 보이던 번호를 그대로 서버로 보내는 방식이라 사람이 고른 탭과 다른 탭이 열릴 수 있었습니다.
이제 번호와 함께 그 탭의 고유 식별자를 함께 보내, 전송 도중 순서가 밀렸어도 서버가 같은 탭을 다시 찾아 엽니다.
2026-07-30 목요일 pytmux zip ⬇
- 안정 넓은 텍스트를 붙여넣으면 pytmux 가 몇십 초 동안 멈추던 것을 고쳤습니다.
붙여넣기(Ctrl+V)는 들어온 텍스트에서 패널 테두리 문자를 걷어내는데(설정 strip-box-drawing),
그 검사가 한 줄의 길이가 두 배가 되면 네 배로 느려지는 모양이었습니다 — 오른쪽을 공백으로 채운 넓은 텍스트
(스프레드시트·표·넓은 창에서 복사한 것)를 붙여넣으면 화면·키 입력이 통째로 멎었습니다.
실측으로 공백 10만 자 한 줄 = 32초였고, 더 긴 줄에서는 사실상 돌아오지 않았습니다.
이제 같은 검사를 줄 길이에 비례하게 합니다 — 같은 10만 자가 0.0035초(약 9,000배), 100만 자 한 줄도 0.035초입니다. 같은 검사를 쓰는 마우스 복사도 함께 빨라졌습니다(2000줄 선택 6.5초 → 0.12초). 걷어내는 결과는 한 글자도 달라지지 않습니다 — 옛 검사와 새 검사를 4천 가지 무작위 입력에서 맞대어 같음을 시험으로 고정했습니다. - 복사 Claude Code 의 ! … 명령을 긁어 복사하면 줄바꿈·들여쓰기가 섞여 그대로 붙여넣을 수 없던 것을 고쳤습니다.
화면 폭 때문에 접힌 줄은 이미 한 줄로 복사되고 있었는데, 그건 터미널이 접은 경우입니다 —
Claude Code 는 자기 화면 안에서 스스로 긴 줄을 접어 그리고, 그 자리는 화면에 진짜 줄바꿈으로 남습니다.
그래서 여러 줄에 걸쳐 보이는 명령을 긁으면 줄바꿈과 이어지는 줄의 들여쓰기가 함께 딸려와,
별도 에디터에서 손으로 지운 뒤에야 붙여넣을 수 있었습니다.
이제 pytmux 가 그런 자리를 알아보고 펴서 클립보드에 넣습니다 — 긁어서 그대로 붙여넣으면 실행됩니다. 앱은 "여기서 접었다" 는 신호를 남기지 않으니 모양으로 판단합니다: 이어지는 줄에 들여쓰기가 있고, 그 줄의 첫 낱말이 앞 줄 끝에 들어갈 자리가 없었을 때만 잇습니다. 그래서 로그처럼 왼쪽 끝에서 시작하는 줄들, :·;·\ 로 끝난 코드 줄, 짧은 목록은 건드리지 않습니다. 입력 상자 위아래의 가로 구분선이 함께 긁혀도 그 줄만 빠집니다.
한 줄만 긁은 복사는 고른 그대로(공백까지) 갑니다. 원래대로 두려면 설정에서 set copy-unwrap off. - 마우스 안에서 돌던 앱이 갑자기 죽은 패널에서 마우스를 움직이면 프롬프트에 35;61;31M… 같은 글자가 박히던 것을 고쳤습니다.
마우스를 쓰는 앱(Claude Code·vim 등)은 시작할 때 터미널에 "마우스 좌표를 보내 달라" 고 요청하고 끝날 때 그 요청을 되돌립니다.
그런데 ssh 연결이 끊기거나 강제 종료돼 되돌릴 틈 없이 죽으면 요청이 켜진 채 남습니다 —
셸 프롬프트로 돌아온 뒤에도 마우스를 움직일 때마다 좌표가 글자로 쏟아지고(zsh: command not found: 31M35),
그 패널만 휠 스크롤백도 안 돌아왔습니다. 탭을 닫기 전까지 계속 재발했습니다.
이제 pytmux 가 그 요청을 켠 앱이 누구였는지 기억해 두고, 셸 프롬프트로 돌아왔거나 그 앱이 사라졌으면 남은 요청을 스스로 걷어냅니다 — 마우스를 움직이지 않아도 몇 초 안에 정리되고 휠 스크롤백도 함께 돌아옵니다. 누가 켰는지 확실하지 않으면 걷어내지 않습니다(살아 있는 앱의 마우스를 뺏지 않는 쪽으로 틉니다). 되돌리는 신호가 두 조각으로 나뉘어 도착하면 통째로 놓치던 문제도 함께 고쳤습니다.
이 자동 회수는 macOS·리눅스에서 동작합니다 — 윈도우는 "지금 터미널을 쓰는 프로그램" 을 같은 방식으로 물어볼 수 없어 아직 해당하지 않습니다. - 설정 설정 화면의 exit-empty 줄이 켜짐/꺼짐 대신 미상 으로만 보이던 것을 고쳤습니다. 설정 화면이 서버에서 받아 오는 현재값 묶음에 이 항목만 빠져 있어서, 마지막 탭을 닫으면 서버가 내려가는지(원격 서버 상주에 쓰는 설정입니다)를 화면에서 확인할 방법이 없었습니다 — 서버 전체에 걸린 값이라 클라이언트가 짐작할 수 있는 값이 아닙니다. 이제 실제 값이 그대로 보입니다.
- Claude /model 로 모델을 바꿔도 상태줄 모델 배지가 한동안 옛 모델을 보이던 것을 고쳤습니다. /model opus 라고 바꿨는데 왼쪽 아래는 바꾸기 전 모델을 그대로 보이고, 무언가를 입력해 화면이 다시 흐를 때까지 안 고쳐졌습니다. 배지는 화면에서 읽은 모델 이름을 세 프레임 연속 같게 본 뒤에야 바꿉니다(Claude 가 곁딸린 작업을 다른 모델로 잠깐 돌릴 때의 깜빡임을 흡수하려는 장치입니다). 그런데 화면이 멈춰 있는 동안 다시 읽지 않는 절전 규칙에 이 "연속 세기" 가 빠져 있어서, 모델을 바꾼 그 프레임에 한 번 세고 멈춰 버렸습니다 — 바꾼 직후는 대화 시작 전이라 화면이 조용한 것이 보통이니 매번 걸렸습니다. 이제 세는 중에는 계속 읽어 바꾼 직후 곧바로 배지가 따라옵니다.
- 문서 소개 사이트를 최신 배포본에 맞춰 최신화했습니다.
상세 가이드 11장(원격 페더레이션) 에 중간 상자를 거쳐 붙는 다중홉(remote-attach C via B)을 새로 넣고,
3단으로 이어진 원격 탭 이름 표기(⇄B:C:이름)도 함께 적었습니다.
이 페이지에는 7월 29일 늦게 들어간 두 건(다중홉 릴레이, 그리고 캐스케이드 탭 이름·핀 수정)을 그날 항목으로 덧붙였고, 그날 zip ⬇ 링크도 그날 마지막 소스 커밋으로 옮겼습니다. 이번 항목들은 이 머신(macOS)에서 헤드리스로 검증한 것만 실었습니다 — 다중홉은 ssh 대역을 깔아 서버 A → 중계 → 서버 C 를 실제로 태우는 종단 시험까지 돌렸습니다.
같은 날 늦게 상세 가이드 6장(마우스로 제어) 에 앱이 갑자기 죽은 뒤 남은 마우스 요청은 스스로 걷힌다는 설명도 덧붙였습니다.
2026-07-29 수요일 pytmux zip ⬇
- 원격 직접 ssh 가 안 되는 머신에도 중간 상자를 거쳐 붙을 수 있습니다 — remote-attach <C> via <B>.
원격 attach 는 지금까지 내 컴퓨터에서 그 머신으로 ssh 가 곧바로 되는 경우만 가능했습니다 —
사내망 안쪽처럼 징검다리 서버를 거쳐야 닿는 자리는 방법이 없었습니다.
이제 remote-attach C via B 한 줄이면 B 를 거쳐 C 의 탭들이 붙습니다(탭 이름은 ⇄B>C:이름).
중계 상자 B 에는 pytmux 가 설치돼 있어야 하고, B 에서 C 로 가는 ssh 는 B 의 ssh 설정·키를 그대로 씁니다.
중계는 겹쳐 쓴 ssh 명령 문자열이 아니라 B 에서 도는 pytmux relay-proxy <C> 가 맡습니다 — 그래서 B 의 셸이 해석할 문자열이 없고, B 가 자기 opts.json 의 remote_allowed_hosts 로 어디까지 중계할지 스스로 정할 수 있습니다(허용 밖이면 B 가 거절). 홉은 한 단까지입니다(B 를 또 다른 중계로 쓰지는 않습니다). 실패하면 어느 홉에서 막혔는지가 문구로 갈립니다 — "중계 상자 B 가 C 로의 중계를 거부", "B 에서 pytmux 를 찾지 못함", "B→C 홉 실패". remote-detach B>C 로 떼어내고, 끊겼을 때의 자동 재연결·재시작 복원도 거쳐 가는 경로를 잊지 않습니다. - 원격 3단으로 이어진 원격 탭(A→B, 그 B 가 다시 C 를 보고 있는 경우)의 이름이 안 보이고 고정(핀)이 엉뚱한 탭에 붙던 것을 고쳤습니다.
이름은 ⇄B:⇄C:이름 처럼 ⇄ 가 두 번 찍혀, 좁은 탭바에서 정작 탭 이름이 밀려났습니다 —
이제 ⇄ 는 "여기부터 원격" 표식으로 한 번만 찍고 거쳐 온 머신은 : 로 잇습니다(⇄B:C:이름).
그리고 고정(핀)·탭 하나만 분리가 다른 탭에 붙는 일이 있었습니다 — B 가 보내 주는 탭 목록에는 B 자신의 탭과 B 가 보고 있는 C 의 탭이 함께 실리는데, C 쪽 탭에는 구분표가 없어 몇 번째인가로 대신 세었고 그 값이 B 자신의 탭 번호와 겹칠 수 있었습니다. 이제 거쳐 온 탭에는 겹칠 수 없는 별도의 표가 붙어, 핀이 내가 고정한 그 탭에 그대로 남습니다(B 를 다시 켜면 옛 표는 버립니다). - 복사 마우스로 긁어 복사하면 한글·한자 한 글자마다 공백이 하나씩 끼던 것을 고쳤습니다.
뜨면 알려 주세요 를 긁어 붙여넣으면 뜨 면 알 려 주 세 요 가 됐습니다 —
두 칸을 차지하는 글자(한글·한자·이모지)마다 뒤에 공백이 하나씩 붙고, 원래 띄어쓰기 자리는 두 칸이 됐습니다.
넓은 글자는 화면에서 두 칸을 쓰고 뒷칸은 비워 두는데, 복사할 때 그 빈 칸을 공백 한 개로 세어 넣은 것이 원인입니다.
같은 원인으로 한글 검색(/)도 화면에 뻔히 보이는 낱말이 안 잡혔습니다 — 찾는 쪽 글자열이 뜨 면 이었기 때문입니다. 이제 복사·검색·capture-pane 이 모두 화면에 보이는 그대로입니다. - Claude Claude Code 안에서 ! 로 셸 명령을 실행하면 세션 종료 요약(토큰 사용량 그래프)이 살아 있는 화면 한가운데 끼어들던 것을 고쳤습니다. pytmux 는 Claude 세션이 끝나면 그 패널에 토큰 요약을 흘려보냅니다. '끝났다' 판정은 화면에서 Claude 표시가 사라졌는지에 더해 지금 앞에서 도는 프로그램이 셸인지를 함께 봅니다 — 살아 있는 화면에 그래프를 쏟지 않으려는 안전장치였습니다. 그런데 ! 는 Claude 가 자기 자식으로 셸을 띄우는 것이라, 명령이 도는 동안 화면에서 Claude 표시가 밀려나면 그 자식 셸을 보고 "셸로 돌아왔다"로 읽었습니다(포그라운드 개념이 없어 가장 깊은 자식을 보는 Windows 에서 특히 잘 걸립니다). 이제 그 패널의 프로세스 갈래에 Claude 가 아직 살아 있으면 종료로 보지 않습니다.
- 표시 알림 이력에서 키보드로 커서를 옮기면 지나온 줄이 색 띠로 남아 글자가 안 보이던 것을 고쳤습니다. 마우스를 그 줄에 올리면 그 줄만 멀쩡하게 돌아왔습니다. 커서 줄은 등급 색을 배경으로 칠하는데, 글자를 그리는 것은 줄 안쪽 요소이고 그쪽이 물려받은 배경색을 따로 기억합니다. 커서가 떠나면 글자색만 등급색으로 돌아오고 배경은 등급색인 채 남아 글자색과 배경색이 같아졌습니다 — 그래서 글자가 사라진 색 띠로 보였고, 띠 길이도 그 줄 글자 길이만큼이었습니다. 마우스를 올리면 스타일이 다시 계산돼 그 줄만 복구된 것도 같은 이유입니다. 이제 커서가 지나간 줄은 곧바로 원래 색으로 돌아옵니다.
- Claude 디렉토리별 이름 동기화가 이미 바꿔 둔 Claude 세션 이름을 규칙 키워드로 되돌리던 것을 고쳤습니다. 지정한 경로에서 Claude 를 띄우면 pytmux 가 탭·패널 이름과 Claude 세션 이름을 키워드로 통일합니다(:namesync). 그 통일은 패널당 한 번만 하도록 돼 있었는데, 셸을 새로 띄우거나 세션을 이어서 열면 그 기억이 풀리는 반면 세션 이름은 그대로 살아 돌아와, 그 사이 /rename 으로 정해 둔 이름이 다시 키워드로 덮였습니다. 이제 세션 이름이 아직 자동으로 지어진 이름일 때만 통일하고, 누가 정한 이름은 건드리지 않습니다(탭·패널 이름은 종전대로 맞춥니다).
2026-07-28 화요일 pytmux zip ⬇
- 안정성 다른 프로그램이 pytmux 서버를 강제로 죽였을 때 창이 아무 말 없이 사라지던 것을 고쳤습니다 — 이제 이유가 화면에 남습니다.
서버가 정상 절차로 내려가면(kill-server 등) 클라이언트는 "서버가 종료되었습니다"라고 알리고 끝납니다.
그런데 서버 프로세스가 밖에서 강제 종료되면(작업 관리자에서 종료·프로세스 이름으로 일괄 kill·크래시) 그 인사말 자체가 없어서,
클라이언트는 재접속을 시도하다 실패한 뒤 단서를 하나도 남기지 않고 사라졌습니다 — 화면만 봐서는 pytmux 가 왜 꺼졌는지 알 길이 없었습니다.
이제 이 경우에는 "서버 연결이 끊겼고 재접속에 실패했습니다 — 서버 프로세스가 외부에서 강제 종료됐는지 확인하세요" 가 남아,
의도된 종료와 사고를 문구만으로 가릴 수 있습니다.
덧붙여 그렇게 끊긴 뒤 재접속 시도가 오래 매달리던 것도 막았습니다 — 이미 죽은 내 컴퓨터 안의 서버 포트로 연결을 시도할 때 0.5초 상한을 겁니다(원격 서버로 가는 연결은 링크가 느린 것이 정상이라 종전대로 제한하지 않습니다). 응답 없는 포트가 곧바로 거절되지 않는 환경(윈도우)에서는 재시도 스물다섯 번이 통째로 늘어져 한참 멈춰 있다가 종료됐습니다. - 표시 줄 끝 글자에 붙는 악센트가 화면에 반영되지 않던 것을 고쳤습니다. 글자와 악센트를 따로 보내는 프로그램이 있습니다(e 다음에 악센트 → é). 그 악센트가 하필 줄이 막 바뀐 직후에 도착하면 pytmux 는 앞 줄 마지막 칸의 글자에 합쳐 넣는데, 고친 줄을 다시 그릴 목록에 넣지 않아 화면에는 합쳐지기 전 글자가 그대로 남았습니다 — 전체 다시 그리기(prefix r) 전까지 계속이었습니다. 이제 그 줄도 갱신 대상으로 표시해 곧바로 반영됩니다.
- 마우스 창을 앞으로 가져오려고 짧게 클릭했을 뿐인데 클립보드가 바뀌던 것을 고쳤습니다. 왼쪽 드래그로 선택→복사가 지금까지는 한 칸만 움직여도 드래그로 인정됐습니다 — 다른 창에 있다가 pytmux 창을 클릭하는 순간 손이 살짝 밀리기만 해도 그 자리 글자가 선택돼 OS 클립보드가 통째로 덮어써졌습니다(복사해 둔 것이 사라집니다). 이제 드래그로 인정하려면 3칸 이상 움직여야 하고, 그보다 작은 흔들림은 종전대로 클릭으로 처리됩니다 (마우스를 쓰는 앱이면 그 앱에 클릭이 그대로 전달되고, 아니면 그 패널로 포커스만 옮깁니다). 선택 시작점은 누른 자리 그대로라 첫 글자가 잘리지 않습니다. 감도는 set mouse-drag-threshold <1~20> 으로 바꿉니다 — 1 이면 예전처럼 한 칸만 움직여도 드래그입니다. 설정 팝업의 입력 탭에서도 조절할 수 있습니다.
- 마우스 앱 안의 키 · 마우스 도움말이 Shift+드래그 를 거꾸로 안내하던 것을 고쳤습니다. list-keys(별칭 mouse-help) 팝업은 "Shift+드래그 — 텍스트 선택(클립보드 복사)" 라고 적고 있었는데, 지금 동작은 그 반대입니다 — 그냥 드래그가 선택→복사이고, Shift+드래그는 마우스를 쓰는 앱에 드래그를 넘기는(에디터 패널 스플리터 등) 제스처입니다. 그대로 따라 하면 복사한 줄 알았는데 앱에 드래그가 전달되는 일이 생겼습니다. 이제 두 줄로 나눠 각각 제대로 적고, 왼쪽 드래그 = 선택→복사 안내도 목록에 새로 넣었습니다(최소 이동 칸수 옵션 이름까지). 상세 가이드 6장은 처음부터 맞게 적혀 있었고, 앱 안 문구만 옛 동작으로 남아 있던 경우입니다.
- 키 맥에서 ⌥+숫자가 ¡™£¢∞§¶•ªº–≠ 글자로 새어 들어가던 것을 막고, 그대로 탭 전환이 되게 했습니다. 번호로 탭 전환은 Esc 다음 숫자인데, 둘을 아주 빨리 누르면 터미널이 한 덩어리로 합쳐 보냅니다. Option 키를 메타로 쓰는 터미널에서는 그것이 Alt+숫자 로 도착해 진작부터 탭 전환이 됐지만, 맥 기본 설정(Option = 보통 키)에서는 ⌥1=¡, ⌥2=™ … 처럼 글자로 도착해 탭은 그대로인 채 패널에 엉뚱한 문자가 찍혔습니다. 이제 그 열두 글자(1~0·-·= 자리)를 원래 키로 되돌려 보이는 번호의 탭으로 전환하고, 탭 번호가 없는 자리는 패널로 흘리지 않고 삼킵니다 — 어느 쪽이든 그 글자가 입력되는 일은 없습니다. 그 문자를 정말 써야 하면 : 명령 프롬프트나 작성창에서 그대로 입력됩니다.
- 원격 원격 탭이 서버 자동 기동 실패 라고만 하고 왜 인지는 어디에도 없던 것을 고쳤습니다 — 이제 진짜 사유가 나옵니다.
원격 호스트에 붙을 때 pytmux 는 그쪽 서버를 알아서 띄웁니다. 그런데 그 서버는 백그라운드 데몬이라
죽으면서 남긴 말이 통째로 버려졌고(stderr → /dev/null),
손에 남는 것은 "인증 대기 시한 초과" 한 줄뿐이었습니다.
실제로 있었던 원인은 이렇습니다 — 그 호스트의 python3 가 패키지 관리자 업그레이드로 다른 버전을 가리키게 돼,
pytmux 가 필요로 하는 라이브러리가 없는 인터프리터로 데몬이 떠서 즉사했습니다.
이제 기동 중 남긴 말을 따로 받아 두었다가, 실패하면 어느 인터프리터에 무엇이 없는지와 고치는 명령까지 그대로 보여 줍니다.
덧붙여 pytmux start-server 명령이 생겼습니다 — ssh <호스트> pytmux start-server 로 원격 서버를 미리 올려 두고 그 자리에서 실패를 확인할 수 있습니다(이미 떠 있으면 아무것도 하지 않습니다). - 표시 지나간 알림 이력에서 커서를 올리면 등급 색이 사라지고 파란 띠가 되던 것을 고쳤습니다. 목록의 각 줄은 등급대로 색이 다른데(오류는 빨강, 주의는 주황, 안내는 파랑), 커서를 그 줄에 올리는 순간 하이라이트가 테마 고정색으로 덮어써져 빨간 오류 줄도 파란 띠가 됐습니다. 이제 커서 줄은 그 등급의 색이 배경이 되고 글자는 배경과 대비되는 흑/백으로 바뀝니다 — 등급색이 하이라이트와 같아 글자가 묻히던 문제도 함께 사라집니다. 커서가 떠난 줄은 원래대로 돌아옵니다.
- 문서 상세 가이드를 지금 배포 중인 빌드와 기계 대조해 설명이 빠져 있던 기능과 플러그인 페이지를 채우고, 스크린샷도 전량 다시 찍어 실제로 달라진 8장을 갈아 끼웠습니다.
앱이 실제로 가진 명령·옵션·설정 목록을 코드에서 뽑아 사이트 문장과 하나씩 맞춰 봤고,
한 번도 설명된 적 없던 13개 명령과 2개 옵션이 나왔습니다.
7장에 자동화 절이 생겼습니다 — 바깥 셸 명령을 부르고(run-shell) 그 결과로 갈라지며(if-shell), 정해진 순간에 자동 실행하는 훅(set-hook·show-hooks — 붙었을 때·새 탭·벨 세 가지)과 상태줄 알림(display-message), 패널에 ESC 한 번 보내기(send-escape)까지. 3장에는 레이아웃 순환(next-layout) · 배치를 새 탭으로(layout-load-new) · 패널 제목(rename-pane) · 셸만 새로 시작(respawn-pane)이 표로 들어갔고, 2장에는 명령줄 하위 명령 전체(start-server·record/replay 등)가, 14장에는 설정 파일의 alias·hook 지시어와 status-format·mouse-debug 가 추가됐습니다.
스크린샷은 43장이 새로 생성됐지만 대부분은 박혀 있는 시계·날짜가 다를 뿐이라 그대로 두고 내용이 바뀐 8장만 교체했습니다 — 설정 팝업(새 항목 '드래그 인정 최소 이동'), 토큰·사용량 화면 5장(데모 날짜가 오늘 기준으로 새로 계산됨), 그리고 알림 이력은 커서를 오류 줄에 올린 장면으로 다시 찍어 위에서 고친 등급색 커서가 사진에서도 보이게 했습니다. - 문서 사이트 전체를 배포본과 다시 대조해, 이미 없어진 기능을 소개하던 문장을 걷어내고 설명이 없던 조작 두 가지를 채웠습니다.
첫 화면의 Claude 소개에 "컨텍스트 하드스톱 자동 복구" 가 남아 있었습니다 —
컨텍스트가 꽉 찼을 때 /compact 를 대신 넣어 주던 기능인데 2026-06-22 에 제거됐고,
지금 배포본은 그 상태를 감지만 합니다. 문장을 지우고, 그때 지운 사실을 6월 10일 항목과 6월 22일 항목에 남겨
변경 내역만 훑어도 오해하지 않게 했습니다.
새로 설명한 조작 둘 — 7장에 ESC 모드에서 맨 위 패널에서 ↑ 를 누르면 닫기 [x] → 한 번 더 누르면 탭바 포커스가 되어 키보드만으로 탭을 고르고·만들고·닫고·순서까지 바꾸는 길(아래 ↓ 배지 포커스의 짝), 그리고 Claude 훅 두 가지(claude-auto-armed·claude-limit)와 훅 명령이 받는 PYTMUX_* 환경변수를 실었습니다 — 한도에 걸리거나 자동 재개가 예약되는 순간에 내 스크립트를 물릴 수 있습니다. - 문서 플러그인 blocks 페이지가 새로 생겼습니다 — 앱의 :plugins 목록에는 보이는데 설명이 없던 유일한 플러그인이었습니다. 셸이 보내는 신호(OSC 133)로 어디부터 어디까지가 한 명령인지와 종료 코드·작업 디렉토리를 모으는 기능이고, bash·zsh 와 PowerShell 통합 스크립트를 그대로 싣습니다. 다만 지금 배포되는 파이썬 클라이언트 화면은 종전과 완전히 같습니다 — 이 정보를 그리는 것은 따로 배포되는 네이티브 클라이언트이고, 페이지도 그 사실을 먼저 밝힙니다.
2026-07-27 월요일 pytmux zip ⬇
- 성능 패널이 바쁠 때 화면이 뚝뚝 끊기던 원인 하나를 없앴습니다. 탭·상태줄에 쓸 지금 무엇이 돌고 있는지(패널의 포그라운드 명령 이름)를 알아내려고 pytmux 는 패널마다 외부 명령(ps)을 하나씩 띄웠습니다 — 그것도 화면이 바뀌었다고 판단할 때마다라서, Claude 같은 프로그램이 도는 패널에서는 사실상 매 프레임이었고 그동안 서버가 다른 일을 못 해 모든 창이 함께 굳었습니다. 이제 그 이름은 1초 캐시로 두고 갱신은 백그라운드에서 합니다(표시용 이름이 1초 늦는 것은 아무 문제가 없습니다). 같은 조건으로 이 저장소에서 다시 재어 보면 바쁜 패널 둘에 5초 동안 9번 — 종전에는 2초 동안 125번이었습니다.
- 안정성 서버가 특정 메시지를 받으면 그 연결을 끊어 버리던 두 곳을 막았습니다. 연결할 때 클라이언트가 알려 주는 기능 목록에 예상 밖 형태가 섞이거나, 입력 메시지가 글자가 아닌 값으로 오면 서버가 그 자리에서 처리를 포기해 창이 끊겼습니다 — 지금 배포되는 클라이언트는 그런 메시지를 보내지 않지만, 버전이 다른 클라이언트나 잘못 만든 도구가 붙으면 닿는 길이었습니다. 두 곳 모두 받아들일 수 없는 값은 조용히 무시하도록 바꾸고, 스스로를 두드려 보는 보안 점검 배터리도 그 표면까지 넓혔습니다.
2026-07-26 일요일 pytmux zip ⬇
- 표시 지나간 알림 이력을 Home·End·PgUp·PgDn 으로도 넘길 수 있습니다. 지금까지 이력 팝업에서 움직이는 방법은 ↑↓ 로 한 칸씩뿐이었습니다 — 그 네 키는 눌러도 화면만 굴러가고 선택 막대는 제자리에 남아, 최근 200개가 쌓인 이력에서 맨 끝까지 가려면 계속 눌러야 했습니다. 이제 PgUp·PgDn 은 보이는 만큼 한 화면씩, Home·End 는 맨 위·맨 아래로 선택 막대를 옮기고 화면이 그 자리를 따라옵니다. Enter 로 전문을 펼쳐 둔 항목이 섞여 있어도 그 줄 수를 세어 한 화면 단위로 넘어갑니다. 팝업 아래 안내줄에도 이 키들이 함께 적힙니다.
- 표시 시계 모드와 달력의 숫자가 화면이 넉넉하면 두 배 가까이 커집니다. 지금까지는 반칸 블록(▀·▄)으로 다섯 줄짜리 숫자를 세 줄에 욱여넣어 그려서, 패널을 아무리 키워도 글자는 그대로였습니다. 이제 공간이 되면 한 칸을 통째로 쓰는 블록으로 다섯 줄에 그립니다 — 가로도 두 칸씩 써서 모양이 홀쭉해지지 않고 크기만 커집니다. 좁은 화면에서는 종전 그대로이고(반칸 3줄), 그마저 안 되면 한 줄짜리 시각·날짜 문자열로 내려갑니다.
- 키 설정 팝업의 키 탭에 ↓(최하단에서) = 상태줄 배지 포커스 항목이 빠져 있던 것을 채웠습니다. 조작 자체는 진작부터 됐지만 앱 안에서 그 키를 안내하는 목록에만 없어서, 가이드를 따로 보지 않으면 알 수 없었습니다. 이제 ←→ 배지 순환과 Enter 실행까지 그 자리에서 함께 보입니다.
- 문서 상세 가이드를 지금 배포 중인 빌드에 맞춰 훑어 고쳤습니다.
7장에 알림 등급과 지나간 알림 이력 절(스크린샷 포함)이 새로 생겼고,
6장·5장에는 한 화면을 넘는 드래그 선택과 경계 자동 스크롤이,
8장에는 자동 재개의 주입 알림·15분 쿨다운·대역외 확인이 들어갔습니다.
더는 존재하지 않는 안내도 걷어냈습니다 — 설치 안내의
pyte의존성(지금은 자체 VT 화면 모델이라 필요 없습니다),vt-parser의 선택지, 토큰 팝업의 옛 '계정' 뷰, 어긋난 챕터 번호 3곳. 스크린샷도 전량 재생성해 실제로 달라진 3장(명령 목록 수 · Claude 설정 팝업의 새 행 · 첫 실행 화면)을 갈아 끼웠습니다.
5장에는 한 화면을 넘겨 선택한 상태를 담은 스크린샷과, 붙여넣기 명령이 원격(페더레이션) 탭에서는 원격 머신의 패널로 들어간다는 설명이 더해졌습니다 —paste-clipboard는 내 컴퓨터 클립보드를 원격 셸에 그대로 붙여넣습니다. - 원격 원격 탭에서 choose-buffer 가 내 컴퓨터의 붙여넣기 버퍼 목록을 보여주던 것을 고쳤습니다. 붙여넣기(paste-buffer)는 이미 원격 서버의 버퍼에서 나오는데 목록만 내 것이라, 목록에서 고른 번호로 원격의 엉뚱한 버퍼가 붙을 수 있었습니다. 이제 목록도 그 원격 서버에서 가져오므로 고른 그것이 그대로 붙습니다. 목록 응답은 요청한 창에만 가서, 같은 원격 서버를 함께 보고 있는 다른 창에는 선택 팝업이 뜨지 않습니다.
2026-07-25 토요일 pytmux zip ⬇
- 토큰 여러 컴퓨터의 사용량 합치기가 한도 퍼센트를 넘어 사용 기록 전체로 넓어졌습니다 — 그리고 어느 컴퓨터 몫인지 머신별로 나눠 볼 수 있습니다.
어제까지 머신끼리 나눠 갖던 것은 한도 퍼센트뿐이라, 노트북에서 쓴 토큰 기록 자체는 데스크톱 팝업에 나타나지 않았습니다.
이제 토큰 사용량 팝업의 기간·세션 표에 다른 머신 몫까지 합쳐서 보이고,
머신이 둘 이상일 때만 [머신] 탭이 생겨(o 또는 클릭) 어느 컴퓨터가 얼마를 썼는지 비중 순으로 갈라 볼 수 있습니다.
요약줄 Σ 뒤에도 머신별 분해가 붙습니다. 동기화를 쓰지 않으면 화면은 종전과 완전히 같습니다(탭도 생기지 않습니다).
날짜 경계는 그 기록을 만든 컴퓨터의 시간대를 따릅니다 — 시차가 있는 머신을 함께 쓸 때 "어제 쓴 것"이 남의 시간대 기준으로 오늘에 끼는 일을 막습니다. 계정이 아직 밝혀지지 않은 옛 기록도 같은 세션의 다른 기록에서 계정을 물려받아 합류하고, 그 채움 정도가 함께 표시됩니다. - 토큰 동기화 웹 화면의 등록된 머신 목록에 마지막 동기화 시각이 표시됩니다. 지금까지는 이름과 폐기 버튼뿐이라, 어느 머신이 조용히 멈춰 있는지 화면만 봐서는 알 수 없었습니다. 이제 이름 옆에 방금 전 · 3시간 전 처럼 붙고(마우스를 올리면 정확한 시각), 한 번도 올린 적 없는 머신은 동기화 기록 없음 으로 구분됩니다. 폐기 버튼은 오른쪽 끝으로 정렬해, 이름 길이를 따라 버튼이 흔들리지 않고 한 줄에 맞습니다.
- 토큰 직접 돌리는 동기화 서버에 보존 기간을 걸 수 있고, 지운 만큼 용량도 함께 줄어듭니다. PYTMUX_SYNC_RETAIN_DAYS=90 처럼 켜 두면 그보다 오래된 기록을 서버가 알아서 정리합니다 (기본은 무기한이라 켜지 않으면 종전과 같습니다 — 원본은 각 머신의 로컬 기록이라 서버에서 지워도 회계는 손실되지 않습니다). 함께, 지운 뒤에도 용량 계산이 줄지 않아 비어 있는 서버가 저장 용량이 가득 찼습니다 로 굳어 새 업로드를 막던 문제를 고쳤습니다.
- 표시 지나간 알림 이력에서 커서를 올린 줄의 글자가 안 보이던 문제를 고쳤습니다. · 안내 등급의 파란 글자색이 선택 막대의 파란 배경과 같은 색이라, 그 줄에 커서를 올리면 글자가 배경에 묻혀 빈 파란 띠로 보였습니다. 이제 커서가 놓인 줄은 화면 테마가 보장하는 대비색으로 그려지고, 커서가 지나가면 등급색이 그대로 돌아옵니다(등급은 그 줄에서도 ✓ · ! ✕ 기호로 남습니다).
- Claude 한도가 풀렸을 때 pytmux 가 대신 쳐 주는 자동 재개가 이제 알림으로 남습니다. 자동 재개는 화면에 뜬 한도 문구를 보고 발화하는데, 그 문구는 Claude 자신이 출력할 수도 있습니다 — 즉 모델(또는 모델에게 그렇게 시킨 문서·도구 출력)이 가짜 한도 배너를 그려 재개를 유발할 수 있고, 실제로 재현됐습니다. 본문을 걸러 막는 방식은 원리적으로 뚫리므로, 막는 대신 보이게 했습니다 — 주입할 때마다 무엇을 보냈는지 알림이 뜨고, 같은 패널에는 15분 안에 다시 주입하지 않습니다(진짜 한도의 리셋 간격은 최소 1시간이라 정상 재개는 한 번도 막히지 않습니다).
- 안정 화면 보내기가 중간에 끊겼을 때 그 패널이 조용히 어긋난 채로 굳던 문제를 고쳤습니다. pytmux 는 바뀐 줄만 보내려고 "직전에 보낸 화면"을 서버가 기억하는데, 그 기억을 보내기 전에 갱신하고 있었습니다 — 도중에 전송이 깨지면 클라이언트는 못 받았는데 서버는 보낸 것으로 알아, 이후로는 있지도 않은 화면 기준의 차이만 보내 그 패널이 계속 어긋난 채 남았습니다. 이제 기준은 전송에 성공한 뒤에만 갱신하고, 실패하면 다음 프레임을 화면 전체로 다시 보냅니다.
- 안정 탭 이름이 자동으로 붙을 때도 제어문자를 걸러 냅니다. 탭 이름을 직접 바꿀 때는 이미 CR/LF·ESC 같은 제어문자를 제거하고 있었지만, 실행 중인 명령 이름을 따라 자동으로 붙는 이름은 그 검사를 지나쳤습니다 — 이름은 프로세스가 스스로 정하는 값이라, 그런 바이트를 심은 이름으로 뜨는 프로그램이면 탭바가 깨질 수 있었습니다. 이제 두 경로가 같은 규칙을 씁니다(길이 상한도 함께).
2026-07-24 금요일 pytmux zip ⬇
- 표시 맨 아랫줄 알림이 이제 성공은 초록 ✓, 실패는 빨강 ✕ 로 갈립니다 — 그리고 지나간 알림을 다시 볼 수 있습니다.
지금까지 알림은 성공이든 실패든 전부 같은 노란색이었고, 2초 뒤 사라지면 어디에도 남지 않았습니다.
그래서 등록했습니다(성공)와 등록 실패 — 인증서 오류가 화면만 봐서는 구분되지 않았고,
긴 오류 문구는 줄 끝에서 잘려 정작 조치해야 할 부분이 안 보였습니다.
이제 알림은 네 등급으로 나뉘어 배경색과 기호가 함께 바뀝니다 —
✓ 완료(초록) · · 안내(파랑) · ! 주의(노랑) · ✕ 실패(빨강).
실패는 5초간 머물고 직접 닫을 때까지 사라지지 않습니다(색맹·흑백 화면에서도 기호로 구분됩니다).
사라진 알림은 상태줄 오른쪽 ≡N 배지에 남습니다 — N 은 아직 안 본 알림 수이고, 배지 색이 그 중 가장 심각한 등급이라 알림이 사라진 뒤에도 "방금 실패가 있었다"가 색으로 남습니다. 배지를 클릭하거나 ESC → ↓ → Enter 로 이력을 열면 최근 200개를 되짚을 수 있고, 그 자리에서 Enter 로 잘린 문구의 전문을 펼치거나 c 로 복사할 수 있습니다. 같은 알림이 반복되면 ×5 처럼 접혀 이력이 한 가지로 차지 않습니다.
알림이 뜨는 동안에도 배지는 오른쪽 끝에 겹쳐 남아, 보는 도중에 바로 이력으로 갈 수 있습니다. (이력은 이 컴퓨터의 화면 안에만 잠시 머물고 어디에도 저장되지 않습니다 — pytmux 를 닫으면 사라집니다.) - Claude 회사 계정으로 claude 를 띄울 때 앞을 막던 승인 화면을 이제 pytmux 가 대신 넘겨 줍니다. 조직이 관리 설정을 걸어 둔 계정은 Claude 가 시작하자마자 Managed settings require approval 화면에서 멈춰 서서, 매번 사람이 1. Yes, I trust these settings 를 고르고 Enter 를 쳐야 했습니다 — Claude 를 띄우는 패널마다 그랬고, 그 화면에 걸려 있는 동안에는 새 세션 자동 셋업도 시작되지 못했습니다. 이제 그 화면이 뜨면 이미 선택돼 있는 1번을 Enter 로 확정해 통과시킵니다. 선택을 옮기는 키(↑↓·숫자)는 보내지 않습니다 — 화살표가 Yes… 가 아닌 다른 항목에 놓여 있거나 문구가 바뀐 화면이면 아무 키도 치지 않고 그대로 사람에게 남깁니다. 같은 화면에 Enter 를 두 번 보내지 않는 것도 규칙입니다(두 번째는 승인 뒤 열린 입력칸에 빈 줄을 보내게 됩니다).
- 원격 원격 머신의 서버가 마지막 탭을 닫아도 계속 살아 있게 할 수 있습니다 — :exit-empty off. 지금까지는 서버에 세션이 하나도 남지 않으면 서버가 스스로 종료했습니다(tmux 와 같은 기본 동작). 내 컴퓨터에서는 자연스럽지만, 원격 페더레이션으로 붙어 쓰는 상대편 머신에서는 거기서 마지막 탭을 exit 한 순간 서버가 사라져 연결까지 끊기는 것이 불편했습니다. 이제 그 머신에서 :exit-empty off 로 꺼 두면 서버가 빈 채로 상주하고, 다시 새 탭을 만드는 순간 세션이 그 자리에서 되살아납니다. 기본값은 종전과 같은 on 이고, kill-server 처럼 명시적으로 끝내는 명령은 이 설정과 무관하게 늘 종료합니다.
- Windows pytmux 를 끝낸 뒤에도 백그라운드에 남아 있던 pty-host 프로세스가 이제 스스로 정리됩니다. Windows 에서는 셸을 담고 있는 그릇(ConPTY)을 서버와 분리된 별도 프로세스가 들고 있습니다 — 그래야 서버만 새 코드로 갈아끼워도 열려 있던 셸이 끊기지 않기 때문입니다. 그런데 그 프로세스를 끝내는 신호는 서버가 정상적으로 내려갈 때 보내는 것 하나뿐이라, 서버가 강제로 종료되거나(작업 관리자에서 끝내기 등) 예기치 않게 죽으면 그릇도, 그 안의 셸도 함께 계속 살아 있었습니다. 껐다고 생각한 뒤에도 목록에 남아 있던 게 이것입니다. 이제는 자기를 띄운 서버가 사라진 것을 스스로 알아채고, 잠시 기다렸다가(기본 1분 — 그 사이 서버가 다시 뜨면 그대로 이어집니다) 안에 있던 셸까지 정리하고 종료합니다. 서버가 살아 있는 동안에는 절대 스스로 종료하지 않습니다 — 재시작·재접속 중인 세션을 건드리지 않기 위해서입니다.
- Windows 서버가 이미 없을 때 친 pytmux kill-server 도 이제 남아 있는 것을 정리합니다. 예전에는 실행 중인 서버 없음 한 줄만 나오고 남은 프로세스는 그대로였습니다 — 손으로 찾아 끝내는 것 말고는 방법이 없었습니다. 이제 같은 명령이 남아 있던 그릇과 그 안의 셸까지 함께 정리하고 그 사실을 알려 줍니다.
- 안정 서버가 죽은 뒤 다시 켰을 때, 새 탭이 지난 세션의 셸을 물려받던 문제를 고쳤습니다. 살아남은 그릇 안에 옛 셸이 남아 있으면, 새로 만든 첫 패널이 새 셸을 띄우는 대신 그 옛 셸에 그대로 연결돼 남의 작업 상태가 이어져 보일 수 있었습니다. 이제 새 패널은 항상 새 셸을 얻고, 아무도 쓰지 않는 옛 셸은 정리됩니다(단, 다른 서버가 쓰고 있을 수 있는 경우에는 손대지 않습니다).
2026-07-23 목요일 pytmux zip ⬇
- 토큰 여러 컴퓨터에서 같은 Claude 계정을 써도 이제 토큰 사용량이 한 곳으로 합쳐집니다 — 어느 컴퓨터에서 봐도 같은 숫자가 나옵니다.
지금까지는 머신마다 따로 재고 따로 저장해, 노트북에서 본 5시간 한도 62% 가 데스크톱에서는 18% 로 보였습니다.
한도 퍼센트는 원래 계정 단위 값이라 계산이 틀린 게 아니라 그 머신이 최근에 못 봤을 뿐이었습니다.
이제 각 머신이 자기가 관측한 값을 서로 나눠 가져, 마지막으로 본 머신의 최신 관측이 모든 머신에 반영됩니다.
등록하기 전에는 아무 통신도 하지 않습니다 — 서버 주소가 기본으로 들어 있어도, 머신을 등록하지 않으면 네트워크 요청이 한 번도 나가지 않습니다.
서버 올리기부터 머신 붙이기·복구까지는 상세 가이드 10 — 여러 머신 토큰 동기화에 정리했습니다. - 토큰 머신을 붙이는 절차가 명령 한 줄로 끝납니다. 브라우저에서 코드 새로 만들기 를 누르면 :claude-token-sync enroll <코드> 라는 실행할 명령 전체가 복사 버튼과 함께 나옵니다. 그 머신에 붙여넣으면 끝이고, 암호화 열쇠도 그 코드에 실려 함께 넘어갑니다 — 예전처럼 머신끼리 열쇠를 손으로 옮길 필요가 없습니다. 코드가 쓰이는 즉시 브라우저 화면이 스스로 갱신돼 등록된 머신이 나타납니다.
- 토큰 토큰 관련 명령 이름이 claude- 로 시작하도록 바뀌었습니다. 나중에 다른 서비스의 토큰 회계가 생겨도 이름만으로 주인이 드러나게 하기 위해서입니다. token-log → claude-token-log, token-account → claude-token-account, token-debug → claude-token-debug, token-saver → claude-settings. 옛 이름은 더 이상 인식되지 않습니다(별칭으로도 남기지 않았습니다 — 두 이름이 공존하면 어느 쪽이 정식인지 알 수 없습니다).
- 원격 원격 탭을 보는 중에 친 :claude-token-sync 는 이제 그 원격 머신에 적용됩니다. 예전에는 보고 있지도 않은 로컬 머신이 조용히 등록됐습니다 — 원격 탭에서 스크롤·프롬프트 점프가 원격 기준으로 도는 것과 같은 규칙을 이 명령에도 적용했습니다. 로컬 머신을 대상으로 하려면 로컬 탭에서 치거나 셸에서 pytmux cmd … 를 쓰면 됩니다.
- 토큰 동기화 서버는 직접 돌리는 작은 서버이고, 계정 이름을 저장하지 않습니다. 남의 서비스에 토큰 기록을 맡기지 않도록, 집서버·개인 VPS 에 올릴 수 있는 파일 하나짜리 서버를 함께 넣었습니다(tools/synserver, 의존성은 암호 라이브러리 하나). 올라가는 것은 가명과 암호문뿐입니다 — 계정 이메일은 각 머신 안에만 남고, 토큰 수치·모델명은 보내기 전에 각 머신에서 잠가 서버는 내용을 읽지 못합니다. 그래서 서버가 통째로 털려도 남는 것은 암호문·난수 가명·건수 뿐입니다.
- 토큰 로그인은 아이디도 비밀번호도 없이 패스키 하나로 합니다. 브라우저에서 지문/얼굴/보안키로 새 패스키 만들기 를 누르면 그게 곧 계정이 됩니다 — 서버에는 이름이 될 만한 칸 자체가 없습니다. 머신을 붙일 때는 1회용 코드(10분)를 받아 그 머신에서 :claude-token-sync enroll <코드> 를 실행합니다. 등록된 머신은 이후 자기 키로 요청에 서명하고, 잃어버린 기기는 폐기 버튼 한 번으로 즉시 차단됩니다.
- 보안 새로 생긴 서버를 대상으로 코드검수·보안검수·레드팀을 돌려 찾은 것을 모두 고쳤습니다. pytmux 에 처음으로 인터넷에 노출되는 표면이 생겼기 때문에, 공개 전에 실제로 찔러 보는 점검을 따로 했습니다. 막은 것 — 아무나 계정을 무한히 만들 수 있던 것(이제 첫 등록 뒤 잠깁니다), 틀린 코드 5번이 내 유효 코드를 전부 지우던 것, 로그인 시도만으로 서버 메모리가 계속 늘던 것, 용량 한도를 넘겼을 때 기록이 반만 남던 것, 만료된 흔적이 영원히 쌓이던 것, 한 번 내려받기가 서버 메모리를 수백 MB 쓸 수 있던 것. 각 항목은 되돌리면 실패하는 회귀 테스트와 함께 고정했습니다.
2026-07-18 토요일 pytmux zip ⬇
- 탭 탭 스위처(Esc → Tab)가 이제 원격(⇄) 탭 밑에도 패널 줄을 보여줍니다. 이틀 전 스위처에 패널 줄을 달 때, 로컬 탭은 └ [local] 앱 · 제목 으로 펼쳐졌지만 원격 탭은 탭 한 줄만 나왔습니다 — 패널 목록을 얻는 자리(로컬 트리)에 원격 탭의 패널이 없었기 때문입니다(그 패널들은 원격 서버에 있습니다). 이제 원격 서버가 패널이 2개 이상인 탭마다 가벼운 패널 요약(앱 이름·제목만)을 상태에 함께 실어 보내고, 받는 쪽이 그것을 병합해 원격 탭 밑에도 패널 줄을 그립니다. 원격 탭의 패널 줄에서 Enter 를 치면 그 패널로 바로 갑니다. (원격이 보내는 값은 신뢰 경계에서 한 번 걸러 — 제어문자 제거·길이/개수 상한 — 화면을 어지럽히지 못하게 합니다.)
- Claude Claude 를 종료한 뒤에도 상태줄에 남던 ⚠ 포맷 미인식 — 추적 일시중지 경고가 이제 사라집니다. Claude 화면 형식이 바뀌어 pytmux 가 상태를 못 읽는 동안(예: 새 버전) 이 경고를 띄우는데 — Claude 가 정말 실행 중일 때만 세우도록 포그라운드 프로세스로 교차확인합니다. 문제는 그 확인이 화면이 바뀔 때만 돌던 것이라, Claude 를 끄고 정적인 셸 프롬프트만 남으면 더 볼 게 없어 다시 확인하지 않았고, 경고가 상태줄에 눌러앉았습니다. 이제 경고가 떠 있는 동안엔 그 패널을 계속 지켜봐, Claude 가 사라진 것을 확인하는 즉시 경고를 내립니다.
- Claude 상태줄 모델 이름이 화면을 따라가게 한 뒤에도, 긴 작업 도중 잠깐 기본 모델로 튀던 것을 잡았습니다. /model 로 확인한 opus 가 조금 뒤 다시 sonnet-5 로 돌아가는 일이 있었습니다. Claude 가 바쁘게 출력하는 동안 하단 표시줄이 화면 밖으로 잠깐 밀려나면, pytmux 는 그 한두 순간을 Claude 가 꺼진 것으로 봤다가 표시줄이 돌아오면 새 세션이 시작된 것으로 오해했습니다 — 새 세션은 다른 모델일 수 있어 모델 기억을 지우는데, 그 바람에 화면에서 읽은 opus 가 지워지고 별도 세션의 기본값 sonnet-5 로 채워졌습니다. 이제 모델 기억은 확실히 끝난 세션(끊김이 충분히 오래 이어진 경우)을 지날 때만 지웁니다 — 잠깐의 표시줄 밀림은 같은 세션으로 보고 모델을 그대로 유지합니다.
- 표시 종료 시 사용량 요약과 사용량 팝업에서, 리셋 시각 앞의 새로고침 화살표(↻)와 날짜·시각 사이에 한 칸을 띄웠습니다. 지금까지는 ↻2:50pm·↻Jul 25, 3am 처럼 붙어 나와, 날짜·시각의 첫 글자가 화살표에 겹쳐 알아보기 어려웠습니다. 이제 ↻ 2:50pm 으로 한 칸 띄어 또렷합니다.
- 마우스 Shift+드래그로 이제 내부 앱에 마우스 이벤트를 전달합니다 — 마우스를 직접 쓰는 앱(예: 에디터의 패널 스플리터)을 끌어 조정할 수 있습니다.
pytmux 안에서 마우스를 쓰는 앱을 띄우면, 기본으로 켜진 드래그 복사가 좌드래그를 가로채 앱에 넘기지 않아 스플리터를 끌 수 없었습니다.
그렇다고 모든 드래그를 앱에 넘기면 — Claude 도 마우스를 켜므로 — Claude 위에서 드래그로 복사하던 것이 깨집니다.
그래서 평드래그는 종전대로 복사로 두고, Shift 를 '앱에 넘김' 제스처로 삼았습니다(pytmux 는 평드래그가 이미 복사라 Shift 가 자연히 반대 동작이 됩니다).
이제 마우스 앱 위에서 Shift+드래그는 그 앱의 드래그(스플리터 이동 등)가 되고, Claude 등에서의 평드래그 복사는 그대로 보존됩니다.
list-keys(? 목록) 안내도 이 새 동작으로 갱신했습니다.
참고: 호스트 터미널이 Shift+드래그를 자기 선택으로 먼저 가져가면 pytmux 까지 닿지 않을 수 있습니다(호스트 설정에 따름). - Claude 원격 탭에서 도는 Claude 의 컨텍스트 사용률이 이제 Claude 화면과 같은 숫자로 보입니다 — Claude 는 98% 인데 상태줄엔 2% 로 뒤집혀 뜨던 것을 잡았습니다. Claude 가 최근 하단에 98% context used(쓴 비율)처럼 표시하는데, pytmux 는 예전 표기(N% 남음)에 맞춰 100 에서 빼서 보여주던 습관 탓에 이미 사용률인 값을 한 번 더 뒤집어 2% 로 만들었습니다. 이제 사용률 표기를 알아보고 그대로 — Claude 가 말하는 그 숫자로 — 표시합니다.
- 표시 Claude 패널에서 : 명령을 칠 때 첫 줄에 뜨는 직전 프롬프트 미리보기가 이제 또렷하게 보입니다 — 배경에 묻혀 읽기 어렵던 것을 밝혔습니다. 명령칸이 열리면 그 뒤 화면을 살짝 어둡게 깔아 명령칸을 도드라지게 하는데, 정작 같이 봐야 할 미리보기 줄까지 함께 어두워져 글자가 배경색과 비슷해졌습니다. 이제 미리보기 줄은 어둡게 깔지 않고 글자도 또렷한 흰색으로 그려, 어떤 프롬프트였는지 바로 읽힙니다.
- 작성창 여러 줄로 쓰던 프롬프트를 ESC → Insert 작성창으로 가져올 때, Claude 가 답변 중이거나 메시지를 대기열에 쌓아둔 상태에서도 이제 전체가 따라옵니다 — 커서 한 줄만 오던 것을 잡았습니다. Claude 는 작업 중이거나 보낼 메시지가 대기열에 있을 때 입력칸의 위아래 구분선을 그리지 않습니다. pytmux 는 그 구분선으로 입력 범위를 찾았던 터라, 선이 없으면 커서가 놓인 한 줄만 긁어 — 여러 줄 프롬프트의 이웃 줄이 빠지거나, 작업 표시줄(스피너)에 커서가 얹히면 엉뚱한 줄이 오기도 했습니다. 이제 구분선이 없을 때는 프롬프트 기호(❯)를 실마리로 그 줄과 이어지는 줄을 한 덩어리로 가져옵니다. 대기열 안내문(Press up to edit queued messages)은 빈 칸으로, 실제 입력이 아닌 줄은 가져오지 않습니다.
- 화면 처리 pytmux 안에서 화면을 통째로 그리는 앱(터미널 UI 앱)을 띄우면, 화면이 찢겨 보이거나 반응이 굼뜨던 것이 나아집니다. 요즘 터미널 앱은 한 화면(프레임)을 그릴 때 “여기서부터 여기까지가 한 덩어리”라고 표시해, 그리다 만 중간 상태가 보이지 않게 합니다. pytmux 는 그 표시를 받으면 프레임이 끝날 때까지 화면 전송을 미루는 기능을 이미 갖고 있었지만, 정작 앱들은 터미널이 “나 그거 지원해요”라고 알려줄 때만 그 표시를 씁니다. pytmux 는 그 물음에 답하지 않아 — 앱은 감싸기를 끈 채 부분 프레임을 흘렸고, pytmux 는 조각이 올 때마다 화면을 다시 합성했습니다. 이제 그 물음에 지원한다고 답해 앱이 프레임을 감싸고, pytmux 는 프레임 경계에서 한 번만 그립니다 — 찢김이 줄고 CPU 도 덜 씁니다. (Claude Code 처럼 항상 감싸는 앱은 이전부터 이 혜택을 받고 있었고, 이번 변화는 그렇지 않던 앱들에 해당합니다.)
2026-07-17 금요일 pytmux zip ⬇
- 안정 새 탭·분할이 이제 멈칫하지 않습니다 — macOS 에서 특히 그랬습니다. pytmux 서버는 한 줄기 흐름으로 모든 창을 돌보는데(07-16 참고), 새 탭을 열거나 화면을 나눌 때마다 지금 있는 폴더를 알아내려고 lsof 라는 바깥 프로그램을 부르고 그 대답을 기다리는 동안 — 실측 0.3 초 안팎 — 그 한 줄기가 멈춰 모든 패널이 함께 얼어붙었습니다. 이제 macOS 는 운영체제에 직접 물어(수 마이크로초), Linux·Windows 와 같은 즉각 반응으로 맞췄습니다.
- 안정 패널에 이상한 출력이 쏟아져도 이제 화면이 멈추지 않습니다. 패널 안에서 도는 프로그램이(예를 들어 인터넷에서 받은 내용을 그대로 화면에 흘리는 경우) 비정상적으로 긴 제어 문자열을 뱉으면, pytmux 가 그걸 푸는 데 시간이 제곱으로 불어나 128KB 한 줄에 약 5 초(입력이 두 배면 시간은 네 배로) 서버 전체가 멈추던 자리가 있었습니다. 이제 한 번에 처리해 200 배 빠르고, 끝이 없는 문자열도 정해진 만큼만 담아 메모리를 지킵니다.
- 탭 마지막 탭을 닫아 세션이 사라져도, 그 세션을 보던 다른 창이 얼어붙지 않습니다. 여러 세션을 띄운 채 한 세션의 마지막 탭을 닫으면, 그 세션을 보던 클라이언트가 이미 사라진 세션을 가리킨 채 남아 — 아무 알림도 프레임도 없이 영영 멈춰 있었습니다. 프로세스를 강제로 죽이는 것 말고는 방법이 없었죠. 이제 그런 클라이언트는 남은 세션으로 옮겨 갑니다.
- 탐색 디렉토리 트리 검색(ncd)과 Perforce 변경목록 보기가 이제 화면을 멈추지 않습니다. ncd 에서 이름을 타이핑해 폴더를 찾을 때 글자마다 디스크 전체를 뒤지는 검색이 서버 한 줄기 위에서 돌아, 타이핑 내내 모든 패널이 끊겼습니다. Perforce 변경 상세도 느린 서버 하나면 최대 20 초 멈췄고요. 이제 둘 다 곁길로 넘겨 화면은 계속 반응합니다. 원격으로 남의 pytmux 를 보고 있을 때, 내 타이핑이 그쪽 서버 전체를 멈추던 것도 함께 사라졌습니다.
- 원격 원격 탭을 보는 동안 내 플러그인·설정이 저쪽 값으로 바뀌던 것을 바로잡았습니다. 다른 pytmux 서버의 탭을 원격으로 볼 때, 그쪽의 꺼둔 플러그인 목록·환경설정 값이 내 클라이언트로 흘러 들어와 — 내 설정 화면이 저쪽 값을 내 값인 양 보여주고, 내가 꺼두지 않은 플러그인이 사라지기도 했습니다. 이제 내 설정은 내 것으로 지키고, 원격에서 와야 하는 것(그쪽 패널 상태·Claude 헤더 등)만 받습니다.
- 보안 여러 잠재 위험을 미리 막고, 이를 찾아내는 자동 점검을 강화했습니다. 신뢰할 수 없는 상대(원격으로 연결된 다른 서버, 같은 컴퓨터의 다른 사용자, 패널에 흐르는 출력)가 보낼 수 있는 비정상 입력으로 서버 메모리를 불리거나 화면을 영구히 멈추게 하던 여러 자리를 경계에서 검증·상한으로 닫았습니다. Windows 에서 폴더 이름에 담긴 셸 명령이 실행되던 경로도 막았습니다. 무엇보다, 이런 화면 멈춤을 자동 점검이 실행 중에 잡아내도록 만들어 같은 종류가 다시 새어 나오지 못하게 했습니다.
2026-07-16 목요일 pytmux zip ⬇
- 안정 무거운 작업이 화면 전체를 멈추게 하던 몇 자리를 없앴습니다 — 큰 폴더를 복사·삭제하거나, 큰 압축을 열거나, 마우스로 드래그해 복사할 때입니다. pytmux 서버는 한 줄기 흐름으로 모든 창을 돌봅니다 — 그래서 그 흐름에서 오래 걸리는 일을 바로 하면 그동안 모든 패널·모든 화면이 함께 멈춥니다. mdir 파일 관리자에서 수 GB 폴더를 복사·삭제하거나 큰 .tar.gz 를 여는 동안 화면이 얼어붙던 것, 그리고 이름 없는 파이프(FIFO)나 장치 파일을 미리보기로 열면 영영 멈춰 있던 것이 그 탓이었습니다. 이제 파일 작업은 곁길(작업 스레드)로 넘겨 화면이 계속 반응하고, 미리보기는 보통 파일만 열어 특수 파일에 매달리지 않습니다. 클라이언트 쪽도 같습니다 — 마우스 드래그 복사가 Windows 에서 PowerShell 을 부르며 잠깐 멈추던 것을, 붙여넣기와 똑같이 곁길로 돌려 드래그를 놓는 순간의 끊김을 없앴습니다.
- Windows 클립보드 복사·붙여넣기가 이제 실패를 솔직하게 알립니다 — '복사됨'이라 해 놓고 아무것도 안 담기던 일이 없습니다. 다른 프로그램이 클립보드를 잠깐 쥐고 있는 흔한 상황에서, 복사가 속으로 실패했는데도 pytmux 는 '복사됨' 이라 알렸습니다 — PowerShell 이 그 실패를 오류로 끝맺지 않아 성공처럼 보였기 때문입니다. 게다가 그 오류 문구가 화면에 그대로 찍혀 표시를 어지럽히기도 했습니다. 붙여넣기도 반대로, PowerShell 이 실패한 것을 '클립보드가 비었다'로 잘못 읽어 Ctrl+V 가 조용히 아무 일도 안 하던 적이 있었습니다. 이제 실패는 실패로 끝맺어져, 복사는 다른 방법으로 다시 시도하고 붙여넣기도 대체 경로로 넘어갑니다. 오류 문구가 화면에 새는 일도 없습니다.
- 탭 탭 스위처(Esc → Tab)를 아주 빠르게 여닫아도 이제 클라이언트가 멈추지 않습니다. Esc Tab Enter 를 연달아 빠르게 치면, 스위처가 닫힌 뒤에 뒤늦게 도착한 패널 목록이 이미 사라진 목록을 건드리다 클라이언트가 튕겨 나가는 드문 경우가 있었습니다. 이제 목록이 닫혔으면 조용히 넘어갑니다 — 빠른 리듬 그대로 안전합니다.
- 작성창 작성창에서 Esc 를 누르면 이제 ESC 모드로 들어간 것이 보이고, : 로 연 명령칸은 작성창을 덮지 않고 그 위에 뜹니다. 작성창에서 Esc 한 번은 취소가 아니라 ESC 모드(다음 키가 : 명령이냐 취소냐를 정하는 자리)인데, 지금까지는 들어갔는지 알 수가 없었습니다 — 바뀌는 것이라곤 박스 위쪽 힌트 문구뿐이었고 그마저 옅은 회색이라, 문구를 일부러 읽지 않으면 아무 일도 안 일어난 것처럼 보였습니다. 이제 왼쪽 위에 ESC 모드 배지가 켜지고 테두리 색까지 함께 바뀌어, 읽지 않아도 눈에 들어옵니다. 이어 : 를 눌러 명령칸으로 넘어가면 — 종전에는 작성창이 사라진 것처럼 보였습니다. 작성창과 명령칸이 둘 다 화면 바닥에 붙는 탓에 명령 후보 목록이 작성창을 통째로 덮었고, 덮이지 않은 자리마저 명령칸의 반투명 배경에 눌려 흐려졌기 때문입니다. 정작 그 작성창은 멀쩡히 열린 채였는데도요. 이제 작성창은 바닥에 그대로 남고 명령칸과 힌트가 그 위쪽에 뜹니다 — 어디서 명령칸을 불렀는지, 돌아갈 작성창에 무엇을 쓰고 있었는지 보면서 명령을 고를 수 있습니다.
- Claude 상태줄의 모델 이름이 이제 화면에 보이는 그 모델을 따라갑니다 — /model 을 치는 순간 곧바로 맞춰집니다. Claude 화면에는 Set the AI model for Claude Code (currently Opus 4.8) 라고 떠 있는데 상태줄 배지는 엉뚱하게 sonnet-5 인 일이 있었습니다. 까닭은 두 가지가 겹쳐서입니다. 하나, Claude 는 모델 이름을 화면에 늘 띄워 두지 않습니다 — 평소 하단에는 auto mode on 만 있고 모델 배지는 잠깐씩만 스칩니다. 그래서 pytmux 는 배지가 안 보이는 동안 따로 돌리는 사용량 조회가 알아낸 모델로 대신 채웠는데 — 둘, 그 조회는 이 패널이 아니라 별도 세션이라 거기서 나오는 것은 늘 기본 모델입니다. 패널에서 /model 로 모델을 바꿨거나 --model 로 띄웠다면 어긋날 수밖에 없고, 그 값이 매번 밀고 들어와 결국 배지를 눌러앉았습니다. 이제 pytmux 는 화면이 현재 모델을 말해 주는 자리를 모두 읽습니다 — /model 메뉴의 (currently …), 모델 선택 화면의 Currently using …, 선택 직후의 Set model to …, 그리고 /status 의 모델 줄까지. 그 중 하나라도 지나가면 배지는 즉시 그 값이 되고, 별도 세션의 기본 모델은 이제 이 값을 덮지 못합니다(화면에서 확인된 적이 없을 때만 참고).
- 작성창 여러 줄 프롬프트를 작성창으로 가져올 때 커서가 있던 줄만 오던 문제를 마저 잡았습니다.
어제 이 문제를 고쳤다고 적었지만, 실제로는 여전히 한 줄만 따라왔습니다.
어제 고친 것(키를 세는 대신 화면을 읽기)은 맞는 방향이었는데, 정작 화면을 읽는 쪽이 입력창을 못 알아보고 있었습니다 —
Claude 는 예전에 입력창을 모서리가 있는 네모 상자로 그렸고 pytmux 는 그 모서리를 찾아 상자 범위를 잡았는데,
지금 Claude 는 상자 없이 위아래 가로줄로만 입력칸을 나눕니다. 찾던 모서리가 없으니 범위를 못 잡고
커서가 놓인 한 줄만 집어 왔던 것입니다. 이제 가로줄로 나뉜 지금의 입력칸을 알아보고, 그 안의 모든 줄을
— 중간의 빈 줄과 사용자가 넣은 들여쓰기까지 그대로 — 작성창으로 가져옵니다.
왜 어제는 몰랐나: 이 기능의 회귀 시험이 옛 상자 모양으로만 짜여 있어, 실제 화면이 바뀐 뒤에도 계속 통과하고 있었습니다 — 지금 모양을 시험에 함께 못박아 같은 눈속임이 반복되지 않게 했습니다. - 플러그인 mdir 의 선택막대가 이제 항목 본래 색을 따라갑니다 — 디렉토리 위에선 붉은 막대, 압축 위에선 자홍 막대. 지금까지는 커서를 어디에 놓든 항상 초록 막대여서, 붉은 디렉토리든 자홍 압축파일이든 커서가 닿는 순간 본래 색이 사라졌습니다 — 목록을 훑으며 색으로 종류를 가리다가도, 정작 지금 보고 있는 한 줄만 색을 잃는 셈이었습니다. 이제 막대는 그 항목 색의 반전(글자는 검정, 배경은 항목색)이라, 커서 아래에서도 디렉토리는 붉게·EXE 는 초록·압축은 자홍·태그는 노랑으로 남습니다. 패널이 포커스를 잃으면 막대는 색조를 유지한 채 한 톤 어두워져, 어느 쪽이 활성인지도 그대로 구분됩니다.
- 탭 탭 스위처(Esc → Tab)가 목록에서 더 많은 것을 보여주고, 더 많은 키로 움직입니다. 어제 들어온 스위처는 탭이 많아지자 아쉬움이 드러났습니다 — 목록이 이름뿐이라 로컬 탭과 원격(⇄) 탭이 같은 색으로 섞여 보였고, 탭 안에 패널이 몇 개든 탭 한 줄이 전부였으며, 긴 목록을 화살표로 한 칸씩만 오갈 수 있었습니다. 이제 원격 탭은 분홍 글자(탭바의 원격 색 그대로), 활성 탭은 굵게, 고정(핀) 탭의 * 글리프는 경고색으로 한눈에 구분됩니다. 패널이 2개 이상인 탭 밑에는 └ [local] vim · 제목 꼴의 패널 줄이 달리고 — 패널 줄에서 Enter 를 치면 그 탭의 그 패널로 바로 갑니다 (패널 목록은 팝업이 뜬 직후 서버에서 도착해 끼어들므로 여는 속도는 그대로입니다. 원격 탭의 패널 목록은 원격 서버에 있어 탭 줄만 나옵니다). 항해 키도 채웠습니다 — Home/End 처음/끝, PgUp/PgDn 화면 단위, 그리고 맨 위에서 ↑ 는 맨 아래로 (맨 아래에서 ↓ 는 맨 위로) 순환합니다. Tab/Shift+Tab 순환은 종전대로 탭 줄만 오가니(패널 줄은 건너뜀) Esc Tab Enter 리듬은 그대로입니다.
2026-07-15 수요일 pytmux zip ⬇
- 문서 가이드가 안내하던 설정 명령 중 실제로는 동작하지 않던 것을 바로잡았습니다. 마우스 가이드가 Windows 마우스 이동 패스스루를 set win-mouse-motion on 으로 안내했는데, 이 형식은 아무 일도 하지 않고 조용히 무시됐습니다 — 올바른 형식은 set 을 뺀 win-mouse-motion on 입니다. 아울러 설정 파일 가이드가 "설정 파일의 set … 줄은 실행 중 :set … 으로 즉시 바꿀 수 있다"고 일반화했지만, :set 이 먹는 것은 mouse·prefix·mode-keys 등 일부뿐이라 나머지(strip-box-drawing·inactive-dim·language 등)는 set 없이 이름만 쳐야 합니다 — 실제 동작에 맞게 고쳤습니다. 이번 점검은 사이트 31개 페이지의 명령·키·기본값을 코드에서 기계로 추출해 전수 대조했고, 그 밖에 권한모드 선택지(accept 누락)·토큰 팝업 탭 구성·설정 팝업의 항목 이름 표기도 실제 화면과 맞췄습니다.
- 플러그인 새 플러그인 mdir — 1990년대 한국의 국민 파일 관리자 Mdir III 를 재현한 팝업 파일 관리자가 들어왔습니다(Esc → : → mdir, 별칭 m).
검정 바탕 다열 리스트·확장자별 색·하단 집계/시계줄까지 원본 배포판을 조사해 실측 재현했고,
Space 태그 후 복사/이동/삭제/이름변경/새디렉토리, 정렬·필터·숨김 토글, 내장 텍스트 뷰어, zip/tar 내부 보기,
F10 디렉토리 트리(ncd 연동), F4 패널 cd 까지 지원합니다.
파일 조작은 pytmux 서버가 직접 수행해 원격 탭이면 원격 머신의 파일시스템에 적용되고, 삭제는 확인 팝업(기본 취소)·덮어쓰기는 2단계 확인을 거칩니다.
색까지 원본 그대로: 초판의 배색이 원본 Mdir 과 미묘하게 달라, 원본 배포판 스크린샷의 픽셀을 직접 추출해 시안(#00aaaa) 크롬(상·하단 바·구분선·테두리)과 밝은 초록(#55ff55) 선택막대까지 실측값으로 맞췄습니다 — 그 시절 화면과 나란히 놓아도 같아 보입니다. 자세한 사용법은 mdir 플러그인 가이드에. - 문서 플러그인 13개 각각에 스크린샷·명령·키를 담은 개별 가이드 페이지가 생겼습니다. 플러그인 개요의 표에서 이름을 클릭하면 상세 페이지(/guide/plugin/<이름>)로 갑니다 — Claude 통합 6종, 탐색(ncd·mdir), 오버레이(clock·calendar), IME 배지, Perforce, REC 캡처까지 전부. 아울러 가이드/문서 페이지에서 섹션 사이가 과도하게 벌어지던 문제(모바일에서 특히)를 함께 고쳤습니다.
- 탭 탭이 많을 때 Esc → Tab 으로 목록을 띄워 골라 전환합니다(탭 스위처).
지금까지 탭 전환은 번호를 알아야(Esc → 1–9) 하거나 한 칸씩(prefix → n/p) 옮겨야 했습니다.
이제 Esc → Tab 을 누르면 열린 탭 목록이 뜨고, Tab 을 누를 때마다 다음(Shift+Tab 은 이전) 탭이 선택만 됩니다 —
마음에 드는 탭에서 Enter 를 누르면 그 탭으로 전환하고, Esc 면 원래 탭 그대로 취소됩니다.
열자마자 다음 탭이 선택돼 있어 Esc Tab Enter 만 치면 바로 다음 탭입니다.
목록의 번호·순서는 탭바에 보이는 그대로라(고정 탭은 * 표시로 뒤쪽) 목록의 3번이 곧 Esc → 3 과 같은 탭입니다.
왜 Windows 의 Alt+Tab 처럼 "Shift 를 놓으면 전환" 이 아닌가: 터미널은 키를 뗐다는 사실을 알려주지 않습니다 — 눌린 것만 전달되고 뗌(release) 이벤트가 아예 없습니다. 그래서 "누르고 있는 동안 목록" · "놓으면 확정" 은 터미널 앱이 원리적으로 만들 수 없어, 가장 가까운 동선인 Enter 확정으로 넣었습니다. 또 Shift+Tab 자체를 스위처에 쓰지 않은 이유는, 그 키가 Claude 의 권한 모드 순환(shift+tab to cycle)에 이미 쓰이고 있어서입니다 — 패널 안에서 Shift+Tab 은 종전대로 Claude 에 그대로 전달됩니다. - 원격 같은 원격 서버에 다시 붙어도, 고정(핀)해 둔 원격 탭이 이제 풀리지 않습니다. 원격 탭이 열려 있는 상태에서 같은 서버에 다시 remote-attach 하면 (예: 탭이 새로 늘어 목록을 갱신하려고) 걸어 두었던 핀이 전부 풀렸습니다 — 다시 붙을 때 연결을 새로 여는데, 핀을 연결에 딸린 것으로 두어 옛 연결과 함께 사라졌기 때문입니다. 핀은 연결이 아니라 내 화면의 탭바 취향이라, 이제 호스트 기준으로 기억해 다시 붙어도 그대로 유지됩니다. 그 사이 원격에 새로 생긴 탭은 비고정으로 붙고, 없어진 탭의 핀은 조용히 사라집니다 — 달라진 탭만 갱신됩니다. 끊겼다 자동 재연결될 때도 마찬가지로 유지됩니다. 다만 remote-detach 로 직접 떼어내면 그 호스트의 핀은 잊습니다 — 다시 붙이는 것은 새로 보는 것이므로 전부 비고정으로 시작합니다.
- 작성창 여러 줄로 쓰던 프롬프트를 작성창으로 가져올 때, 이제 윗줄까지 전부 따라옵니다. Claude 프롬프트에 여러 줄을 입력한 상태에서 Esc → Insert(맥은 Shift+Delete)로 작성창을 열면, 마지막 한 줄만 넘어오고 윗줄들이 사라졌습니다. pytmux 는 지금까지 사용자가 친 키를 세어 프롬프트 내용을 짐작했는데, Claude 에서 줄바꿈(Option+Enter 등)을 넣으면 그 신호가 Enter(제출)와 똑같이 도착해 — pytmux 는 "보냈구나" 하고 그때까지 센 내용을 버렸습니다. 그래서 마지막 줄바꿈 뒤에 친 것만 남았습니다. 이제 키를 세는 대신 화면에 실제로 보이는 입력창을 그대로 읽어 가져옵니다 — 줄바꿈이 어떻게 들어왔든 보이는 그대로 전부 옵니다. 덤으로 ↑ 로 불러온 예전 프롬프트나 다른 곳에서 들어온 입력처럼 이 창에서 치지 않은 내용도 이제 함께 따라옵니다.
- 스크롤백 긴 대화에서 Esc → Ctrl+↑/↓ 로 내가 이전에 입력한 프롬프트 위치로 건너뜁니다. Claude 와 길게 대화하다 보면 "아까 뭘 시켰더라" 를 찾으러 한참 스크롤해야 했습니다. 이제 Esc → Ctrl+↑ 를 누르면 바로 앞에 보낸 프롬프트가 화면 맨 위로 올라오고, 계속 누르면 한 턴씩 거슬러 올라갑니다 — Ctrl+↓ 는 반대로 되짚어 내려옵니다. 프롬프트는 한 턴의 시작이라 화면 맨 위에 놓아, 거기서부터 주고받은 내용을 그대로 읽어 내려갈 수 있습니다. 점프하면 스크롤 모드가 되어 ↑↓·PgUp 으로 주변을 살펴보다가 Esc 나 q 로 원래 자리(맨 아래)로 돌아옵니다. (Claude 가 돌고 있는 패널에서만 동작합니다 — 일반 셸에서는 인용문·diff 의 > 를 프롬프트로 잘못 짚지 않도록 켜지 않습니다.)
- 토큰 회사(조직) 관리 설정 승인 화면이 뜨는 계정은, 숨은 /usage 조회가 거기서 멈춰 사용 한도(5h·주간 %)가 통째로 안 잡히던 문제를 고쳤습니다. 텔레메트리 등 조직 차원의 관리 설정이 걸린 계정은 Claude Code 를 새로 띄울 때 "Managed settings require approval" 승인 화면이 한 번 뜹니다. 그런데 pytmux 가 시간대별 한도 %를 채우려고 사람 없이 띄우는 숨은 /usage 조회 세션도 이 화면을 그대로 만나는데, 누구도 답해 줄 수 없어 부팅 대기시간이 다 되도록 기다리다 조용히 포기했습니다 — 그래서 이 화면이 뜨는 조직 계정은 한도 %가 어제 고친 별도 터미널 기록을 포함해 전혀 쌓이지 않았습니다. 이제 이 화면을 보면 기본 선택지 (1. Yes, I trust these settings)를 그대로 확정해 자동으로 통과시키고 원래 조회를 이어갑니다.
- Claude 권한 모드 팝업이 이제 하단의 모드 표시(⏵⏵ auto mode on)를 클릭할 때만 열립니다. 지금까지는 그 줄 전체가 클릭 영역이라, 옆의 (shift+tab to cycle) 같은 힌트 문구를 누르거나 그 줄의 빈 곳을 짚어도 모드 선택 팝업이 떠서 성가셨습니다. 이제 모드 이름이 적힌 부분만 반응하고, 줄의 나머지는 여느 화면처럼 클릭이 패널로 그대로 전달됩니다. (실행 중 esc to interrupt 클릭 = 중단은 종전대로입니다.)
- 복사 Windows 패널에서도, 화면 폭 때문에 여러 줄로 접힌 긴 명령이 이제 한 줄로 복사됩니다. 마우스로 긁어 복사할 때 pytmux 는 원래 자동 줄바꿈(접힘)과 실제 줄바꿈을 구분해 접힌 줄을 한 줄로 이어 왔는데, Windows 는 콘솔(ConPTY)이 줄을 미리 접어서 전달하는 바람에 이 구분 신호가 아예 오지 않아 — 로컬이든 원격 탭이든 Windows 패널만 보이는 줄마다 줄바꿈이 들어가, 여러 줄에 걸친 명령을 붙여넣으면 조각조각 실행됐습니다. 이제 Windows 패널은 마지막 칸까지 꽉 찬 줄이 다음 줄로 이어지는 모양이면(구분선 ─·상자 테두리 │ 는 제외) 접힌 줄로 보고 한 줄로 잇습니다. 결과 — 여러 줄로 보이는 긴 명령을 긁어 붙여넣으면 한 줄 그대로 실행됩니다.
2026-07-14 화요일 pytmux zip ⬇
- 탭 탭을 고정(핀)해 오른쪽으로 밀리면, 이제 보이는 순서에 맞춰 탭 번호도 다시 매겨집니다. Esc → Shift+P 로 일부 탭을 고정하면, 그 탭들은 탭바의 오른쪽 구역으로 모여 보입니다. 그런데 화면에 보이는 위치와 Esc → 숫자 로 이동하는 탭 번호가 서로 어긋나, 왼쪽에서 세 번째로 보이는 탭인데 3 을 눌러도 다른 탭으로 가는 일이 있었습니다(특히 원격 탭이 섞여 있을 때 두드러졌습니다). 이제 왼쪽부터 보이는 순서 그대로 1, 2, 3… 으로 번호를 매겨, 보이는 순서 = 누르는 번호가 항상 일치합니다.
- 디렉토리이동 디렉토리 트리 점프(:ncd)에서, 다른 OS 를 원격으로 조종할 때 이동(cd)이 실패하던 문제를 고쳤습니다. :ncd 로 폴더를 골라 Enter 하면 그 폴더로 cd 합니다. 그런데 이 cd 명령의 형식을 내가 보고 있는 기기가 아니라 명령이 실제로 실행되는 셸의 OS 에 맞춰야 하는데, 종전엔 보는 쪽 기준으로 만들었습니다. 그래서 Windows 에서 macOS·Linux 패널을 원격으로 조종하면 윈도우 전용 형식(cd /d "…")이 그대로 나가 cd: string not in pwd: /d 로 실패했습니다. 이제 명령을 실행할 셸의 OS에 맞춰 형식을 정해, 어느 기기에서 조종하든 올바르게 이동합니다.
- 토큰 pytmux 패널이 아닌 별도 터미널에서 Claude 를 써도, 그 시간대의 사용 한도(5시간·주간 %)가 이제 기록됩니다. 토큰 사용량 [기간] 화면의 5h%·1w% 칸은 pytmux 가 숨은 /usage 조회로 채웁니다. 그런데 이 조회는 지금까지 pytmux 패널 안에서 Claude 가 돌고 있을 때만 떠서, Claude 를 별도 터미널에서 쓰면 토큰 양(왼쪽 숫자)은 잡혀도 그 시간대의 한도 %가 빈칸(·)으로 남았습니다 — 수동으로 /usage 를 친 순간만 채워졌습니다. 이제 pytmux 가 최근 Claude 사용 기록을 신호로 삼아, 패널이 없어도 한도 조회를 주기적으로 띄웁니다 — 별도 터미널로 써도 시간대별 한도 %가 이어집니다. (Claude 를 아예 안 쓰는 동안에는 조회하지 않으며, 이미 지나간 빈 시간대는 소급해 채울 수 없습니다.)
2026-07-13 월요일 pytmux zip ⬇
- 이름동기화 이름 동기화가 탭·패널·Claude 세션 이름을 한 번 맞춘 뒤에는, 그 뒤에 손수 바꾼 이름을 더 이상 되돌리지 않습니다. :namesync 규칙에 걸린 폴더에서 Claude 를 켜면 그 탭·패널·Claude 세션 이름이 지정 키워드로 한 번 통일됩니다. 그런데 그 뒤 Claude 세션 이름을 수동으로 바꿔도(/rename), 시간이 지나면 다시 원래 키워드로 되돌아가는 문제가 있었습니다 — Claude 가 잠깐 사라졌다 뜨거나 서버가 세션을 유지한 채 재시작될 때마다 동기화가 다시 발동했기 때문입니다. 이제 한 번 맞춘 패널은 같은 탭·같은 패널·같은 Claude 세션인 한 다시 건드리지 않아, 손수 지은 이름이 그대로 유지됩니다(새 셸을 띄우면 그때 다시 한 번 동기화).
- 원격 여러 기기가 한 화면을 함께 볼 때, 화면 크기를 "지금 쓰는 창"에 맞추도록 고를 수 있습니다. 한 세션을 여러 접속이 함께 보면, 화면 크기는 tmux 처럼 가장 작은 접속에 맞춰집니다(smallest, 기본). 그래서 다른 기기에 작은 창이 하나라도 붙어 있으면, 지금 크게 보고 있는 창의 아래·오른쪽에 빈 띠가 남았습니다 (07-11 원격 화면 여백 참고 — 그 작은 창을 키우거나 끊으면 해결). 이제 취향에 따라 :window-size latest(마지막으로 조작한 창 크기에 맞춤) 또는 largest(가장 큰 창)로 바꿀 수 있습니다 — :settings → 동작 → 공유크기 에서도 고를 수 있습니다. 단, 큰 쪽에 맞추는 방식에서는 작은 창 쪽이 화면을 다 못 담아 오른쪽·아래가 잘립니다(하나의 공유 화면을 나눠 보는 구조의 한계). 그래서 기본은 아무도 안 잘리는 smallest 로 두고, 필요할 때만 켜는 선택 항목으로 넣었습니다.
- 토큰 토큰 사용량 [기간] 뷰에서 월·연 합계 행의 막대를 없애, 주·일·시각 그래프가 더 길고 뚜렷하게 보입니다. 이 화면의 막대는 가장 큰 값에 맞춰 길이가 정해지는데, 월 합계는 그 아래 주·일·시각을 모두 더한 값이라 언제나 가장 길었습니다. 그래서 월 막대가 화면 폭을 독차지하고, 정작 비교하고 싶은 주·일·시각 막대는 짧게 뭉개져 차이를 알아보기 어려웠습니다. 이제 월·연 합계 행은 막대를 그리지 않아(숫자 합계는 그대로 표시), 나머지 막대가 주·일·시각 중 가장 큰 값을 기준으로 다시 펴져 의미 있는 길이로 나타납니다.
- 복사 Windows 에서 마우스로 복사한 한글이 깨지던 문제를 고쳤습니다. 어제 추가한 마우스 드래그 복사로 한글을 복사해 붙여넣으면 알 수 없는 한자·기호로 깨져 나왔습니다. 원인은 윈도우 클립보드 도구가 주고받는 글자를 시스템 코드페이지(한국어 Windows 는 cp949)로 잘못 해석한 것이었습니다. 이제 복사·붙여넣기 모두 유니코드 그대로 오가, 한글·이모지·여러 줄이 안전하게 복사됩니다.
- 작성창 맥에서도 여러 줄 작성창을 Esc → Shift+Delete 로 열 수 있습니다. 이 작성창(블록 선택 편집 → 활성 패널에 투입)은 지금까지 Esc → Insert 로 열었는데, 맥 키보드에는 Insert 키가 없어 열 방법이 없었습니다. 이제 맥에서는 Shift+Delete 가 Insert 와 같은 역할을 해, 윈도우·맥 모두 같은 방식으로 작성창을 엽니다.
2026-07-12 일요일 pytmux zip ⬇
- 복사 이제 그냥 마우스로 드래그하면 그 패널 내용만 자동으로 복사됩니다 — 외곽선·옆 패널 없이. 지금까지는 화면을 드래그해도 복사가 안 되거나(Ctrl+C 무반응), Shift+드래그로 복사하면 터미널이 화면 전체를 긁어 pytmux 패널 외곽선(│)과 옆 패널 내용까지 함께 복사되어 불편했습니다. 이제 왼쪽 버튼으로 드래그하면 pytmux 가 드래그를 시작한 패널 안으로만 선택을 가둬, 손을 떼는 순간 OS 클립보드로 자동 복사합니다 — Shift 도 Ctrl+C 도 필요 없고 외곽선·옆 패널은 안 딸려옵니다. Claude 처럼 마우스를 쓰는 화면 위에서도 됩니다(그 화면의 마우스 드래그는 복사에 양보). 드래그가 아닌 클릭은 종전대로 버튼/포커스로 갑니다. 끄려면 set mouse-drag-copy off — 그러면 드래그는 앱으로 가고, 선택은 Shift·copy-mode(prefix [)로 합니다.
2026-07-11 토요일 pytmux zip ⬇
- 원격 원격 화면이 작게(빈 여백 띠) 남고, 다른 접속을 끊어도 다시 작아지던 문제를 고쳤습니다. 한 원격 서버를 여러 기기가 함께 보거나 예전에 끊긴 접속 흔적이 남아 있으면, 화면 크기가 tmux 처럼 가장 작은 접속에 맞춰져 지금 보는 큰 화면의 아래·오른쪽에 빈 띠가 남았습니다. 게다가 그 접속을 끊거나 "다른 접속 내보내기"(detach -a)를 해도 곧바로 자동 재접속해 다시 작아졌습니다. 이제 의도적으로 내보낸 접속은 다시 붙지 않아 (detach -a · 접속을 가진 기기에서 remote-detach) 화면이 바로 가득 찹니다. 절전·네트워크 단절로 생긴 유령 접속까지 자동으로 정리하려면, 원격 서버를 여는 호스트에 SSH keepalive 를 설정하세요 — 가이드 10. 원격 페더레이션에 macOS·Linux·Windows 방법을 정리했습니다.
- 원격 같은 원격 서버에서 열어 둔 다른 탭을, 지금 보는 탭에 패널로 합칠 수 있습니다. 지금까지는 마우스로 탭을 끌어다 놓아야만 같은 원격 서버의 두 탭을 한 화면(패널 분할)으로 합칠 수 있었습니다. 이제 :merge-remote-tab 명령이나 우클릭 메뉴 → 패널에서, 같은 원격 서버에서 열린 다른 탭을 목록으로 띄워 골라 현재 탭에 패널로 합칠 수 있습니다 — 마우스 없이 키보드만으로도 됩니다. (합칠 때 h/v 로 좌우·상하 분할 방향을 고를 수 있습니다.)
- 설치 필요한 구성요소가 빠졌을 때, 알 수 없는 오류 대신 설치 방법을 안내합니다. pytmux 는 화면 표시에 textual·pyte 같은 추가 구성요소가 필요합니다. 이들이 설치되지 않은 채 실행하면 지금까지는 알아보기 어려운 오류 메시지만 그대로 쏟아졌습니다. 이제 빠진 구성요소의 이름과 함께, 지금 쓰는 파이썬에 맞춘 설치 명령 (python -m pip install -r requirements.txt)을 바로 알려 주고 종료합니다.
2026-07-10 금요일 pytmux zip ⬇
- 원격 분리해 둔 원격 탭이, 원격 쪽에서 다른 탭을 닫아도 계속 숨겨진 채 유지됩니다. 어제(07-09) 추가한 원격 탭 하나씩 닫기에서, 탭을 분리한 뒤 원격 서버 쪽에서 다른 탭을 닫거나 순서를 바꾸면 내가 숨겨 둔 탭이 엉뚱한 탭으로 옮겨가거나 다시 나타나던 문제를 고쳤습니다. 원격 탭을 위치가 아니라 고유한 안정 표식으로 추적하게 바꿔, 원격 쪽 탭 구성이 어떻게 바뀌어도 내가 분리한 바로 그 탭만 정확히 숨겨진 채 유지됩니다.
- 원격 고정(핀)해 둔 원격 탭도 원격 쪽 탭 변화에 안 어긋납니다. 위의 분리 수정과 같은 원리로, 원격 탭을 고정해 둔 경우에도 원격 서버 쪽에서 다른 탭을 닫거나 순서를 바꾸면 고정 표시가 엉뚱한 탭으로 옮겨가던 문제를 함께 고쳤습니다. 고정도 위치가 아니라 고유한 안정 표식으로 추적해, 원격 쪽 탭 구성이 바뀌어도 내가 고정한 그 탭이 그대로 고정됩니다.
- Windows Claude 종료 요약이 마침 치던 명령을 실수로 실행하던 문제를 고쳤습니다. Claude 를 끝내면 나오는 토큰 사용량 요약은 셸 프롬프트를 정리하려고 Enter 를 몇 번 보냅니다. 그런데 Claude 가 막 끝난 직후 다음 명령을 치고 있던 중이면, 그 Enter 가 치던 명령을 그대로 제출해 버릴 수 있었습니다. 이제 입력 중이면 요약을 잠시 미뤘다가 입력을 끝낸 뒤에 표시해, 치던 명령이 의도치 않게 실행되지 않습니다.
- Windows 새 탭·새 패널이 Enter 를 누르기 전까지 빈 화면으로 나오던 문제를 고쳤습니다. 어제(07-09) 넣은 콘솔 UTF-8 자동 전환의 부작용이었습니다. 한국어 Windows(cp949)에서 chcp 65001 전환은 콘솔이 글자 폭을 다시 계산하며 화면을 통째로 지우는 동작을 동반하는데, 셸이 프롬프트를 먼저 그린 뒤에 전환이 실행되면 그 클리어가 프롬프트를 지워 버려 새 탭이 빈 화면으로 보였습니다(Enter 를 치면 새 프롬프트가 나와 그때부터 정상). 이제 UTF-8 전환을 셸이 뜨기 전에 먼저 완료하고(늦어지면 전환을 포기해 화면을 지키는 쪽을 우선), 미리 준비해 두는 콘솔 풀에는 채워 넣는 시점에 전환을 끝내 새 탭 속도도 그대로입니다.
- 표시 Claude Code 화면의 회색 블록 속 검은 직사각형 구멍을 메꿨습니다. Claude Code 는 대화 블록을 회색 배경으로 칠하면서, 표(탭 문자) 간격의 공백만 기본 배경으로 내보냅니다. 그 공백 칸에는 터미널의 기본 배경(대개 검정)이 그대로 비쳐, 회색 블록 한가운데 검은 사각형들이 뚫린 것처럼 보였습니다. 이제 같은 배경색 사이에 낀 짧은 공백 구간은 주변과 같은 배경으로 채워 표시합니다(다른 프로그램 화면에 영향이 없도록 양쪽 배경이 같은 짧은 구간만).
- Windows 완전 재시작 후 첫 실행이 "서버 기동 실패"로 끝나던 문제를 고쳤습니다. Windows 에서 kill-server 로 pytmux 를 완전히 끝낸 뒤 다시 실행하면 첫 번째 시도가 늘 실패하고 두 번째에야 열렸습니다. 원인은 이전 서버가 남긴 옛 포트 기록 파일: Windows 는 아무도 듣지 않는 포트로의 접속 시도를 곧바로 거절하지 않고 제한시간을 다 채우게 만들기 때문에, 새 서버가 이미 떠 있는데도 기동 확인이 옛 포트만 두드리다 4초 예산을 넘겨 실패로 오판했습니다. 이제 서버(와 세션유지 도우미)가 종료할 때 포트 기록을 스스로 정리하고, 혹시 남아 있어도(강제 종료 등) 죽은 포트 확인을 짧게 끊어 첫 실행부터 바로 열립니다.
2026-07-09 목요일 pytmux zip ⬇
- 원격 다른 서버의 원격 탭을 이제 하나씩 닫을 수 있습니다. remote-attach 로 붙여 온 원격 탭은, 지금까지 하나를 닫으면 그 서버에서 온 원격 탭이 한꺼번에 전부 사라졌습니다. 이제 탭의 [x](또는 Esc → x)로 그 탭 하나만 화면에서 분리되고, 같은 서버의 다른 원격 탭과 원격 셸은 그대로 남습니다. 그 서버의 마지막 원격 탭까지 닫으면 연결이 정리됩니다. 분리한 탭은 다시 붙이거나 pytmux 를 재시작해도 숨긴 상태가 유지됩니다.
- Windows 한국어 Windows 에서 패널 속 한글이 깨지고 화면이 무너지던 문제를 고쳤습니다. 한국어 Windows 의 콘솔은 기본 문자 인코딩이 옛 방식(cp949)이라, Claude Code 처럼 UTF-8 로 출력하는 최신 도구의 한글이 이상한 한자·물음표로 깨지고 제어 코드까지 글자로 새어 나와 화면 배치 전체가 어긋나 보였습니다. 이제 pytmux 가 패널을 열 때 그 패널의 콘솔을 UTF-8 로 자동 전환해(수동 chcp 65001 의 자동화) 한글과 화면이 온전하게 나옵니다. 옛 인코딩으로 출력하는 특수한 도구를 쓴다면 PYTMUX_KEEP_CODEPAGE 환경변수로 이 자동 전환을 끌 수 있습니다.
- Windows Claude 종료 시 나오는 토큰 사용량 요약이 더는 프롬프트에 덮이지 않습니다. Windows 에서 Claude 를 끝내면 나오는 토큰 요약이 셸 프롬프트와 겹쳐, Enter 를 누를 때마다 프롬프트가 요약을 한 줄씩 덮어버렸습니다. 이제 요약 블록을 프롬프트 위에 두고 새 프롬프트와 커서가 그 아래에 오도록 바꿔, 이후 타이핑이나 Enter 가 요약을 건드리지 않습니다.
- 토큰 토큰 사용량 [세션] 뷰에서 행을 선택해도 현재 세션 표시가 유지됩니다. [세션] 뷰는 지금 보고 있는 탭의 세션을 주황색으로 알려 주는데, 그 행을 선택(파란 막대)하면 색이 덮여 어느 행이 현재 세션인지 알 수 없었습니다. 이제 선택된 상태에서도 주황색 글자가 그대로 보입니다.
2026-07-08 수요일 pytmux zip ⬇
- 이름 동기화 자동 이름 맞추기가 입력 중에는 끼어들지 않습니다. 이름 동기화(또는 탭→세션 이름 맞추기)가 Claude 세션에 /rename 을 자동으로 넣을 때, 마침 Claude 입력창에 무언가 타이핑하던 중이면 그 글자를 덮어써 엉키던 문제를 고쳤습니다. 이제 입력창에 쓴 내용이 있으면 이름 맞추기를 잠시 미뤘다가, 그 줄을 보내거나 지워 입력창이 빈 다음에 조용히 적용합니다.
- Windows Windows 에서도 Claude 를 끝내면 토큰 사용량 요약이 항상 보입니다. 지난 7월 5일 고친 ‘Claude 종료 시 토큰 요약 표시’가 Windows 에서는 안 뜰 때가 있던 것을 마저 고쳤습니다. Windows 의 기본 셸(cmd)로 돌아온 것을 pytmux 가 셸로 알아보지 못해 종료를 놓치던 탓으로, 이제 cmd·PowerShell 로 돌아와도 토큰 요약을 놓치지 않습니다.
- 작성창 여러 줄 작성창에서 Ctrl+Home·Ctrl+End 로 글 전체의 맨 처음·맨 끝으로 한 번에 이동할 수 있습니다. Claude 패널의 ESC → Insert 작성창에서, 줄 단위로 움직이는 Home·End 와 달리 Ctrl+Home 은 글 전체의 맨 앞으로, Ctrl+End 는 맨 끝으로 커서를 옮깁니다.
- 이름 동기화 정해 둔 폴더에서 Claude Code 를 실행하면 탭·패널 이름과 Claude 세션 이름이 미리 정한 키워드로 한 번에 맞춰집니다. 컴퓨터·운영체제·폴더별로 키워드를 정해 두면(:namesync 편집기로 규칙을 추가·수정), 그 폴더에서 Claude 를 띄우는 순간 pytmux 탭 이름과 패널 제목이 그 키워드로 바뀌고, Claude 세션도 /rename 으로 같은 이름이 됩니다. 여러 대의 컴퓨터에서 경로가 서로 달라도 각 컴퓨터·OS 에 맞는 규칙이 알아서 적용됩니다. 기존 Claude 기능과 분리된 새 플러그인이라, 필요 없으면 꺼 둘 수 있습니다.
2026-07-07 화요일 pytmux zip ⬇
- 작성창 여러 줄 작성창에 붙여넣은 이미지·여러 줄 내용이 그대로 딸려오고, 작성창 안에서도 붙여넣기·명령을 쓸 수 있습니다. Claude 패널에서 ESC 뒤 Insert 로 여는 여러 줄 작성창이, 프롬프트에 이미 붙여넣어 둔 이미지나 여러 줄 텍스트까지 이제 함께 불러옵니다(전에는 이미지가 빠졌습니다 — Claude 가 붙여넣은 이미지를 [Image #N] 첨부로 바꿔 화면에서 원래 경로를 되돌릴 수 없던 탓). 작성창 안에서 텍스트·이미지를 새로 붙여넣어도 그대로 유지되고, 작성창을 닫고 프롬프트로 돌아가도 남습니다. 또 작성창이 열린 채로 ESC → : 로 명령(예: 이미지 붙여넣기)을 실행할 수 있습니다. (이 때문에 작성창에서 ESC 는 이제 ‘메뉴’로 바뀌어, 취소는 ESC 를 두 번 누릅니다.)
- 마우스 마우스를 움직였을 때 명령줄에 이상한 글자가 쏟아지던 문제를 고쳤습니다. 일부 터미널 프로그램(마우스를 쓰는 TUI)을 끝낸 뒤 마우스를 움직이면 35;34;55M 같은 뜻 모를 문자가 명령줄에 마구 입력되던 현상으로, 특히 원격 탭(⇄)에서 눈에 띄었습니다. 프로그램이 종료되면서 마우스 추적을 끄는 신호를 여러 개 한꺼번에 묶어 보내면 pytmux 가 그 신호를 놓쳐 마우스 상태가 켜진 채로 남았던 것으로, 이제 묶음 신호도 제대로 알아채 마우스 움직임이 더는 글자로 새어 나오지 않습니다. (움직임을 멈추면 잠잠해지지만 다시 움직이면 재발하던 것도 함께 해소됩니다.)
- 원격 원격 탭에 걸어 둔 고정(핀)이 재시작 후에도 유지됩니다. 다른 컴퓨터에 붙어 만든 원격 탭(⇄)을 Shift+P 로 고정해 두었다가 전체 재시작(restart-all)을 하면 그 고정이 풀려 버리던 문제를 고쳤습니다. 고정 정보가 재시작 때 함께 저장되지 않아 다시 연결하면 사라졌던 것으로, 이제 원격 탭 고정도 재시작 뒤 그대로 살아납니다. (일반 로컬 탭 고정은 원래부터 유지됐습니다.)
2026-07-06 월요일 pytmux zip ⬇
- 여러 줄 작성창에 프롬프트 기호가 딸려오지 않습니다. Claude 패널에서 ESC 뒤 Insert 로 여는 여러 줄 작성창(블록 선택 편집이 되는 별도 입력창)이 지금 입력하던 내용을 미리 채울 때, 프롬프트 앞의 기호(❯)까지 함께 들어가던 문제를 고쳤습니다. 최신 Claude Code 가 프롬프트 기호를 > 에서 ❯ 로 바꾼 것을 반영해, 이제 실제 입력한 글자만 깔끔하게 옮겨옵니다.
- 성능 · Windows Windows 에서 앱이 처음 뜨는 속도가 빨라졌습니다. Windows 는 (macOS 와 달리) 터미널을 담당하는 백그라운드 호스트 프로세스를 따로 띄워야 하는데, 그 준비를 서버가 켜지는 동안 미리·겹쳐서 시작하도록 바꿨습니다. 또 호스트 연결을 기다릴 때 쓰던 고정 대기 시간(0.1초)을 없애 준비되는 즉시 붙도록 해, 콜드 스타트에서 체감되는 지연을 줄였습니다. (새 탭 열기·종료 속도는 Windows 콘솔이 터미널마다 별도 프로세스를 요구하는 구조상 한계가 있어 그대로입니다 — 이 부분은 원인을 분석해 문서로 남겼습니다.)
2026-07-05 일요일 pytmux zip ⬇
- Claude 를 끝내면 토큰 사용량이 항상 보입니다. Claude Code 세션을 exit 로 끝냈을 때 이번 세션에 쓴 토큰 사용량 요약이 보일 때도 안 보일 때도 하던 문제를 고쳤습니다. 사용량 한도(/usage) 정보가 마침 없을 때 요약이 통째로 비던 것이 원인으로, 이제 이번 세션 토큰 총량을 항상 함께 보여 비지 않으며(한도 막대는 있을 때 곁들입니다), 셸로 돌아온 순간을 놓치지 않도록 종료 감지도 더 끈질기게 재시도합니다.
- 안정성·보안 여러 클라이언트가 붙거나 느린·원격 연결이 섞여도 화면 갱신이 멈추지 않도록 서버의 화면 송신 경로를 한 갈래로 정리하고, 만일 렌더 루프가 예기치 못하게 멈춰도 스스로 되살아나도록 했습니다. 아울러 Windows 로컬 연결의 인증 전 동시 연결 수를 제한해 자원 고갈(DoS)을 막았습니다.
- 안정성 · Windows 서버를 껐다 켜거나 재시작하면 백그라운드 터미널 호스트가 곧바로 정리됩니다. Windows 에서 종료 뒤에도 그 프로세스가 최대 20초 넘게 고아로 남던 문제를 고쳐, 즉시 결정적으로 종료되도록 했습니다.
2026-07-04 토요일 pytmux zip ⬇
- 원격 탭에 붙으면 화면 크기가 제대로 맞습니다. ssh 로 원격 세션에 다시 연결할 때 화면이 예전에 접속했던 다른(작은) 기계의 크기로 고착되던 문제를 고쳤습니다 — 끊긴 연결을 제때 회수하도록 해, 지금 보고 있는 화면 크기에 맞춰 펼쳐집니다.
- 상태줄의 현재 모델 배지가 정확해졌습니다. 화면 아래 상태줄의 현재 Claude 모델 배지가, 대화나 문서 본문에 적힌 다른 모델 이름을 현재 모델로 잘못 읽어 엉뚱하게 표시되던 문제를 고쳤습니다. 이제 진짜 모델 배지에만 반응하고, 배지가 화면에 없으면 /usage 로 정확히 확인합니다.
- display-popup 으로 대화형 팝업을 띄웁니다. display-popup(별칭 popup) 명령이 이제 tmux 처럼 대화형 셸·TUI 를 화면 중앙에 떠 있는 팝업으로 실행합니다 (전에는 명령 출력만 보여 주는 비대화형이었습니다). 크기·명령을 -w/-h/-C 로 지정하고, 명령이 끝나면 팝업이 자동으로 닫힙니다.
2026-07-03 금요일 pytmux zip ⬇
- 원격 서버가 이상해도 내 화면이 안전합니다. ssh 로 원격 pytmux 탭을 보는 중 상대 서버가 손상되거나 악의적인 화면 프레임을 보내면 클라이언트가 통째로 종료되던 문제를 고쳤습니다 — 이제 이상한 프레임은 조용히 버리고 앱은 계속 돕니다.
- 보안·안정성 전체 코드베이스를 보안 점검한 뒤 하드닝했습니다 — 토큰·세션 상태 같은 민감 파일 권한을 소유자 전용(0600)으로 통일하고, Windows 로컬 연결의 인증 전 자원 고갈(DoS)을 막고, ssh 자기접속 차단· 공개 사이트 CSP·배포 파이프라인 고정 등을 적용했습니다.
- 부하가 걸려도 화면이 흔들리지 않습니다. 옆 패널에서 무거운 작업(벤치마크 등)이 CPU 를 가득 채우면 Claude Code 화면이 잠깐 반쪽으로 겹쳐 보이던 문제를 고쳤습니다. 프레임 도중 출력이 잠시 멈춰도 반쪽 화면을 강제로 내보내지 않고 직전 완성 화면을 그대로 유지하도록 대기 창을 넉넉히(0.15초 → 1초) 늘렸습니다 — 잘 짠 앱일수록 오히려 더 안전하고, 진짜로 멈춘 앱은 1초 안에 자동으로 풀립니다.
- Windows 에서 :ncd 디렉토리 트리가 현재 폴더를 제대로 짚습니다. Windows 기본(host) 모드에서 :ncd(디렉토리 트리로 이동)를 열면 항상 최상위 드라이브만 강조되고 지금 있는 폴더를 못 찾던 문제를 고쳤습니다. 서버를 재시작해 다시 붙은 뒤에도 현재 위치가 유지됩니다.
2026-07-01 수요일 pytmux zip ⬇
- 실수로 앱이 통째로 닫히지 않습니다. 원격 탭이 열려 있는 채로 마지막 로컬 탭을 닫으면 앱 전체가 종료되는데, 이제 정말 끝낼지 확인을 먼저 받습니다.
- 토큰 사용량 세션 뷰가 더 정확해졌습니다. 세션 목록이 날짜뿐 아니라 날짜 + 시각을 함께 보여주고, 같은 날 안에서도 실제 시:분 기준 최신순으로 정렬됩니다(전에는 하루 단위로만 정렬돼 순서가 뒤섞였습니다).
- 안정성 Windows 에서 재시작 후 마우스 이동·클릭이 프롬프트에 좌표 문자로 새던 문제를 고쳤습니다 — 재시작을 제자리 재접속으로 바꿔 콘솔·마우스 상태를 건드리지 않도록 했습니다.
2026-06-30 화요일 · 소개 사이트 공개 🚀 pytmux zip ⬇
- 소개 사이트를 공개했습니다. pytmux.woojinkim.org 에서 기능·화면·설치·상세 가이드를 한곳에서 볼 수 있습니다. 스크린샷은 클릭하면 크게 확대됩니다.
- Claude 화면 깨짐 자동 완화. 화면이 깨졌을 때만(깨짐 신호가 보일 때만) 자동으로 다시 그리는 on-corruption 모드를 더했습니다 — 스크롤·동기화 출력 근본 수정 위에 얹은 바닥 안전망입니다.
2026-06-29 월요일 pytmux zip ⬇
- Claude 화면 Claude 화면에서 글자가 겹쳐 보이던 근본 원인을 고쳤습니다. 화면의 일부 영역만 위·아래로 밀어 올리는 터미널 신호(SU·SD, 스크롤 영역 스크롤)를 pytmux 가 처리하지 못해 Claude 출력이 서로 겹쳐 그려지던 것을 제대로 구현해 근본 수정했습니다. 그동안 임시로 얹어 두었던 재구성 레이어 플러그인은 역할을 다해 제거했습니다.
- Windows Windows 에서 Claude Code 를 실행하면 키 입력이 멈추던 문제를 고쳤습니다.
- 공유 세션 여러 사람이 같은 세션을 함께 볼 때 생기던 화면 속 빈 띠를 없앴습니다. 응답 없이 끊긴(죽은) 클라이언트를 제때 회수하지 못해 그 자리가 빈 줄로 남던 것을 고쳤습니다.
2026-06-25 목요일 pytmux zip ⬇
- 표시 ssh 로 한글·중문·일문 단말에 접속했을 때 패널 테두리와 글자가 한 칸씩 밀려 겹쳐 보이던 문제를 고쳤습니다. 단말마다 폭이 애매한 문자('모호폭')를 1칸으로 그리는지 2칸으로 그리는지 스스로 알아내 일관되게 처리하고, 그 설정을 원격 탭에도 전파합니다. 박스 그리기·블록 문자는 1칸으로 예외 처리해 테두리가 어긋나지 않습니다.
- 설정 모호폭 처리를 실행 중에 바꿀 수 있고, set 명령이 옵션을 미리 제안합니다. :set ambiguous-width narrow|wide|auto 로 즉시 전환하고, set 명령에서 옵션 이름과 값을 흐릿한 미리보기(ghost)와 후보 목록(↑↓)으로 자동완성합니다.
- 안정성 화면 갱신이 밀려도 앱이 통째로 종료되지 않습니다. 갱신이 쌓여 일부를 버려야 할 때(backpressure) 클라이언트가 끝나 버리던 것을 고쳐, 이제 조용히 끊고 자동으로 다시 연결합니다.
2026-06-24 수요일 pytmux zip ⬇
- 원격 · 토큰 원격 탭을 보는 중에는 토큰 사용량 팝업이 그 상대 컴퓨터의 토큰을 보여줍니다. 어느 기계의 값인지 ⇄host 라벨로 출처를 표시하고, 요청한 화면에만 회신하며, 상대가 응답하지 않으면 안내를 띄우고 넘어갑니다.
- 토큰 집계가 더 정확해졌습니다. 표시 값에 캐시(cache) 사용분까지 포함해 실제 사용량에 더 가깝게 맞췄습니다.
2026-06-23 화요일 pytmux zip ⬇
- 토큰 토큰 사용량을 화면 스크랩이 아니라 실제 대화 기록에서 실측합니다. Claude Code 의 대화 기록(트랜스크립트)을 직접 읽어 회계하도록 바꿔, 화면만 긁을 때 놓치던 양을 되살렸습니다. 팝업 수치가 실제와 맞도록 지난 기간까지 소급해 복원했습니다.
- 원격 원격 탭에 붙을 때 상대 서버가 꺼져 있으면 알아서 띄웁니다. ssh 로 원격 세션에 연결할 때 상대 pytmux 서버를 자동으로 기동해 연결 신뢰성을 높였습니다.
- 프롬프트 작성 팝업에서 Ctrl+A 로 전체 선택할 수 있습니다.
2026-06-22 월요일 pytmux zip ⬇
- 탭 고정 자주 쓰는 탭을 고정(핀)해 실수로 닫히지 않게 할 수 있습니다. Shift+P 로 탭을 고정하면 탭바 오른쪽 구역에 따로 모여 눈에 잘 띄고 실수로 닫는 것을 막아 줍니다. 원격 탭도 고정할 수 있습니다.
- 마우스 · Windows Windows 에서 마우스를 움직이면 좌표 문자가 새던 문제를 고쳤습니다. ConPTY 가 마우스 추적을 과하게 광고하던 것을 눌러, 마우스 움직임이 명령줄로 새어 나오지 않도록 했습니다.
- 모델 배지 상태줄의 현재 Claude 모델 배지가 정확해졌습니다. sonnet-255 같은 오표기를 바로잡고, 작업 도중 모델이 잠깐 다른 모델로 튀어 보이던 것도 안정화했습니다.
- 여러 줄 프롬프트를 이력 팝업에서 여러 행으로 펼쳐 볼 수 있습니다.
- Claude 토큰을 대신 아껴 주려던 자동 개입을 걷어냈습니다 — 6월 10일에 넣었던 컨텍스트 하드스톱 자동 복구(/compact 자동 입력)를 포함해 전부 제거했습니다. 컨텍스트가 꽉 차 멈췄을 때 pytmux 가 스스로 /compact 를 넣어 이어 가게 하던 기능인데, 대화를 요약해 버리는 것은 사용자가 고를 일이고 자동으로 하면 오히려 토큰을 더 쓰게 되는 경우가 있어 뺐습니다. 지금은 그 상태를 감지만 해서 사용량 한도와 헷갈리지 않게 구분할 뿐, 어떤 키도 대신 넣지 않습니다.
2026-06-21 일요일 pytmux zip ⬇
- 토큰 토큰 사용량 뷰를 모델별 색으로 나눠 보여줍니다. Haiku·Sonnet·Opus·Fable 를 서로 다른 색으로 분해하고 범례를 붙였으며, 막대도 모델 구성비대로 색을 나눕니다. 기간 뷰는 월→주→일→시각 하나의 계층 시간 트리로 통합했습니다.
- 상태줄 현재 Claude 모델 배지를 상태줄에 항상 표시하고, 세션을 시작할 때 어떤 모델인지 힌트 배지를 곁들입니다.
- 네트워크가 끊겨 응답이 없을 때 스스로 다시 시도합니다. Claude 가 No response from API 상태에 빠지면 이를 감지해 1분 뒤 자동 재시도합니다.
2026-06-20 토요일 pytmux zip ⬇
- 서버 정보 서버 정보 팝업에 최근 60분 응답 지연(RTT) 그래프가 생겼습니다. 연결이 얼마나 빠릿한지 한눈에 볼 수 있고, 그래프는 디스크에 남아 재시작해도 유지됩니다. F10 으로 전체 메뉴에 바로 들어갈 수 있습니다.
- 안정성 · 보안 끊긴 연결 회수·백그라운드 호스트 멈춤·자원 누수 등 여러 안정성 문제를 손봤습니다. 아울러 적대적인 입력을 견디는지 보안 레드팀(퍼징·자원 감시)을 강화했습니다.
- 원격 원격 탭의 닫기([x])가 앱 종료 대신 연결 해제(detach)로 이어집니다. 또 세션 끝의 피드백 문구 숨김을 별도 플러그인으로 분리했고, 명령 프롬프트가 인자 이력(remote-attach 등)을 추천·자동완성합니다.
2026-06-19 금요일 pytmux zip ⬇
- 작성창 Claude 프롬프트를 여러 줄로 골라 편집하는 작성창이 생겼습니다. ESC 뒤 Insert 로 여는 여러 줄 작성창(컴포즈 오버레이)이 지금 입력하던 내용을 이어받고, 저장하지 않은 초안을 보존하며 한글 입력도 지원합니다. (이후 이미지·붙여넣기까지 더해집니다.)
- 컨텍스트 메뉴 서브메뉴가 오른쪽으로 펼쳐지고, 박스 바깥을 누르면 닫힙니다.
- 보안 · 안정성 백그라운드 터미널 호스트 연결에 인증을 더하는 등 보안을 손봤고, 전체 재시작(restart-all) 뒤 유휴 Claude 패널이 비던 문제를 고쳤습니다.
2026-06-18 목요일 pytmux zip ⬇
- Windows Windows 에서 서버를 재시작해도 실행 중이던 프로그램이 살아남습니다. 터미널을 별도 프로세스(아웃오브프로세스 pty-host)로 옮겨, 서버가 껐다 켜져도 그 안에서 돌던 작업이 이어지도록 했습니다.
- Claude 이 컴퓨터의 Claude 세션 목록을 골라 새 탭에서 이어갈 수 있습니다. claude-resume 플러그인으로 지난 세션을 피커에서 골라 재개하고, 세션을 끝내면 토큰 사용량 화면이 자동으로 뜹니다.
- 설정 · 키 설정 팝업에 '키' 탭을 새로 두어 ESC 모드·prefix 모드 바인딩을 한눈에 볼 수 있게 했습니다. Shift+ESC 가 안 되는 단말을 위해 ESC 모드에서 e 로 활성 패널에 ESC 를 보낼 수 있습니다.
2026-06-17 수요일 · 깃헙에 공개 시작 🐙 pytmux zip ⬇
- Claude 계정 Claude 계정에 별칭을 붙여 왼쪽 아래에 표시할 수 있습니다. 감지된 계정을 나열하고 별칭을 편집·표시 방식을 고르는 관리 화면을 더했습니다.
- 토큰 토큰 사용량 시간(hour) 뷰에 주간 한도(1w%) 열이 생겼고, 팝업의 탭·필터를 2단으로 다시 짰습니다.
- 원격 원격 탭을 보는 중 동작이 엉뚱한 로컬 패널로 가던 버그들을 고쳤습니다. 붙여넣기·이름 변경(rename)·디렉토리 트리(:ncd)가 이제 원격 쪽에 제대로 전달됩니다. 화면을 통째로 다시 그리는 redraw 명령도 새로 넣었습니다.
- 구성 설정·상태·기록을 PYTMUX_HOME 한 디렉토리로 통합(선택)해 관리가 쉬워졌습니다.
2026-06-17 부터 GitHub 공개 저장소에도 변경 기록이 남기 시작했습니다. 그 아래(이전)는 Perforce 형상관리 기록에서 복원한 초기 개발 이력으로, 눈에 보이는 큰 변화 위주로 추렸습니다.
2026-06-15 월요일
- 화면 처리 화면을 그리는 VT 해석기를 자체 구현한 것으로 바꿨습니다. 그동안 여러 곳에 두었던 예외 처리(우회)를 하나로 흡수하면서 속도는 그대로 유지했고, :set vt_parser 로 전환할 수 있습니다. 이후 화면 겹침·스크롤 문제를 근본적으로 고치는 토대가 됩니다.
- 상태줄 상태줄의 배지를 눌러 바로 조작할 수 있습니다. 사용 한도·자동재개(AR)·경고 배지를 클릭·터치하면 관련 팝업이 열립니다. 원격 탭에서 자동재개가 엉뚱한 탭에 걸리던 버그도 고쳤습니다.
- 사용량 한도 한도 팝업을 다듬었습니다 — 막대의 빈 부분을 회색 트랙으로 구분하고, 계정 이메일을 전체 표시하며, 박스 바깥을 눌러 닫을 수 있습니다. 네트워크 오류 시 최대 5분까지 재시도합니다.
2026-06-14 일요일
- 플러그인 플러그인 관리 팝업(:plugins)이 생겼습니다. 설치된 기능 목록을 보고 개별로 켜고 끌 수 있으며, 설정은 저장돼 다음에도 유지됩니다.
- 토큰 사용량 팝업의 빽빽하던 상단 한도 정보를 [한도] 전용 서브뷰로 분리해 작은 화면에서도 깔끔해졌고, 버전 팝업은 가운데 정렬·실시간 업타임으로 다듬었습니다.
2026-06-13 토요일
- 원격 다른 컴퓨터의 pytmux 탭을 내 창으로 끌어와 함께 다루는 기능을 강화했습니다. 원격 탭을 분홍색으로 뚜렷이 구분하고 로컬 탭과 섞이지 않게 했으며, 원격에서 pytmux 를 또 실행하면 거부하는 대신 바깥 세션에 자동으로 이어 붙입니다.
- 플러그인 프롬프트 이력을 독립 플러그인으로 다시 만들고, 화면 출력 캡처(REC) 기능도 플러그인으로 분리했습니다. 현재 워크스페이스의 Perforce 제출 목록을 보는 :p4changes 플러그인도 추가했습니다.
- 보안·성능 전체 코드를 감사해 속도·보안 개선 14건을 반영했습니다.
2026-06-12 금요일
- 다국어 모든 화면을 한국어·영어로 전환할 수 있습니다. :set lang ko|en 로 상태줄·메뉴·팝업 문구가 통째로 바뀝니다(클라이언트별 설정).
- 토큰 토큰 사용량 팝업을 다시 설계했습니다 — 한 표에 한 가지 관점(기간·계정·세션)만 담아 요일·계정별로 파고들 수 있습니다.
- Windows · 표시 Windows 터미널 백엔드를 새 방식(owned ConPTY)으로 기본 전환하고, 비활성 패널을 흐리게(dim) 처리해 외곽선 없이도 활성 패널이 구분되도록 했습니다.
2026-06-11 목요일
- 토큰 토큰 사용률을 화면 스크랩 대신 실제 한도(/usage)로 표시하도록 1차 기준을 바꿔, 상태줄 수치가 실제와 맞게 됐습니다.
- Windows Windows 에서 한글 등 여러 바이트 글자가 깨지던 문제를 고쳤습니다. 터미널을 직접 소유하는 새 백엔드(owned ConPTY)로 글자 경계 손상을 해결했습니다.
- 사용량 화면에 다음 리셋까지 남은 시간을 카운트다운으로 보여주는 뷰를 더했습니다.
2026-06-10 수요일
- IME 한/영 입력 상태를 오른쪽 위 배지로 보여줍니다. 지금 어느 입력 상태인지 별도 플러그인 배지로 확인할 수 있습니다.
- Claude 컨텍스트가 꽉 차 멈추면 자동으로 복구합니다 — 하드스톱을 감지하면 즉시 /compact 를 넣어 이어가게 합니다.
※ 이 기능은 2026-06-22 에 제거됐습니다 — 지금 배포본은 그 상태를 감지만 하고 /compact 를 대신 넣지 않습니다. - 패널 제목 줄을 잡아끌어(드래그) 자리 맞바꿈·다른 탭으로 이동·새 탭으로 분리할 수 있습니다. 시계·달력도 각각 플러그인으로 분리했습니다.
2026-06-09 화요일
- 디렉토리 이동 디렉토리 트리로 폴더를 오가는 :ncd 가 생겼습니다. 루트부터 현재 폴더까지 트리로 펼쳐 화살표로 탐색하고 이름 일부를 입력해 빠르게 찾을 수 있습니다(옛 Norton Commander 풍 파랑·시안 팔레트).
- IME 한글을 조합할 때 패널 테두리에 잔상이 남던 문제를 고쳤습니다. 하드웨어 커서를 활성 패널 커서에 맞춰 해결했습니다.
- 플러그인 Claude 관련 기능·시계·달력·ncd 를 각각 플러그인으로 분리했습니다 — 디렉토리를 지우면 그 기능만 조용히 사라지는 구조입니다.
2026-06-08 월요일
- Claude 새 Claude 세션을 자동으로 준비하고(원격제어+권한 자동 1회), 상태줄의 모델 배지를 눌러 모델·컨텍스트를 바꾸는 팝업을 엽니다.
- 사용량 /usage 의 세션·주간 한도를 막대 그래프로 보여주고, 전송 오류가 나면 1분 뒤 자동으로 다시 시도합니다.
- 단일 Claude 패널의 탭 이름을 바꾸면 Claude 세션에도 /rename 으로 반영됩니다.
2026-06-07 일요일
- 사용량 숨은 세션으로 실제 사용 한도를 확보하는 '그림자 /usage' 조회를 도입해, 표시되는 한도가 실제 값과 맞도록 했습니다.
- 보안 연결 인증 토큰으로 허가되지 않은 접속을 차단하고, 접속자 신원(UID)을 검증하며, 토큰·세션 같은 민감 파일 권한을 소유자 전용(0600)으로 잠갔습니다.
- 토큰 토큰 기록 저장소를 SQLite 로 옮기고 세션별 집계 화면을 더했습니다. 전체 재시작(restart-all) 시 화면 색·커서·위치도 정확히 복원됩니다.
2026-06-06 토요일
- 성능 화면 갱신을 크게 빠르게 했습니다. 바뀐 줄만 골라 보내(트래픽 약 28배 절감)·다시 그려(바쁠 때 약 18배) 원격·고부하에서 훨씬 매끄럽습니다.
- 재시작 작업을 유지한 채 서버를 다시 시작하는 restart-all 과, 미리 안전을 점검하는 restart-check(드라이런)를 추가했습니다. version 으로 버전·업타임도 볼 수 있습니다.
- 문서 상세 매뉴얼과 실제 화면 스크린샷(SVG)을 갖췄습니다.
2026-06-05 금요일
- 품질 Windows·macOS·Linux 3개 OS 자동 테스트(CI)와 OS별 성능 벤치마크를 갖춰, 어느 환경에서도 깨지지 않게 계속 검증합니다.
- 명령 프롬프트에서 한/영 오타를 자동으로 되살립니다 — 한글로 잘못 친 명령을 알아서 영문으로 고쳐 줍니다.
- 클립보드의 이미지를 패널에 붙여넣으면 파일로 저장해 경로를 넣어 주고, 시계·달력 오버레이를 명령으로 켜고 끌 수 있습니다.
2026-06-04 목요일
- 재시작 작업을 잃지 않고 서버를 다시 시작하는 토대를 놓았습니다 — 패널·세션 상태를 저장했다가 그대로 복원합니다.
- Windows Windows 지원을 시작했습니다. 터미널(ConPTY)·프로세스·통신 계층을 플랫폼 공용으로 추상화하고 실제 Windows 11 에서 검증했습니다.
- 우클릭 컨텍스트 메뉴를 통일하고(대상 패널만 밝게, 나머지는 흐리게), 탭·패널 트리 개요(로컬/원격·실행 앱·전환·종료)와 날짜 클릭 달력, 프롬프트 이력·토큰 트리·REC 정보 팝업을 더했습니다.
- 네트워크가 느려지면 패널 외곽선이 빨개지고, 끊긴 연결은 스스로 다시 붙습니다. 클립보드 이미지 붙여넣기(Ctrl+V)도 지원합니다.
2026-06-03 수요일
- 탭 구조를 세션 → 탭 → 패널로 정리하고 상단 탭바를 도입했습니다. 탭을 드래그해 재정렬하고, 활성/비활성 패널을 색 박스로 구분합니다.
- Claude Claude Code 실행 상태를 탭 아이콘으로 표시하고, 활성 Claude 패널의 토큰·컨텍스트 사용량을 상태줄에 보여줍니다.
- 명령 프롬프트 자동완성·카테고리별 도움말 팝업을 갖추고, 헤드리스 테스트 스위트와 화면 기록·재생(record/replay) 진단 도구를 마련했습니다. 어디서든 pytmux 로 실행되는 설치 스크립트와 SSH/mosh 자동 접속도 추가했습니다.
2026-06-02 화요일 · pytmux 탄생 🌱
- pytmux 첫 구현. Python/Textual 로 만든 tmux 유사 터미널 멀티플렉서가 이날 태어났습니다. 패널 분할·줌·레이아웃·swap/rotate·join/break, 탭(윈도우) 관리, 복사 모드(스크롤백 검색·선택·클립보드 연동), 커스터마이즈 가능한 상태줄, 시계·달력·팝업, send-keys·capture-pane 같은 자동화까지 tmux 의 핵심을 하루에 갖췄습니다.
- pytmux 만의 기능 — Claude Code 토큰 리밋 자동 재개. 처음부터 Claude Code 사용 한도에 걸리면 자동으로 이어서 재개하는 기능을 패널별로 켤 수 있게 넣었습니다. 이것이 pytmux 를 tmux 와 다르게 만든 출발점입니다.
- 풀스크린 TUI·와이드 문자 렌더 기반. 대체 화면 버퍼(Claude Code 등 전체화면 앱)와 이모지·CJK 같은 두 칸 폭 글자를 제대로 그리도록 초기 렌더링을 잡았습니다.
2026-06-02 가 pytmux 의 첫 커밋입니다. 여기까지가 지금까지의 전체 개발 이력입니다.