Pluggable AI providers, relay credit system, picker UX overhaul
Captures roughly forty version bumps (v0.2.6 → v0.2.47) of work that
accumulated without commits.
- Pluggable provider system under server/providers/: gemini, anthropic,
openai, openai-compatible, ollama, whisper-compatible, relay. Mix and
match transcription + analysis per request via the picker UI.
- Relay backend integration. Hardcoded relay URL in server/relay-default.js
(operator-controlled at build time, not user-configurable). New
/api/relay/{status,policy} endpoints proxy to the relay; balance pings
populate a cached credit display.
- Per-install identity in server/install-id.js for relay credit accounting.
Sent to the relay as X-Recap-Install-Id; persists across upgrades, lost
on a full uninstall + reinstall. Not surfaced in the UI.
- Admin login gate (server/admin-auth.js + setAdminPassword action). Scrypt
password hash + HMAC-signed session cookie.
- Entitlement scheme rename: pro / max (each paired with subscriptions and
relay_pro / relay_max), replacing the misleading "core" entitlement
that conflicted with the user-facing "Core" tier name.
- Activation screen: dynamic credit count pulled from /api/relay/policy,
"Skip — use free mode" button, accurate paid-feature list.
- Top toolbar: inline credit-balance pill (or "BYO configured" fallback),
Upgrade + "I have a key" buttons.
- Picker UI: per-provider sections with Save/Test/Delete buttons, sections
collapsible by chevron, default-collapsed unless currently selected,
"Use comped credits (reset to relay)" link when the user has strayed,
green hint under inputs whose values are server-configured.
- Activity log: chevron-collapsible groups per video, refresh-survival via
localStorage + a 500-entry server-side buffer, explicit Clear button.
- YouTube captions fast-path with user toggle (skips audio download + AI
transcription when captions are available — uncheck for speaker labels).
- Cancel button: AbortController plumbed through every provider SDK call;
retryAPI short-circuits on AbortError; cancellation events surface in
the activity log instead of silent retries.
- Long-video analysis: auto-coalesce transcript entries before building the
analysis prompt so local-model context windows (32k-ish) don't overflow.
Original entries preserved for transcript display via an index map; the
analyzer sees a coarser view but click-to-seek timestamps stay precise.
- StartOS action grouping (Setup / AI Providers) so the actions list is
navigable.
- Manifest description rewritten to reflect multi-provider support and
free-tier relay credits.
- Smaller fixes: summarize-button enablement no longer requires a Gemini
key when other providers are configured; analysis fallback chain handles
context-length and 503 capacity errors; single-segment expansion for
providers that don't return per-segment timestamps (Parakeet et al.);
many other UX polish items.
This commit is contained in:
+20
-10
@@ -1,22 +1,32 @@
|
||||
export const short = {
|
||||
en_US:
|
||||
'Turn videos and podcasts into structured topic summaries with clickable timestamps.',
|
||||
'Turn YouTube videos and podcasts into structured topic summaries with clickable timestamps. Free relay credits, bring-your-own API key, or self-host the AI.',
|
||||
}
|
||||
|
||||
export const long = {
|
||||
en_US:
|
||||
'Recap downloads audio from YouTube videos and podcast RSS feeds, ' +
|
||||
'transcribes them using Google Gemini, and produces structured topic-by-topic ' +
|
||||
'summaries with timestamps. Features include channel and podcast subscriptions ' +
|
||||
'with automatic new episode detection, a background processing queue with ' +
|
||||
'configurable delays, auto-download per subscription, organized history with ' +
|
||||
'folders, and a responsive web interface. ' +
|
||||
'Requires a Google Gemini API key (free tier available at aistudio.google.com/apikey).',
|
||||
'Recap downloads audio from YouTube videos and podcast RSS feeds, transcribes them, ' +
|
||||
'and produces structured topic-by-topic summaries with clickable timestamps. ' +
|
||||
'Pluggable AI provider system: pair any supported transcription provider with any ' +
|
||||
'analysis provider per request. Supported: Google Gemini (multimodal — transcription + ' +
|
||||
'analysis, with speaker labels), Anthropic Claude (analysis), OpenAI (GPT for analysis, ' +
|
||||
'Whisper for transcription), OpenAI-compatible APIs (DeepSeek, Groq, Together, Fireworks, ' +
|
||||
'vLLM, etc.), Ollama (local LLMs), and Whisper-compatible endpoints (whisper.cpp, ' +
|
||||
'faster-whisper-server, NVIDIA Parakeet). ' +
|
||||
'Free tier ships with a small allotment of relay credits so you can summarize a ' +
|
||||
'few videos on day one without any setup. Bring your own API key or point at a ' +
|
||||
'self-hosted model for unlimited use. ' +
|
||||
'Paid tiers add channel and podcast subscriptions with automatic new-episode detection, ' +
|
||||
'a background processing queue, auto-download per subscription, organized history with ' +
|
||||
'folders, and a monthly allotment of relay credits.',
|
||||
}
|
||||
|
||||
export const alertInstall = {
|
||||
en_US:
|
||||
'After installing, configure your Google Gemini API key using the "Set Gemini API Key" ' +
|
||||
'action in the service menu. A free API key is available at aistudio.google.com/apikey. ' +
|
||||
'After installing, the fastest path is to skip the activation screen and use your free ' +
|
||||
'relay credits to summarize a few videos. ' +
|
||||
'For unlimited use: either activate a Recap license (paid features + monthly relay ' +
|
||||
'credits), or paste your own AI provider API key in Settings → API Keys & Endpoints. ' +
|
||||
'Set an admin password via the "Set Admin Password" action if you want to gate access. ' +
|
||||
'Note: The embedded YouTube player will not work if you are connected to a VPN.',
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user