generated from obsidianmd/obsidian-sample-plugin
-
-
Notifications
You must be signed in to change notification settings - Fork 13
feat: Configurable timestamped transcripts with performance optimizations #106
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
chhoumann
wants to merge
37
commits into
master
Choose a base branch
from
dev2
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
- Added settings for toggling timestamp inclusion in transcripts - Added configurable timestamp range to control timestamp density - Expanded playback rate options (0.25x to 3x) - Improved transcript segment joining for better continuity - Created detailed design document for timestamped transcription feature
- Update transcript documentation with new timestamp features - Extend timestamp documentation to include timestamp ranges - Add example files for documentation - Update main index with new features
- Implement parallel processing of audio chunks with concurrency limits - Replace array-based chunking with memory-efficient generators - Add throttled UI updates to reduce rendering overhead - Make transcript formatting asynchronous with batched processing - Add explicit memory management for large audio files - Insert strategic yields to main thread to maintain UI responsiveness
- Add graceful error recovery for failed transcription segments - Insert placeholders for failed segments instead of aborting entire process - Implement batch-level error handling to continue despite partial failures - Update design document with error handling approach - Provide user feedback through notices when segments fail
chore: Restore design document
- Validate OpenAI API key before starting transcription - Add functionality to cancel in-progress transcriptions - Implement resume capability for interrupted transcriptions - Add detailed progress tracking with size and time estimates - Update UI to show resume options for interrupted transcripts - Update documentation with new features
- Add more accurate time estimates for transcription process - Add cancellation button directly in player UI - Show loading indicators with animated spinner - Improve progress calculation and display - Add more visible success/failure notifications - Add better cleanup of notices and commands
- Add dedicated progress UI in the player itself rather than just in notices - Display more useful information like progress percent, time remaining, and processed size - Provide better status updates during different phases of transcription - Redesign progress display for better visibility and usability - Fix progress estimation with more accurate time calculation
- Set isTranscribing flag immediately for instant UI feedback - Show transcription UI progress as soon as the action is triggered - Increase UI update frequency for more responsive progress display - Improve state handling for better UX during transcription - Use microtasks to ensure UI updates reliably
- Remove all toast notifications and centralize everything in the player UI - Make UI immediately respond to transcription start and show progress - Make transcription button disappear and show progress UI immediately - Fix local state handling in EpisodePlayer for immediate UI updates - Add smoother transitions between transcription states - Show errors and success messages directly in the player UI
- Add polling mechanism to ensure UI is always updated - Implement getters/setters with logging for debugging - Track transcription progress in local component state - Update progress UI with local state variables - Poll for updates every 100ms to ensure responsive UI - Add console logging to help debug reactivity issues
- Replace custom progress bar with HTML5 native progress element - Improve progress tracking for more reliable UI updates - Make time formatting more concise - Ensure progress bar always shows visible progress
- Add method to check if transcript already exists - Hide transcribe button when transcript already exists - Show "Transcript exists" indicator instead of button - Silently return from transcription service when transcript exists - Remove error message when transcript already exists
…script exists - Remove unnecessary "Transcript exists" indicator - Simply hide the transcribe button when transcript exists for cleaner UI
- Add id property to Episode interface - Add commands property to App2 interface - Use proper TranscriptionVerbose type with segments - Fix null checks and object type casting
- Fix production build by updating esbuild config to use context API for watch mode - Improve type safety in TranscriptionService by replacing 'any' types with proper interfaces - Fix Svelte 5 store usage in components (use get() instead of $store in callbacks) - Update svelte compiler options to use 'injected' for CSS - Fix type imports and formatting in Episode and global type definitions - Resolve all TypeScript compilation errors
- Add svelte.config.js for centralized Svelte 5 configuration - Add biome.json for consistent linting rules across the project - Fix all Biome linting issues in Svelte components: - Organize imports properly - Add type-only imports where needed - Remove unnecessary type annotations - Fix optional chaining usage - Update esbuild config to use centralized Svelte configuration - Fix Svelte 5 store usage compatibility (use get() instead of $store in callbacks) - Add SVELTE5_MIGRATION.md guide for gradual migration to Svelte 5 runes - Improve code consistency and maintainability The project now builds successfully with Svelte 5.25.3 while maintaining backward compatibility. Components can be gradually migrated to use Svelte 5 runes following the migration guide.
- Replace clickable <span> elements with semantic <button> elements - Add proper button styling to maintain visual appearance - Remove unused imports (podcastView) and parameters (clickEvent) - Improve keyboard navigation support - Enhance screen reader compatibility All accessibility warnings are now resolved and the component is fully keyboard accessible.
- Enabled verbatimModuleSyntax in tsconfig.json for stricter import checking - Fixed all type-only imports to use 'import type' syntax - Separated mixed imports into value and type imports - Ensures proper tree-shaking and cleaner builds
- Replace createEventDispatcher with callback props (onclick, onchange) - Update all component usages to new callback prop pattern - Fix event handler signatures to receive values directly - Disable runes mode in config for gradual migration - Fix self-closing tags for HTML compliance
- Fixed Button components to use text prop instead of children - Fixed IconType assignment issues in PlaylistManager - Replaced aria-label with tooltip prop in PodcastResultCard - All type errors resolved, build succeeds
- Replace createEventDispatcher with callback props in PodcastResultCard - Migrate Text component to use onchange callback prop - Update all component usages to new callback pattern - Fix event handler signatures to work with values directly - Continued Svelte 5 migration pattern
…iation - Added compatibility.componentApi: 4 to svelte.config.js - Fixes 'component_api_invalid_new' error when opening PodcastView - Allows legacy component instantiation with new Component() - Critical fix for Obsidian plugin functionality
- Replaced manual store subscriptions with reactive statements ($:) - Implemented proper memoization for episode fetching - Added lazy loading for images with IntersectionObserver - Optimized CSS animations using transform instead of box-shadow - Reduced transition durations from 0.3s to 0.15s - Added GPU acceleration with will-change and translateZ(0) - Created event handlers once instead of on every render - Optimized grid layout with contain property - Fixed hover animations that were causing 2fps performance - Replaced heavy CSS transitions with performant alternatives - Added proper keying to lists for better reconciliation These changes should dramatically improve the responsiveness and smoothness of the podcast grid view, especially with many items.
- Removed broken IntersectionObserver lazy loading implementation - Simplified Image component to work reliably - Images should now load properly in the podcast grid - Removed loading='lazy' prop that was causing issues
- Improved reactive statement memoization in PodcastView - Added content-visibility and containment optimizations to grid - Removed all CSS transitions and animations for maximum performance - Simplified hover effects to only use opacity/border changes - Should significantly improve responsiveness
- Use optional chaining for transcriptionService checks in API.ts - Fix type-only imports in getContextMenuHandler.ts - Apply consistent formatting with biome across all modified files 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Replace reactive episode sorting with memoized function to prevent unnecessary recalculations - Add caching layer to context menu generation for O(1) episode lookups - Optimize DOM manipulation in Icon and Text components to only update on actual changes - Fix TypeScript non-null assertion with proper null checking These optimizations significantly reduce the delay on user interactions from hundreds of milliseconds to near-instant response. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Timestamped Transcripts Improvements
This PR enhances the transcript functionality in PodNotes with configurable timestamps and performance optimizations.
Key Features
Technical Highlights
Documentation
Updated documentation available for all new features:
Status
Ready for review. All major issues have been resolved.