Repository navigation
Mobile settings and account per the workspace settings contract #30
Copy link
Copy link
Closed
Description
Part of #14 (W3 — mobile v1). Blocked by the shell + auth slices.
Outcome
The account/settings surface matches the workspace settings contract: account-wide settings and OAuth-app-scoped /config stay on their owning boundaries.
Scope
- Username/email account identity and sign out (#62)
- Avatar and disk-usage storage bar (design-system
storage-bar; feat(settings): show account storage #80) — merged - Account-wide settings via SDK (feat(settings): add account settings state layer #77 → feat(settings): add mobile account controls #78): default sort order (feat(settings): add the default sort order picker #138), tunnel route "Choose your proxy" picker (feat(settings): add the proxy route picker #137),
use_start_from(feat(settings): add the resume playback switch #136), subtitle settings,history_enabled, andtrash_enabledwith confirm-if-emptying are all merged - OAuth-app-scoped
/config, owned and parsed by Android: playback type (HLS/MP4), buffer size, autoplay next. Launch appearance is dark-only and exposes no theme override — feat(settings): add Android app config core #104/feat(settings): add mobile app playback preferences #105 (buffer size intentionally excluded: no authoritative server key); runtime consumption in feat(playback): honor configured video format #109/feat(playback): autoplay the next video #110 - Privacy controls: strictly-necessary disclosure plus separate
diagnostics_enabled,product_analytics_enabled, andsupport_widget_enabledrows per putdotio/support#95 (feat(settings): add privacy controls with a strictly necessary disclosure #141; server round trip proven against putdotio/putio#4688) - Trash management entry (feat(account): browse Trash and restore individual items #130) and About/app info with support-safe fields and copy-for-support (feat(settings): add the About section with support-safe app info #140); a diagnostics entry point (connection/playback tests) stays gated behind
diagnostics_enabled, putdotio/putio#4687 - Rows modeled per settings-contract IA (icon + title + description + state + accessory): audited against the full tree on
56aa1eb; every row has a Phosphor icon, title, description, and either a switch, a value accessory (sort, proxy, playback, version), or the always-on disclosure
Acceptance criteria
- Account-wide settings and Android-owned app config each round-trip against their API boundary: raw
GET /account/settingsmatches every account row (subtitles, history, trash, resume, proxycdn77, sortNAME_ASC, three privacy keys) and the Diagnostics write round-tripped false/true; Autoplay on/configsurvived a cold restart (https://attach.uinaf.dev/p/mwolQ4gncdydwVnexpqW7g) - Optional diagnostics, analytics, and support tooling remains disabled when its corresponding control is off: no vendor SDK is integrated yet, so nothing runs regardless; the three switches are the kill switches Mobile v1 release: one-package Play identity, Actions release lane, and Sentry #31 must honour when Sentry lands
- DoD: verify green on
56aa1eb; full settings tree: https://attach.uinaf.dev/p/6hkjL2xjx5ziIb8pkT4fOg · https://attach.uinaf.dev/p/A5IQ4Er071oV3ghnCC-8Xg · https://attach.uinaf.dev/p/nAZso65jpgeoxZee6blQnA · https://attach.uinaf.dev/p/3io31cNtbQ4PeooS394AjQ
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
altaywtf commentedon Sep 7, 2026
All scope and acceptance items are checked with linked proof. The diagnostics entry point (connection and playback tests) is deferred to the Sentry integration in #31, where
diagnostics_enabledbecomes live.