159 Commits

Author SHA1 Message Date
pax
04ffe5c602 Clear slideshow when blacklisting the previewed post 2026-04-05 13:53:35 -05:00
pax
9518f95a3c Clear preview only when the previewed post is blacklisted
Compare cached file path to determine if the right-clicked post
is the same one being previewed before clearing.
2026-04-05 13:49:20 -05:00
pax
8d3e3d97f6 v0.1.6 2026-04-05 13:45:55 -05:00
pax
df40a15093 Remove restart required from library directory label 2026-04-05 13:43:22 -05:00
pax
ed91f35975 Live settings apply — no restart needed for most settings
Infinite scroll, library dir, thumbnail size, rating, score
all apply immediately when saving settings.
2026-04-05 13:40:09 -05:00
pax
7115d34504 Infinite scroll mode — toggle in Settings > General
When enabled, hides prev/next buttons and loads more posts
automatically when scrolling to the bottom. Posts appended
to the grid, deduped against already-shown posts. Restart
required to toggle.
2026-04-05 13:37:38 -05:00
pax
78b7215467 Fix page label not updating when loading from cache 2026-04-05 13:28:15 -05:00
pax
63292aa9ba Cache page results — prev/next loads instantly from memory
Each page's results cached per search session. Going back to a
previous page loads from cache instead of re-fetching. Cache
cleared on new search.
2026-04-05 13:25:32 -05:00
pax
5bfc086931 Deduplicate posts across pages — backfilled posts don't repeat
Track shown post IDs across pages. Posts pulled from next page
via backfill won't appear again when navigating to that page.
Reset on new search.
2026-04-05 13:18:44 -05:00
pax
cd4efbcc45 Add backfill debug logging 2026-04-05 13:09:47 -05:00
pax
e515c19d05 Don't clear preview on blacklist — just re-search
Blacklisting a tag or post no longer clears the preview of an
unrelated post. The search reloads and the blacklisted post
simply disappears from the grid.
2026-04-05 13:05:17 -05:00
pax
396c008e9f Start prefetch from top on search, re-centers on post click 2026-04-05 12:59:58 -05:00
pax
e91d7d8a51 Prefetch in all 8 directions (ring expansion) not just linear
Expands outward in a grid-aware ring: left, right, up, down,
and all 4 diagonals at each distance level. Covers the page
more evenly.
2026-04-05 12:57:46 -05:00
pax
2156dec91d Spiral prefetch: gradually preloads entire page from clicked post
Expands outward from the selected post (±1, ±2, ±3...) with
200ms pacing between each download. Already-cached files skip
instantly. Setting renamed to "Prefetch whole page over time".
v0.1.5
2026-04-05 12:47:57 -05:00
pax
a7a76018d8 Add scroll wheel volume and Ctrl+P to slideshow keybinds in README 2026-04-05 12:45:42 -05:00
pax
09c4f56cbb Shorten prefetch checkbox label 2026-04-05 12:42:56 -05:00
pax
c5668c4604 Remove deleted custom_css_guide.txt from PyInstaller spec 2026-04-05 06:05:38 -05:00
pax
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
pax
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
pax
76c25aa892 Custom QProxyStyle for visible arrows on dark themes, widen Library btn
- QProxyStyle overrides drawPrimitive to draw arrow triangles in
  the theme's text color (extracted from QSS)
