Files
zapstore/spec/work/WORK-010-ignored-apps.md
T
2026-06-06 21:11:00 -03:00

1.4 KiB

WORK-010: Ignored Apps

Goal

Allow users to mark installed apps as "Ignored" so they are excluded from the Updates screen and the "Update All" batch operation.

Approach

Store the ignored set as an encrypted AppStack (kind 30267) with identifier zapstore-ignored-apps, using the same pattern as the bookmarks stack. This gives reactivity (SQLite + query), NIP-44 encryption, and cross-device sync for free.

Tasks

  • Add kIgnoredAppsIdentifier constant
  • Update appStackEventFilter to reject the ignored-apps stack by d tag
  • Add flutter_slidable dependency
  • Create ignoredAppsProvider (mirrors bookmarksProvider)
  • Create ignored_apps_service.dart with toggleIgnoredApp write helper
  • Filter ignored apps out of all lists in categorizedUpdatesProvider
  • Add ignoredApps: List to CategorizedUpdates
  • Wrap app cards in Slidable on updates screen (swipe-left -> Ignore)
  • Add "Ignored" section at bottom with swipe-left -> "Manage again" action

Decisions

  • Encrypted stack (not CustomData) reuses existing infrastructure and encryption
  • Ignored app IDs stored as bare package IDs since uncataloged apps have no kind:pubkey prefix
  • For cataloged apps the app.identifier (package ID) is used consistently
  • Graceful degradation: unsigned-out users see no swipe actions
  • Ignored apps excluded from all lists: automaticUpdates, manualUpdates, upToDateApps, uncatalogedApps