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
924e065e65
Set cached_path on bookmark thumbnails for drag and copy
2026-04-06 15:20:50 -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
bda92a0a87
Instant infinite scroll drain, trigger 3 rows early
...
Old staggered drain (50ms per post) was added for visual polish but
made infinite scroll painfully slow — a 40-post page took 2 seconds
just to add to the grid. Thumbnails already load async via _fetch_thumbnail,
so the stagger was just delaying grid population for no real benefit.
Now all posts are added instantly in one pass with thumbnails filling in
as they arrive. Scroll trigger widened from 1 row to 3 rows from bottom
so the next page starts loading before you reach the end.
2026-04-06 01:01:53 -05:00
a93a8bc70f
Pause video when opening in external application
2026-04-05 23:40:17 -05:00
5f4af78e91
Apply saved thumbnail size on startup
2026-04-05 22:17:13 -05:00
1ac3706e96
Trigger infinite scroll when splitter/resize removes scrollbar
2026-04-05 22:15:21 -05:00
57475098e2
Fix infinite scroll not triggering when results don't fill viewport
2026-04-05 22:12:32 -05:00
56b802b745
Simplify combobox dropdown styling — let Fusion draw its own arrow
2026-04-05 21:55:47 -05:00
76acb8bb67
Fix combobox dropdown arrow styling on Windows dark mode
2026-04-05 21:48:58 -05:00
1a5dbff1bb
Clean up dead code and unused imports
2026-04-05 21:30:47 -05:00
8467c0696b
Add post date to info line
2026-04-05 21:15:22 -05:00
e22cde2a27
Add start-from-page field in top bar
2026-04-05 21:11:34 -05:00
efc12e70ac
Fix infinite scroll stopping early from false exhaustion
2026-04-05 21:08:19 -05:00
c39e05cdb2
Lock video controls to bottom of preview panel
2026-04-05 21:08:19 -05:00
d283376ebf
Thumbnail selection/hover hugs pixmap content rect
2026-04-05 21:08:18 -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
e895f5e702
Match score button height to input box
2026-04-05 20:07:24 -05:00
00613ae534
Fix score buttons under QSS — override padding inline
...
QSS themes set large padding (14px) on QPushButton which hides
the -/+ text in 25px buttons. Inline style overrides to 2px/6px.
2026-04-05 20:05:44 -05:00
a6866d8c0b
Revert "Widen score +/- buttons to 30px for QSS padding"
...
This reverts commit b549f5d8b3637d7019bc607efe58e4cb8ac89e4f.
2026-04-05 20:04:38 -05:00
b549f5d8b3
Widen score +/- buttons to 30px for QSS padding
2026-04-05 20:03:33 -05:00
d385b8acee
Rename prefetch modes, cap Aggressive to 3 rows radius
...
- Adjacent → Nearby (4 cardinals)
- Full page → Aggressive (3 row radius ring, not entire grid)
- Prevents fetching 500 images in infinite scroll mode
2026-04-05 20:01:33 -05:00
83bec9d649
Don't prefetch full images on infinite scroll drain
...
Infinite scroll only needs thumbnails (already fetched inline).
Full image prefetch only triggers on post click and initial search.
2026-04-05 19:56:27 -05:00
0aa5d139d3
Prefetch modes: Off / Adjacent (4 cardinals) / Full page (spiral)
...
- Off: no prefetching
- Adjacent: simultaneous left/right/up/down (4 posts)
- Full page: ring expansion in all 8 directions
Dropdown in Settings > General replaces the old checkbox.
2026-04-05 19:55:21 -05:00
81b609f55e
Trigger cache eviction after infinite scroll page drain
...
Prevents unbounded cache growth during long infinite scroll
sessions. Runs after each batch of posts finishes loading.
2026-04-05 19:50:04 -05:00
39733e4865
Convert animated PNG and WebP to GIF for Qt playback
...
PIL extracts frames with durations, saves as animated GIF.
Non-animated PNG/WebP kept as-is. Converted on download and
on cache access (for already-cached files). Same pattern as
ugoira zip conversion.
2026-04-05 19:41:34 -05:00
ee329519de
Handle non-JSON API responses gracefully
...
Some boorus return empty/HTML responses for tag-limited queries.
All API clients now catch JSON parse errors and return empty
results instead of crashing.
2026-04-05 19:31:43 -05:00
c93cd9b97c
Animated filter: server-side tag only, remove client-side scanning
...
Uses 'animated' as a search tag (server handles it). Removed
client-side extension filter and backfill cap increases. Fast
and doesn't hit rate limits.
2026-04-05 19:20:25 -05:00