Skip to content

shutterboy 0.1 (fb9c295)

Choose a tag to compare

@887 887 released this 21 May 23:36
· 105 commits to main since this release

Auto-built APK from commit fb9c295.

Install

Sideload via Obtainium (recommended — see the project README for setup) or install directly:

adb install -r shutterboy-0.1-fb9c295.apk

Changes since v0.1-047cc84

  • photos: split grouping from column count — independent controls (fb9c295)
  • photos: add density-cycle FAB above the search FAB (33d3779)
  • settings: move Display section from Look-and-feel to Photos (cf216fc)
  • prefetch: progressive quality — low first, upgrade on dwell (8ee0ca2)
  • display: ThumbnailQuality becomes a multiplier on cell-px, auto-derived (1c55474)
  • display: halve ThumbnailQuality targets (96/192/384) (82e5802)
  • prefetch: self-submit on cell composition + tighter direction reaction (511a2a8)
  • fetcher: honor coroutine cancellation in MediaStoreThumbnailFetcher (f3f1848)
  • prefetch: rip the tiny tier — render target immediately, no placeholder (c7c0df7)
  • Revert "prewarm: force MediaStore to generate MINI_KIND on disk at scan time" (5bd8cbd)
  • prewarm: force MediaStore to generate MINI_KIND on disk at scan time (7110332)
  • prefetch: suspend FAR ring during fling so visible decodes win the OS pipe (bfe1293)
  • prefetch: coalesce mid-fling schedules + symmetric keep-zone for bounce-back (fc9cc03)
  • prefetch: adaptive velocity-scaled window + leading-edge priority + cancel-on-reverse (4761c0c)
  • scan: debounce observer + incremental upsert (9303ba5)
  • scan: use scanIfChanged() not forceRescan() on cold launch (9330ea1)
  • grid: play-circle overlay on video thumbnails (68431f7)
  • nav: drop GalleryTimelineFrame's transformable — it was eating root-tab swipes (ac35b96)
  • nav: horizontal swipe between Photos / Favorites / Collections tabs (f3ac365)
  • collections: lean folder tile — memoised request + thumb-cache alignment + stable click (296ded4)
  • scrubber: shorten pause-to-peek debounce 200 ms → 80 ms (f05b460)
  • scan: bump streaming batch size to 2500 to cut CursorWindow race surface (9c88df3)
  • grid: lean tile pass — strip shared-element + suppress-decode + selection-mode plumbing (f61c0f4)
  • delete: eager-remove from Room cache so the grid updates instantly (Aves-style) (f8bd735)
  • thumbs: aspect-preserving downscale — stop stretching tiles into squares (6505a2e)
  • thumbs: resize OS thumbnail down to requested size before HARDWARE copy (13724bd)
  • grid: static spinner at 0.75 progress — fuller ring without the animation tick (b4c538e)
  • Revert "grid: static spinner — keep the ring shape, drop the animation" (5e24d37)
  • grid: static spinner — keep the ring shape, drop the animation (8fdff94)
  • favorites: persist across scans — drop CASCADE FK + scanner safety net (c4a7956)
  • viewer: shorten shared-element open animation to 120 ms — unblock pager swipes faster (4c3fd9e)
  • viewer: filmstrip + page counter at the bottom; hides when zoomed (f84dc2c)
  • grid: stable cell callbacks — eliminate per-cell recompose on every scroll frame (fd34d35)
  • grid: spinner only shows for cells that aren't memory-cached yet (436635f)
  • revert: drop prepareToDraw and restore the loading spinner — kept Precision.INEXACT (28494d6)
  • nav: stash backing-id lists in AppGraph; route carries a UUID key — fixes TransactionTooLargeException (750564a)
  • viewer: keep chrome visible on video pages — Media3 swallows our taps (f1665ee)
  • grid: stickyHeaderLabel falls through PhotoCell on flat timeline (52b27fc)
  • grid: restore year scrubber on flat timeline + drop per-cell spinner animation (7b86e75)
  • grid: revert LazyLayoutCacheWindow — pre-composing 5 viewports froze main thread (c730940)
  • grid: prepareToDraw + LazyLayoutCacheWindow + Precision.INEXACT — kill main-thread stutter (34f99da)
  • photos: drop date-grouping at all densities — column-cycle is just column count (b838e5a)
  • scan: stream photos into Room in 500-row batches so the gallery fills while scanning (1c27d7b)
  • Revert "Use yy.mm.ddhhMMss timestamp as the build version" (97bf605)
  • theme: split base scheme from tint accent — copy tonearmboy's behaviour (c8c78e6)
  • Use yy.mm.ddhhMMss timestamp as the build version (96abc71)
  • theme: drop shutterboy-palette; tint shortcut + ColumnCount on Favorites (f39137f)
  • ui: Search FAB + Favorites uses RootTopBar + workers back to 8 (4b404cf)
  • ui: Favorites tab + viewer chrome polish (translucent + scrolling title + rotate/flip) (0b41b14)
  • ui: spinner placeholder + column-count cycle button + 4 workers (35daabd)

Verify build

Field Value
Commit fb9c2958a6ddd388686429b66b2096cd2bec5f51
APK shutterboy-0.1-fb9c295.apk
APK SHA-256 959ac3c41feb7c1a311fe0f89c63405845bf6e7747ee5be171babba1e6424d06
Build flavour assembleDebug

To verify locally:

sha256sum shutterboy-0.1-fb9c295.apk
# expected: 959ac3c41feb7c1a311fe0f89c63405845bf6e7747ee5be171babba1e6424d06