No task waits on a Codex review; the redesign tasks are confirmed on the product owner's Z Fold7; TASK-016's leftovers are on hold; no biometric reauthentication. Agent: main (opus) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
81 lines
4.2 KiB
Markdown
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 — no Codex review pending (Codex retired, 2026-09-29).
|