8ef40dc0fe
Restore popout windowed position on F11 exit (defer fit, disable Hyprland anim, dedupe video-params)
2026-04-07 11:13:43 -05:00
56cb5ce1df
Scroll tilt navigates one cell/post in grid, preview, and popout
2026-04-07 08:50:13 -05:00
92b7a16ab2
Restore popout position via hyprctl on first fit (Wayland ignores Qt setGeometry for child windows)
2026-04-06 21:36:40 -05:00
2f3161f974
Save popout position from hyprctl on close (Wayland can't report position to Qt)
2026-04-06 19:51:35 -05:00
7004f38668
Popout max height 90% of screen
2026-04-06 19:25:04 -05:00
37082a55c1
Consolidate popout sizing into single _fit_to_content function
2026-04-06 19:23:42 -05:00
f2a85bb634
Scale up landscape content if window too narrow (min 250px height)
2026-04-06 19:17:40 -05:00
803b5f5b24
Remove landscape minimum, respect user's saved window width with 85% height cap
2026-04-06 19:15:17 -05:00
4cf094f517
Revert user-resize tracking, keep simple min/max constraints
2026-04-06 19:14:08 -05:00
c0a189192e
Popout respects user resize per session, resets when stretched to minimum
2026-04-06 19:12:34 -05:00
1de6f02ed0
Bump landscape popout minimum to 45% of screen
2026-04-06 19:03:06 -05:00
0a1fbb7906
Landscape popout minimum width 35% of screen
2026-04-06 19:02:07 -05:00
aaf33dd7c7
Limit popout height to 85% of screen for portrait content
2026-04-06 19:00:22 -05:00
0e6e7090ff
Unset keep_aspect_ratio before resize to allow aspect ratio changes
2026-04-06 15:15:10 -05:00
f295e51d59
Clamp popout to both screen width and height on aspect change
2026-04-06 15:07:43 -05:00
5e91e7ebb9
Fix popout overlay zone detection: map cursor to window coordinates
2026-04-06 14:16:23 -05:00
c6c4df1e77
Tighten popout overlay trigger zones to 40px
2026-04-06 14:14:51 -05:00
e01aa86063
Popout overlay: toolbar shows near top edge, controls near bottom
2026-04-06 14:13:40 -05:00
84726f9677
Clamp popout height to screen bounds on landscape-to-portrait transition
2026-04-06 14:00:32 -05:00
2fbf2f6472
0.2.0: mpv backend, popout viewer, preview toolbar, API retry, SearchState refactor
...
Video:
- Replace Qt Multimedia with mpv via python-mpv + OpenGL render API
- Hardware-accelerated decoding, frame-accurate seeking, proper EOF detection
- Translucent overlay controls in both preview and popout
- LC_NUMERIC=C for mpv locale compatibility
Popout viewer (renamed from slideshow):
- Floating toolbar + controls overlay with auto-hide (2s)
- Window auto-resizes to content aspect ratio on navigation
- Hyprland: hyprctl resizewindowpixel + keep_aspect_ratio prop
- Window geometry persisted to DB across sessions
- Smart F11 exit sizing (60% monitor, centered)
Preview toolbar:
- Bookmark, Save, BL Tag, BL Post, Popout buttons above preview
- Save opens folder picker menu, shows Save/Unsave state
- Blacklist actions have confirmation dialogs
- Per-tab button visibility (Library: Save + Popout only)
- Cross-tab state management with grid selection clearing
Search & pagination:
- SearchState dataclass replaces 8 scattered attrs + defensive getattr
- Media type filter dropdown (All/Animated/Video/GIF/Audio)
- API retry with backoff on 429/503/timeout
- Infinite scroll dedup fix (local seen set per backfill round)
- Prev/Next buttons hide at boundaries, "(end)" status indicator
Grid:
- Rubber band drag selection
- Saved/bookmarked dots update instantly across all tabs
- Library/bookmarks emit signals on file deletion for cross-tab sync
Settings & misc:
- Default site option
- Max thumbnail cache setting (500MB default)
- Source URLs clickable in info panel
- Long URLs truncated to prevent splitter blowout
- Bulk save no longer auto-bookmarks
2026-04-06 13:43:46 -05:00
b30a469dde
Slideshow defaults to fullscreen, remembers windowed size on F11
2026-04-06 01:27:17 -05:00
1a5dbff1bb
Clean up dead code and unused imports
2026-04-05 21:30:47 -05:00
c39e05cdb2
Lock video controls to bottom of preview panel
2026-04-05 21:08:19 -05:00
3b22538e1a
Restore auto-sizing for preview panel only
...
Preview: constrains height to video aspect ratio (no bars)
Slideshow: KeepAspectRatio with themed letterbox (centered)
2026-04-05 20:44:10 -05:00
24f8ffff51
Remove auto-sizing, theme-colored letterbox bars instead
...
Let KeepAspectRatio handle sizing (centered by default).
Set video widget palette to match theme background so
letterbox bars blend with the UI instead of showing black.
2026-04-05 20:39:43 -05:00
9c17505b4b
Revert centering — breaks video playback, keep simple layout
2026-04-05 20:36:47 -05:00
0092007fc1
Center video widget in layout
2026-04-05 20:34:43 -05:00
06ccdd475d
Auto-detect video orientation — constrain correct dimension
...
Compares video aspect ratio to container ratio. Wider videos
get height constrained, taller videos get width constrained.
Works for both preview and slideshow automatically.
2026-04-05 20:30:54 -05:00
3f2bc67b46
Slideshow: constrain video width to eliminate side bars
...
Preview constrains height (eliminates top/bottom bars).
Slideshow constrains width (eliminates side bars).
Both use video aspect ratio from first frame.
2026-04-05 20:28:43 -05:00
6d6a33f99f
Fix slideshow video sizing, revert video hide
...
- Slideshow video player: auto_size_video=False, no height constraint
- Revert video widget hide/show (caused info panel issues)
- Preview video still auto-sizes to aspect ratio
2026-04-05 20:24:39 -05:00
bc0ddcb221
Hide video widget until first frame to prevent black flash
2026-04-05 20:20:31 -05:00
843d49e4a3
Auto-size video widget to match video aspect ratio
...
Detects video dimensions from first frame via QVideoSink,
sets max height on the video widget to eliminate black bars.
Resets on each new video. Uses KeepAspectRatio mode.
2026-04-05 20:18:36 -05:00
30de2fa6ed
Video widget transparent background — matches QSS theme
...
Removes black letterboxing around videos in themed mode.
2026-04-05 20:10:25 -05:00
6e5b348ff7
Copy File to Clipboard everywhere, video support, wl-copy
...
- Renamed "Copy Image to Clipboard" to "Copy File to Clipboard"
- Works for images AND videos via wl-copy with correct MIME types
- Added to grid, preview, bookmarks, and library context menus
- Ctrl+C shortcut works globally
- Qt fallback for non-Wayland systems
2026-04-05 14:45:29 -05:00
43a4e1e726
Fix copy to clipboard — fallback to cached path, always show option
...
- Ctrl+C tries pixmap then cached file path as fallback
- Preview right-click always shows "Copy Image to Clipboard"
- Works for images and loads from disk for videos
- Status bar shows result count with copy confirmation
2026-04-05 14:24:02 -05:00
ac2c15be29
Slideshow blacklist buttons, Ctrl+C copy, fix README code blocks
...
- BL Tag button in slideshow: opens categorized tag menu
- BL Post button in slideshow: blacklists current post
- Ctrl+C copies preview image to clipboard
- "Copy Image to Clipboard" in grid right-click menu
- Fix README code block formatting (missing closing backticks)
- Add ffmpeg back to Linux install deps
2026-04-05 14:04:15 -05:00
9df3009a94
Sync video player state between preview and slideshow, fix skip
...
- Mute, volume, autoplay, loop state synced on slideshow open/close
- Loop restart detection requires position > 80% of duration to
prevent false triggers on new video loads
2026-04-05 05:51:43 -05:00
40ded871cc
Fix last video skipping in Next mode
...
Reset _last_pos on play_file so a new video starting at 0
doesn't trigger the loop-restart detection from the previous
video's high position.
2026-04-05 05:47:29 -05:00
059b24d255
Revert Nerd Font glyph buttons and button width changes
...
Reverts 4 commits: Nerd Font detection, icon properties, lazy
detection, and hardcoded width removal. Not ready for stable.
2026-04-05 05:21:53 -05:00
fb6a524868
Fix missing Property import in preview.py
2026-04-05 05:20:17 -05:00
892c2aa60f
Fix Nerd Font detection (codicon range), QSS-targetable icon properties
...
- Use codicon codepoints (eb7c etc.) which exist in Terminess/Nerd Fonts
- All icons overridable via QSS: qproperty-playIcon, qproperty-pauseIcon,
qproperty-muteIcon, qproperty-unmuteIcon on VideoPlayer
- Lazy detection after QSS is applied
2026-04-05 05:18:26 -05:00
0e092b2b93
Lazy Nerd Font detection — runs after QSS is loaded
...
Detection deferred to first play_file call so the widget's font
(including QSS overrides) is checked instead of the default font.
2026-04-05 05:14:08 -05:00
7b6c325bdb
Nerd Font glyph buttons, remove hardcoded button widths
...
Auto-detects if app font has Nerd Font glyphs. If yes, uses
unicode icons for Play/Pause/Mute/Loop/etc. Falls back to text.
Removed all setFixedWidth on buttons so QSS can control sizing.
2026-04-05 05:06:36 -05:00
915afb41df
Ctrl+P privacy screen works from slideshow window
2026-04-05 04:52:48 -05:00
08c961ba80
Configurable slideshow monitor in Settings > General
...
Dropdown lists all monitors. Default: same as app window.
Select a specific monitor to always open slideshow there.
2026-04-05 03:55:47 -05:00
385acc2a0a
Force slideshow to open on same monitor as main window
2026-04-05 03:51:33 -05:00
eede01ff51
Only show Autoplay/Manual button when Next mode is selected
...
Autoplay is irrelevant for Loop and Once — only matters when
videos auto-advance to the next post.
2026-04-05 03:49:59 -05:00
adeb318131
Set minimum size on slideshow window to prevent squishing
2026-04-05 03:46:05 -05:00
b8033c41e1
3-way Loop/Once/Next cycle, cleaner Autoplay/Manual labels
...
- Loop: repeat forever
- Once: play once, stop at end
- Next: play once, advance to next post
- Autoplay/Manual labels for auto-start toggle
- Document :checked state in themes/README.md
2026-04-05 03:31:58 -05:00
0362256bbd
Manual mode pauses at end of current video instead of restarting
2026-04-05 03:27:00 -05:00