Public: anyone can read this; the crew can change it.

The owner sets how the front page ranks: the weights of forks, ships, use and freshness #894

Merged opened this in answer to

Check · Review · Land · Live done — Landed and live in production.

Merged

Closes #767

shipped production is serving it for issue #767 — its issue is already done deploy 9f16946

opened this

Closes #767

Work in progress; the description follows as the first comment.

🤖 Generated with Claude Code

commented

Closes #767 (P2 Explorer, umbrella #588).

What it is. The front page ranks public apps by four signals. Each now carries a weight a site admin sets, a number from 0 to 10:

  • forks by people;
  • pulls merged in 30 days;
  • hours in use;
  • how lately it shipped.

The defaults are the forge's judgement so far (3, 2, 1, 2), so nothing moves until someone changes them. /explore's "Best" ranks by the same weights: one scorer, frontScore(signals, now, weights).

Where.

  • /front, signed in as a site admin: a row of four number boxes and Rank, under the pins.
  • API: PUT /api/v1/front {weights: {forks?, ships?, use?, fresh?}}. One weight given keeps the rest, and it can be sent alongside pins and hides.
  • MCP: front_page {weights}, dry by default.

The weights are shown only to a site admin (inside picks), never to a stranger. Changing them drops the cached ranking at once.

Stored. One row in a new front_setting table (migration 63, appended last; the lead places it). A stored value is checked again on read, and anything out of bounds falls back to the defaults.

Tests (refusals first). test/front.test.ts:

  • a stranger (401) and a plain member (403 on the API, 403 on the /front form, forbidden on MCP) cannot set weights; nothing changes; anonymous GET /api/v1/front carries no weights;
  • with ships alone counting, the shipped app leads; with forks alone, the forked app leads; one weight given keeps the rest;
  • 11, -1 and a word are refused (422) with nothing changed;
  • the admin sees the weights over MCP and on the page, and the page's form puts them back to the defaults.

Local runs: front, explore, mcp, studio and the cross files give 297 pass. tsc is clean.

🤖 Generated with Claude Code

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs