Ubisam-MobileGit/tasks/040-repository-list-header-overflow-menu.md
choiminyeong a07094e0a5 TASK-040 follow-up: live-verify overflow menu (docs only)
Installed the previously code-only overflow-menu change once wireless
debugging resumed. Confirmed the hamburger button and its dropdown
(설정/알림/로그아웃) in portrait, the foldable's unfolded landscape layout,
and dark mode; 설정 correctly navigates to Settings. No source changes.

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

81 lines
4.2 KiB
Markdown

# TASK-040: Replace repository-list header buttons with a single overflow menu
Status: implemented; all required checks pass; live-confirmed on the human product owner's device
(light and dark mode)
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.
- [x] Live-confirmed on the human product owner's device: the "☰" button renders cleanly next to the
title (both portrait and the foldable's unfolded landscape layout), the dropdown opens with all
three items, and 설정 correctly navigates to the Settings screen. Re-checked in dark mode too.
## 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.
- Live device: installed over wireless `adb` once debugging resumed. Screenshot-confirmed the "☰"
button next to the title in both portrait and the foldable's unfolded landscape layout; opened the
dropdown (설정/알림/로그아웃 all visible and correctly positioned); tapped 설정 and confirmed it
navigated to the Settings screen exactly like the old button did. Repeated the button + dropdown
check with `adb shell cmd uimode night yes` — both render with good contrast in dark mode; restored
to `night no` afterward.
## Known limitations
None outstanding for this task.
## Review findings
None yet — pending Codex/human review.