# Pausr Product Log
> **Mantra:** *Pause the noise, not your life.*
![[pausr-ui-mock.png]]
*Home screen widgets on the native grid · the in-app target list · the interstitial that meets a paused app*
**The vision:** Opening a distracting app takes one tap. Pausing it takes a settings safari. Pausr flips that asymmetry: every pause target lives on the home screen as a tile you can resize like any other widget, and pausing becomes the one-tap action. The phone stays the same phone. The slot machines just get a lid.
An Android app for one-tap pausing of single apps, app families, or user-defined suites, surfaced as native home screen widgets and a Quick Settings tile.
## Quick Links
| Planning | Build | Status |
| --- | --- | --- |
| [[Pausr Technical Specification (Android v1)]] | Repo: `Documents\Pausr` (empty) | This page |
| Product Plan (next) | | |
## Current State
*Updated 2026-09-02 · Kickoff. Intent captured, technical path chosen, mock drawn, no code yet.*
| Area | Where it stands |
| --- | --- |
| **Core concept** | Three levels of pause target: single app, app family, preselected suite. Each one is a resizable home screen widget. |
| **Technical path** | Usage-stats watcher plus interstitial. No public API suspends a third party app, so Pausr watches the foreground app and puts a full-screen "paused" shield in front of it. Detail in the [[Pausr Technical Specification (Android v1)|spec]]. |
| **Widget stack** | Jetpack Glance with `SizeMode.Responsive`, so the same widget renders as 1x1, 2x1, or 2x2 on the launcher grid. Pinning from inside the app via `requestPinAppWidget`. |
| **Permissions** | `PACKAGE_USAGE_STATS` (special access screen), `SYSTEM_ALERT_WINDOW` for the shield, notification permission for the foreground watcher. No accessibility service in v1. |
| **Open questions** | Is the usage-stats poll fast enough to catch an app before its first frame? Does the shield survive Android 14+ foreground service rules on Pixel and Samsung? Where does the app-family map come from? |
| **Next** | Spike the watcher latency on a Pixel. Draft the Product Plan. Pick minSdk. |
## Constraints
- **Platform:** Android only, for now. Third party apps cannot call `setPackagesSuspended`; that is reserved for device owners and privileged apps like Digital Wellbeing. Pausr enforces with detection and interruption, so a determined user can always get through, and that is by design.
- **Policy:** Google Play limits accessibility services to accessibility use, so the watcher uses usage stats. If latency forces an accessibility service later, that is a policy conversation first.
- **Design:** No custom resize UI. Widgets use the launcher's own long-press resize, and every size the launcher offers has a layout.
- **Scope:** One builder, evenings. v1 is pause, resume, schedule, and the three target types. No cloud, no accounts, no sync.
- **Battery:** The watcher must cost less than the apps it pauses. Poll interval adapts: fast when a paused app is installed and the screen is on, idle otherwise.
---
### 2026-09-02: Technical Path and First Mock
Three candidates for "pause", one survivor. Wellbeing's own suspension is privileged. A managed work profile can freeze apps, but only apps installed into that profile, which is a different phone. The path left is the one every third party blocker walks: read the foreground app from `UsageStatsManager`, and the instant a paused package comes to front, cover it with an interstitial that offers a way back out. It is a lid. Given that the whole thesis is friction asymmetry, a lid is enough.
The mock at the top of the page is the test of the widget idea. Three sizes on the native grid, the same "paused" pill on each, resize handles that the launcher already draws. The interstitial has three exits on purpose: keep it paused, five minutes, or unpause the whole bundle. Every exit is a data point about what the pause was actually worth.
**Decisions:**
- Enforcement: usage-stats watcher plus shield. Accessibility service held in reserve.
- Widgets: Jetpack Glance, responsive sizing, pin from inside the app.
- Families: curated package map shipped with the app (Meta, ByteDance, Google, Snap), with signing certificate grouping as a fallback for unknown publishers.
**Next steps:**
- Spike: measure watcher latency at 250ms, 500ms, and 1s poll intervals on a Pixel.
- Spike: confirm the shield can launch from a foreground service on Android 14 and 15.
- Draft the Product Plan (problem, user stories, KPIs).
---
### 2026-08-22: Project Kickoff / Ideation
Captured the founding intent for Pausr.
**The idea:** Android's Digital Wellbeing has an "app pause" concept - grey the icon, suspend the app for the day - but it is buried in settings and all-or-nothing per app. Pausr surfaces that power where you actually live: the home screen.
Three levels of granularity:
1. **Single app** - pause just Instagram.
2. **App family** - pause all of Meta's apps at once.
3. **Preselected suite** - a user-defined set ("Doomscroll bundle", "Work distractions") paused together.
Each pause target gets its own home screen tile or widget, resizable through Android's native home screen controls - no custom resize UI, just the standard widget grid behavior users already know.
**Why it matters:** The friction asymmetry is backwards today: opening a distracting app takes one tap; pausing it takes a settings safari. Pausr inverts that - pausing becomes the one-tap action.
**Next steps:**
- Research the technical path for programmatic app pausing (Wellbeing APIs are not public; likely candidates: `UsageStatsManager`, accessibility service, Focus-mode-style suspension via `PackageManager.setPackagesSuspended` which needs special access)
- Draft the Product Plan (problem, solution, user stories, KPIs)
- Decide widget stack: Jetpack Glance for resizable widgets is the modern default