Ubisam-MobileGit/tasks/050-app-shell-and-bright-sky-theme.md
choiminyeong f6ac20c8ed TASK-063: task records say what is actually open
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>
2026-09-29 20:25:49 +09:00

82 lines
4.6 KiB
Markdown

# TASK-050: App shell: four tabs, bright sky theme, real logo
Status: implemented; required checks pass; confirmed by the human product owner on their Z Fold7 (2026-09-29)
Owner: Claude
Reviewer: human product owner
## Outcome
The human product owner asked for a UI that fits Git work as a whole ("전체적인 Git 관리에 맞는 UI/UX
디자인과 메인 화면"), in bright sky blue and white, designed in Claude Design first
(https://claude.ai/artifact/GoyQAsJK1kCckiLEthrzcR). This task builds the frame every later screen
sits in: four tabs (홈 / 저장소 / 작업 / 알림) along the bottom, or down the left edge once the window
is 600dp wide; a header on every tab that shows the UbiSam logo, the Gitea host and the account; a
visible back button on every screen below a tab; and a brighter palette than TASK-045's.
## Scope
- Included: `AppShell` (bottom bar / navigation rail), `Route.Home` and `Route.Work`, tab selection replacing
the route stack, an unread-notification badge, `BrandTopBar` / `ScreenTopBar` and the shared
elements in `ui/components`, the app's own stroke icon set (`res/drawable/ic_ub_*.xml`), the
palette and extended status colors, the real logo as a light and a night drawable, and the
existing screens (repository list, notifications, repository work items, settings) restyled to
match.
- Excluded: the content of the Home and Work tabs (TASK-051, TASK-052); the code viewer (TASK-053).
## Writable paths
- `app/src/main/java/com/ubisam/ubgitea/MainActivity.kt`
- `app/src/main/java/com/ubisam/ubgitea/ui/`
- `app/src/main/java/com/ubisam/ubgitea/feature/repositories/RepositoryListScreen.kt`
- `app/src/main/java/com/ubisam/ubgitea/feature/notifications/`
- `app/src/main/java/com/ubisam/ubgitea/feature/workitems/`
- `app/src/main/java/com/ubisam/ubgitea/feature/settings/`
- `app/src/main/res/`
## Acceptance criteria
- [x] Four tabs are reachable from every tab; the selected tab is marked by more than color.
- [x] At 600dp and wider the tabs are a rail on the left instead of a bar at the bottom.
- [x] Signed out, the app shows only the sign-in screen, with no tabs.
- [x] Every screen below a tab has a visible back button and a title; system back still works.
- [x] Back on a tab other than Home goes to Home; back on Home leaves the app.
- [x] Settings and sign-out are reached from the profile menu on every tab.
- [x] The route stack, including the new routes, survives being saved and restored.
- [x] The logo is the supplied artwork, with a separate drawable for dark mode.
- [x] No icon library or other dependency was added.
- [x] Build, unit tests and lint pass.
- [ ] Confirmed on the human product owner's device (phone and unfolded Z Fold).
## Security and privacy
No additional concerns. No OAuth, token or network code is changed by this task.
## Required checks
```text
./gradlew compileDebugKotlin compileDebugUnitTestKotlin testDebugUnitTest assembleDebug lintDebug
```
## Evidence
Recorded on 2026-09-28 in the worktree `awesome-pascal-3f2ada`, with Android Studio's bundled JDK (`D:\AndroidStudio\jbr`, OpenJDK 21). TASK-050 to TASK-054 were built together and checked together:
- `./gradlew compileDebugKotlin compileDebugUnitTestKotlin testDebugUnitTest assembleDebug lintDebug` -- passed.
- Unit tests: 409 in 45 suites, 0 failures, 0 errors (289 before this work).
- Lint: 0 errors, 55 warnings (dependency updates, unused resources, KTX suggestions).
- Emulator (API 36, `sdk_gphone64_x86_64`): the debug APK installs and launches without a crash and shows the sign-in screen with the logo and the new palette. Nothing past sign-in could be reached: that needs a company account.
- Not done: any check on a physical device. None was visible to `adb` during this work.
- New tests: `RouteEncodingTest` (13), `RelativeTimeTest` (6).
- Found on the emulator and fixed: centered Korean messages broke in the middle of a word; they now use `LineBreak.Heading`.
- The four existing screens were restyled by a delegated worker from `handoff/2026-09-28_restyle-existing-screens.md` and compiled and reviewed here.
- Unit tests were written by a delegated worker from `handoff/2026-09-28_unit-tests-redesign.md`; the full run above was repeated here afterwards.
## Known limitations
- The supplied logo file had opaque white around and inside its letters; the app uses a version with that made transparent. The dark-mode logo lightens the grey of "Ubi" so it shows on a dark surface; the product owner approved that on 2026-09-28.
- White text on the brand blue (#2F98F9) is about 3:1, so labelled controls use the deeper #0A6FD8 and the brand blue is kept for marks that carry no text.
## Review findings
None yet.