Ubisam-MobileGit/tasks/051-home-team-activity.md
choiminyeong d1a45abc16 TASK-050..054: tabs, Home, Work, code viewer, C++ pairs, fold layouts
Four tabs in an app shell that becomes a rail from 600dp, a brighter sky-blue palette with the real UbiSam logo, a Home tab built on Gitea's activity feeds, a Work tab that searches issues and pull requests across repositories, a full-screen code viewer with search, outline and Visual Studio colors, C/C++ header/source pairing, and two-pane layouts for wide windows.

The five tasks were built and checked together, so they are one commit: MainActivity, the routes and the shared components belong to all of them. 409 unit tests pass, lint reports 0 errors. Verified on an emulator up to the sign-in screen only; no physical device was available.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-28 14:35:00 +09:00

3.9 KiB

TASK-051: Home: team activity

Status: implemented; required checks pass; not yet confirmed on a device Owner: Claude Reviewer: human product owner

Outcome

The product owner's main use for the app is watching what the team is doing. Home shows it: today's pushes, open pull requests and new issues; what is waiting on the signed-in person; the repositories with recent activity; and a timeline of who did what, where.

Scope

  • Included: GiteaActivityApi (user and organization activity feeds), GiteaWorkSearchApi.count, HomeViewModel, HomeScreen in a one-column and a two-pane layout, navigation from a timeline row to the branch, pull request or issue it is about.
  • Excluded: marking anything read, reacting, commenting -- Home only reads. A list of favorites on Home: the repositories shown are the recently active ones, not the starred ones.

Writable paths

  • app/src/main/java/com/ubisam/ubgitea/feature/home/
  • app/src/main/java/com/ubisam/ubgitea/data/activity/
  • app/src/main/java/com/ubisam/ubgitea/data/GiteaApiSupport.kt
  • app/src/main/java/com/ubisam/ubgitea/domain/activity/
  • app/src/main/res/values/strings_home.xml

Acceptance criteria

  • Home loads the signed-in account's feed, and an organization's feed when one is chosen.
  • The timeline can be filtered to pushes, pull requests or issues, and can load older activity.
  • A failed count leaves that one tile blank; it never takes the timeline down.
  • Failing to list organizations hides the organization filter; it does not fail the screen.
  • Activity content that does not parse costs a row its detail, never the feed.
  • Starring, watching and mirror-sync activity is left out of the timeline.
  • Loading, empty, offline, expired-session and server-error states are all shown.
  • No OAuth scope is added.
  • Build, unit tests and lint pass.
  • The feed's real content payloads were compared against what the parser expects, on the company instance.
  • Confirmed on the human product owner's device (phone and unfolded Z Fold).

Security and privacy

Read-only, within the scopes the app already requests. Nothing from the feed is logged.

Required checks

./gradlew compileDebugKotlin compileDebugUnitTestKotlin testDebugUnitTest assembleDebug lintDebug

Evidence

Recorded on 2026-09-28 in the worktree awesome-pascal-3f2ada, with Android Studio's bundled JDK (D:\AndroidStudio\jbr, OpenJDK 21). TASK-050 to TASK-054 were built together and checked together:

  • ./gradlew compileDebugKotlin compileDebugUnitTestKotlin testDebugUnitTest assembleDebug lintDebug -- passed.
  • Unit tests: 409 in 45 suites, 0 failures, 0 errors (289 before this work).
  • Lint: 0 errors, 55 warnings (dependency updates, unused resources, KTX suggestions).
  • Emulator (API 36, sdk_gphone64_x86_64): the debug APK installs and launches without a crash and shows the sign-in screen with the logo and the new palette. Nothing past sign-in could be reached: that needs a company account.
  • Not done: any check on a physical device. None was visible to adb during this work.
  • New tests: GiteaActivityApiTest (12), HomeSummariesTest (9), HomeViewModelTest (8).
  • API availability was checked against the company instance's published API description (Gitea 1.23.5), without signing in.
  • Unit tests were written by a delegated worker from handoff/2026-09-28_unit-tests-redesign.md; the full run above was repeated here afterwards.

Known limitations

  • The shape of an activity's content is not described by Gitea's API; it was taken from Gitea's source, not confirmed against the company instance. The parser is lenient for that reason.
  • Today's push and issue counts are counted from at most 150 of today's activities; beyond that they are shown as a lower bound ("150+" style).
  • Activity bars cover only the activity that was loaded, so a very busy week is under-counted.

Review findings

None yet.