Everything here came from running the account flow against a real Nextcloud rather than from reading the code. Discovery - A typed bare origin now gets the RFC 6764 well-known probe. It was returned as the only candidate, so `https://cloud.example.com` — what people actually type — was PROPFIND'd against the web UI, answered 405, and a working Nextcloud reported as "not a CalDAV server". - A same-host HTTPS→HTTP redirect is put back on TLS instead of refused (`dav` change 7). A Nextcloud behind a TLS-terminating proxy without `overwriteprotocol` builds every redirect with http://, including the /.well-known/caldav hop discovery depends on. Cross-host still throws. - Outcomes carry a `Cause` the UI translates, not the server's own words. "HTTP 405 Method Not Allowed" told someone entering an address nothing, in a language they may not read, from outside strings.xml. - An IPv6 origin keeps its brackets: `HttpUrl.host` returns "fd00::1", so the rebuilt origin did not parse and a homelab address came back as "not an address". Login Flow v2 - The poll response's scheme is coerced, never refused. Nextcloud returns the app password exactly once, so throwing there burned a live credential and left it dangling in the user's device list. The host mismatch already worked this way; the scheme now matches it. Accounts - The accounts screen observes Room and the sign-in state instead of taking a snapshot, so a sync landing — or a 401 stopping an account — reaches a screen that is already open. - A per-account detail screen, and provider identity (`CalDavProvider`) shared with the quirk table so one list drives both the icon and the warning. - The password field masks: floret-kit's `InlineTextField` gained a visual transformation, since `KeyboardType.Password` only tells the IME to drop suggestions.
76 lines
1.2 KiB
Plaintext
76 lines
1.2 KiB
Plaintext
# Built application files
|
|
*.apk
|
|
*.aar
|
|
*.ap_
|
|
*.aab
|
|
|
|
# Files for the ART/Dalvik VM
|
|
*.dex
|
|
|
|
# Java class files
|
|
*.class
|
|
|
|
# Generated files
|
|
bin/
|
|
gen/
|
|
out/
|
|
release/
|
|
|
|
# Gradle files
|
|
.gradle/
|
|
build/
|
|
|
|
# Local configuration file (sdk path, etc)
|
|
local.properties
|
|
|
|
# Proguard folder generated by Eclipse
|
|
proguard/
|
|
|
|
# Log files
|
|
*.log
|
|
|
|
# Android Studio / IntelliJ
|
|
*.iml
|
|
.idea/
|
|
.navigation/
|
|
captures/
|
|
.externalNativeBuild/
|
|
.cxx/
|
|
|
|
# Keystore files
|
|
*.jks
|
|
*.keystore
|
|
*.p12
|
|
/key.properties
|
|
|
|
# Google Services (e.g. APIs or Firebase)
|
|
google-services.json
|
|
|
|
# OS files
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# F-Droid local artifacts (the pipeline generates them in CI)
|
|
/fdroid/
|
|
|
|
# Release-pipeline scratch files. release.yaml writes these into the workspace
|
|
# while cutting a release; a self-hosted runner reuses that workspace, so they
|
|
# must never end up committed (release-notes.md did, through 0.3.2).
|
|
/release-notes.md
|
|
/payload.json
|
|
/existing.json
|
|
/response.json
|
|
/cb-payload.json
|
|
/cb-response.json
|
|
|
|
# KSP
|
|
.ksp/
|
|
|
|
# Local agent notes: machine-specific build setup and on-device rules, not
|
|
# anything the project itself depends on.
|
|
/CLAUDE.md
|
|
|
|
# Scratch backlog. Says so in its own header — dumped items get turned into
|
|
# real work, not committed as a list.
|
|
/req_changes.md
|