Fix #395: profile header composition #400

Merged
crueber merged 2 commits from fix/issue-395 into main 2026-09-12 17:55:18 +00:00
Owner

Follow-up to #390: reflows the orphan avatar row into one composed two-column identity block (identity left, avatar right with its actions beneath, New-repository CTA in its own top-right row above; 390px stacks via flex-col-reverse). Restyle/compose only — no backend change, no new deps. D-WEB-9 appended (law 12). Tests: 8 new in web/test/unit/profile-header.test.js; node --test 786/788 pass (2 pre-existing smoke failures also fail on clean main); vite + esbuild builds green. Browser proof open (shared-daemon loopback guard).

Follow-up to #390: reflows the orphan avatar row into one composed two-column identity block (identity left, avatar right with its actions beneath, New-repository CTA in its own top-right row above; 390px stacks via flex-col-reverse). Restyle/compose only — no backend change, no new deps. D-WEB-9 appended (law 12). Tests: 8 new in web/test/unit/profile-header.test.js; node --test 786/788 pass (2 pre-existing smoke failures also fail on clean main); vite + esbuild builds green. Browser proof open (shared-daemon loopback guard).
User header is one composed block: identity left (username h1, handle,
location/timezone, bio, Edit profile), avatar right with
Regenerate/Remove grouped beneath; New-repository CTA in its own
top-right row above the grid; 390px stacks via flex-col-reverse with no
dead half-width. Orgs untouched; all gates unchanged. D-WEB-9.
Redundant inner isOrg guards were folded into the outer gate and
owner-profile fields moved non-org-only; the doc now says so.
Sign in to join this conversation.
No description provided.