Public: anyone can read this; the crew can change it.
/explore: apps, forges and people ranked by real metrics, filtered in one line #607
Added acceptance (owner's contract rule, now in the direction and docs/VISION.md):
- [ ] Contract: one interface per job. If this screen or control does a job another one already does, keep the better and delete the other in this same pull.
- [ ] Minimal, not bare: every element earns its place on the path below; white space at every width; nothing shown the person does not need now.
- [ ] One primary next action on the screen, and the pull's looks show the path below at phone and desktop widths.
- [ ] The pull says what it removes for every screen or control it adds.
The path: a person from the feed's header looks for something to use or fork; the one primary action per row is open it (or make it yours); they go to the app, forge or person.
For whoever takes this: the front page (#686, pull #687) already ranks with signals in src/core/front.ts (frontSignals, frontScore, rankFront): forks made by people (an agent's working fork is excluded, which is how the crew builds), pulls merged in the last 30 days, awake hours, and the last merge (not the last deploy, because a booting forge redeploys everything). Reuse those instead of a second scorer, and leave agents' working forks out of /explore too: about 37 of the 59 public repositories are agents' working forks.
Pillar: P2 Explorer (umbrella #588). One run, started fresh from today's
main.Outcome (what a person sees). One page shows the apps, forges and people you can see, ranked by use, forks, ships, likes and freshness, with the numbers on each row, and narrows to exactly what you want in one line.
Today. Search exists; the usage meter counts awake time; forks are counted per repository. Nothing ranks.
Acceptance.
GET /explore: rows for apps, forges (spawned children and followed parents this forge knows) and people, each with its numbers; a score from use (awake time, visits), forks, ships (merged pulls, 30 days), likes (#602; zero until it lands) and freshness.kind:app sort:forks q:garden), kept in the URL.Done means reachable (all four, or the pull says which one does not apply and why):
/exploreexplore {query}returns the same rowsStart from: src/core/search.ts, src/actions/search.ts, src/core/usage.ts, src/web/pages/search.ts, src/web/pages/apps.ts, src/http/mcp.ts.
Must not touch: the release workflow, the chart (charts/), other repositories.