3.1 KiB
3.1 KiB
Purpose
Canonical specification for hero-display requirements synced from OpenSpec change deltas.
Requirements
Requirement: Hero block display
The system SHALL display the most recent news item as a featured hero block with full attribution and modal-behavior parity, while omitting a dedicated hero permalink affordance.
Scenario: Hero rendering
- WHEN the page loads
- THEN the hero block SHALL display the latest news headline, summary, and featured image
- AND show source attribution (e.g., "Via: TechCrunch")
- AND show image credit (e.g., "Image: DALL-E")
Scenario: Hero update
- WHEN new news is fetched hourly
- THEN the hero block SHALL automatically update to show the newest item
- AND the previous hero item SHALL move to the news feed
Scenario: Hero-origin modal consistency
- WHEN modal opens from hero context (including permalink-triggered entry)
- THEN modal image, content, and close controls behave consistently with feed-origin modal flows
Scenario: Hero action chrome excludes permalink control
- WHEN the hero block is rendered
- THEN no dedicated hero permalink control is displayed
- AND summary open and source-link actions remain available
Requirement: Infinite scroll news feed
The system SHALL display news items in reverse chronological order with infinite scroll pagination and minimal card chrome.
Scenario: Initial load
- WHEN the page first loads
- THEN the system SHALL display the 10 most recent non-archived news items
- AND exclude the hero item from the feed
Scenario: Infinite scroll
- WHEN the user scrolls to the bottom of the feed
- THEN the system SHALL fetch the next 10 news items via API
- AND append them to the feed without page reload
- AND show a loading indicator during fetch
Scenario: End of feed
- WHEN all non-archived news items have been loaded
- THEN the system SHALL display "No more news" message
- AND disable further scroll triggers
Scenario: Card chrome remains minimal
- WHEN feed cards are rendered
- THEN redundant small "Link" affordance is not shown
- AND card still exposes required source and TL;DR interactions
Requirement: News attribution display
The system SHALL clearly attribute all news content and images to their sources.
Scenario: Source attribution
- WHEN displaying any news item
- THEN the system SHALL show the original source name and link
- AND display image credit if available
Scenario: Perplexity attribution
- WHEN displaying aggregated content
- THEN the system SHALL include "Powered by Perplexity" in the footer
Scenario: Analytics tracking
- WHEN Umami analytics is configured via
UMAMI_SCRIPT_URLandUMAMI_WEBSITE_ID - THEN the system SHALL inject Umami tracking script into page head
- AND track page view events on initial load
- AND track scroll depth events (25%, 50%, 75%, 100%)
- AND track CTA click events (news item clicks, source link clicks)
- AND CTA click payload includes both
article_idandarticle_titlewhen article context is available