Reviewed the code browser file tree, commit history list, and per-file diff view in light and dark mode. The diff view already does proper git-style red/green color-coding in a side-by-side before/after layout and holds up cleanly in dark mode; the file tree and commit list are already consistent with the rest of the app. Nothing to fix here. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
9.0 KiB
9.0 KiB
TASK-039: Design pass — app icon, visibility badge, header truncation, PR-label Korean-ization
Status: implemented; all required checks pass; live-confirmed on the human product owner's device Owner: Claude Reviewer: Codex
Outcome
The human product owner asked for an open-ended design review: "디자인 수정해줄래? 앱의 아이콘부터 해서 전체적으로 확인해보고 부족한 부분 고쳐줘" (fix the design — starting with the app icon, review the whole app and fix what's lacking). This task covers the first batch of concrete gaps found and fixed while screen-by-screen reviewing the app (repository list, references/branches, work items, notifications, settings) in both light and dark mode:
- App icon: the app had no custom launcher icon at all — Android's bare default was showing on the home screen and app switcher. Added a full adaptive icon (background + foreground + monochrome layers) with an original hand-drawn git-branch glyph on the app's own established primary green.
- Repository visibility label: the 공개/비공개 (public/private) text on each repository-list row had no explicit style (rendered oversized/inconsistent next to the other metadata lines) and took a full-width line. Replaced with a small rounded badge, matching the compact-chip look Gitea's own web UI uses for the same information.
- References screen header truncation: a repository with a long owner/name combination (a real one already in the human product owner's own Gitea instance) wrapped the title to 3 lines, pushing the branch/tag list far down the screen. Capped it to 2 lines with an ellipsis.
- "Pull Request" → "PR": two string resources (the work-items tab label, the notifications subject
label) were the only English text left in an otherwise fully-Korean UI, and were also the widest
word in a
Rowthat doesn't wrap gracefully — on the live notifications list this visibly broke "Pull Request" across two lines next to the state label. The rest of the app had already settled on "PR" as the Korean-context abbreviation (workitems_permission_denied,workitems_pr_refs, etc.); matched that.
Scope
- Included:
mipmap-anydpi-v26/ic_launcher.xml/ic_launcher_round.xml+ their three drawable layers;AndroidManifest.xml'sandroid:icon/android:roundIcon;RepositoryListScreen.kt's newVisibilityBadgecomposable and the references-header title'smaxLines/overflow;strings_workitems.xml/strings_notifications.xml'sPull Request→PRstring values. - Excluded: no icon library was introduced (this app has never depended on
androidx.compose.material.icons— see Design notes); no change toWorkItemsScreen.ktto surface which repository/branch a work-items or code-browser screen belongs to (a real gap noticed while reviewing, but it needs new state threaded through the ViewModel/use-case layer, not just a view change — flagged for a follow-up task rather than folded into this visual-polish batch); no explicit in-app back button anywhere (deliberate, pre-existing, app-wide pattern — this device's own 3-button system navigation already provides a visible back affordance, so this wasn't treated as a gap).
Design notes
- Original glyph, not Gitea's logo: the launcher icon is a hand-drawn trunk-and-branch motif (a straight line, a curved line, three circular nodes) built from plain vector primitives — deliberately not a reproduction of Gitea's own trademarked logo.
- Same green as the in-app theme: the icon background reuses
GreenPrimaryLight(#3B6A1F,ui/theme/Color.kt) exactly, so the home-screen icon and the in-app Material 3 theme read as one deliberate color choice rather than two unrelated greens. - Adaptive icon only, no legacy PNG mipmaps:
minSdkis 28 (> 26), so only themipmap-anydpi-v26adaptive-icon XML wrappers are needed; there is no pre-Android-8 device this app can run on that would need a flat PNG fallback. VisibilityBadgereuses the existing chip pattern: aSurface+RoundedCornerShape(4.dp)+labelSmalltext, the same construction already used forFilterChipelsewhere in this screen — not a new UI primitive, just the same small-badge shape applied to a second piece of metadata.- "PR" was already this app's own convention, not a new one:
strings_workitems.xmlalready used "PR" in half a dozen other strings (workitems_pr_refs,workitems_permission_denied, the "PR/이슈" button label on the repository-detail header) — only the tab label and the notifications subject label had been left as the English "Pull Request". This was a one-line fix per file, not a design decision made fresh here.
Acceptance criteria
- The app has a custom launcher icon (visible on the home screen and in Recents), not Android's bare default.
- The icon renders correctly as both a round and non-round adaptive icon shape.
- Repository visibility (공개/비공개) renders as a small styled badge, not an unstyled full-width text line.
- A repository with a long owner/name combination shows a 2-line-max, ellipsized title on the references screen instead of pushing the branch list down with a 3-line wrap.
- No user-facing English text remains next to otherwise-Korean labels in the work-items tabs or the notifications list.
- Dark mode reviewed for the repository list and references screens: badges, selected-branch highlighting, and text all stay legible with no contrast regressions.
- Build, unit tests, and lint pass.
- Live-confirmed on the human product owner's device for every change above.
Required checks
./gradlew compileDebugKotlin testDebugUnitTest assembleDebug lintDebug
Evidence
app/src/main/res/drawable/ic_launcher_background.xml,ic_launcher_foreground.xml,ic_launcher_monochrome.xml;app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml,ic_launcher_round.xml;AndroidManifest.xml's newandroid:icon/android:roundIcon.feature/repositories/RepositoryListScreen.kt: new privateVisibilityBadgecomposable, used in place of the old unstyledTextforrepositories_private/repositories_public; the references header's repository-nameTextgainedmaxLines = 2, overflow = TextOverflow.Ellipsis.res/values/strings_workitems.xml:workitems_tab_pull_requestschanged fromPull RequesttoPR.res/values/strings_notifications.xml:notifications_subject_pull_requestchanged the same way../gradlew compileDebugKotlin testDebugUnitTest assembleDebug lintDebug: BUILD SUCCESSFUL, all unit tests passing, 0 lint errors (run twice — once after the icon/badge/truncation changes, once after the PR-label change).- Live device: installed over wireless
adbafter each round.- App icon: screenshot-confirmed rendering cleanly in the Recents/task-switcher view.
VisibilityBadge: screenshot-confirmed on the repository list — compact rounded badges (gray for 비공개, green-tinted for 공개) replacing the old full-width text line.- Header truncation: screenshot-confirmed on
RobotAutomationDevelopment-Dept/LGE-OC6-Inline-CylinderTypeWelder-PRI-REPO(a real, already-long-named repository) — title now wraps to exactly 2 lines with a trailing ellipsis instead of 3, and the branch/tag list starts noticeably higher on screen. - PR label: screenshot-confirmed on the notifications "전체" tab against real data (a repository with an actual PR/issue history) — every row now reads "PR" inline with "이슈"/"열림"/"닫힘"/"병합됨" on one line instead of wrapping "Pull" and "Request" onto two.
- Dark mode: forced via
adb shell cmd uimode night yes, screenshot-reviewed the repository list, references, code-browser file tree, commit history list, and the colorized per-file diff view, restored tonight noafterward — no contrast or legibility issues found anywhere reviewed. - Also reviewed without code changes (already well-designed, nothing to fix): the code-browser file
tree (폴더/파일 rows, breadcrumb), the commit history list, and the per-file diff view — which
already does proper red/green (
DiffAddedColor/colorScheme.error) side-by-side 기존/변경 columns in monospace, in both light and dark mode.
Known limitations
- Work-items and code-browser screens still don't show which repository/branch they belong to in their own header — noticed during this review but scoped out (see Scope) since it needs new state threaded through the ViewModel/use-case layer, not a view-only change.
- Dark-mode review now also covers the code browser and commit/diff screens (see Evidence above), but not yet notifications/settings/work-items — those still need a dark-mode pass.
- Work-item and PR detail views with real content, and the text/image/CSV/PDF file viewers, haven't been screen-reviewed yet — this task covers the batch of concrete fixes found so far, not a fully complete pass.
Review findings
None yet — pending Codex/human review.