* test(e2e): cover AI Hub make-public flow and public model_hub_table
Three previously-uncovered manual-QA paths land in one spec:
- Admin opens "Select Models to Make Public", advances through the
multi-step modal, and verifies the success toast.
- AI Hub tab strip exposes Model Hub / Agent Hub / MCP Hub / Skill Hub
— note the manual-QA "Claude Code Plugin Marketplace" label was
renamed to Skill Hub; the test pins the current name.
- Anonymous /ui/model_hub_table loads with the master key as `?key=`
and renders the Model Hub tab. Agent Hub / MCP Hub tabs are
conditional on public data and are not asserted here.
* test(e2e): harden AI Hub make-public + public hub assertions
Address Greptile review:
- Make-public test now asserts "Select All (N)" with N>=1 before clicking,
so a missing-seed-data run surfaces immediately instead of timing out
on the disabled Next button or the success toast.
- Public model_hub_table test dismisses the feedback popup before the
tab visibility assertion, matching the ordering used by navigateToPage
so a popup race can't mask the tab mid-evaluation.
* docs(e2e): explain admin vs public AI Hub tab asymmetry
Greptile flagged the all-4-tabs assertion as a potential CI flake,
inferring from the public-page comment that Agent Hub / MCP Hub might
be data-conditional in the admin view too. They aren't — ModelHubTable
renders all four tabs unconditionally for admins. Document the asymmetry
inline so future readers (and future review passes) don't re-derive it.