Skip to content

feat(tui): 포크 TUI 수정 3개를 1.1.23 위에 다시 얹기 - #3

Merged
euisan merged 3 commits into
masterfrom
euisan/reapply-tui-tweaks
Oct 5, 2026
Merged

euisan merged 3 commits into
masterfrom
euisan/reapply-tui-tweaks

Conversation

@euisan

@euisan euisan commented Oct 5, 2026

Copy link
Copy Markdown
Owner

포크 master 를 원본 KarpelesLab/teamclaude 1.1.23(909d8b1)과 맞춘 뒤(옛 master 는 backup/tui-tweaks-20261005 에 보존), 포크 전용 TUI 수정 3개를 다시 얹는다.

  • 2a314fb 70열 미만에서 계정 줄 접기(사용량 막대 줄바꿈)
  • c265679 사용량 막대의 퍼센트와 카운트다운 사이 구분자 제거 — 원본 feat(tui): the quota-bar percentage is opt-in KarpelesLab/teamclaude#514 로 퍼센트가 기본 꺼짐이 되어 켬 상태(31% 3d)에서만 보인다
  • 4919592 사용량 막대가 Fable 을 보여 줄 때 ⊘ Fable 태그 제거

원본 시험 기대값 변경은 원래 포크 커밋이 의도적으로 바꾸던 구분자·태그 기대값 범위만(바뀐 파일 목록이 옛 포크 커밋과 같음, 추가는 docs/configuration.md 예시 1곳).

검증(마스터 독립 실행): npm test 2661/2661, lint·typecheck 통과. 구분자 수정 되돌림 변이에서 test/tui-bar.test.js 4개 실패 확인 후 원복. 워커 실측 변이: 접기 10·구분자 5·태그 13 실패. gitleaks 기본 규칙 0건(조직 규칙 0개 로드 — 한계).

🤖 Generated with Claude Code

euisan and others added 3 commits October 5, 2026 16:26
* feat(tui): fold account rows below 70 columns so usage bars wrap

On a narrow terminal (a phone over a remote session, say) an account row
could not hold its name, status and quota bars on one line. The list dropped
every bar past the first and shrank that one to a cell or two, so the weekly
and family windows vanished below 70 columns and the session bar became
unreadable near 40.

Below LIST_MIN a full-width list now folds each account into a heading
(marker, route cells, name, type, status) and one line per quota bar, with
the trailing tags wrapped a whole tag at a time beneath them. Each folded
bar takes the row less a 2-column right margin (COMPACT_BAR_RIGHT_MARGIN),
so it never touches the screen edge. The heading gives the name every
column the rest leaves, measured in display columns, so a CJK name is cut
where it reaches the type column. The smallest drawable terminal drops from
40x8 to 30x8 so the folded layout is reachable at phone widths.

This ports teamcodex KarpelesLab#21 (7296e40, compact layout below 70 columns) and
KarpelesLab#23 (0a34280, compact bar right margin), adapted to teamclaude's budgeted
_listLayout: the layout flags `narrow`, _renderRow passes the width, and
_renderAcct returns lines instead of one string. Split panes are never
narrow. teamcodex KarpelesLab#12/KarpelesLab#17/KarpelesLab#18/KarpelesLab#19 are already in 1.1.22 and were not needed.

At 70 columns and wider the frame is byte-identical to 1.1.22: the trailing
tags moved into a list but are appended in the same order with the same
separator. test/fixtures/tui-wide-frames.json holds frames recorded from the
unmodified renderer, and test/tui-narrow-bars.test.js pins both sides.

docs/teamcodex-port-plan.md classifies all 34 teamcodex commits for later
porting; docs/evidence/ holds the real TUI.start() paint at 30-80 columns.

* test(tui): use a neutral double-width name in the narrow-layout fixtures

The width tests need an account name of East Asian Wide characters, but the
one they used read like a real person's name and address. It is now
'가나다라마바사-wide@example.test': seven Hangul syllables (fourteen columns)
then ASCII, which still exercises the cases the tests care about.

- At 40 columns the name is cut exactly where it reaches the type column.
- At 30 columns a fifth syllable would straddle the edge, so it is dropped
  whole and its leftover column padded (a case the old name did not hit).
- At 69 columns the whole name fits.

The wide-frame fixture was re-recorded from the unmodified 1.1.22 renderer
with the new name. The pty capture in docs/evidence was regenerated from the
real TUI.start() paint. The comments that named the data Korean now describe
it by width. Mutating the folded heading to measure characters instead of
display columns still fails "the folded heading spends what the type and
status leave on the name, in display columns".

Reapplied on 1.1.23: tui-wide-frames.json re-recorded from the unmodified 1.1.23 renderer (percentage off by default since KarpelesLab#514); renderFrame takes a config, and the folded-label test checks percentage on and off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…bars

Owner request 1: match teamcodex by changing usage-bar labels from
"39% · 2h53m" to "39% 2h53m". A single space lowers the minimum bar
width needed to show both values by two columns; narrower bars still
show the whole countdown alone.

Keep the separators in dashboard and status output unchanged. Update
label assertions, exact width boundaries, folded-bar expectations, and
recorded frames for this label change alone.

Reapplied on 1.1.23: with the percentage opt-in (KarpelesLab#514) the default frames and fixture are unchanged; the on-state row test and folded labels use the single space, and docs/configuration.md quotes the new label.
Owner request 2: the weekly and Fable usage bars already show whether
Fable is usable (either one at its limit blocks Fable), so the ⊘ Fable
blocked tag is redundant while those bars are on the row. Draw the tag
only when the Fable bar is omitted at narrow widths, where it is the
only sign that Fable is blocked. The ⊘ Sonnet tag follows the same rule.

Give the columns the tag no longer needs back to the bars, so the Fable
bar stays on screen at narrower terminal widths. The tag's width is
reserved only in the fallback layout that omits the Fable bar; the full
layout is tried first without it. Pane stages use the same rule.

Update visibility, routing, weekly-gate, row-width, folded-tag, and pane
assertions plus recorded frames. Cover the actual render path across
40-160 columns and compare blocked and unblocked complete budgets and
first split widths directly.

Reapplied on 1.1.23: pane stage s3 uses BAR_MAX (KarpelesLab#490 removed barCap); tui-wide-frames.json re-recorded, differing from 1.1.23 only by the dropped tag and the columns it returns.
@euisan
euisan merged commit 8d17b67 into master Oct 5, 2026
@euisan
euisan deleted the euisan/reapply-tui-tweaks branch October 5, 2026 07:36
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