Add a permanent "Latest" lane beside "Highlights"
Restructure the nav around two permanent lanes, then the reader's chosen ones: "Highlights" (the curated daily brief — formerly "Today") and "Latest" (the freshest accepted stories, newest-first). Now that the gate is tight, a chronological "incoming" feed is safe to expose. * feed(): new sort="latest" (pure recency) alongside the default best-first rank; /api/feed exposes sort=ranked|latest (validated). Still accepted-only and boundary-respecting either way. * lanes.py: two pinned lanes (Highlights + Latest) instead of one. * Home: "Latest" view + "Load more" pagination for every feed view (offset- paged, de-duped). Mobile bottom bar gains a Latest tab. * LanePicker shows both pinned lanes; nav rail renders them first. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-2
@@ -18,8 +18,12 @@ from __future__ import annotations
|
||||
from .moods import MOODS
|
||||
from .taxonomy import ALLOWED_TAGS, TOPICS
|
||||
|
||||
# The lane pinned first, always — never user-removable.
|
||||
PINNED = {"key": "today", "label": "Today", "description": "The day's good things."}
|
||||
# The lanes pinned first, always — never user-removable. "Highlights" is the
|
||||
# curated daily brief (key 'today'); "Latest" is the chronological accepted feed.
|
||||
PINNED = [
|
||||
{"key": "today", "label": "Highlights", "description": "The day's curated good things."},
|
||||
{"key": "latest", "label": "Latest", "description": "Freshest calm reads, newest first."},
|
||||
]
|
||||
|
||||
# What a reader who has never customized sees: today's curated moods, unchanged.
|
||||
DEFAULT_LANES: list[str] = [m["key"] for m in MOODS if m["key"] != "today"]
|
||||
|
||||
Reference in New Issue
Block a user