Skip to content

Releases: kochul2000/laymux

v0.9.9

Choose a tag to compare

@kochul2000 kochul2000 released this 09 Aug 04:07
f94ab7e

What's Changed

  • fix(terminal): seed session CWD from the PTY start directory by @kochul2000 in #761
  • fix: Windows Codex 세션 복귀의 늦은 색상 응답 차단 by @kochul2000 in #762
  • feat(remote): 위젯바 토글을 드로어에 추가 (기기-로컬 게이트) by @kochul2000 in #763
  • fix(remote): attach 는 PTY geometry 를 한 번만 게시한다 (ADR-0133) by @kochul2000 in #764
  • docs(adr): accept ADR-0133 by @kochul2000 in #765
  • fix(activity): WSL pane 의 인터랙티브 앱 liveness 를 게스트 프로브로 판정 by @kochul2000 in #768
  • feat(activity): 백엔드가 주기적으로 재판정해 변경분만 push (activity reconcile) by @kochul2000 in #769
  • fix(activity): reconcile 판정을 라이브 이벤트와 순서화하고 종료 정리를 앱 단위로 좁힌다 by @kochul2000 in #772
  • fix(github-view): keep the Issues/PRs tabs on one line by @kochul2000 in #773
  • feat(remote): add ^T shortcut to ctrl key set by @kochul2000 in #774
  • 설정: 파일 뷰어 섹션 분리 + 폰트/이미지 줌 by @kochul2000 in #775
  • fix(remote): 재접속 시 스크롤 위치 유지 by @kochul2000 in #776
  • fix(workspace): re-assert rename overlay focus next frame by @kochul2000 in #777
  • Remove Alt+L pane clear, simplify workspace clear to Ctrl+L broadcast by @kochul2000 in #778
  • fix(remote): open queued panes on entry instead of failing with no live session by @kochul2000 in #780
  • fix(automation): 브리지 리스너 수명을 핸들러 세대에 묶는다 (#771) by @kochul2000 in #781
  • feat(remote): add Tailscale direct routing by @kochul2000 in #782
  • feat(grid): split inherits the source pane's CWD by @kochul2000 in #783
  • chore(release): v0.9.9 by @kochul2000 in #784

Full Changelog: v0.9.8...v0.9.9

v0.9.8

Choose a tag to compare

@kochul2000 kochul2000 released this 03 Aug 13:56
2b268db

What's Changed

  • feat: Claude/Codex 실행 명령을 설정으로 노출 (복원 플래그 지정) by @kochul2000 in #754
  • feat(github): PR 목록에 브랜치 복사 버튼 추가 by @kochul2000 in #755
  • fix: terminal output repair timeout 완화 및 재시작 경고 추가 by @kochul2000 in #756
  • fix(remote): 위젯 스트립 등장 시 fit 기준선을 재설정한다 by @kochul2000 in #759
  • fix: Remote 상태 fan-out과 시작 슬롯 정체 제거 by @kochul2000 in #757
  • chore(release): v0.9.8 by @kochul2000 in #760

Full Changelog: v0.9.7...v0.9.8

v0.9.7

Choose a tag to compare

@kochul2000 kochul2000 released this 03 Aug 04:23
961660a

추가

pane 컨트롤바에서 터미널 하나를 바로 클리어한다 (#751)

터미널 pane 컨트롤바에 빗자루 아이콘을 추가했다. 누르면 Alt+L과 같은 단일 pane 클리어가 실행되며, workspace 격자와 dock pane 모두 지원한다.

  • 툴팁은 Clear terminal (Alt+L)로 동작과 기본 단축키를 함께 설명한다.
  • 키바인딩을 바꾸면 툴팁도 실제 설정을 반영한다.
  • 기존 Clear view 버튼과 분리되어 pane 자체를 비우지 않고 터미널 내용만 클리어한다.

Full Changelog: v0.9.6...v0.9.7

v0.9.6

Choose a tag to compare

@kochul2000 kochul2000 released this 03 Aug 03:08
b3d979c

추가

원격에서도 위젯을 본다 (#748)

데스크톱에 배치한 상태 위젯(Claude/Codex 사용량, 터미널 활동, 알림, 작업 디렉터리)을 원격 브라우저 상단 한 줄 스트립에 그대로 보여준다. 원격 전용 위젯이나 배치 설정은 없다 — PC 설정이 그대로 미러된다.

  • 배치·옵션·표시값의 SoT 는 전부 데스크톱이다. 원격은 표시 모델을 받아 그리기만 하고 행 선택·색·실패 문구를 스스로 계산하지 않는다.
  • 데스크톱의 네 슬롯은 원격에서 좌·우 두 묶음으로 접힌다. status line 이 꺼져 있거나 알 수 없는 위젯이면 데스크톱이 그리지 않으므로 원격에도 나오지 않는다.
  • 폭이 모자라면 접지 않고 가로 스크롤한다. 데스크톱 상단 바와 달리 창 드래그 영역과 경쟁하지 않고, 팝오버는 휴대폰에서 터미널을 덮기 때문이다.
  • 지표 열람은 제어권(lease)을 요구하지 않는다. 호스트를 조작하지 않으므로 보기만 하는 접속에서도 보인다. 알림 위젯 탭은 원격 자신의 알림 패널을 열고, CWD 위젯 탭은 브라우저 클립보드로 복사한다.
  • 원격 폴링은 사용량 probe 수요를 만들지 않는다. 데스크톱이 이미 가진 값을 읽을 뿐이며, 그릴 항목이 없으면 주기를 늦춘다.
  • 설정 → Remote → 위젯 표시 로 원격 스트립만 끌 수 있다(기본 켜짐). 꺼도 배치는 그대로 남는다.

결정 기록은 ADR-0124.

수정

  • 상단 바에서 창 버튼이 밀려나지 않는다 (#747) — 최소화·최대화·닫기는 어떤 창 폭에서도 온전히 남고, 좌·우 크롬이 가장자리에서 먼 쪽부터 자리를 내준다. (ADR-0123)
  • 재접속이 마지막으로 보던 pane 으로 돌아간다 (#749)#744 이후 재접속이 focused pane 으로 붙던 회귀를 고쳤다.
  • 원격 재접속 시 내려둔 키보드 상태 유지 (#744) — output 재접속과 자동 lease 재확보가 사용자가 접어둔 입력 surface 를 다시 열지 않는다.
  • 워크스페이스 복원 후 숨김 패널 닫기 (#745)
  • 터미널 attach 응답이 비정상일 때 정체불명의 실패 대신 fail-stop 복구 경로를 탄다 (#749)

정리

  • Export New 버튼이 워크스페이스 셀렉터로 이동했다 (#746).
  • 전체 e2e 스위트를 다시 녹색으로 되돌렸다 (#749) — 낡은 스펙 8건과 원격 페이지 레이아웃 결함 1건.

Full Changelog: v0.9.5...v0.9.6

v0.9.5

Choose a tag to compare

@kochul2000 kochul2000 released this 02 Aug 15:37

수정

백그라운드 터미널의 잘못된 receipt timeout (#743)

오랫동안 백그라운드에 있던 pane이 다중 pane 출력 부하와 일시적인 WebView main-thread 정지를 겪을 때, 살아 있는 PTY가 terminal output stopped (backend receipt timeout)로 영구 정지할 수 있던 문제를 수정했다.

  • backend receipt/continuation-grant expiry를 30초로 분리해, 5초 WebView stall과 bounded repair의 최장 직렬 경로를 포괄한다.
  • frontend watchdog, parsed-progress expiry, synchronous emitter call, worker shutdown은 기존 5초 경계를 유지한다.
  • exact repair가 최초 envelope 생성 시각의 절대 deadline을 연장하지 않도록 해 무한 복구 루프를 막는다.
  • focused/visible/hidden PTY parser share 5/3/2는 원인이 아니므로 변경하지 않았다.
  • 세대당 single-slot 메모리 상한과 identity 불일치 fail-stop 규칙은 그대로 유지한다.

결정 기록은 ADR-0122.

Full Changelog: v0.9.4...v0.9.5

v0.9.4

Choose a tag to compare

@kochul2000 kochul2000 released this 02 Aug 12:43

추가

포커스 pane 하나만 클리어 (#741)

Ctrl+Alt+L(워크스페이스 전체 클리어, v0.9.0 의 #726)은 전부 아니면 전무였다. 대부분의 순간에 정리하고 싶은 건 지금 보고 있는 pane 하나다.

  • Alt+L — 포커스된 pane 하나에 워크스페이스 클리어와 같은 판정을 적용한다. shell 은 설정된 clear 명령, Claude Code·Codex 는 /clear, 전용 handler 가 없는 interactive app(vim·htop 등)은 건드리지 않는다. busy 정책(skip/interrupt/restart)도 같은 설정 하나(settings.workspaceClear)를 쓴다.
  • dock 터미널도 대상이다. 워크스페이스 클리어가 dock 을 제외한 이유는 "워크스페이스의 격자"라는 범위였고, 사용자가 그 pane 을 직접 가리킨 경우에는 그 이유가 성립하지 않는다.
  • 터미널이 아닌 view 에 포커스가 있으면 아무 일도 하지 않는다. 단축키는 설정에서 재바인딩할 수 있다(pane.clearTerminal).
  • Automation: POST /api/v1/panes/{paneId}/clear. 격자 인덱스가 아니라 pane id 로 받는다 — dock pane 에는 인덱스가 없다.

판정과 실행 경로는 워크스페이스 클리어와 완전히 공유한다. 규칙이 두 벌이 되면 한쪽만 갱신되는 부채가 생기므로, 같은 planner 와 같은 제출/인터럽트/재시작 배선을 지난다. 결정 기록은 ADR-0121.

수정

워크스페이스 목록의 클리어 버튼 아이콘

11px 에서 지우개 아이콘의 1px outline 이 뭉개져 무슨 아이콘인지 읽히지 않았다. 세로 손잡이 + 채운 사다리꼴 머리의 빗자루로 바꿨다. 실기(hover 상태 OS 캡처)로 확인했다.

Full Changelog: v0.9.3...v0.9.4

v0.9.3

Choose a tag to compare

@kochul2000 kochul2000 released this 31 Jul 15:25

수정

프론트엔드 테스트 스위트 복구 (#706)

v0.9.1 부터 red 였던 프론트엔드 테스트 28건을 고쳤다. 이제 174 files / 3785 tests 전부 통과한다. 런타임 코드 변경은 없다 — 프로덕션 번들 산출물은 v0.9.2 와 동일하다.

  • production-bundle.test.ts 가 프로덕션 번들을 측정한 적이 없었다. vitest 가 NODE_ENV=test 를 설정하고 Vite 는 그 값에서 isProduction 을 유도하므로, 하네스는 development React 를 해석해 실제로 출하되지 않는 539 KB entry 청크를 만들고 그걸 500 kB 한계와 비교했다. 실제 npm run build 산출물은 496 KB 로 한계 안이다. 빌드 동안만 production 환경으로 두도록 고쳐, 청크 크기 단정이 이제 진짜 회귀에만 반응한다.
  • AppLayout.test.tsx@/lib/tauri-api mock 이 낡아 useSyncEvents 가 요구하는 리스너 12개가 빠져 27건 전부 모듈 해석 단계에서 죽었다. 왜 명시적 allowlist 여야 하는지 주석으로 남겨 같은 방식으로 다시 깨지지 않게 했다.
  • useAutoRemoteAccessPrompt.ts 의 선행 prettier 위반 1건을 정리했다.

Full Changelog: v0.9.2...v0.9.3

v0.9.2

Choose a tag to compare

@kochul2000 kochul2000 released this 31 Jul 14:37

수정

Usage view — PR #704 리뷰 지적 반영 (#705)

  • 원격 UI 에서 Codex Usage pane 제목이 "Empty" 로 표시되던 문제를 고쳤다. view_label 매핑에 CodexUsageView 가 없어 와일드카드로 떨어졌다.
  • UsageView 헤더 툴팁 3개를 복원했다. 계정 경로 span 은 truncate 라서 툴팁이 긴 CLAUDE_CONFIG_DIR/CODEX_HOME 경로를 확인하는 유일한 수단이다. refresh 버튼 툴팁은 provider 별로 나뉜다.
  • "Starting Claude Code…" 의 말줄임표를 되살렸다.
  • UsageProbeStatus 에 새 상태가 추가되면 컴파일 에러로 잡히도록 exhaustive switch 를 복원했다. 직전에는 새 상태가 조용히 "Usage unavailable" 로 표시됐다.
  • 표시 행 선택이 행 순서에 의존하지 않도록 visibleKey 기반으로 바꿨다.
  • Codex rate-limit window 의 primary/secondary 구분을 key 문자열 접미사에서 명시적 kind 필드로 옮겼다. Rust 가 key 포맷을 바꿔도 view 가 빈 화면이 되지 않는다.

알려진 문제

main 의 프론트엔드 테스트 28건이 실패 상태다(AppLayout.test.tsx 27건 — @/lib/tauri-api mock 의 onTerminalCwdChanged export 누락, production-bundle.test.ts 1건). 이 릴리즈가 만든 회귀가 아니며 런타임 동작에는 영향이 없다. 별도 수정이 필요하다.

Full Changelog: v0.9.1...v0.9.2

v0.9.1

Choose a tag to compare

@kochul2000 kochul2000 released this 31 Jul 14:07

Codex 사용량 pane을 추가한 patch 릴리즈입니다.

  • codex app-server의 구조화된 rate-limit API로 Weekly/Spark Weekly limit을 표시
  • Claude/Codex가 공통 UsagePresentation·사용량 색상 설정을 공유
  • 추가 CODEX_HOME 로그인 계정을 pane별로 선택 가능
  • 소수 퍼센트, Windows command shim 종료, stderr 과다 출력에 대한 probe 오류 처리를 보강

v0.9.0

Choose a tag to compare

@kochul2000 kochul2000 released this 31 Jul 10:42

Claude 사용량 모니터와 호스트 OS 열기가 들어온 기능 릴리즈. v0.8.2 이후 12 커밋 (feat 3, fix 4, perf 1, docs 4).

Claude 사용량 모니터 (신규 UsageView)

Claude Code 잔여 사용량을 pane 으로 본다. 숫자는 Claude Code 의 /usage 패널을 그대로 읽은 것이라 추정이 아니다.

  • 세션 · 주간(all models) · 주간(모델별) 3행. pace 바가 청구 창 경과율과 사용률을 나란히 보여줘 과속인지 한눈에 보인다
  • pane 모양에 따라 배치가 바뀐다 — 가로로 길면 3열, 세로/정사각이면 3행, 얇은 띠면 한 줄 요약. 헤더 토글로 고정도 가능
  • 수집은 Rust usage_probe 가 소유한다. 터미널 레지스트리 밖의 숨은 PTY 에서 claude 를 띄우고 vt100 화면 모델 위에서 파싱하므로, 사용자의 터미널 목록·세션 영속·알림 어디에도 나타나지 않는다
  • UsageView pane 이 하나라도 열려 있을 때만 claude 프로세스가 뜬다. 전부 닫으면 종료된다. pane 여러 개가 같은 계정을 봐도 probe 는 하나를 공유한다
  • 멀티 계정: CLAUDE_CONFIG_DIR 을 여러 개 등록하면 pane 컨트롤 바 view 목록에서 골라 동시에 모니터한다
  • 설정은 Settings → 뷰 → 사용량. 조회 간격은 rate limit 때문에 600~3600초로 맞춰진다
  • 읽기 전용으로 노출: GET /api/v1/usage, MCP get_claude_usage (조회가 probe 를 기동시키지 않는다)

상류 TUI 스크래핑이라 깨질 수 있는 지점은 조용한 오답이 아니라 명시적 실패로 드러나게 했다 — claude 미설치·기동 타임아웃·파싱 실패·서버 에러를 구분해 표시하고 마지막 캡처 화면을 진단용으로 남긴다. 실기 검증에서 실제로 3건이 이 방식으로 잡혔다(모델명이 아니라 배너 제품명으로 준비 판정, 세 번째 행은 모델 무관 파싱, 무관한 +50% promo 퍼센트 배제). (ADR-0102)

경로 링크의 호스트 OS 열기

  • 터미널의 파일 경로 링크를 Ctrl 클릭으로 OS 연결 프로그램, Ctrl+Shift 클릭으로 탐색기에서 위치 표시
  • 실행으로 이어지는 열기에는 확인 게이트. 확인을 꺼도 직접 실행·설치·스크립트 호스트·레지스트리 병합 확장자는 계속 확인을 받는다
  • 이 커맨드는 데스크톱 전용이다 — Automation API·MCP·Remote 어디에도 노출하지 않아 원격의 파일 읽기 권한이 호스트 프로세스 실행으로 넓어지지 않는다
  • 한글·CJK 경로의 밑줄이 글자 폭과 어긋나던 문제를 셀 단위 계산으로 수정 (ADR-0100)

Remote 클라이언트 설치

  • 원격 클라이언트를 홈 화면/독립 앱으로 설치하는 버튼을 내비게이션 드로어에 하나로 정리. 설치가 불가능한 조건이면 섹션 자체를 숨긴다
  • PWA 아이콘을 Chromium 으로 래스터화해 blend mode 가 어긋나던 문제 수정 (ADR-0099)

터미널 성능

  • xterm parser admission 을 pane 가중치가 아니라 클래스 몫으로 나눈다 — focused / 활성 workspace 의 나머지 visible / hidden 세 클래스가 기본 5:3:2 로 한 cycle 을 나누고, 클래스 안에서는 round-robin. hidden pane 이 3개든 300개든 활성 workspace 몫이 줄지 않는다
  • 몫은 terminal.parserAdmission 으로 조정 가능(settings.json 전용) (ADR-0101)