Skip to content

feat(tui): extension footer에 호스트 usage를 넘기고 footer가 status 자리를 갖게 함 - #354

Merged
dmae97 merged 1 commit into
mainfrom
usage-footer-bridge-20261106
Nov 6, 2026
Merged

dmae97 merged 1 commit into
mainfrom
usage-footer-bridge-20261106

Conversation

@dmae97

@dmae97 dmae97 commented Nov 6, 2026

Copy link
Copy Markdown
Owner

요약

extension footer가 호스트의 subscription usage를 읽을 수 있게 합니다. 그리고 ctx.ui.setFooter로 footer를 바꾸면 그 footer가 status 자리를 갖습니다.

  • FooterDataProvider.getSubscriptionUsage?()
    • 고정 레일의 기존 TTL/revision reader로 읽은 snapshot을 복사해서 돌려줍니다. 별도 poller는 만들지 않습니다.
    • main의 .omk/extensions/atelier는 이미 이 API를 읽지만, 지금은 호스트가 제공하지 않아서 No subscription usage source on this host로 나옵니다(docs/atelier.md 참고).
  • ReadonlyFooterDataProvider에 선택 항목으로 추가했습니다. 이 API가 없는 이전 호스트도 그대로 호환됩니다.
  • 기본 사이드바의 USAGE 섹션도 getSubscriptionUsage()를 거쳐 그립니다.
    • 아직 받지 못했고 요청 중도 아닌 공급자를 이전에는 숨겼습니다. 이제는 usage unavailable로 보여 줍니다.
    • 활성 공급자의 endpoint 표시는 공급자 id가 아니라 사용량 그룹 라벨로 맞춥니다.
  • setFooter로 custom footer가 설정되어 있으면 고정 레일(isStatusSidebarVisible)이 자리를 비킵니다. 지금 main에서는 레일을 고정해 두면 extension footer가 아예 그려지지 않습니다.
  • 모듈 크기 ratchet(footer-data-provider.ts 기준 361줄) 때문에 findGitPaths를 footer-git-paths.ts로 그대로 옮겼습니다. 동작은 같습니다.
  • 문서: docs/tui.md(Pattern 6: Custom Footer), CHANGELOG.md.

원래 체크아웃의 미커밋 작업에서 이 부분만 골라 main 기준으로 옮겼습니다. 다음은 넣지 않았습니다.

  • SubscriptionUsageCache: 원래 작업에서도 어디에도 연결되어 있지 않았습니다.
  • subscriptionUsageProviders 허용 목록, meta 공급자, guardExtensionRender

검증 (로컬, 커밋 c1daf0b)

  • 새 테스트
    • interactive-mode-status.test.ts: custom footer나 tmux pane이 있으면 레일을 숨기는지
    • status-sidebar-setup.test.ts: footerData.getSubscriptionUsage가 rail reader로 연결되는지
    • 구현 전에는 2개가 실패했습니다.
    • subscription-footer.test.ts: 복사된 snapshot과 단일 fetch, 원래 작업의 테스트를 main의 공급자 판정에 맞게 고쳤습니다.
  • npx vitest --run 59개 파일, 675개 통과
    • 범위: StatusSidebarComponent, setupStatusSidebar, InteractiveMode, FooterDataProvider, getSubscriptionUsage를 쓰는 파일과 control-panel*, control-plane*, layout-class*, rnode*, status-, keybindings, footer*, subscription*, provider-usage*, sidebar*
  • 종료 0: npx tsgo --noEmit, npx biome check --error-on-warnings ., check:module-size, check:import-cycles, check:doc-links, check:feature-claims, check:release-surface
  • 실제 tmux(170x50, 고정 레일 기본값, setFooter로 usage 라벨을 그리는 임시 extension -e)
    • 이 브랜치: /ufooter를 실행하면 레일이 비켜나고 footer에 UFOOTER CLAUDE,CODEX,KIMI,GLM,QWEN이 나옵니다.
    • main 기준: 레일은 그대로이고 footer는 화면에 나오지 않습니다.

- FooterDataProvider.getSubscriptionUsage?(): 고정 레일의 기존 TTL/revision reader로 읽은
  usage snapshot을 복사해 돌려준다. 별도 poller는 없다. atelier가 이미 이 API를 읽는다.
- USAGE 섹션도 getSubscriptionUsage()를 거쳐 그린다. 아직 받지 못한 공급자는 숨기지 않고
  usage unavailable로 보여 준다.
- ctx.ui.setFooter로 footer를 바꾸면 고정 레일이 자리를 비켜, extension footer가 가려지지 않는다.
- footer-data-provider 모듈 크기 ratchet을 지키려고 findGitPaths를 footer-git-paths.ts로 옮겼다(동작 동일).
- tui(Pattern 6), CHANGELOG 갱신.
@dmae97

dmae97 commented Nov 6, 2026

Copy link
Copy Markdown
Owner Author

OMK Community

Thanks for opening this pull request. Mention @omk-community with reproduction steps, a question, or the review help you need.

Automated response. No code changes or merges are performed.

@dmae97
dmae97 merged commit 81b6a6d into main Nov 6, 2026
2 checks passed
@dmae97
dmae97 deleted the usage-footer-bridge-20261106 branch November 6, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant