polish sidebar navigation and project icons#8896
Conversation
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7704aabec7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
This comment has been minimized.
This comment has been minimized.
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 675f5d61da
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
|
@lifeizhou-ap thanks for the review. I addressed the checklist in the follow-up work:
Verified with the targeted Vitest files, |
baxen
left a comment
There was a problem hiding this comment.
Looks great! tested locally and icon identification is working well, the various operations around projects all working
* main: (24 commits) fix: copy and content improvements in goose2 (#8886) feat: make ollama host configurable in goose2 (#8912) polish sidebar navigation and project icons (#8896) fix: model picker stays usable during provider loading (#8900) feat: update provider row after saving credentials (#8914) feat: support google model inventory refresh (#8913) chore: Added goose 2 UI refactor review skill (#8903) blog: goose with peekaboo (#8884) blog: Built-in Local Inference blogpost. (#8808) perf: parallelize provider resolution and eagerly init SQLite pool (#8899) refactor: update goose2 credential management behind provider-scoped ACP/core API (#8887) fix: handle acp requests concurrently (#8781) build: set LLAMA_STATIC_CRT for Windows CUDA (#8901) perf: deduplicate _goose/providers/list RPC call at startup (#8873) chore: add a bit more instructions in the release pr (#8890) chore: disable spellcheck in model search (#8889) add skills to the chat composer (#8881) mergeable configs + cleanup (#8378) refactor: agent provider to use explicit type states (#8879) [goose2] MCP Apps: hydrate and replay app payloads in Goose2 (#8632) ...
Category: improvement
User Impact: Users can personalize projects with polished icons, scanned repository artwork, or custom uploads, and the sidebar feels more aligned and intentional.
Problem: Project color dots felt visually juvenile and did not give enough identity to code projects. The sidebar interactions also had uneven hover behavior and small action affordances that made rows feel less stable.
Solution: This adds a project icon picker with Tabler presets, repository icon scanning, custom image uploads, localized labels, and scoped upload feedback. It also refines the Goose 2 sidebar layout, row hover states, action sizing, and project/chat alignment so navigation feels calmer and more polished.
File changes
ui/goose2/src-tauri/src/commands/mod.rs
Registers the new project icon command module so the frontend can scan and read icons.
ui/goose2/src-tauri/src/commands/project_icons.rs
Adds repository icon discovery and custom icon loading, including extension checks, size limits, scoring, de-duping, and data URL generation.
ui/goose2/src-tauri/src/lib.rs
Exposes the new icon scanning and reading commands through the Tauri invoke handler.
ui/goose2/src/app/AppShell.tsx
Wires sidebar settings entry points and keeps project icon metadata available when projects flow into chat controls.
ui/goose2/src/app/ui/TopBar.tsx
Simplifies the top bar shell now that the left navigation carries the main chrome.
ui/goose2/src/features/chat/hooks/useChatSessionController.ts
Includes project icon metadata in project options used by chat controls.
ui/goose2/src/features/chat/types.ts
Adds optional project icon/color fields to the project option type.
ui/goose2/src/features/chat/ui/ChatContextPanel.tsx
Adjusts context panel toggle styling to match the updated navigation polish.
ui/goose2/src/features/chat/ui/ChatInputToolbar.tsx
Shows project icons in the project selector and keeps the no-project state visually distinct.
ui/goose2/src/features/chat/ui/ProjectSelectorIcon.tsx
Adds a small reusable renderer for project selector icons.
ui/goose2/src/features/projects/api/projects.ts
Adds frontend APIs and types for scanning repository icons and reading custom uploaded icon files.
ui/goose2/src/features/projects/ui/CreateProjectDialog.tsx
Replaces color selection with the icon picker, triggers repository scans from included directories, handles custom uploads, and keeps icon-specific errors close to the picker.
ui/goose2/src/features/projects/ui/ProjectIcon.tsx
Adds the shared project icon renderer with Tabler presets, data image support, legacy folder-dot normalization, and image fallback behavior.
ui/goose2/src/features/projects/ui/ProjectIconPicker.tsx
Adds the scrollable icon picker UI with scanned repository icons, evenly distributed Tabler presets, custom upload, loading state, and localized labels.
ui/goose2/src/features/projects/ui/ProjectsView.tsx
Renders project icons in the projects list and edit flows.
ui/goose2/src/features/projects/ui/tests/CreateProjectDialog.test.tsx
Updates dialog tests for icon selection and adds coverage for custom icon upload errors.
ui/goose2/src/features/settings/ui/SettingsModal.tsx
Shows project icons in archived project rows.
ui/goose2/src/features/sidebar/ui/Sidebar.tsx
Refactors sidebar structure, removes the moving highlight implementation, adds settings handling, and updates nav item rendering.
ui/goose2/src/features/sidebar/ui/SidebarChatRow.tsx
Refines chat row hover/active/menu states so the row stays highlighted while actions are hovered or open.
ui/goose2/src/features/sidebar/ui/SidebarItemMenu.tsx
Keeps project action menus visible while open and aligns action icon sizing with chat rows.
ui/goose2/src/features/sidebar/ui/SidebarNavItem.tsx
Adds a reusable sidebar navigation row component.
ui/goose2/src/features/sidebar/ui/SidebarProjectsSection.tsx
Renders project icons, aligns project/chat labels, updates row actions, and keeps hover treatment consistent across side buttons.
ui/goose2/src/features/sidebar/ui/useSidebarHighlight.ts
Removes the previous moving-highlight helper after replacing it with row-local hover and active states.
ui/goose2/src/features/status/ui/StatusBar.tsx
Removes the old status bar surface as part of the updated app chrome.
ui/goose2/src/shared/i18n/constants.ts
Removes the deleted status namespace registration.
ui/goose2/src/shared/i18n/i18n.ts
Removes the deleted status locale bundle.
ui/goose2/src/shared/i18n/locales/en/projects.json
Adds English strings for icon selection, upload, scanning, and Tabler preset labels.
ui/goose2/src/shared/i18n/locales/en/sidebar.json
Updates the recents section label to match the new navigation language.
ui/goose2/src/shared/i18n/locales/en/status.json
Removes the deleted status namespace.
ui/goose2/src/shared/i18n/locales/es/projects.json
Adds Spanish strings for icon selection, upload, scanning, and Tabler preset labels.
ui/goose2/src/shared/i18n/locales/es/sidebar.json
Updates the recents section label in Spanish.
ui/goose2/src/shared/i18n/locales/es/status.json
Removes the deleted status namespace.
ui/goose2/src/shared/styles/globals.css
Adds small shared styling support used by the refreshed navigation surfaces.
Reproduction Steps
Verification
cargo fmt --all -- --checkcargo clippy --all-targets -- -D warningspnpm --dir ui/goose2 run check./scripts/check-openapi-schema.shpnpm --dir ui/goose2 test -- CreateProjectDialogScreenshots/Demos
Visual review happened locally during implementation. Screenshots are in the working thread for the sidebar icon picker, upload error placement, and row hover states.