First deployment
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Deep-link loads article modal in open state
|
||||
The system SHALL open the matching article modal when the page is loaded with a valid article permalink, regardless of whether the target is hero or feed content.
|
||||
|
||||
#### Scenario: Hero permalink opens parity modal
|
||||
- **WHEN** a user lands with a permalink for the current hero article
|
||||
- **THEN** the modal opens with the same structure and behaviors as feed-opened modal
|
||||
- **AND** summary image render path is executed normally
|
||||
|
||||
#### Scenario: Escape closes deep-linked modal
|
||||
- **WHEN** a modal opened from permalink is focused
|
||||
- **THEN** pressing `Escape` closes the modal
|
||||
- **AND** URL deep-link state is cleared consistently
|
||||
|
||||
#### Scenario: Invalid permalink fails safely
|
||||
- **WHEN** permalink article id does not resolve to an existing item
|
||||
- **THEN** modal is not opened
|
||||
- **AND** main page remains fully usable
|
||||
@@ -0,0 +1,14 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Footer exposes policy navigation links
|
||||
The system SHALL keep policy links while supporting sticky compact footer behavior and floating back-to-top control.
|
||||
|
||||
#### Scenario: Sticky compact footer
|
||||
- **WHEN** user scrolls through content
|
||||
- **THEN** footer remains sticky at viewport bottom
|
||||
- **AND** footer height stays compact enough to avoid readability obstruction
|
||||
|
||||
#### Scenario: Floating back-to-top island
|
||||
- **WHEN** page is scrolled beyond initial viewport
|
||||
- **THEN** a floating back-to-top control is visible
|
||||
- **AND** activating it returns viewport to top smoothly
|
||||
@@ -0,0 +1,16 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Infinite scroll news feed
|
||||
The system SHALL display feed cards without redundant per-card permalink text link when primary CTA and source link are present.
|
||||
|
||||
#### 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: Hero block display
|
||||
The system SHALL maintain hero-to-modal behavior parity with feed cards.
|
||||
|
||||
#### 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
|
||||
@@ -0,0 +1,14 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Fallback behavior remains context-aware first
|
||||
The system SHALL apply stricter relevance guardrails before accepting summary images for finance/market stories.
|
||||
|
||||
#### Scenario: Finance-story relevance guard
|
||||
- **WHEN** article topic contains finance/market terms (for example stocks, shares, plunge, earnings)
|
||||
- **THEN** image selection rejects obviously unrelated animal/portrait outcomes
|
||||
- **AND** system retries with finance-safe query refinements before final fallback
|
||||
|
||||
#### Scenario: Guarded fallback remains deterministic
|
||||
- **WHEN** provider chain cannot return a relevant finance-safe image
|
||||
- **THEN** system uses deterministic generic fallback that is topic-safe
|
||||
- **AND** avoids unrelated imagery classes flagged by guardrails
|
||||
@@ -0,0 +1,14 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Core layout is device-agnostic and responsive
|
||||
The system SHALL preserve responsive readability while enabling sticky header and footer surfaces.
|
||||
|
||||
#### Scenario: Sticky shrinking glass header
|
||||
- **WHEN** user scrolls downward
|
||||
- **THEN** header remains sticky with slight height reduction, subtle elevation, and glass blur effect
|
||||
- **AND** controls remain readable and usable at all breakpoints
|
||||
|
||||
#### Scenario: Sticky footer does not overlap core reading zones
|
||||
- **WHEN** footer is sticky
|
||||
- **THEN** content remains readable and interactive controls are not obscured
|
||||
- **AND** mobile/tablet/desktop layouts stay overflow-safe
|
||||
@@ -0,0 +1,22 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Modal/footer exposes minimal icon-based share actions
|
||||
The system SHALL provide visible, accessible icon-only share actions for article permalinks.
|
||||
|
||||
#### Scenario: Light-theme icon visibility
|
||||
- **WHEN** the site is in light mode
|
||||
- **THEN** share icons remain visibly distinguishable with accessible contrast
|
||||
- **AND** icon controls remain keyboard focusable
|
||||
|
||||
#### Scenario: Copy-link share action
|
||||
- **WHEN** a user activates the copy-to-clipboard share control
|
||||
- **THEN** the article permalink is written to clipboard
|
||||
- **AND** action succeeds without navigating away
|
||||
|
||||
### Requirement: Footer supports env-driven GitHub and contact links
|
||||
The system SHALL render contact email link when `CONTACT_EMAIL` is configured.
|
||||
|
||||
#### Scenario: Contact link visible when configured
|
||||
- **WHEN** `CONTACT_EMAIL` is present in frontend config payload
|
||||
- **THEN** footer shows the contact email affordance
|
||||
- **AND** hover microcopy behavior remains enabled
|
||||
Reference in New Issue
Block a user