Skip to content

Fix Neovim Terminal detail sheet clipping (add to wide-pack width list)#908

Merged
malpern merged 1 commit into
masterfrom
claude/fix-neovim-detail-width
Jun 11, 2026
Merged

Fix Neovim Terminal detail sheet clipping (add to wide-pack width list)#908
malpern merged 1 commit into
masterfrom
claude/fix-neovim-detail-width

Conversation

@malpern

@malpern malpern commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Second finding from Micah's visual review of the Neovim Terminal detail page (#903 fixed the wrong-component issue; this fixes the layout).

Problem

The detail sheet rendered at the 560pt default width while MappingTableContent's five columns (Key / Description / Action / +Shift / +Ctrl) need the 760pt wide layout — content clipped on both edges: icon half-cut, description truncated, +Ctrl column running off-screen.

Cause

Pack.preferredDetailWidth keeps a hardcoded wide-pack allowlist. Every other table-style pack (Vim Navigation, Mission Control, Numpad, Symbol, Fun) is listed; neovim-terminal wasn't. Same add-a-pack-forget-the-side-table class of bug as the orange-box issue — just a different side table.

Fix

One line: add com.keypath.pack.neovim-terminal to the set, plus a comment warning the next table-pack author. (A follow-up could derive width from the rendering branch instead of an allowlist — out of scope for release week.)

Verification

  • Built + quick-deployed; awaiting Micah's visual re-check at 760pt
  • Sequences pack intentionally not added: its detail is description-only (no table), so the 560 default fits
  • The trailing_comma lint warning on the set literal is pre-existing file style

@malpern malpern enabled auto-merge (squash) June 11, 2026 19:10
@claude

claude Bot commented Jun 11, 2026

Copy link
Copy Markdown

Code Review

Overview: One-line bugfix adding com.keypath.pack.neovim-terminal to the widePacks allowlist so its detail sheet renders at 760pt instead of the clipped 560pt default. Minimal, targeted, and clearly described.


What's Good

  • Fix is correct and surgical — exactly the right scope for release week.
  • PR description thoroughly explains the problem, cause, fix, and what was intentionally excluded (Sequences pack).
  • Pre-existing lint warning noted proactively rather than silently ignored.

Findings

1. Comment contains a historical reference that will rot (minor)

CLAUDE.md calls out: "Don't reference the current task, fix, or callers … since those belong in the PR description and rot as the codebase evolves." The parenthetical (Neovim Terminal shipped clipped…) is the incident note — it belongs in the commit message (where it already is) but not in the source. As packs are added and the set grows, that historical sentence will just confuse future readers.

Suggested trim:

// Table-style packs render MappingTableContent (five columns) and need
// the wide layout. When adding a new table-style pack, add it here too
// or its detail sheet will clip horizontally at the 560pt default.

2. No test coverage for the allowlist (low-priority, worth tracking)

The neovim-terminal omission was caught only by visual review. A unit test asserting which pack IDs use the wide layout would have caught the regression automatically. Not a blocker, but worth filing as a follow-up given the whole class of bug is now documented in the comment.

3. Allowlist pattern is acknowledged tech debt (noted, not blocking)

The PR body already flags this: "A follow-up could derive width from the rendering branch instead of an allowlist." Worth filing a ticket so it does not get lost between releases.


Verdict

Approve with suggestions — the fix is correct and safe to merge. The comment nit is the only thing worth addressing before merging; the test and refactor can be tracked as follow-ups.

Second visual-review finding on the new detail page (#903 fixed the
wrong-component issue): the sheet rendered at the 560pt default while
MappingTableContent's five columns (Key / Description / Action /
+Shift / +Ctrl) need the 760pt wide layout — content clipped on both
edges, the icon and +Ctrl column cut off.

preferredDetailWidth keeps a hardcoded wide-pack allowlist; every
other table-style pack (Vim Navigation, Mission Control, Numpad,
Symbol, Fun) is listed and neovim-terminal wasn't. Added it, plus a
comment warning the next table-pack author — this is the same
add-a-pack-forget-the-side-table class of bug as the orange-box
issue, just in a different registry.

The trailing_comma lint warning on the set literal is pre-existing
style in this file.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@malpern malpern force-pushed the claude/fix-neovim-detail-width branch from f1541df to 9d56ecf Compare June 11, 2026 19:21
@claude

claude Bot commented Jun 11, 2026

Copy link
Copy Markdown

