1.9 KiB
1.9 KiB
TASK-021: Enforce recent-push repository order across pages
Status: implemented and device-verified Owner: Codex Reviewer: Claude
Outcome
The repository list places the repository with the newest Gitea updated_at value at the top of page 1 and preserves that descending order across every local page, even when this Gitea server ignores sort=updated&order=desc on repository-list endpoints.
Scope
- Read every accessible repository page for the selected list (all, organization, or favorites).
- Sort the complete result by
updatedAtEpochMillisdescending before splitting it into five-row UI pages. - Cache the sorted snapshot during navigation and invalidate it on refresh or logout.
Acceptance criteria
- A newer repository returned on a later server page appears before older repositories from page 1.
- Local next/previous navigation does not refetch the complete server list.
- Refresh invalidates and rebuilds the sorted snapshot.
- Empty, error, authentication-expired, organization, and favorites behavior remains intact.
- Build, unit tests, lint, secret scan, and physical-device verification pass.
Note
The Gitea repository payload exposes updated_at, which is the existing product proxy for recent repository push activity. Exact branch commit timestamps continue to be fetched only for the five visible rows so one repository with a broken branch endpoint cannot block the global list.
Evidence
- Focused ViewModel tests cover cross-server-page sorting, five-row local paging, navigation caching, and refresh invalidation.
assembleDebug testDebugUnitTest lintDebugpassed.- The APK was installed wirelessly over the existing authenticated app. Page 1 changed from the server's apparent alphabetical order to the newest-update order, rendered five repositories with their latest branch labels, retained next-page navigation, and produced no crash entry.