Skip to content

fix: 隠れが1件のときは"↓他1件"ではなく実項目を表示 - #49

Merged
takecchi merged 1 commit into
mainfrom
codiva/2-1-more-1-more
Jul 21, 2026
Merged

takecchi merged 1 commit into
mainfrom
codiva/2-1-more-1-more

Conversation

@takecchi

Copy link
Copy Markdown
Owner

概要

セッション一覧画面で、画面が埋まった状態で下から2番目のセッションを選択すると、末尾の1件が ↓ 他 1 件↓ 1 more)インジケータに化けていた。

「他 N 件」インジケータも実項目も端末では 1 行 を占める。隠れているのが 1 件だけの端では、インジケータを出しても「1 行で 1 件を表す」だけで得がない。同じ 1 行にその実項目を表示するほうが有益なので、隠れが 1 件だけの端はインジケータをやめてウィンドウをその 1 件ぶん広げる(描画行数は変わらない)。

上端(↑ 他 1 件)も対称に扱う。

変更点

  • src/core/layout.tslistView
    • 窓を計算した後、showBelow かつ下に隠れているのが 1 件なら end += 1 して末尾項目を表示し、showBelow を落とす。
    • showAbove かつ上に隠れているのが 1 件(start === 1)なら start -= 1 して先頭項目を表示し、showAbove を落とす。
    • どちらも予約済みの 1 行を実項目に置き換えるだけなので、描画行数(項目 + インジケータ)は cap 以下という既存の不変条件を維持する。
    • overflow 時に両端が同時に 1 件になることはない(それは total === cap を意味し早期 return 済み)。

挙動の変化(例: cap=5, total=10)

選択 変更前 変更後
下から2番目 (idx 8) ↑他6 / 6,7,8 / ↓他1 ↑他6 / 6,7,8,9

テスト計画

  • npm run typecheck
  • npm run lint
  • npm test(CI)
    • listView(10, 8, 5) が末尾項目を表示し showBelow=false になること
    • プロパティテスト: 全 total/cap/sel の組で、インジケータ表示中の端の隠れ件数が必ず 2 件以上(1 件を隠すインジケータは出さない)/選択は常に可視/描画行数 ≤ cap
    • 既存テスト(top/bottom/middle/tiny-cap/every-index)が引き続き通ること

🤖 Generated with Claude Code

セッション一覧で画面が埋まった状態で下から2番目のセッションを選ぶと、
末尾1件が "↓ 他 1 件" インジケータに化けていた。インジケータも実項目も
1 行を占めるため、1 件しか隠れていない端はインジケータを出さずその項目
自体を表示するほうが有益(描画行数は不変)。上端も対称に扱う。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@takecchi
takecchi merged commit 13a82f0 into main Jul 21, 2026
1 check passed
@takecchi
takecchi deleted the codiva/2-1-more-1-more branch July 21, 2026 08:56
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