Design of the pull request page and checks page #34
Labels
No labels
actions
bug
cli
duplicate
enhancement
fork
forum
git storage
help wanted
insights
invalid
issues
moderation
oidc
ownership transfer
packages
pr/merge protection rules
projects
pull requests
question
releases
sponsorships
tags
webhooks
wiki
wontfix
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub#34
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Starting fix for #34 (empty-state callouts + dynamic open-PR page) on branch fix/issue-34, working in a scratch worktree so the dirty main worktree is untouched.
Fixed by PR #46 (#46): shared empty-state callouts on pulls/checks/releases (+issues, same pattern) and the sidebar open-PR box replaced by the dynamic /pulls/new flow (live ahead/behind + commit preview, branch prefill, swap). Ready for review — not merged.
PR #46 review (branch fix/issue-34, commit
3f0b692) — inspected via git diff origin/main...origin/fix/issue-34, verified in scratch worktree /tmp/pr46 (removed afterward). Main worktree untouched, nothing committed.Empty component (web/src/components/Empty.jsx:42-55 + ui.css): centered max-w-xl callout, icon/title/hint/action, role=status with aria-label, action is a router link (keyboard-focusable, global :focus-visible ring). Consistent across Pulls/Checks/Releases/Issues; Checks correctly has no action (no new-check route), other three link to existing new routes (index.jsx:66,69,76). Dark+light variants present.
Sidebar removal (Pulls.jsx): dead open-PR code fully gone (no getTitle/open/reportError leftovers); New-PR button carries ?base/?head via newHref() (Pulls.jsx:44-52). Empty hint echoes active filters.
Dynamic composer (PullNew.jsx + lib/compare.js): 300ms debounce, one AbortController per run with onCleanup abort, monotonic run-id stale drop — logic sound, incl. early-return paths (previous ctl still aborted via cleanup). Intersection: head walk to baseSet + base walk to headSet; truncation flags only when meeting point missed AND page.more — exhausted windows stay exact. toShortRef strips only refs/heads/, tags/SHAs pass through. Title/body prefill gated on touched flags; swap is a plain signal swap (prefill guards preserved). No new backend: uses existing commits({ref,n},{signal}) (sdk repo.js:142, supports opts) + pulls.open. No dep changes (package.json/lock untouched). A11y: labelled pickers, fieldset/legend, aria-live=polite preview, role=alert errors, swap aria-label. Doc decision (12_web_ui.md) matches the code on all points (debounce, n=100, abort/stale-drop, lower-bound +, prefill-until-edit, no server endpoint).
Tests: node --test web/test/unit/*.test.js → 201/201 pass (incl. 11 compare tests); vite build → 102 modules, success.
No fixes needed, none pushed. MERGE RECOMMENDATION: ready to merge.
Fixed by PR #46 (review clean; 201/201 node tests), merged. Closing.