Swift implementation of the upload_service/download_service channels:
background PUT/GET against the account's WebDAV root, one summary local
notification per batch, Downloads visible in the Files app. Pure helpers
covered by RunnerTests.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Share/pick/sync calls and streams no longer throw MissingPluginException at
startup; upload/download/sync-now show 'X isn't available on this platform
yet'. Offline/sync mirror dir no longer uses the Android-only external dir.
Info.plist: Face ID and photo library usage strings.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
In light mode surfaceContainerLow is slightly darker than the OS surface bg
maps to, so the selection bar and other cards blended into the page. Use
surfaceContainerLowest (light) / surfaceContainer (dark) for NooColors.surface.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Hidden: hide / only hidden / all + hidden. External: cloud only / only
external / all + external; with 'all' Files shows the external items in a
collapsible section. Old show-hidden bool prefs are still read as fallback.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Translucent fill over a backdrop blur, both platforms and both bar styles.
Frosted bars draw over an extended body, so the shell's extendBody and the
tab clearance now key off NooBottomBar.drawsBehindBody.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
watch outside build asserts in debug builds, so taps on rows silently did
nothing in debug (release strips the assert, which hid it on Android).
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>