File list: drop type column, fit right columns to content #223

Closed
opened 2026-09-09 01:12:32 +00:00 by crueber · 4 comments
Owner

File list: drop type column, fit right columns to content

Follow-up to #211 (see screenshot: wide fixed columns with dead gaps).

  1. Drop the type column — redundant with the mode lead char (.rw-/d) and the icons.
  2. Right-side columns fit their content: mode, size-num, size-unit, last-modified get auto widths hugging the data (whitespace-nowrap, small padding) instead of wide fixed widths. No dead gaps; keep right-alignment where it reads well (size, datetime).

Acceptance criteria

  • No type column; all right columns content-fit with a little padding.
  • node --test green; browser check (wide + narrow viewports) both themes, zero console errors; no new deps.
# File list: drop type column, fit right columns to content Follow-up to #211 (see screenshot: wide fixed columns with dead gaps). 1. **Drop the `type` column** — redundant with the mode lead char (`.rw-`/`d`) and the icons. 2. **Right-side columns fit their content**: mode, size-num, size-unit, last-modified get auto widths hugging the data (`whitespace-nowrap`, small padding) instead of wide fixed widths. No dead gaps; keep right-alignment where it reads well (size, datetime). ## Acceptance criteria - [ ] No type column; all right columns content-fit with a little padding. - [ ] `node --test` green; browser check (wide + narrow viewports) both themes, zero console errors; no new deps.
Author
Owner

Additional requirement from the reporter: ditch the header row entirely (no mode/size/name/last-modified header line — the columns are self-evident).

Additional requirement from the reporter: ditch the header row entirely (no mode/size/name/last-modified header line — the columns are self-evident).
Author
Owner

Fix PR: #224 (branch fix/issue-223) — drops the type column, removes the header row, fits mode/size/date to content. Browser-verified wide+narrow, dark+light, zero console errors. Ready for review, not merged.

Fix PR: #224 (branch fix/issue-223) — drops the type column, removes the header row, fits mode/size/date to content. Browser-verified wide+narrow, dark+light, zero console errors. Ready for review, not merged.
Author
Owner

Review #224 (fix/issue-223, verified in scratch worktree at fd5aa5d; full node suite + vite build; no browser — node tests + built-CSS inspection only):

PASS

  • web/src/pages/Tree.jsx:237-238 — thead fully gone, tbody retained: table > tbody > tr > td is valid, no thead/tbody mismatch possible.
  • web/src/pages/Tree.jsx:247-261 — type cell gone from header AND rows; every row is now exactly 6 tds (mode, size-num, size-unit, icon, name, date), so column counts stay consistent, no orphans. .entry-type markup fully gone repo-wide (grep: zero hits).
  • web/src/ui.css:97-103 — content-fit correct: .entry-mode/.entry-size-num/.entry-size-unit/.entry-date get w-px + nowrap (verified in built bundle as width:1px + white-space:nowrap), icon w-6 + nowrap, name unfixed so it absorbs spare width. Size pair reads as one: num pr-0.5 + unit pl-0 against the base px-3. Rules are layout-only, theme-neutral; .data-table dark: variants untouched — dark+light safe by inspection.
  • entryKind removal complete: web/src/lib/format.js (fn deleted), Tree.jsx:9 import dropped, format.test.js import + test block dropped. One fix pushed (fd5aa5d): the test-file header comment still named entryKind (a future-grep trap); reworded to not reference the deleted export. No other dangling imports/usages (grep repo-wide: clean).
  • No new deps (package.json untouched; runtime still exactly solid-js + @solidjs/router + marked + dompurify).

VERIFY

  • node --test, all 50 unit files except smoke: 427 pass / 0 fail. format.test.js re-run after fd5aa5d: 11/11 green.
  • vite build: clean (130 modules, dist/index.html + hashed css/js).
  • smoke.test.js excluded with cause: it hangs the runner AFTER its 3 tests pass ('event loop already resolved' — top-level fetch keep-alive). Reproduced identically on unmodified main, so pre-existing/environmental, not this PR. (It also needs a live server on :8080; one happened to be up here.)

