Skip to content

shutterboy 0.1 (fd34d35)

Choose a tag to compare

@887 887 released this 19 May 23:09
· 105 commits to main since this release

Auto-built APK from commit fd34d35.

Install

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

adb install -r shutterboy-0.1-fd34d35.apk

Changes since v0.1-047cc84

  • 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)
  • perf: HARDWARE bitmaps + Activity survives rotation (71d379d)
  • graph: auto-rescan on MediaStore changes — deletes now refresh the gallery (0d7ff12)
  • prefetch: tiered ring layout (tiny-wide, both-near) + drop to 8 workers (99605df)
  • graph: app-scoped photosFeed — gallery survives viewer round-trip instantly (07c5c35)
  • prefetch: two-tier (96 px + target) so cells never render fully-grey (3cfea61)
  • viewer: skip memory cache + use thumb as placeholder (9e99955)
  • perf: drop prefetch logging + memoize ImageRequest in PhotoThumbnail (7810575)
  • prefetch: bypass Coil queue + use placeholderMemoryCacheKey for instant render (dc0089a)
  • prefetch: warm tiles continuously, including DURING scroll (4892a54)
  • scrubber: scroll to current target after 200 ms of stillness (Aves pattern) (74031b6)
  • perf: remove crossfade + widen prefetch to 15 viewports each direction (5499eab)
  • scrubber: pill tracks thumb during drag; stop suppressing decodes on normal scroll (a4b12ea)
  • scrubber: grid scroll deferred to release — thumb input never blocked (f389c80)
  • scrubber: throttle scrollToItem to 12 Hz + reverse prefetch LIFO order (c504418)
  • scrubber: AndroidFastScroll cancel-and-relaunch pattern (ac92ce9)
  • scrubber: dispatchRawDelta (Fossify/RecyclerView trick) + bring back fast crossfade (505e6b5)
  • perf: conflate scrollToItem flow + 32 fetcher / 16 prefetch workers + 5-viewport prefetch (1c0a28b)
  • coil: MediaStore loadThumbnail fetcher (Aves trick) + drop crossfade (8c15ce2)
  • scrubber: serialize scrollToItem via snapshotFlow (fixes freeze on fast drag) (b2d7324)
  • scrubber: Aves _boundlessThumbOffset accumulator — fix up-drag freeze (a16911e)
  • grid: keep already-cached tiles visible during scroll; verify prefetch (04a67b9)
  • grid: suppress-decode-while-moving (Aves pattern) (a6b8abc)
  • grid: ThumbnailPrefetcher — bounded LIFO queue + 4 IO workers (9e7483a)
  • loader: 8-worker fetch+decode pool; prefetch yields to scroll (155a02b)
  • grid: per-id deduped Coil prefetch for the surrounding viewport (047cc84)
  • grid: revert fast-scrub model-null + prefetch flood — both regressed loading (b54c7b4)
  • grid: Aves-style fast-scrub + bi-directional Coil prefetch (64415a4)
  • grid: thumb stays during drag; debounce scan emissions; drop layout animation (c8d116c)
  • grid: stop the scroll-freeze on photo emissions; pills don't wrap (f5b1c73)
  • grid: chunky Aves-style thumb + async timeline build (af1ca62)
  • grid: distinguish loading from empty in PhotosGrid (ab44276)
  • grid: grabbable scroll thumb for quick-scroll (07e9b41)

Verify build

Field Value
Commit fd34d35b385eab6ad16a09a514afccd16569048e
APK shutterboy-0.1-fd34d35.apk
APK SHA-256 e8e379a6271766583317a0fd967ba11ee4c21bd970dd5f226b7a97d379c5a19f
Build flavour assembleDebug

To verify locally:

sha256sum shutterboy-0.1-fd34d35.apk
# expected: e8e379a6271766583317a0fd967ba11ee4c21bd970dd5f226b7a97d379c5a19f