Merged
Conversation
…tiple tags 2. added flushing of text buffer such that if typing a tag and pressing the "Done" button, the tag gets applied 3. moved tag editing into UpdateDetailsModal
2. added tag visibility to sidebar section in Settings.js
…o Games.js and GameVideos.js
Add manual SteamGridDB asset selection for games
Tagging Feature
…. Updated empty state boxes styling
Video tagging updates
- Replace solid-color cards with horizontal layout: dark background, colored left accent stripe (inset shadow), and a subtle gradient wash from the tag color across the card - Tag icon glows in its accent color; video count shown as a colored badge on the right - In edit mode, each card gains a palette button (PaletteIcon) that opens an "Edit Tag Color" dialog with a live preview, SketchPicker, and a "Reset to default" button - TagChip component updated to match: left accent stripe via box-shadow instead of solid background fill, keeping the color as an accent Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Videos can now be trimmed non-destructively: the original file is never
touched, but start_time/end_time are stored in the DB and an FFmpeg
stream-copy crop is written to derived/{id}/{id}-cropped.mp4. Any
existing transcoded quality variants (480p/720p/1080p) are deleted and
re-generated from the cropped file in a background thread.
- Alembic migration adds start_time, end_time, has_crop to video_info
- VideoInfo model + json() serialization updated
- util.py: create_video_crop() FFmpeg stream-copy helper
- api.py: get_video_path() handles quality='cropped'; new
/api/video/original (login_required) serves original file for waveform
editor; PUT /api/video/details/<id> triggers _apply_crop_async() or
_clear_crop() + auto re-transcode in daemon threads; /api/video
refactored to use shared _stream_video_file() helper
- WaveformCropper.js: WaveSurfer.js v7 + RegionsPlugin waveform editor
with draggable crop region, numeric inputs, and Reset button
- UpdateDetailsModal.js: embeds WaveformCropper, saves start_time/end_time
- CompactVideoCard.js: passes crop props to UpdateDetailsModal
- utils.js getVideoSources: points Source quality at cropped file when
has_crop is true (nginx and flask serving modes)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…with the real upload directory
Video Cropping
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
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.
This pull request introduces several new features and improvements focused on video tagging and cropping, as well as enhancements to the user interface and dependency updates. The most notable changes are the addition of video tags for improved search and categorization, support for video cropping, new routes and UI for tag browsing, and robustness improvements for video thumbnails. Several new dependencies have also been added to support these features.
Feature Additions
README.md[1]app/client/src/common/utils.js[2]README.md[1]app/client/src/components/cards/CompactVideoCard.js[2] [3] [4] [5]Routing and UI Enhancements
app/client/src/App.js[1] [2] [3] [4] [5]User Experience Improvements
CompactVideoCardby adding retry logic and error handling, reducing broken thumbnails and improving user experience. (app/client/src/components/cards/CompactVideoCard.js[1] [2]