83 Commits

Author SHA1 Message Date
pax
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
pax
4e8cc97876 Keep result count in status bar when post loads 2026-04-05 14:19:39 -05:00
pax
6b2c42a239 Fix infinite scroll: stop at end, no page turn on arrow keys
- Track exhausted state — stop fetching when API has no more results
- Disable nav_past_end/nav_before_start in infinite scroll mode
- Disable page turn from _navigate_preview in infinite scroll mode
- Show "(end)" in status bar when all results loaded
- Reset exhausted flag on new search
2026-04-05 14:17:16 -05:00
pax
adef0fc86c Trigger prefetch on infinite scroll append 2026-04-05 14:05:29 -05:00
pax
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
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
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".
2026-04-05 12:47:57 -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
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
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
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
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
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
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
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
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
pax
192397f1ec Pre-release fixes for v0.1.5
- Fix Library slideshow navigation (was falling through to Browse)
- Fix bookmarks import signal using wrong variable name
- Fix "Favoriting" status message → "Bookmarking"
- Rename FavThumbSignals → BookmarkThumbSignals
- Update README: all Favorite→Bookmark, add Library section
- Add Library tab to keybinds documentation
2026-04-05 03:13:00 -05:00
pax
c26d9a64f9 Space to pause/play video when hovering over preview
Uses keyPressEvent on main window — only fires when no text
input has focus (search bar consumes Space itself). Checks
underMouse() so it only works when hovering the preview.
2026-04-05 03:06:47 -05:00
pax
768deca348 Fix video position sync between preview and slideshow
Wait for media to load before seeking. Position remembered
both ways: preview->slideshow on open, slideshow->preview on close.
2026-04-05 02:32:54 -05:00
pax
fec1470629 Slideshow remembers video position, fix preview restore on close
- Grabs video position before opening slideshow and seeks to it
- Use closed signal from closeEvent instead of destroyed for
  reliable preview restoration on slideshow close
2026-04-05 02:29:42 -05:00
pax
cfbb58fe9f Fix recursive call in _set_preview_media breaking all previews
Was calling itself instead of self._preview.set_media in the
else branch, causing infinite recursion and silent failure.
2026-04-05 02:25:42 -05:00
pax
c231842897 Clear preview when slideshow is open, restore on close
Media only plays in slideshow when it's open — preview panel
shows just info/tags. Restores preview on slideshow close.
2026-04-05 02:23:06 -05:00
pax
bbb5600c98 Show/hide slideshow actions when switching tabs with slideshow open 2026-04-05 02:18:21 -05:00
pax
fb42d53dbc Hide Bookmark/Save buttons in slideshow when viewing Library 2026-04-05 02:16:27 -05:00
pax
f8582e83fa Configurable library directory in Settings > Paths
Browse button to pick a custom library save directory.
Applied on startup via set_library_dir(). Restart required.
2026-04-05 02:01:44 -05:00
pax
e84765a06f Fix library thumbs, decouple save/bookmark, smaller dot + yellow star
- Skip video files in library thumbnail generation (PIL can't open them)
- _on_bookmark_done only sets bookmarked for bookmark ops, saved for save ops
- Smaller green dot with yellow star to its right
- Default bookmark star color: yellow (#ffcc00)
2026-04-05 01:46:42 -05:00
pax
72e4d5c5a2 v0.1.4 — Library rewrite: Browse | Bookmarks | Library
Major restructure of the favorites/library system:

- Rename "Favorites" to "Bookmarks" throughout (DB API, GUI, signals)
- Add Library tab for browsing saved files on disk with sorting
- Decouple bookmark from save — independent operations now
- Two indicators on thumbnails: star (bookmarked), green dot (saved)
- Both indicators QSS-controllable (qproperty-bookmarkedColor/savedColor)
- Unbookmarking no longer deletes saved files
- Saving no longer auto-bookmarks
- Library tab: folder sidebar, sort by date/name/size, async thumbnails
- DB table kept as "favorites" internally for migration safety
2026-04-05 01:38:41 -05:00
pax
074d75770e Auto-evict cache after each image download
When auto_evict is enabled and cache exceeds max_cache_mb,
evicts oldest non-favorited files immediately after download.
2026-04-05 01:09:17 -05:00
pax
6375806127 Backfill blacklisted posts from next API pages
When blacklist filtering reduces results below page size, fetches
additional pages to fill the gap. Filtered posts from backfill
pages also go through the blacklist. Caps at 5 extra pages.
2026-04-05 01:02:39 -05:00
pax
f311326e73 Optional prefetch with progress bar, post blacklist, theme template link
- Prefetch adjacent posts is now a toggle in Settings > General (off by default)
- Prefetch progress bar on thumbnails shows download state
- Blacklist Post: right-click to hide a specific post by URL
- "Create from Template" opens themes reference on git.pax.moe
  and spawns the default text editor with custom.qss
2026-04-05 00:45:53 -05:00
pax
5d48581f52 Prefetch in all 4 directions (left, right, up, down)
CDN downloads don't count against API rate limits so we can
safely prefetch all adjacent posts for instant navigation.
2026-04-05 00:32:04 -05:00
pax
a9d177ee91 Throttle prefetch: only next+prev, 1s stagger, sequential
Reduced from 3 concurrent prefetches to 2 sequential with 1s
delay between them. Avoids hitting Danbooru's 10 req/s rate limit.
2026-04-05 00:28:35 -05:00