Click a summarized card → its full summary (summaryBody) + chat dock (chatReveal)
expand in place via HTMX (GET /v/{id}/expand → expandedCard), collapse back via
GET /v/{id}/card → compact VideoCard. Same <li id>, outerHTML swap — the existing
list-fragment pattern. The card title carries href=/v/{id} as the no-JS fallback
(detail page stays for no-JS + deep links); only summarized cards expand. Reuses
summaryBody + chatReveal so the expanded card never drifts from the detail page.
BDD: inline_expand.feature un-pended + mapped. TDD: 6 handler/fragment tests
(expand/collapse fragments, chat dock, summarized-only, no-JS href, shared body).
Minimal CSS only — the TUI/charm restyle is #17.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.6 KiB
Gherkin
38 lines
1.6 KiB
Gherkin
Feature: Inline-expand summary + Q&A in the list (ADR-031, #16)
|
|
As a reader skimming my summaries
|
|
I want to open a summary and its Q&A in place in the list
|
|
So that I get the full read and follow-up without leaving the list (SPA-like, no page hop)
|
|
|
|
# HTMX inline-expand, no SPA framework (ADR-031). Each scenario maps to a Go test
|
|
# in scenario_coverage_test.go (the BDD name-coverage gate).
|
|
|
|
Scenario: A summarized card expands to the full summary in place
|
|
Given a summarized video in my list
|
|
When I expand its card
|
|
Then the full summary, highlights, and takeaways are returned as an in-place card fragment, not a full page
|
|
|
|
Scenario: An expanded card collapses back to the compact card
|
|
Given an expanded card
|
|
When I collapse it
|
|
Then the compact card fragment is returned in its place
|
|
|
|
Scenario: The expanded card offers the Q&A dock
|
|
Given chat is enabled
|
|
When a summarized card is expanded
|
|
Then the expanded card includes the deeper-dive chat affordance for that video
|
|
|
|
Scenario: Only a summarized card offers expand
|
|
Given a discovered but not-yet-summarized card
|
|
When the card is rendered
|
|
Then it shows its summarize/queue footer and no expand affordance
|
|
|
|
Scenario: With JS off the card still reaches the full summary
|
|
Given a summarized card
|
|
When it is rendered
|
|
Then its expand affordance carries an href to the detail page as a no-JS fallback
|
|
|
|
Scenario: The detail page and the expanded card show the same summary
|
|
Given a summarized video
|
|
When I view it on the detail page and as an expanded card
|
|
Then both render the same summary body (one shared fragment, no drift)
|