Issue view page design updates. #107

Closed
opened 2026-09-05 03:37:09 +00:00 by crueber · 3 comments
Owner

On the issue view page, the right sidebar has three containers.

image

  1. Remove the state from the right sidebar. It's already stated in the header.
  2. Merge labels, assignnees, and milestones in to one container, and have a separator between each. Make the "none"'s more obvious as a result from the header, so it's clear.
  3. As for labels, there should be an add button that gives a little dropdown with all the possible options of labels to add.
On the issue view page, the right sidebar has three containers. ![image](/attachments/d6c96fa8-2534-4fdf-8051-b963f5aba296) 1. Remove the state from the right sidebar. It's already stated in the header. 2. Merge labels, assignnees, and milestones in to one container, and have a separator between each. Make the "none"'s more obvious as a result from the header, so it's clear. 3. As for labels, there should be an add button that gives a little dropdown with all the possible options of labels to add.
Author
Owner

Fix ready for review: #110 (branch fix/issue-107). Unified sidebar + labels dropdown; browser-verified dark/light with zero console errors. Not merging — awaiting review.

Fix ready for review: #110 (branch fix/issue-107). Unified sidebar + labels dropdown; browser-verified dark/light with zero console errors. Not merging — awaiting review.
Author
Owner

Review of PR #110 (fix/issue-107) — verified in scratch worktree @111c63a; node tests 245 pass, vite build clean (no browser drive; reasoning + tests per instructions).

PASS, all checklist items:

  • STATE card gone; header is single source: Issue.jsx:246-251 renders #N Open/Closed for both states (emerald vs zinc). No other state readout in sidebar.
  • One container with real separators: Issue.jsx:331 section.card divide-y divide-zinc-200 dark:divide-zinc-800 — genuine dividers, not spacing.
  • none-values paired: labels fallback (Issue.jsx:340) and assignees fallback (Issue.jsx:347) sit directly under their headers; milestone ?? none (Issue.jsx:353) in its own divided section. Matches the BEFORE screenshot problems (orphan STATE card, milestone crammed under assignees).
  • Labels dropdown: lists ALL repo options (LabelPicker.jsx:93, with empty-repo fallback); checked state via aria-checked + ✓ (LabelPicker.jsx:101-110); triage gating preserved — trigger wrapped in Show when={canTriage()} (Issue.jsx:335), canTriage = roleAtLeast(role,'triage') unchanged (Issue.jsx:58); aria-haspopup/aria-expanded (LabelPicker.jsx:83-84); Esc closes + refocuses trigger (LabelPicker.jsx:63-67); outside-click close via root.contains guard (LabelPicker.jsx:60-62); per-row busy disables (LabelPicker.jsx:104); menu stays open across toggles (onClick only fires onToggle, LabelPicker.jsx:106) — sane for multi-add.
  • Issues.jsx list chips unaffected: still imports shared LabelChip (Issues.jsx:15,150); LabelChip body untouched by this diff.
  • No new deps: diff touches only 02_issues.md + 2 jsx files; LabelPicker imports only solid-js primitives + lib/labels.js. Laws 1/7/8/12 hold (component never fetches, props-only; optimistic PATCH + busy-set concurrency note intact; doc updated in same change).
  • Dark+light: rows hover:bg-zinc-100/dark:hover:bg-zinc-800, dot border-zinc-300/dark:border-zinc-700, divide dark variant. Keyboard: native buttons throughout (Tab/Enter/Space free).

No fixes pushed — nothing found worth changing. MERGE RECOMMENDATION: ready to merge.

Review of PR #110 (fix/issue-107) — verified in scratch worktree @111c63a; node tests 245 pass, vite build clean (no browser drive; reasoning + tests per instructions). PASS, all checklist items: - STATE card gone; header is single source: Issue.jsx:246-251 renders `#N Open/Closed` for both states (emerald vs zinc). No other state readout in sidebar. - One container with real separators: Issue.jsx:331 `section.card divide-y divide-zinc-200 dark:divide-zinc-800` — genuine dividers, not spacing. - none-values paired: labels fallback (Issue.jsx:340) and assignees fallback (Issue.jsx:347) sit directly under their headers; milestone `?? none` (Issue.jsx:353) in its own divided section. Matches the BEFORE screenshot problems (orphan STATE card, milestone crammed under assignees). - Labels dropdown: lists ALL repo options (LabelPicker.jsx:93, with empty-repo fallback); checked state via aria-checked + ✓ (LabelPicker.jsx:101-110); triage gating preserved — trigger wrapped in `Show when={canTriage()}` (Issue.jsx:335), canTriage = roleAtLeast(role,'triage') unchanged (Issue.jsx:58); aria-haspopup/aria-expanded (LabelPicker.jsx:83-84); Esc closes + refocuses trigger (LabelPicker.jsx:63-67); outside-click close via root.contains guard (LabelPicker.jsx:60-62); per-row busy disables (LabelPicker.jsx:104); menu stays open across toggles (onClick only fires onToggle, LabelPicker.jsx:106) — sane for multi-add. - Issues.jsx list chips unaffected: still imports shared LabelChip (Issues.jsx:15,150); LabelChip body untouched by this diff. - No new deps: diff touches only 02_issues.md + 2 jsx files; LabelPicker imports only solid-js primitives + lib/labels.js. Laws 1/7/8/12 hold (component never fetches, props-only; optimistic PATCH + busy-set concurrency note intact; doc updated in same change). - Dark+light: rows hover:bg-zinc-100/dark:hover:bg-zinc-800, dot border-zinc-300/dark:border-zinc-700, divide dark variant. Keyboard: native buttons throughout (Tab/Enter/Space free). No fixes pushed — nothing found worth changing. MERGE RECOMMENDATION: ready to merge.
Author
Owner

Fixed by PR #110 (review clean; 245/245 node tests), merged. Closing.

Fixed by PR #110 (review clean; 245/245 node tests), merged. Closing.
crueber added this to the v1 milestone 2026-09-10 22:20:45 +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#107
No description provided.