254 Commits

Author SHA1 Message Date
pax
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
pax
a93a8bc70f Pause video when opening in external application 2026-04-05 23:40:17 -05:00
pax
b82b51bb40 Darken Ko-fi badge for better contrast 2026-04-05 23:28:09 -05:00
pax
52126401cb Fix Ko-fi badge — green right side for visible split 2026-04-05 23:27:38 -05:00
pax
61a39f55d0 Unify Ko-fi badge into single section 2026-04-05 23:26:10 -05:00
pax
cb43e53583 Add support text above Ko-fi button 2026-04-05 23:13:02 -05:00
pax
58931f6fc4 Move Ko-fi button to top of README 2026-04-05 23:12:32 -05:00
pax
fee94ccf46 Style Ko-fi badge to match green-on-black theme 2026-04-05 23:09:54 -05:00
pax
3986af0a7e Add Ko-fi donate button to README 2026-04-05 23:07:02 -05:00
pax
dc496a57ba Add tested sites list to README 2026-04-05 22:35:47 -05:00
pax
5f4af78e91 Apply saved thumbnail size on startup v0.1.9 2026-04-05 22:17:13 -05:00
pax
1ac3706e96 Trigger infinite scroll when splitter/resize removes scrollbar 2026-04-05 22:15:21 -05:00
pax
57475098e2 Fix infinite scroll not triggering when results don't fill viewport 2026-04-05 22:12:32 -05:00
pax
56b802b745 Simplify combobox dropdown styling — let Fusion draw its own arrow 2026-04-05 21:55:47 -05:00
pax
76acb8bb67 Fix combobox dropdown arrow styling on Windows dark mode 2026-04-05 21:48:58 -05:00
pax
1aba26aa81 Simplify install path wording in README 2026-04-05 21:42:01 -05:00
pax
626785b965 Fix install path in README — localappdata, not program files 2026-04-05 21:41:25 -05:00
pax
838967f83f Bump version to 0.1.9, update README 2026-04-05 21:30:50 -05:00
pax
1a5dbff1bb Clean up dead code and unused imports 2026-04-05 21:30:47 -05:00
pax
8467c0696b Add post date to info line 2026-04-05 21:15:22 -05:00
pax
e22cde2a27 Add start-from-page field in top bar 2026-04-05 21:11:34 -05:00
pax
efc12e70ac Fix infinite scroll stopping early from false exhaustion 2026-04-05 21:08:19 -05:00
pax
c39e05cdb2 Lock video controls to bottom of preview panel 2026-04-05 21:08:19 -05:00
pax
d283376ebf Thumbnail selection/hover hugs pixmap content rect 2026-04-05 21:08:18 -05:00
pax
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
pax
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
pax
9c17505b4b Revert centering — breaks video playback, keep simple layout 2026-04-05 20:36:47 -05:00
pax
0092007fc1 Center video widget in layout 2026-04-05 20:34:43 -05:00
pax
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
pax
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
pax
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
pax
bc0ddcb221 Hide video widget until first frame to prevent black flash 2026-04-05 20:20:31 -05:00
pax
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
pax
30de2fa6ed Video widget transparent background — matches QSS theme
Removes black letterboxing around videos in themed mode.
2026-04-05 20:10:25 -05:00
pax
e895f5e702 Match score button height to input box 2026-04-05 20:07:24 -05:00
pax
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
pax
a6866d8c0b Revert "Widen score +/- buttons to 30px for QSS padding"
This reverts commit b549f5d8b3637d7019bc607efe58e4cb8ac89e4f.
2026-04-05 20:04:38 -05:00
pax
b549f5d8b3 Widen score +/- buttons to 30px for QSS padding 2026-04-05 20:03:33 -05:00
pax
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
pax
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
pax
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
pax
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
pax
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
pax
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
pax
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
pax
d22547ad34 Animated filter: scan up to 50 pages, don't stop on short batches
Short API pages (< limit) no longer stop the scan when animated
filter is on — keeps looking through more pages. Only stops on
truly empty API response or 50 page cap.
2026-04-05 19:12:55 -05:00
pax
c035308030 Animated filter: client-side only, 20 page backfill cap
Removed server-side tag (wastes a search slot). Client-side
filter with 20 page backfill when animated is checked (vs 5
normally) to find enough animated posts.
2026-04-05 19:09:41 -05:00
pax
fe5dde7a2f Use 'animated' tag for all boorus — universal support 2026-04-05 19:07:06 -05:00
pax
33e10e8079 Animated filter: server-side filetype tag for full results
Danbooru/e621: filetype:gif,mp4,webm,zip
Gelbooru/Moebooru: animated tag
Client-side filter kept as fallback safety net.
2026-04-05 19:04:52 -05:00
pax
c577d7005a Add Animated checkbox — filters to only show video/gif/animated posts
Client-side filter by file extension. Works with backfill and
infinite scroll. Unchecked shows everything, checked shows only
gif/mp4/webm/mkv/mov/zip(ugoira).
2026-04-05 19:00:03 -05:00