Repository navigation
feat(app): sidebar navigation, lazy file tree, task notifications, terminal and toolset expansion - #31
Merged
Conversation
…rminal and toolset expansion Four user-reported pain points, one batch: 1. Files explorer rebuilt around a lazily loaded tree. The old design rescanned the whole workspace on every folder tap (a global scan whose first bad entry or lost race silently killed expansion), and the chevron never moved. Now every directory loads its own single level on expand (FileTree.flatten, pure + JVM-tested), the chevron answers the tap synchronously with an animated rotation, loading dirs show a spinner, per-directory errors mark only that row (tap to retry), files gain human-readable sizes and loaded dirs a child count, and dotfiles like .git stay hidden behind a header toggle. 2. Background resilience + task board. The shell/agent work now drives the persistent notification: a shared AgentActivity state (fed by the chat busy flag) renders 'running…/finished' with an indeterminate progress bar, a tap opens the app, and a bounded (30 min) partial wake lock keeps a streaming run alive with the screen off. A running task also keeps the foreground service up in remote-only mode, where it used to be stopped. 3. Terminal conveniences: de-duplicated command history chips (recall fills the composer instead of firing blindly), copy-all-output header action, A-/A+ font zoom for output and composer, and more quick commands. 4. Sidebar navigation: the bottom bar is replaced by a Material 3 modal drawer (menu button in every screen header, NavigationDrawerItem destinations, live server + agent status chips), the wide-layout rail stays permanent. ScreenHeader gains NavMenuButton, Settings uses navigationIcon on LargeFlexibleTopAppBar. 5. Toolset expansion: bootstrap now ships jq, fd-find (fdfind), tree, zip, unzip and python3 on top of git/curl/ripgrep; tarballs rebuilt with tools/build_toolset.py and re-pinned (toolset-v1 release assets). No new dependencies; all strings localized (en+ru); UI policy green.
… attr The app theme has no colorControlNormal (no AppCompat bridge); a tint attribute pointing at it breaks resource linking. Both icons now follow the Lucide stroke style every other drawable uses — Icon() applies the tone at composition time anyway.
AtomicLong and the app R class were referenced without imports; the third reported error was a cascade of the first.
The divisor loop divided 102400 B into 100 but then labelled it MB: the value after the first division is in KB, so the unit index must start there. 102400 B now renders as 100 KB.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Four user-reported pain points, one batch:
1. Files explorer: folders now expand
The old design rescanned the whole workspace on every folder tap — a global scan whose first unreadable entry or lost race silently killed expansion, and the chevron never moved. The explorer is rebuilt around a lazily loaded tree:
FileTree.flatten, pure + JVM-tested); expanding never rescans the rest of the tree.git,.env, …) stay hidden behind a header eye toggle (reloads affected levels)2. Background resilience + task-status notification
AgentActivitystate (fed by the chat busy flag) renders "running… / finished" with an indeterminate progress bar, so a prompt keeps its status visible after the user leaves the appWAKE_LOCKkeeps a streaming run alive with the screen off (permission added to the manifest)3. Terminal conveniences
git log --oneline -5,rg --version,python3 --version,node --version)4. Sidebar navigation
NavigationDrawerItemdestinations, live server + agent status chips in the sheet5. Initial toolset expansion
Bootstrap now ships jq, fd-find (
fdfind), tree, zip, unzip and python3 on top of git/curl/ripgrep/less/procps/ca-certificates. Tarballs rebuilt withtools/build_toolset.pyand published as assets of the new toolset-v1 release, sha256 re-pinned inPins.No new dependencies; all strings localized (en + ru);
tools/check_ui_policy.pygreen; newFileTreeTestcovers flatten/sort/format/hidden-name logic.