338 Commits

Author SHA1 Message Date
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
pax
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
pax
0362256bbd Manual mode pauses at end of current video instead of restarting 2026-04-05 03:27:00 -05:00
pax
78f2dc030f Fix Loop/Next: use position detection instead of EndOfMedia
EndOfMedia doesn't fire reliably with setLoops(1). Instead,
use Infinite loops and detect the loop restart via position
jumping from near-end back to 0. Pause and emit play_next
when in Next mode. Toggle takes effect immediately.
2026-04-05 03:22:18 -05:00
pax
68e04776b1 Loop/Next toggle takes effect immediately during playback
Use manual looping via EndOfMedia instead of QMediaPlayer.Loops.Infinite
so toggling mid-playback works without waiting for next video.
2026-04-05 03:19:22 -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
d4ee2b2ec1 Fix video position not restoring on slideshow close
Emit closed signal before stopping video so the position
can be read in _on_fullscreen_closed.
2026-04-05 03:00:44 -05:00
pax
558c07877b Add button to manually add blacklisted post URLs
Supports pasting multiple URLs at once (space or newline separated).
2026-04-05 02:54:28 -05:00
pax
781f03e85b Show warning when library is empty or unreachable
Covers both unmounted drives (dir exists but empty) and
missing directories with red warning text.
2026-04-05 02:50:10 -05:00
pax
4ffc2afc84 Show "Library directory unreachable" when path is gone
Detects missing/unreadable library dir on refresh and shows
red warning text instead of blank grid.
2026-04-05 02:45:24 -05:00
pax
8d6d03ac59 Red dot for missing files, green dot for library items
- Missing file indicator (red dot) for NAS/lost files, QSS-controllable
  via qproperty-missingColor
- Library items now show green saved dot
- Missing files detected on refresh and marked red
2026-04-05 02:37:03 -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
57b3dd853a Fix video opening externally, fix slideshow stealing key events
- Video errors now logged instead of opening in system player
- Slideshow event filter only intercepts keys/scroll when its
  window is active, fixing up/down skipping in main app
2026-04-05 02:10:07 -05:00
pax
27f4f0eb19 Only change slideshow volume when its window is focused 2026-04-05 02:04:11 -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
c9fe8fa8a0 Video thumbnails via ffmpeg first-frame extraction
Library now generates video thumbnails by extracting the first
frame with ffmpeg. Cached alongside image thumbnails. Falls back
gracefully if ffmpeg is not available.
2026-04-05 01:57:02 -05:00
pax
189e44db1b Video placeholder thumbnails, multi-select delete in library
- Videos show a play triangle + file extension as placeholder
- Multi-select right-click: bulk delete from library
- Image thumbnails confirmed working
2026-04-05 01:53:14 -05:00
pax
1febdb4b1a Fix library thumbnails, add right-click context menu
- Image thumbnails generated via PIL and cached
- Video files show tooltip with filename (QPixmap fallback attempted)
- Right-click: Open in Default App, Open Containing Folder,
  Copy File Path, Delete from Library
2026-04-05 01:50:49 -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
243a889fc1 QSS-controllable favorite/saved indicator dots
ThumbnailWidget now exposes savedColor and favoritedColor as
Qt properties. Set via QSS: qproperty-savedColor / qproperty-favoritedColor
2026-04-05 01:15:56 -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
b58098be7f Add blacklisted posts list to Settings > Blacklist tab
Shows all blacklisted post URLs with Remove Selected and Clear All buttons.
2026-04-05 00:57:32 -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
pax
a5f33237dd Prefetch adjacent posts for faster click-to-play
When viewing a post, silently downloads the next, previous, and
second-next posts in the background. Cached files are skipped.
2026-04-05 00:27:07 -05:00
pax
ea08e0e3e4 Add Loop/Next toggle for video playback
Default: Loop (replays video). Toggle to Next: auto-advances to
next post when video ends. Works in both preview and slideshow.
2026-04-05 00:25:08 -05:00
pax
2bca5ca188 Click-to-seek, scroll-to-volume, filetype in preview info bar
- Clicking the seek bar jumps to that position (both preview and slideshow)
- Scroll wheel adjusts volume when viewing video (both preview and slideshow)
- Filetype shown in the info bar below preview (e.g. JPG, WEBM, PNG)
2026-04-05 00:21:19 -05:00
pax
5d87457840 Scroll tilt flips pages without auto-selecting first post
Separate page_forward/page_back signals from nav boundary signals
so tilt just changes page, doesn't trigger post preview.
2026-04-05 00:14:41 -05:00
pax
a97c85902c Scroll tilt left/right to navigate prev/next page 2026-04-05 00:08:38 -05:00
pax
fd476c4967 Fix grid selection highlight with custom QSS themes
Extract selection-background-color from QSS and apply it to the
app palette so the grid's custom-painted highlight matches the theme.
2026-04-04 22:50:16 -05:00
pax
0c57251d94 Widen Save button to prevent text clipping 2026-04-04 22:42:35 -05:00
pax
1e7b6ab193 Switch to Fusion style when custom.qss is loaded
System Qt themes (Breeze etc.) conflict with custom QSS, causing
broken button rendering. Fusion style gives QSS full control.
2026-04-04 22:41:27 -05:00
pax
a838cf23e8 Only show search history from dropdown arrow, not on click 2026-04-04 22:05:00 -05:00
pax
50d22932fa Decode HTML entities in Gelbooru tags
Fixes ' showing instead of apostrophes in tag names.
2026-04-04 21:52:20 -05:00
pax
708d177801 Fix grid nav: up/down in last row, preview no longer steals focus
- Up/Down in grid's last incomplete row moves to last post instead
  of triggering page turn
- Preview panel set to NoFocus so clicking it doesn't steal
  keyboard focus from the grid
2026-04-04 21:48:31 -05:00
pax
6554344523 Categorized blacklist tag submenu in right-click context
Blacklist Tag submenu now shows Artist/Character/Copyright/General/Meta
categories for Danbooru/e621. Falls back to flat list for other sites.
2026-04-04 21:39:20 -05:00
pax
8f2fc14b43 Add debug log for tag categories in info panel 2026-04-04 21:37:08 -05:00