feat(ui): customizable Home page with Quick Start and optional widgets - #2408
Open
sriaradhyula wants to merge 32 commits into
Open
feat(ui): customizable Home page with Quick Start and optional widgets#2408sriaradhyula wants to merge 32 commits into
sriaradhyula wants to merge 32 commits into
Conversation
WorkspaceBreadcrumbs on the chat page rendered in its own padded, bordered block underneath AppHeader instead of inside it, leaving a visible gap between the top bar and the "Home > Chat" trail. Add a HeaderBreadcrumbSlot portal so AppHeader owns a slot in its row and the chat layout portals its breadcrumb into it directly. Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Port the header animations lost in the PR #2187 / admin-nav merge conflict (tracked in issue #2191, closed without the reconciliation happening): - Sparkle pop-in on the rail/mobile brand hover, layered on top of the existing per-letter color-ease effect rather than replacing it. - A framer-motion shared-layout pill behind the active rail nav item's icon badge, sliding between items on navigation instead of snapping. Scoped per render context (rail vs. drawer) via a context-suffixed layoutId so the two instances never fight each other. Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Replace the fixed Home page with a hero prompt composer + a tabbed Quick Start section (Build/Automate/Connect/Explore), with the previous sections (welcome banner, Start Here shortcuts, recent chats, insights, shared conversations) turned into individually addable/removable/ reorderable widgets, persisted per-user (localStorage + best-effort Mongo sync via the existing /api/settings/preferences route). A "Go back to the previous Home experience" / "Try the new Home experience" toggle keeps the old fixed layout (ClassicHomePage) available during rollout, gated by a home_experience preference, so it can be removed once the new experience is validated. - HeroComposer creates a conversation via the existing dual-mode chat-store action and hands off the typed first message through a one-shot pending-first-message module, picked up by ChatPanel's existing send pipeline rather than duplicating it. - QuickStartSection's cards link to the closest existing destination route for each action (agents, MCP servers, skills, knowledge base, models, workflows, schedules, connections, secrets, chat) — no new destination pages. - Widget add/remove/reorder (drag-and-drop via @dnd-kit) lives in home-widgets-store.ts, mirroring the existing feature-flag-store pattern (local-first, best-effort server sync, touched-state guard against late hydration clobbering a fresh interaction). - RecentChats, SharedConversations, InsightsWidget, CapabilityCards, and WelcomeBanner were made self-contained (own data fetching) so they can be registered as zero-prop widgets; fixed a bug found while browser-testing where RecentChats' loading skeleton never cleared when the session was unauthenticated. Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Contributor
|
✅ No proprietary content detected. This PR is clear for review! |
Contributor
🧪 CAIPE UI Test Results✅ All tests passed 🟡 Overall Coverage: 62%📊 Detailed Coverage
✅ Test Suites
📈 Coverage Thresholds
|
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Signed-off-by: Sri Aradhyula <sraradhy@cisco.com>
Contributor
ℹ️ Branch is behind
|
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.
Summary
@dnd-kit), persisted per-user (localStorage-first, best-effort sync to Mongo via the existing/api/settings/preferencesroute — no new backend route needed).ClassicHomePage) available during rollout, gated by ahome_experiencepreference, so it can be retired once the new experience is validated.chat-storeaction and hands the typed first message off through a one-shot pending-first-message module, picked up byChatPanel's existing send pipeline rather than duplicating it. The agent picker reuses the existingAgentSelectorcomponent, defaulting to the resolved platform/user default agent.RecentChats,SharedConversations,InsightsWidget,CapabilityCards, andWelcomeBannerwere made self-contained (own data fetching) so they can be registered as zero-prop widgets. While browser-testing this, found and fixed a real bug:RecentChats' loading skeleton never cleared when the session was unauthenticated.Screenshots
Test plan
npm run lintnpx tsc --noEmitnpm test(full suite, 7494 tests passing)npm run buildChatPanel's existing pipeline — couldn't be exercised live, only unit-tested)/schedules, which has no in-page creation affordance today (schedules are created via an agent conversation) — may need a product decision on that card's expectation🤖 Generated with Claude Code