Code Review

One-liner fix for a real visual bug — correct and minimal. Two findings worth addressing before merge.


What the PR does

Adds com.keypath.pack.neovim-terminal to the widePacks allowlist in preferredDetailWidth so the Neovim Terminal detail sheet renders at 760pt instead of the 560pt default, preventing horizontal clipping of the five-column MappingTableContent.


Findings

1. Comment length violates project conventions (minor)

CLAUDE.md says: "Don't write multi-paragraph docstrings or multi-line comment blocks — one short line max."

The added block is 5 lines and includes historical narrative ("shipped clipped at the 560 default before being listed") that belongs in the PR description, not the source file. Suggest trimming to one line:

// Table-style packs need 760pt for MappingTableContent's five columns; add new table packs here.
let widePacks: Set = [

The warning for future authors survives; the incident history moves to git log where it belongs.


2. Regression test not updated (should fix)

testPreferredDetailWidth_WidePacksReturn760() only asserts two of the eight wide packs. The newly added pack isn't included, so a future accidental deletion of the neovim-terminal line would pass the test suite undetected.

Tests/KeyPathTests/PackInstallerRenderTests.swift around line 255:

// Before
let widePacks = ["com.keypath.pack.vim-navigation", "com.keypath.pack.window-snapping"]

// After — add the new entry
let widePacks = [
    "com.keypath.pack.vim-navigation",
    "com.keypath.pack.neovim-terminal",
    "com.keypath.pack.window-snapping",
]

(The other six packs in the allowlist could also be added for completeness, but neovim-terminal is the minimum for this PR.)


No concerns on

  • Correctness — 760pt is the right width for MappingTableContent; the set lookup is the right mechanism.
  • PerformanceSet.contains is O(1).
  • Security — no concerns.
  • Sequences pack — correctly excluded (description-only detail, 560 default fits); well documented in the PR body.
  • Structural debt — the allowlist-vs-derived-width TODO is appropriately deferred and flagged in the PR description.

Verdict: Fix comment to one line, add neovim-terminal to the test's widePacks array, then this is good to merge.

@malpern malpern merged commit 483c091 into master Jun 11, 2026
3 checks passed
@malpern malpern deleted the claude/fix-neovim-detail-width branch June 11, 2026 19:26
malpern added a commit that referenced this pull request Jun 13, 2026
* Dashboard: Friday morning state — all Thu work merged, today is notes + screenshots

6 of 10 gates closed. Thursday's two Neovim detail-page bugs (#903
wrong component, #908 sheet clipping) are on master. Verdict + schedule
updated to Friday: gates 8 (notes) and 9 (screenshot pass) close today,
~1h total; gate 7 RC + gate 10 video on Sat. Countdown to 1 day.

* Dashboard: fix system category count clobbered by countdown replace

The Fri-AM countdown edit globally replaced <span class=num>2</span>
and accidentally knocked the 'system' category bar from its (already
wrong) 2 down to 1. Real count is 3 (macOS Function Keys, Leader Key,
Fast Navigation); categories now sum to 22 again. Caught by codex +
claude review on #910.

* Dashboard: Saturday release-day state — #899 + #921 merged, cutting the RC

8 of 10 gates closed. Countdown to 0 (TODAY). Verdict → 'Shipping
today': cmd-removal + screenshot cleanup merged after gating two
runner flakes (#922). Gate 7 (RC) now in-progress; gate 9 closed
(screenshots stripped/preserved via #921/#920); gate 8 finalizing
with qualified import framing. Also fixes the system category count
(3, not the review-flagged 1).

* Dashboard: Saturday release-day — burndown, verdict, footer to current

Burndown now plots actual through Sat (no leftover Thu projection): Sat is
the current marker near the floor; ~3h of execution left (RC + smoke +
publish), not feature work. Verdict reflects release-prep #923 merged
(version → 1.0.0/build 4, appcast + squatting-tag cleanup) with the signed
RC building. Footer timestamp Wed → Sat 2026-06-13; drops the overclaimed
"auto-synced" wording (it's hand-maintained).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* Dashboard: note overlay picker blocker found + fixed in RC QA (#924)

RC QA surfaced the overlay output-type picker being unclickable; root-caused
to WindowAnchoredPopover's identity-only Equatable discarding content updates,
fixed and reworked into a drill-down with Launch App search (#924). Verdict now
reflects re-cutting the RC from master with the fix.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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