Spaces:
Running
Running
Commit History
28 days ago
-
feat(recs): give each save its own interest from two saves
siddhm11 +1: Claude Opus 5.5Below five saves the feed averaged every save into one vector (tier 2 at 3-4 saves; tier 3's Qdrant recommend averages positives too). For unrelated saves that average sits between them: Llama 3 + pi0 + OpenHands returned generic "LLM agents" surveys matching none of the three. The multi-interest path now starts at MIN_SAVES_FOR_INTERESTS = 2. Below MIN_PAPERS_FOR_CLUSTERING each save is its own interest, so quota and per-cluster MMR keep every save on the page. Tier 2 remains the fallback when that path fails. The feed header now points one-save readers at two. Per doc 06 changelog 2026-09-30. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>81a637a
-
fix(ui): give the homepage back its heading
siddhm11 +1: Claude Opus 5Moving the masthead into the htmx-loaded feed fragment left index.html with no <h1> at all: nothing for a screen reader to land on, nothing for a crawler, and no visible title until the whole tier cascade returned — 11.3s on a cold Space. The masthead moves back into index.html, where both facts it needs are cheap: the date is local and the issue number is one indexed SQLite count. The fragment keeps only what genuinely requires a built feed — the interest strip and the tier-progress bar. Two regression tests assert the heading is present and precedes #rec-section, and that the fragment does not render a second masthead. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>4d589c6
-
feat(ui): make the multi-interest engine visible and give the page ink
siddhm11The frontend had one content component. paper_card.html renders the Feed, Search, Library and Collections, and every page is a vertical stack of it, so the product reads flat by the fifth screen no matter how well that card is styled. Separately, every prior design decision here had been subtractive -- hero removed, badges removed, timings removed -- each correct on its own, and the sum was restraint with nothing left to be restrained about. WHAT THE PIPELINE KNEW AND NEVER SAID * Cluster identity. Each card now carries a tone and the interest's name, and the feed heads with a composition strip. Because stabilize_cluster_ids() Hungarian-matches indices across reclusterings, a tone stays attached to the same interest between sessions -- an existing mechanism that was collecting no payoff. Exploration picks deliberately lose it: they are chosen for being OUTSIDE the profile, so badging them with an interest would be a lie. * The match score. Cosine against the r…1730744