Ubisam-MobileGit/tasks/040-repository-list-header-overflow-menu.md
choiminyeong 2b9a6e091e TASK-040: collapse repository-list header buttons into an overflow menu
Replace the three always-visible 설정/알림/로그아웃 OutlinedButtons on the
repository list's top bar with a single hamburger-style overflow menu
("☰" IconButton + DropdownMenu). Same three callbacks, presentation-only
change, no icon library (plain Unicode glyph, matching this app's
established convention).

Build/test/lint green. Not yet live-verified on device — wireless
debugging was intentionally paused for this round per request.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-29 19:00:13 +09:00

4.1 KiB

TASK-040: Replace repository-list header buttons with a single overflow menu

Status: implemented; build/test/lint pass; not yet live-verified (wireless debugging paused by the human product owner for this task — code prepared and ready for the next live session) Owner: Claude Reviewer: Codex

Outcome

The human product owner asked to stop adding more always-visible buttons to the repository list's top bar and instead collapse 설정/알림/로그아웃 (Settings/Notifications/Logout) behind a single hamburger-style overflow menu button: "UI에 버튼 이런거 만들지말고 햄버거 버튼인가? 그런거 해서 거기서 눌러서 설정창, 로그아웃, 알림 이런거 확인 할 수 있게 해줘."

RepositoryListScreen.kt's main header now shows one button (a "☰" glyph) instead of three OutlinedButtons. Tapping it opens a DropdownMenu with three items — 설정, 알림, 로그아웃 — each calling the same existing callback (onViewSettings/onViewNotifications/onLogout) the three buttons already called; no navigation or ViewModel wiring changed, only how the trigger is presented.

Scope

  • Included: feature/repositories/RepositoryListScreen.kt — new private OverflowMenuButton composable, RepositoryContent's header Row now calls it instead of three OutlinedButtons.
  • Excluded: the references (repository-detail) screen's lone 로그아웃 button was left as-is — it's a single button in a different context (viewing one repository, not the account-level menu group), not the three-button cluster the human product owner was referring to. No change to any ViewModel/use-case/navigation code — this is a presentation-only change reusing the exact same three callbacks.

Design notes

  • Unicode glyph, not an icon library: this app has never depended on androidx.compose.material.icons (see CLAUDE.md's established convention) — the trigger button uses the plain "☰" character the same way ★/☆ are already used elsewhere for favorites, not a drawable/vector icon asset.
  • Same three callbacks, just regrouped: OverflowMenuButton takes the exact same onViewSettings/onViewNotifications/onLogout lambdas RepositoryContent already received — this is purely how they're triggered from the UI, not a change to what they do.

Acceptance criteria

  • The repository list's top bar shows one overflow-menu button instead of three separate buttons.
  • Tapping it opens a dropdown with 설정/알림/로그아웃; each item navigates exactly like its old button did.
  • Build, unit tests, and lint pass.
  • Live-confirmed on the human product owner's device — pending, since wireless debugging was intentionally paused for this task at the human product owner's request ("잠시 무선 디버깅 하지말고 코드만 수정해줘"). Code is ready to install and verify next session.

Required checks

./gradlew compileDebugKotlin testDebugUnitTest assembleDebug lintDebug

Evidence

  • feature/repositories/RepositoryListScreen.kt: new private OverflowMenuButton(onViewSettings, onViewNotifications, onLogout) (an IconButton showing "☰" plus a DropdownMenu with three DropdownMenuItems); RepositoryContent's header now calls it in place of the three OutlinedButtons it used to render directly.
  • ./gradlew compileDebugKotlin testDebugUnitTest assembleDebug lintDebug: BUILD SUCCESSFUL, all unit tests passing unmodified (no test referenced the old buttons' text/structure), 0 lint errors.
  • No androidTest UI-test suite exists in this project to update — only JVM unit tests, which don't touch Compose UI structure.

Known limitations

  • Not yet live-verified on-device (see Acceptance criteria) — the human product owner asked for code only this round, with wireless debugging paused. Needs a screenshot pass (light and dark mode) once debugging resumes: confirm the "☰" button renders at a reasonable size/position next to the title, and that the dropdown's three items are legible and correctly navigate.

Review findings

None yet — pending Codex/human review.