Patch release: fix the mobile example-template viewer, which 1.4.0
shipped collapsed to ~2 lines. flex-shrink:0 stops the mobile modal's
flex column from squeezing the content box below its set height.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Extract a poster frame (the TubeSage settings panel) and use it as a
clickable thumbnail linking to the walkthrough video. Absolute
raw.githubusercontent.com URL so the image also renders on the
Obsidian community plugins page, which sanitizes inline video.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Two-pass H.264 re-encode at ~550 kbps, frame size unchanged
(860x720, 114s). The previous 22MB file exceeded GitHub's ~10MB
inline-video limit ("can't show files this big"); 7.5MB plays
inline in the blob view.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The 1.4.0 mobile fix set height:50vh on the template content box, but
the mobile modal content is a flex column and the box (default
flex-shrink:1) was squeezed back down to ~2 lines by its siblings.
Add flex-shrink:0 so the set height actually holds.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The superpowers specs/plans are internal workflow scaffolding, not
distributable project docs. Untrack them and add docs/superpowers/
to .gitignore. Files are kept locally. This also clears a GitHub
secret-scanning false positive: a spec quoted YouTube's public
InnerTube key, which matches the AIzaSy* Google-API-key pattern.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
State explicitly that TubeSage only writes to the clipboard (Obsidian
-> clipboard, via Copy template) and never reads it, so it cannot
expose content copied from outside Obsidian.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Highlights since 1.3.3:
- Transcript extraction reworked onto the YouTube iOS InnerTube
player API; the four broken free local fallbacks removed.
- OpenRouter model-list refresh with a vendor-grouped dropdown.
- Service-URL info icons for ScrapeCreators, Supadata, OpenRouter.
- Desktop processing no longer leaves a blank popup.
- Mobile example-template viewer enlarged so content is visible.
- UI primitives migrated to native Obsidian components (Tier A).
- README network/base64 disclosures completed.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Static analysis flags atob()/btoa() calls in the bundle. Disclose in
Privacy & Security that they all originate in bundled libraries and
are routine base64 operations, not obfuscation.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The Privacy & Security > Network requests list omitted the two
optional paid transcript APIs the plugin contacts when a key is
configured. Add them so the disclosure is complete.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Delete the four obsolete local transcript methods, their six helper
methods, the YouTubeConfig interface, and the now-unused statics. The
iOS player method added earlier is the sole local fallback.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
fetchTranscript now uses a three-rung ladder (ScrapeCreators, iOS
player, Supadata). getVideoMetadata is sourced from the iOS player
response instead of the watch-page HTML scrape.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add fetchIosPlayerData and fetchViaIosPlayer, built from the YouTube
iOS player approach. Not yet wired into the fallback ladder.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The template-viewer content box used only max-height, so on mobile it
collapsed to a blank single line. Add a mobile size override for the
modal and a definite height for the content container inside the
existing max-width:768px media query. Desktop is unchanged.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Info (i) icons with service URLs on the ScrapeCreators, Supadata,
and OpenRouter settings.
- fetchOpenRouterModels: refresh the full OpenRouter model list from
the public API, vendor-grouped dropdown, auto-stored token limits.
- Desktop processing no longer shows a blank popup: the modal closes
on desktop (status-bar spinner only); mobile keeps the in-modal spinner.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Tier A of the UI native-component audit, no intended look-and-feel change:
- info icon and icon buttons -> setIcon / ExtraButtonComponent
- text buttons -> ButtonComponent (Process uses setCta)
- create-note modal URL/title inputs -> TextComponent, video-count
select -> DropdownComponent
Deferred: MarkdownRenderer for README/license modals, FuzzySuggestModal
for the pickers (both visibly change look).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Releases the current state as a stable before/after boundary:
- Copy template button restored (mobile users cannot scroll the
template example), plus a mobile touch-scroll hint.
- Settings info-icon tooltips fixed: native Obsidian setTooltip
replaces the flaky custom hover tooltip; OpenRouter reliability
note added to the LLM tooltip.
- Workflow and data-flow mermaid diagrams refreshed to current
architecture.
- README links made absolute so they resolve on the community site;
demo video linked.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Relative links (docs/, LICENSE, MIT-license-tubesage.md) resolve
against community.obsidian.md on the plugin's community page and 404.
Switch them to absolute github.com URLs so they work on both GitHub
and the community site. Add a link to the demo MP4 hosted in the repo.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Restore the Copy template button (mobile users cannot scroll the
template example); add a mobile touch-scroll hint.
- Replace the flaky custom info-icon tooltip with Obsidian's native
setTooltip; add an OpenRouter reliability note to the LLM tooltip.
- Refresh the workflow and data-flow mermaid diagrams to current
architecture.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace speculative/fictional components with architecture facts
verified from source: secret storage for cloud API keys, collectUnder
scoped folder traversal, LangChainClient dispatch for cloud providers,
OllamaClient for local, obsidianFetch shim for all HTTP, tiktoken
stubbed at build time, and OpenRouter as a supported cloud provider.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Release of the vault-enumeration and clipboard surface reduction:
the plugin no longer calls getMarkdownFiles / getAllLoadedFiles or
navigator.clipboard, so the Obsidian scorecard's Vault Enumeration and
Clipboard Access flags clear.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replace whole-vault enumeration (getMarkdownFiles/getAllLoadedFiles) with
a scoped collectUnder folder-walk, and remove the Copy template button
(the only navigator.clipboard use), to clear the Obsidian scorecard's
Vault Enumeration and Clipboard Access flags.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The .tubesage-template-view-copy-container and -copy-text rules were
used only by the Copy template button removed in the previous commit.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>