- Works for spinbox up/down and combobox dropdown arrows
- Cross-platform, no SVG resources needed
- Library button widened to 80px to prevent text clipping
2026-04-05 05:38:34 -05:00
pax
0ec72f41fa Fix spinbox/combobox arrows under custom QSS
Extract text and background colors from QSS and set palette roles
(ButtonText, WindowText, Button) so Fusion draws arrows in the
correct color. Removed broken spinbox button overrides from themes.
2026-04-05 05:32:53 -05:00
pax
64f685d564 Add spinbox button styling to all bundled themes
Consistent up/down button colors matching each theme's palette.
2026-04-05 05:30:15 -05:00
pax
32f67cb57c Remove injected spinbox fix, add spinbox styling to bundled themes
Each theme now has its own QSpinBox button styling matching
its color scheme. No more injected CSS hacks.
2026-04-05 05:28:52 -05:00
pax
24146d49db Fix spinbox arrows under custom QSS
Inject CSS triangle arrows using palette(text) color when the
user's QSS doesn't already style QSpinBox buttons.
2026-04-05 05:27:41 -05:00
pax
fefc8c7fd5 Remove old custom_css_guide.txt — replaced by themes/README.md 2026-04-05 05:24:42 -05:00
pax
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
pax
fb6a524868 Fix missing Property import in preview.py 2026-04-05 05:20:17 -05:00
pax
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
pax
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
pax
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
pax
7c30ec5819 Document QSS button text limitations in theme docs
Qt QSS doesn't support CSS content property for replacing text.
Document Nerd Font workaround and note that button labels require
code changes.
2026-04-05 05:00:06 -05:00
pax
915afb41df Ctrl+P privacy screen works from slideshow window 2026-04-05 04:52:48 -05:00
pax
1cc7bc06c1 Privacy screen hides slideshow and pauses video, update keybinds
- Ctrl+P now hides slideshow window and pauses all video playback
- Slideshow restored when privacy screen is toggled off
- README keybinds: arrow keys + hjkl for preview navigation
2026-04-05 04:48:41 -05:00
pax
d87a060537 Document selection/hover highlight and fix README accuracy
- theme docs: selection-background-color controls border + hover
- README: fix ffmpeg mention, update library feature list
2026-04-05 04:38:57 -05:00
pax
5c3995f5d6 Fix right-click: select visually without activating preview
Right-click selects the thumbnail (border highlight) but doesn't
trigger post_selected/activated, so preview stays on current post.
Added hover border highlight. Removed _last_activated_index guard.
2026-04-05 04:30:40 -05:00
pax
05e19ee957 Clear preview on blacklist, right-click doesn't change selection
- Blacklisting a tag or post clears the preview
- Right-click shows context menu without selecting/activating post
2026-04-05 04:25:05 -05:00
pax
fad6ab65af Fix video thumbnails (ffmpeg with placeholder fallback), fix right-click restart
- Video thumbnails: try ffmpeg, fall back to play icon placeholder
- Right-click no longer restarts video playback on same post
- Reset activated index on new search
2026-04-05 04:21:48 -05:00
pax
85ec13bf7c Fix video thumbnail capture for new files
Add audio output (muted) so QMediaPlayer decodes frames.
Add capture guard and timeout cleanup.
2026-04-05 04:18:12 -05:00
pax
660abe42e7 Replace ffmpeg with Qt-native video thumbnails
Use QMediaPlayer + QVideoSink to grab the first frame instead
of shelling out to ffmpeg. Removes ffmpeg as a dependency entirely.
2026-04-05 04:16:38 -05:00
pax
b1ce736abd Add video playback deps to Linux install (GStreamer/ffmpeg backend) 2026-04-05 04:10:42 -05:00
pax
7c657b68c1 Expand Linux install instructions in README
Per-distro package commands (Arch, Ubuntu, Fedora), venv setup,
desktop entry example, ffmpeg note for video thumbnails.
2026-04-05 04:09:25 -05:00
pax
13a8383099 v0.1.5 2026-04-05 04:03:11 -05:00
pax
a2302e2caa Add missing defaults, log all caught exceptions
- Add prefetch_adjacent, clear_cache_on_exit, slideshow_monitor,
  library_dir to _DEFAULTS for fresh installs
- Replace all silent except-pass with logged warnings
2026-04-05 04:01:35 -05:00
pax
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
pax
385acc2a0a Force slideshow to open on same monitor as main window 2026-04-05 03:51:33 -05:00
pax
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
pax
adeb318131 Set minimum size on slideshow window to prevent squishing 2026-04-05 03:46:05 -05:00
pax
48fec74dcd Populate info panel on first slideshow open 2026-04-05 03:43:41 -05:00
pax
d8b28152f6 Hide preview and expand info panel when slideshow is open
Preview widget hidden (not just cleared), info panel expands to
fill the space. Splitter sizes saved and restored on close.
2026-04-05 03:40:44 -05:00
pax
e0f54a963d Show info panel with tags in preview area while slideshow is open
Auto-shows the info panel when slideshow opens (filling the empty
preview space with tags and post details). Restores previous
visibility state when slideshow closes.
2026-04-05 03:37:03 -05:00