FOLLOW-UP (not this PR — do not expand scope)

  • Author's repo.css finding CONFIRMED: web/css/*.css (base/repo/setup/wal) is unbundled dead weight — vite entry is index.html -> src/index.jsx -> src/ui.css only; web/embed.go embeds all:dist only, so web/css never ships. The live .ref-drop ships via src/ui.css:130 (Repo.jsx:282 uses it). Caveat: ref-picker-pill.test.js:18 still pins web/css/repo.css content, i.e. a test asserts on a dead file — worth a cleanup issue (delete web/css/ + repoint or drop that pin). Also stale: internal/server/health.go:352-354 comment still lists sdk//src//css/ as embedded paths.

RECOMMENDATION: ready to merge (closes #223 incl. the header-row follow-up).

Review #224 (fix/issue-223, verified in scratch worktree at fd5aa5d; full node suite + vite build; no browser — node tests + built-CSS inspection only): PASS - web/src/pages/Tree.jsx:237-238 — thead fully gone, tbody retained: table > tbody > tr > td is valid, no thead/tbody mismatch possible. - web/src/pages/Tree.jsx:247-261 — type cell gone from header AND rows; every row is now exactly 6 tds (mode, size-num, size-unit, icon, name, date), so column counts stay consistent, no orphans. .entry-type markup fully gone repo-wide (grep: zero hits). - web/src/ui.css:97-103 — content-fit correct: .entry-mode/.entry-size-num/.entry-size-unit/.entry-date get w-px + nowrap (verified in built bundle as width:1px + white-space:nowrap), icon w-6 + nowrap, name unfixed so it absorbs spare width. Size pair reads as one: num pr-0.5 + unit pl-0 against the base px-3. Rules are layout-only, theme-neutral; .data-table dark: variants untouched — dark+light safe by inspection. - entryKind removal complete: web/src/lib/format.js (fn deleted), Tree.jsx:9 import dropped, format.test.js import + test block dropped. One fix pushed (fd5aa5d): the test-file header comment still named entryKind (a future-grep trap); reworded to not reference the deleted export. No other dangling imports/usages (grep repo-wide: clean). - No new deps (package.json untouched; runtime still exactly solid-js + @solidjs/router + marked + dompurify). VERIFY - node --test, all 50 unit files except smoke: 427 pass / 0 fail. format.test.js re-run after fd5aa5d: 11/11 green. - vite build: clean (130 modules, dist/index.html + hashed css/js). - smoke.test.js excluded with cause: it hangs the runner AFTER its 3 tests pass ('event loop already resolved' — top-level fetch keep-alive). Reproduced identically on unmodified main, so pre-existing/environmental, not this PR. (It also needs a live server on :8080; one happened to be up here.) FOLLOW-UP (not this PR — do not expand scope) - Author's repo.css finding CONFIRMED: web/css/*.css (base/repo/setup/wal) is unbundled dead weight — vite entry is index.html -> src/index.jsx -> src/ui.css only; web/embed.go embeds all:dist only, so web/css never ships. The live .ref-drop ships via src/ui.css:130 (Repo.jsx:282 uses it). Caveat: ref-picker-pill.test.js:18 still pins web/css/repo.css content, i.e. a test asserts on a dead file — worth a cleanup issue (delete web/css/ + repoint or drop that pin). Also stale: internal/server/health.go:352-354 comment still lists sdk//src//css/ as embedded paths. RECOMMENDATION: ready to merge (closes #223 incl. the header-row follow-up).
Author
Owner

Fixed by PR #224 incl. review test-comment fix (type col + header row gone, content-fit columns; all green), merged. Closing.

Fixed by PR #224 incl. review test-comment fix (type col + header row gone, content-fit columns; all green), merged. Closing.
crueber added this to the v1 milestone 2026-09-10 22:27:12 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
crueber/walhub#223
No description provided.