Fix #328: PR composer From/To + cross-repo #336
No reviewers
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 milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
crueber/walhub!336
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/issue-328"
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?
Fixes #328.
What: the
/pulls/newcomposer speaks From (head — where changes come from) / To (base — where they go) instead of base/head, UI-only: wirehead_ref/base_refand?base=/?head=prefill are unchanged (law 12). Each side pairs a repo dropdown with a single-select branch listbox fed by that side's ref stream — no free-form ref entry (the filter narrows the streamed list but never sets the value). Selecting a different From repo re-keys the branch stream and armsfork: {repo}on submit (the OpenInput.ForkInfo path — backend was ready); the open targets the To repo's client.Details:
Promise.allSettledso a missing branch names its side); short display (repo@branchonly across repos, norefs/heads/leak).from {fork.repo}whenpr.forkis set.refs/heads/mainTo, empty From) and deep links behave as today.Tests: new
web/test/unit/pr-composer.test.js(label/direction mapping, same/cross-repo open calls, repo→ref state machine incl. repo-change-resets-ref, permission split, error copy, From/To-vs-base/head source pins + wire-key stability pins).node --test(non-smoke): 641/641 green;vite buildgreen. Existingpull-dropdown-opaquepins kept (dropdown classes, 150ms debounce,props.repo.refStream(,props.onPick(r.name)). No backend touched (no go tests needed); no new deps.Browser: open — shared obscura daemon blocks loopback per workspace rules, no private daemon started; needs a real-browser pass (composer, repo page, /setup, both themes, zero console errors).
Labels become From (head) / To (base), UI-only: wire head_ref/base_ref and ?base=/?head= prefill unchanged (law 12). Each side pairs a repo dropdown (To = writable, From = readable, current always present) with a single-select branch listbox fed by that side's ref stream (no free-form entry; re-keyed on repo change). Cross-repo opens target the To repo's client with fork:{repo}; preview reads the From history from the fork's client with per-side errors, and the unreachable-head 422 surfaces inline direction-mapped. PR page renders pr.fork. Headless cover: web/test/unit/pr-composer.test.js; node --test green; vite build green. Doc decision appended in 12_web_ui.md.