feat(web): in-feed paste box + onboarding-aware connect confirmation
5b: connected users get a 'Summarize any video' URL input on the feed; submit posts to /paste (HTMX) and swaps the resulting card / inline error into the feed. 7: the connect flash now sets expectations for the async onboarding burst — 'finding your subscriptions, your newest videos will appear below as summarized'. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -107,6 +107,9 @@ templ flashBanner(code string) {
|
||||
templ ListPage(b listBuckets, f Filter, stats PipelineStats, flash string, hasConnected bool) {
|
||||
@Layout("Tapir — Summaries") {
|
||||
@flashBanner(flash)
|
||||
if hasConnected {
|
||||
@pasteForm()
|
||||
}
|
||||
if !b.empty() || f.active() {
|
||||
@filterForm(f)
|
||||
}
|
||||
@@ -143,6 +146,28 @@ templ pipelineBar(s PipelineStats) {
|
||||
</div>
|
||||
}
|
||||
|
||||
// pasteForm lets a connected user summarize any YouTube video by pasting its URL
|
||||
// (Feature 2). The result (a video card, or an inline error) swaps into
|
||||
// #paste-result; the next list refresh shows it inline. Summarization runs
|
||||
// through the shared caption rate gate like every other fetch.
|
||||
templ pasteForm() {
|
||||
<form
|
||||
class="paste"
|
||||
method="post"
|
||||
action="/paste"
|
||||
hx-post="/paste"
|
||||
hx-target="#paste-result"
|
||||
hx-swap="innerHTML"
|
||||
>
|
||||
<label>
|
||||
Summarize any video
|
||||
<input type="url" name="url" placeholder="Paste a YouTube link…" required/>
|
||||
</label>
|
||||
<button type="submit">Add</button>
|
||||
</form>
|
||||
<div id="paste-result"></div>
|
||||
}
|
||||
|
||||
templ filterForm(f Filter) {
|
||||
<form
|
||||
class="filters"
|
||||
|
||||
Reference in New Issue
Block a user