# TASK-057: Side pane redesign, folder tree, and the unfolded Home Status: implemented; required checks pass; installed on the product owner's Z Fold7, awaiting their confirmation Owner: Claude Reviewer: human product owner ## Outcome Third round of requests from the human product owner after using the app on their Galaxy Z Fold7 (SM-F966N), 2026-09-28. They confirmed that directory listing (TASK-056) is now much faster. ## Scope - Included: 1. The pane drawn out from the left edge of the code viewer is no longer a plain rectangle: the drawer has rounded outer corners and the page color, and holds two white cards. 2. The pane is split in half: the folder structure, and the open file's classes and functions. Choosing a class or function goes to it. 3. A "위아래 바꾸기" button between the halves swaps them. The choice is kept across launches. 4. The folder half is a tree: a folder opens in place, one level at a time, and a file inside it opens from there. Before, choosing a folder left the viewer for the directory list. 5. Home, unfolded: the headline block is a card like the rest, and the two columns are equal. Before, it was a white block hanging from the top bar over the left column only, so the left and right halves of the screen looked like two designs. - Excluded: - Dragging the boundary between the two halves; they are equal. - Showing folders above the directory the file was opened from. The tree starts there. ## Writable paths - `app/src/main/java/com/ubisam/ubgitea/feature/codebrowser/` - `app/src/main/java/com/ubisam/ubgitea/feature/home/HomeScreen.kt` - `app/src/main/java/com/ubisam/ubgitea/feature/branchdetail/BranchDetailScreen.kt` - `app/src/main/java/com/ubisam/ubgitea/core/settings/AppSettingsStore.kt` - `app/src/main/java/com/ubisam/ubgitea/MainActivity.kt` - `app/src/main/res/` - `app/src/test/java/com/ubisam/ubgitea/feature/codebrowser/` - `tasks/`, `docs/` ## Acceptance criteria - [x] The same pane is used in the drawer (phone, landscape, side-by-side pair) and beside the code on a wide window. - [x] A folder shows that it is loading, that it is empty, or that it failed; choosing a failed folder twice tries again. - [x] Closing a folder closes the folders open inside it. - [x] Open folders are kept while moving between files of the tree. - [x] A file opened from a folder of the tree finds its `.h`/`.cpp` counterpart in that folder. - [x] A file with no classes or functions says so instead of showing an empty card. - [x] Unit tests cover the tree's rows, closing, and lookup (`FileTreeTest`). ## Security and privacy No additional concerns. The only thing stored is which half is on top, a boolean in the existing settings preferences. ## Required checks ```text ./gradlew compileDebugKotlin compileDebugUnitTestKotlin testDebugUnitTest assembleDebug lintDebug ``` ## Evidence - Required checks pass: 432 unit tests, 0 failures; lint 0 errors. - Installed on the SM-F966N over wireless `adb`. - Not seen by the implementer on any screen: the drawer's new look, the tree, the swap, and the unfolded Home. The Home change was made from reading the layout code, not from a screenshot. ## Known limitations - `toggleFolder` in the view model has no unit test of its own; the tree it edits has. - On the unfolded Home the three summary tiles are narrower than before, because the headline card is now inset. A long label may wrap to two lines. - The preference for which half is on top is read in the viewer itself rather than passed down from `MainActivity` like the other viewer preferences. ## Review findings None yet.