Collapsed history snapshot — represents the cumulative state of TubeSage through 1.2.21. Earlier commit history (covering versions 1.2.0 through 1.2.20) was rewritten into this single root commit to remove tracking of a personal deploy script that referenced local filesystem paths. The current release content is unchanged. See manifest.json for the plugin version. Older tags (1.2.0 through 1.2.20) have been retired. Features in this release line: - YouTube transcript extraction (ScrapeCreators API + local fallbacks) - LLM-driven summarisation (OpenAI, Anthropic, Google, Ollama) - Per-provider always-visible API key rows - Selected-provider model controls with registry-aware overrides - Custom-model parameter overrides with synchronous panel refresh - Max tokens field with blur-commit and reset-on-blank - Settings de-pollution migration on plugin load - Summary-callout split for multi-section model output - Security patches: fast-xml-parser >=5.7.0, uuid >=14.0.0
1.4 KiB
<%*
const watchUrl = tp.user.watchUrl || tp.user.videoUrl;
const thumbnailUrl = tp.user.thumbnailUrl || https://img.youtube.com/vi/${tp.user.videoId}/hqdefault.jpg;
const fullSummary = tp.user.summary || '';
const headingIndex = fullSummary.search(/^#{1,6}\s/m);
const summaryIntro = headingIndex === -1 ? fullSummary : fullSummary.slice(0, headingIndex);
const summaryBody = headingIndex === -1 ? '' : fullSummary.slice(headingIndex);
const summaryIntroOneLine = summaryIntro.replace(/\s*\n\s*/g, ' ').trim();
-%>
<% tp.user.title %>
[!tip] Mobile Thumbnail (fallback) <%* if (thumbnailUrl && watchUrl) { %>
<%* } else { %>Thumbnail unavailable for this URL<%* } %>
[!info] YouTube Video: <%* if (watchUrl) { %>
<%* } else { %><% tp.user.originalVideoUrl || tp.user.videoUrl %><%* } %>
[!summary]
[!danger] AI :luc_bot: Generated with <% tp.user.llmProvider %>/<% tp.user.llmModel %> <% summaryIntroOneLine %>
<% summaryBody %>
[!tip] Thoughts while consuming content - As Input to ideas