# 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 `OutlinedButton`s. 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 `OutlinedButton`s. - 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 - [x] The repository list's top bar shows one overflow-menu button instead of three separate buttons. - [x] Tapping it opens a dropdown with 설정/알림/로그아웃; each item navigates exactly like its old button did. - [x] 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 ```text ./gradlew compileDebugKotlin testDebugUnitTest assembleDebug lintDebug ``` ## Evidence - `feature/repositories/RepositoryListScreen.kt`: new private `OverflowMenuButton(onViewSettings, onViewNotifications, onLogout)` (an `IconButton` showing "☰" plus a `DropdownMenu` with three `DropdownMenuItem`s); `RepositoryContent`'s header now calls it in place of the three `OutlinedButton`s 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.