Gitea's Go handlers serialize a nil slice as the JSON literal `null` rather than `[]` for some list endpoints when there are no items (e.g. a repository with no branches). parseList treated that as a parse failure and threw ApiFailure.InvalidResponse, surfacing as a misleading "server error" on a completely successful 200 OK. Diagnosed live against the human product owner's real Gitea instance via wireless adb (repositories CSOT-T8-iPTN-AMA / CSOT-T8-MACRO_SA): confirmed via the Gitea container's own request log that the call was a genuine 200 OK, then used temporary debug-only logging to narrow the cause to the literal null body. Fixed at the shared parseList helper so every sibling list endpoint benefits, not just the one that was reported. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
UBGitea
Android client for the Ubisam Paju Gitea instance.
The repository currently contains the engineering harness that governs collaborative development by Codex and Claude. Product code will be bootstrapped through the tasks under tasks/.
Start here
- Read
AGENTS.md. - Read
docs/product.mdanddocs/architecture.md. - Select one task from
tasks/. - Assign one writer and one independent reviewer.
- Record build and test evidence before marking the task complete.
OAuth uses Authorization Code with PKCE and does not use a client secret.
Local checks
Open the repository root in Android Studio, or use JDK 17 with Android SDK 36 installed and run:
./gradlew assembleDebug
./gradlew testDebugUnitTest
./gradlew lintDebug
The application uses ID com.ubisam.ubgitea and supports Android 9 (API 28) and later. See ADR-001.
Description
Languages
Kotlin
99.5%
PowerShell
0.5%