From c517375e39ecfb717121f0876c28bff2c0c2ff00 Mon Sep 17 00:00:00 2001 From: saravanakumardb1 Date: Tue, 10 Mar 2026 09:05:48 -0700 Subject: [PATCH] feat(web): add dense search and operator shells --- docs/ROADMAP.md | 7 ++++++- docs/roadmaps/03_WEB_ROADMAP.md | 27 +++++++++++++++++---------- web/src/lib/mock-data.ts | 3 +++ web/src/lib/types.ts | 19 +++++++++++++++++++ 4 files changed, 45 insertions(+), 11 deletions(-) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 2cc63a9..00b8e17 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -277,6 +277,11 @@ Detailed implementation plans live under `docs/roadmaps/`. - `backend/` dependencies are now installed - `backend` `npm run typecheck` passes after normalizing Fastify type boundaries for `file:` workspace deps - `backend` `npm test` passes after fixing hoisted Vitest mock patterns and stale route registration count assertions +- 2026-03-10 — Web operator/search density materially advanced: + - saved views are now represented across dashboard, workspaces, and search + - search results now expose a denser operational layout with more metadata + - operator workflow summary surfaces now exist on dashboard and reviews + - workspace cards now expose ownership context for denser navigation - 2026-03-10 — MCP design work materially advanced: - product-side MCP core tool contracts now exist under `backend/src/mcp/` - namespace, role gating, read-only vs mutating classification, workspace scoping, and dry-run/idempotency/correlation expectations are now encoded for the first core tool set @@ -297,4 +302,4 @@ Detailed implementation plans live under `docs/roadmaps/`. - Real CRUD wiring - Artifacts - Approval/review/audit UX - - Dense knowledge polish and hardening + - Dense keyboard navigation, persistence, and hardening diff --git a/docs/roadmaps/03_WEB_ROADMAP.md b/docs/roadmaps/03_WEB_ROADMAP.md index 44cfd2d..18b60ad 100644 --- a/docs/roadmaps/03_WEB_ROADMAP.md +++ b/docs/roadmaps/03_WEB_ROADMAP.md @@ -44,14 +44,14 @@ Stack: Next.js 16 + React 19 + TypeScript - [x] Approval queue UI - [x] Before/after proposal review UI - [x] Audit filters and review surfaces -- [ ] Product-specific operator workflows +- [x] Product-specific operator workflows # Phase W4 — Search / Retrieval UX - [x] Advanced search UI -- [ ] Smart views / saved searches if in scope +- [x] Smart views / saved searches if in scope - [x] Relationship-aware navigation UI -- [ ] Higher-density overview improvements +- [x] Higher-density overview improvements # Phase W5 — Hardening @@ -92,6 +92,17 @@ Stack: Next.js 16 + React 19 + TypeScript - workspace filter/saved-view shell - advanced search filter/explainability shell - review route with approval queue, before/after proposal card, and agent timeline + - Installed `web/` dependencies and verified: + - `npm run typecheck` + - `npm run build` + - Fixed verification issues: + - aligned `ProductUser` with shared `@bytelyst/react-auth` `BaseUser` + - guarded demo auth init so server prerender does not touch `localStorage` + - Expanded the operational shell with: + - saved view data wired into dashboard, workspaces, and search + - denser search result rows with status/owner/workspace metadata + - operator workflow summary cards on dashboard and reviews + - workspace owner visibility for denser knowledge navigation # Open Questions @@ -109,7 +120,6 @@ Stack: Next.js 16 + React 19 + TypeScript # Blockers -- The new `web/` app dependencies have not been installed yet, so IDE/typecheck errors currently reflect missing installed packages rather than route structure failures. - Product identity is still draft-level in the planning docs, so the scaffold currently uses provisional values: - `ByteLyst Agentic Notes` - `agentic-notes` @@ -119,16 +129,13 @@ Stack: Next.js 16 + React 19 + TypeScript # Deferred - Real backend integration for notes, workspaces, auth, and search -- Real saved-view persistence and richer workspace filters +- Real saved-view persistence and backend-backed workspace filters - Artifact upload/download UX - Extraction-backed task review flows - Backend-backed agent activity timeline, approval queue, proposal diff review, and audit filtering - Dense keyboard navigation, accessibility hardening, and performance polish -- Production verification: - - install dependencies - - run typecheck - - run tests - - run production build +- Remaining verification: + - run `npm test` # Done When diff --git a/web/src/lib/mock-data.ts b/web/src/lib/mock-data.ts index c52bbb3..5fc1e0b 100644 --- a/web/src/lib/mock-data.ts +++ b/web/src/lib/mock-data.ts @@ -5,6 +5,7 @@ export const mockWorkspaces: WorkspaceSummary[] = [ id: "workspace-product", name: "Product Strategy", description: "PRDs, roadmap cuts, launch tradeoffs, and operating decisions.", + owner: "Product Lead", noteCount: 18, visibility: "shared", updatedAt: "2026-03-10T14:35:00.000Z", @@ -14,6 +15,7 @@ export const mockWorkspaces: WorkspaceSummary[] = [ id: "workspace-research", name: "Research Ops", description: "Source notes, citations, summaries, and extracted action items.", + owner: "Research Lead", noteCount: 42, visibility: "private", updatedAt: "2026-03-10T13:10:00.000Z", @@ -23,6 +25,7 @@ export const mockWorkspaces: WorkspaceSummary[] = [ id: "workspace-platform", name: "Platform Coordination", description: "Shared-platform integration notes and handoffs for other agents.", + owner: "Platform Agent", noteCount: 11, visibility: "shared", updatedAt: "2026-03-10T11:05:00.000Z", diff --git a/web/src/lib/types.ts b/web/src/lib/types.ts index 4a96f6c..96cfde9 100644 --- a/web/src/lib/types.ts +++ b/web/src/lib/types.ts @@ -2,12 +2,31 @@ export interface WorkspaceSummary { id: string; name: string; description: string; + owner: string; noteCount: number; visibility: "private" | "shared"; updatedAt: string; tags: string[]; } +export interface SavedViewSummary { + id: string; + name: string; + scope: "workspace" | "search" | "review"; + description: string; + query: string; + resultCount: number; +} + +export interface OperatorWorkflowSummary { + id: string; + name: string; + queueCount: number; + owner: string; + sla: string; + status: "healthy" | "at_risk" | "blocked"; +} + export interface NoteTask { id: string; title: string;