This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+2 more
Summary
AI summaryUpdates New Features, anti-suspension, and Username across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Low |
Adds Safe Mode toggle for sequential downloads with jitter and retry handling. Adds Safe Mode toggle for sequential downloads with jitter and retry handling. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Adds Linux sign‑in via bundled Playwright Chromium, replacing WPE WebKit. Adds Linux sign‑in via bundled Playwright Chromium, replacing WPE WebKit. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Adds "Copy artist ID" context menu entry to inline viewer and gallery cards. Adds "Copy artist ID" context menu entry to inline viewer and gallery cards. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Adds Select All / Deselect All toolbar buttons to Gallery, Bookmarks, Discover, Rankings. Adds Select All / Deselect All toolbar buttons to Gallery, Bookmarks, Discover, Rankings. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Adds queue number badge to active job cards in History, updating dynamically. Adds queue number badge to active job cards in History, updating dynamically. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Improves Open Folder for multi‑artist jobs to open DownloadRoot directly. Improves Open Folder for multi‑artist jobs to open DownloadRoot directly. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Feature | Low |
Adds bookmark sorting dropdown with multiple ordering options, client‑side and instant across tabs. Adds bookmark sorting dropdown with multiple ordering options, client‑side and instant across tabs. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Feature | Low |
Improves download job naming to include artist name for single, multiple, and scheduled jobs. Improves download job naming to include artist name for single, multiple, and scheduled jobs. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes Linux Chromium permission denied by chmod +x after extraction. Fixes Linux Chromium permission denied by chmod +x after extraction. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixes followed‑artists incomplete list by adding missing URL params, using sequential fallback, and correcting race conditions. Fixes followed‑artists incomplete list by adding missing URL params, using sequential fallback, and correcting race conditions. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixes crash‑report dialog showing stale or XamlLoadException crashes. Fixes crash‑report dialog showing stale or XamlLoadException crashes. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixes viewer image blank when switching sections by reloading on attach. Fixes viewer image blank when switching sections by reloading on attach. Source: llm_adapter@2026-05-29 Confidence: high |
— |
| Bugfix | Medium |
Fixes followed artists missing after partial load by using sequential pagination and overlapping page fetch. Fixes followed artists missing after partial load by using sequential pagination and overlapping page fetch. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Medium |
Fixes download queue initial status by adding Queued state and correcting enum ordering regression. Fixes download queue initial status by adding Queued state and correcting enum ordering regression. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Medium |
Stops job restart loop after pause by removing premature TryStartNextPendingJobAsync call. Stops job restart loop after pause by removing premature TryStartNextPendingJobAsync call. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Medium |
Cancels orphaned Queued/Pending jobs on application launch to prevent unintended restarts. Cancels orphaned Queued/Pending jobs on application launch to prevent unintended restarts. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Low |
Prevents paused jobs from appearing in Completed list by centralizing JobCompleted event handling. Prevents paused jobs from appearing in Completed list by centralizing JobCompleted event handling. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
| Bugfix | Low |
Ensures Cancelled jobs route to the Cancelled list and fixes enum ordering regression affecting all statuses. Ensures Cancelled jobs route to the Cancelled list and fixes enum ordering regression affecting all statuses. Source: granite4.1:30b@2026-05-29-audit Confidence: low |
— |
Full changelog
Pikura 1.7.4
Quality-of-life fixes for bookmark sorting, cross-section viewer persistence, and crash report noise.
Features
- Bookmark sorting — New sort dropdown in the Bookmarks toolbar lets you order by Newest Bookmarked (default/API order), Newest Posted, Oldest Posted, Title A→Z, Title Z→A, or Most Pages. Sorting is client-side and applies instantly across all three tabs (Public, Private, Local Favorites).
Fixes
- Viewer image blank when switching sections — Navigating back to Bookmarks or Rankings when a viewer tab was already open left the image panel empty. Each section now forces the inline viewer to reload the current card on attach.
- Stale crash report dialog — The crash report dialog no longer appears for crashes older than 5 minutes or for XamlLoadException (which is a build-artifact issue, not a real app crash). The flag is cleared automatically in both cases.
Pikura 1.7.3
Quality-of-life improvements to job naming, followed-artists loading reliability, and download job lifecycle fixes.
Fixes
- Followed artists — overlapping page fetch to prevent gap drift — Pagination now steps by half the page size (24 instead of 48) so consecutive windows overlap. Artists that shift between pages mid-fetch due to Pixiv's unstable offset ordering are no longer missed. The shared deduplication set discards any duplicates introduced by the overlap.
- Pause triggers "Completed" notification — Pausing a job no longer double-fires the JobCompleted event. The ContinueWith handler now owns the event exclusively, preventing paused jobs from appearing in the Completed list.
- Job restart loop after pause — Pausing a job no longer triggers TryStartNextPendingJobAsync, which was causing the just-paused job (or another queued job) to restart immediately.
- Cancel does not route to Cancelled list — Fixed a JobStatus enum ordering regression introduced in 1.7.2 where adding Queued without explicit integer values shifted all existing database status codes by one, causing Cancelled jobs to be read as Failed, Paused jobs to restart as Running, and so on. All enum values now have explicit fixed integers.
- Orphaned Queued/Pending jobs restart on launch — Startup cleanup now cancels all Queued and Pending jobs from prior sessions, not just Running ones.
Improvements
- Descriptive download job names — Artist download jobs now show the artist name instead of "Download N Artists". Single artist shows name and ID; 2–3 artists listed by name; 4 or more shows the first three names and a count of the rest.
- Gallery job names include artist — Downloading selected or all artworks from an artist's gallery now prefixes the job name with the artist's name (e.g. "ArtistName: 42 artworks").
- Scheduled job names include artist — Scheduled artist downloads show the same descriptive artist label in the job name.
Pikura 1.7.2
Followed-artists pagination reliability, download queue status accuracy, and job lifecycle fixes.
Fixes
-
Followed artists — missing artists after partial load (#18)
Fixed: sequential pagination was stopping early whenever Pixiv returned a short page
(e.g. 46 instead of 48). Pixiv returns inconsistently-sized pages throughout the list,
not just at the end, so a short page is not a reliable end-of-list signal. Pagination
now only stops on a truly empty page or whenoffset >= Total. Also switched from
parallel to sequential per-branch fetching so that page drift caused by follows/unfollows
mid-fetch no longer causes missed or duplicated artists. -
Download queue — incorrect initial job status
Fixed:CreateJobAsynchad a dead-code branch (startImmediately ? Pending : Pending)
that always saved jobs asPendingregardless of slot availability. A newQueued
status has been added toJobStatusto distinguish jobs waiting for a slot from jobs
about to start. The UI now shows ⏳ Queued for waiting jobs and ⏳ Starting…
for jobs about to execute, with correct cancellable/resumable button visibility. -
Pause triggers "Completed" notification
Fixed:PauseJobAsyncwas firingJobCompletedimmediately after cancelling the task
token, whileContinueWithwas also about to fire it once the task actually ended.
The double-fire caused paused jobs to appear in the Completed list.PauseJobAsync
no longer fires the event directly —ContinueWithnow owns it exclusively. -
Job restart loop after pause
Fixed: theContinueWithPaused guard was callingTryStartNextPendingJobAsync()
before returning, which could pick up the paused job (or another queued job) and
restart it immediately. Pausing a job no longer triggers the next-job dequeue.
Pikura 1.7.1
Polish and bug-fix release covering job queue UX, download history, folder resolution, and selection controls across all views. Closes issues #18, #19, and #20.
New Features
- Select All / Deselect All — Added to the main toolbar in Gallery, Bookmarks, Discover, and Rankings. "☑ Select All" is always visible; "☒ Deselect All (n)" appears whenever items are selected. Consistent across all four views.
- Queue number badge — Active job cards in History now show a numbered badge (1, 2, 3…) indicating their position in the running queue, updating dynamically as jobs start, pause, and complete.
- Open Folder — multi-artist jobs — "Open Folder" for Discover / Rankings / Bookmarks "Download Selected" jobs (which span multiple artists) now opens the DownloadRoot directly instead of one artist's subfolder.
Improvements
- Job queue ordering — Running jobs are always sorted to the top of the Active list; Paused jobs appear next; Pending jobs at the bottom.
- Pause / Resume responsiveness — Pause and Resume commands update the UI optimistically before the async call completes, eliminating the visible lag.
- Progress preserved across pause/resume — Resuming a paused job reuses the existing VM so the completed/total counter and progress bar are never reset to zero. A fresh progress subscription is registered on each resume so events continue flowing.
- Initial progress on resume — An immediate progress event is emitted at the start of job execution so the counter is correct from the very first frame after resume.
- Open Folder — artist-level resolution — For single-artist jobs with multi-page subfolders or R-18 subfolders (
ArtistName/R-18/12345_Title/), Open Folder now correctly walks up to the artist-level folder (the direct child of DownloadRoot), not the artwork subfolder. - Open Folder — legacy jobs — Jobs downloaded before
output_folderwas tracked now fall back to searching DownloadRoot for a folder whose name contains the artist's user ID. - Gallery toolbar — "☒ Deselect All" button added to the top toolbar (next to "Download Selected"), matching the existing bottom-area button.
Fixes
- Folder named by member ID only (closes #19) — "Download Selected" (image ID) jobs were creating folders named
(141556065)with no artist name. Root cause:ArtworkDetailBodyhad wrong JSON property names ("id"/"name"instead of"userId"/"userName"), so the artist name always deserialized as null and%artist%resolved to empty in the folder template. Fixed. - Output folder not saved for image ID jobs (closes #20) —
DownloadArtworkAsyncnever captured the saved file's directory and never setjob.OutputFolder, so "Open Folder" never appeared for image-ID download jobs. Fixed by adding anonOutputFoldercallback matching the pattern used by artist downloads. - R-18 badge overlapping checkbox in Bookmarks — The R-18 badge was positioned top-left, colliding with the selection checkbox. Moved to top-right in both Fixed card templates, matching Gallery layout.
- Blue selection highlight clipped in Bookmarks — Selection border overlay was inside a
ClipToBoundscontainer and not visible. Restructured so the overlay sits outside the clipped border.
Pikura 1.7.0
Safer downloads with a new Safe Mode toggle, reliable Linux sign-in via Playwright Chromium, Hoshi sidebar fixes, and a fix for incomplete followed-artists lists.
New Features
- Safe Mode (anti-suspension) — New toggle in Settings → Downloads → Download Behavior, default OFF. When enabled, downloads run sequentially with 2–4 s jittered gaps between artworks, 300–800 ms between pages of multi-page works, 2–4 s between targets in multi-target batch jobs, and honor
Retry-Afterheaders with exponential backoff on HTTP 429/503 — so Pikura no longer trips Pixiv's "unauthorized access attempts" suspensions on long batch jobs. - Copy artist ID anywhere — Added "Copy artist ID" to the inline viewer image context menu and to every gallery card context menu (grid + list, natural + fixed). The artist name in the inline viewer is now also a single-click copy target. Mirrors to both the OS clipboard and the in-app artist-ID queue.
- Linux sign-in via Playwright Chromium — Linux login no longer relies on WPE WebKit / libwebkit2gtk and no longer asks users to paste their PHPSESSID. A real Chromium window opens, the user signs in normally, and the session cookie is captured automatically. First-run downloads ~150 MB of bundled Chromium with a clear progress dialog; subsequent sign-ins are instant. Works on Ubuntu, Debian, Fedora, Arch, openSUSE, and other distros.
- Pinned Chromium cache — Playwright's Chromium is installed into a Pikura-owned cache directory so future upgrades don't silently re-download the browser when the existing install is still usable.
Improvements
- Inline viewer status feedback — Copy actions now show confirmation in the status bar (e.g. "Copied artist ID 12345 (Username)").
- Manual PHPSESSID dialog — Reworded as an emergency fallback with an explanation of why it's appearing; shown only if the Playwright Chromium install fails. Most users will never see it again.
- Windows — Control Panel — Pikura now shows its icon in Programs and Features (previously a generic placeholder). The version is also displayed without the leading "v". Upgrading from an old "Pixora" install? The new installer detects and offers to remove the old entry automatically.
- Windows installer — old Pixora cleanup — The installer scans the registry for any existing "Pixora" uninstall entry and offers to silently remove it before installing Pikura, so users don't end up with two entries in Programs and Features.
Fixes
- Linux — Chromium permission denied on launch — Fixed: .NET's single-file extractor unpacks embedded binaries without the executable bit set on Linux. Pikura now runs
chmod +xon its embedded Playwrightnodebinary before every login attempt, preventing theEACCES (13)error that caused the Chromium window to never open and fall back to the manual cookie dialog. - Linux — Chromium login dialog threading — Fixed: the Chromium install progress dialog and fallback manual-cookie dialog were being constructed on a background thread, causing a cross-thread
InvalidOperationException. All Avalonia window creation is now correctly marshalled to the UI thread. - Followed artists — incomplete list (#18) — Fixed: only 48 of N followed artists loaded. Root causes: (a) required Pixiv URL params (
tag=,acceptingRequests=0,lang=) were missing, causing Pixiv to ignoreoffsetand return the first page repeatedly; (b) the loader stopped paginating whentotalcame back as 0 — sequential discovery is now used as a fallback; (c) the deduplicationseenset was seeded without holdingseenLock, creating a race condition where parallel page tasks could insert duplicate artists; (d)GalleryViewModelwas never receiving a realILogger— it inheritedNullLogger.InstancefromViewModelBase, silently swallowing all[FollowedArtists]log lines; fixed by injectingILogger<GalleryViewModel>via DI. Verbose[FollowedArtists]diagnostic lines are now confirmed working. - Hoshi sidebar — prompt bubble disappearing mid-response — Fixed: clicking Describe/Tags/R-18 showed the prompt briefly, then it vanished as the AI streamed its answer. The
SessionsChangedevent used by the account-switch handler was being raised by routine session create/delete/duplicate operations and wiping the active chat. It now fires only on actual account swaps. - Hoshi sidebar — "I don't have the ability to see the image" — Fixed: Pikura wiped the AI's image bytes on every card switch and only repopulated them after the full-resolution image finished downloading. The quick-action buttons now have an instant thumbnail-byte seed plus a belt-and-suspenders fallback that re-fetches from the cache before sending a vision query.
- Inline viewer — chat bubble race — Assistant streaming chunks now marshal cleanly to the UI thread via
Dispatcher.InvokeAsyncinstead of racing with the user prompt add from a background thread.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About pikura-app/pikura
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]