A batch of web UI fixes.
Rail. Squares are 44px wide at every width (the 32px phone rule is
gone) and glyphs 20px below 34rem, where eleven squares plus the mark no
longer fit: explore, bookmarks, snippets, new repository, settings, admin
and log out move into a More disclosure, leaving dashboard, search,
notifications, More and the account cell. Each square comes from one
raillink partial; the menu repeats those destinations and the two lists
are kept in step by hand. TestRailIconsAreLabelled checks the partial
and each call site rather than counting inline markup.
Snippets reach the rail. The profile-page link stays.
/new creates an organization as well as a repository. The form
leaves the profile page; POST /new branches on the field and dispatches
org create, which is what POST /{owner} already did.
Fork takes a destination. repo fork gains --owner, resolved by
resolveNewRepoOwner — lifted out of repo create, so both check an
owner the same way and an organization's fork is not counted against the
user's quota. GET /{owner}/{repo}/fork renders a form with an owner
select and a name field; the header button links to it and refusals
render on it.
Dashboard. The pinned key reads above the list, the build dot is
centred on its row (.pins .n was stretching an 8px dot to the top), a
chip on the second row has its bottom border back (.pins li:last-child
outranked the chip rule's shorthand), and the feed drops its state dot.
Tables. The SSH key and account tables keep each row on one line and
scroll sideways in the .tablewrap they already had.
.pathbar .actions centres its items, so the · separators sit on
the links' line.
Verified against a local instance: axe reports no new violations at
1440px or 375px on dashboard, /new, the fork page, /settings,
/admin/users, a profile and a blob. Every rail target measures 44×48 on a
phone. TestForkWeb and TestOrgLifecycleWeb pass locally; the rest is
CI's.
Two pre-existing findings this surfaced are fixed in the second commit:
the action column on the SSH key, PGP key and org member tables carries
a visually hidden name, so /settings reports no violations; and the
skip link is a full-size target rather than 40px tall.
Two more are left alone, both older than this branch: the activity graph
on a profile is a scrollable region without keyboard access, and the
notification checkboxes on /settings are 16x16.