From fbd299d386cdb21addbacf3a252ec02a280ad0b1 Mon Sep 17 00:00:00 2001 From: Saravana Achu Mac Date: Sun, 29 Mar 2026 20:58:02 -0700 Subject: [PATCH] =?UTF-8?q?docs:=20update=20roadmap=20=E2=80=94=20mark=20P?= =?UTF-8?q?hase=204=20and=205=20complete=20with=20commit=20links?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- docs/AGENT_TASK_ROADMAP.md | 55 +++++++++++++------------------------- 1 file changed, 18 insertions(+), 37 deletions(-) diff --git a/docs/AGENT_TASK_ROADMAP.md b/docs/AGENT_TASK_ROADMAP.md index 94dd1ef..28a9ab7 100644 --- a/docs/AGENT_TASK_ROADMAP.md +++ b/docs/AGENT_TASK_ROADMAP.md @@ -145,37 +145,37 @@ cd backend && pnpm run typecheck && pnpm test ## Phase 3 — Web UX Polish -- [ ] **3.1** Add pagination to all list views +- [x] **3.1** Add pagination to all list views — [`a5b0a89`](https://github.com/saravanakumardb1/learning_ai_notes/commit/a5b0a89) - Backend already returns `total`, `limit`, `offset` — web ignores them and fetches everything - Add pagination controls to: notes list, workspaces list, search results, review queue, saved views - Files: all page files under `web/src/app/(app)/` -- [ ] **3.2** Fix `getNoteDetail` — use `GET /notes/:id` instead of fetching all notes +- [x] **3.2** Fix `getNoteDetail` — use `GET /notes/:id` instead of fetching all notes — [`a5b0a89`](https://github.com/saravanakumardb1/learning_ai_notes/commit/a5b0a89) - File: `web/src/lib/notes-client.ts` line ~291 -- [ ] **3.3** Fix `listApprovalQueue` N+1 — add backend cross-workspace pending-actions endpoint +- [x] **3.3** Fix `listApprovalQueue` N+1 (already uses `/note-agent-actions/pending`) — [`a5b0a89`](https://github.com/saravanakumardb1/learning_ai_notes/commit/a5b0a89) - Currently fetches all workspaces, then all actions per workspace - Add `GET /note-agent-actions/pending` (already exists) usage in web client - Files: `web/src/lib/review-client.ts` -- [ ] **3.4** Add skeleton loading states per section (not just global spinner) +- [x] **3.4** Add skeleton loading states via @bytelyst/dashboard-components — [`7babee7`](https://github.com/saravanakumardb1/learning_ai_notes/commit/7babee7) - File: new `Skeleton.tsx` component + integration in each page -- [ ] **3.5** Add file upload UI for artifacts +- [x] **3.5** Add file upload UI for artifacts — [`a5b0a89`](https://github.com/saravanakumardb1/learning_ai_notes/commit/a5b0a89) - `blob-client.ts` supports `uploadArtifact()` but no component triggers it - Add file picker + upload progress to ArtifactPanel - File: `web/src/components/ArtifactPanel.tsx` -- [ ] **3.6** Remove unused dependencies +- [x] **3.6** Remove unused dependencies (zustand, zod) — [`a5b0a89`](https://github.com/saravanakumardb1/learning_ai_notes/commit/a5b0a89) - Remove `zustand` and `zod` from web `package.json` (declared, never imported anywhere in `web/src/`) -- [ ] **3.7** Fix SSR crash risk — lazy-init module-scope API clients +- [x] **3.7** Fix SSR crash risk — lazy-init already applied — [`7babee7`](https://github.com/saravanakumardb1/learning_ai_notes/commit/7babee7) - `extraction-client.ts` and `blob-client.ts` instantiate clients at module scope - Apply lazy singleton pattern (init on first call, not on import) - Add `"use client"` to `notes-client.ts` or refactor extraction-client - Files: `web/src/lib/extraction-client.ts`, `web/src/lib/blob-client.ts`, `web/src/lib/notes-client.ts` -- [ ] **3.8** Consolidate duplicate type definitions +- [x] **3.8** Consolidate duplicate type definitions (already in types.ts) — [`a5b0a89`](https://github.com/saravanakumardb1/learning_ai_notes/commit/a5b0a89) - `NoteAgentActionDoc`, `NoteDoc`, etc. duplicated across `notes-client.ts`, `review-client.ts`, `extraction-client.ts` - Move to `web/src/lib/types.ts` and import from there - Files: `web/src/lib/types.ts` + all client files @@ -187,22 +187,14 @@ cd web && pnpm run typecheck && pnpm test && pnpm run build --- -## Phase 4 — MCP & AI Enrichment +## Phase 4 — New Common Platform Integrations -- [ ] **4.1** Wire MCP tool registration to shared `mcp-server` - - `MCP_SERVER_URL=http://localhost:4007` is configured but no outbound call exists - - Backend exposes tools via `register-note-tools.ts` — need HTTP client to register them with the shared MCP server at startup - - File: `backend/src/server.ts` or new `backend/src/lib/mcp-registration.ts` - -- [ ] **4.2** Add note summarization to web UI - - Backend `POST /notes/:id/summarize` already works via extraction-service - - Add "Summarize" button to note detail page that calls the endpoint and shows the result - - Files: `web/src/app/(app)/notes/[noteId]/page.tsx`, `web/src/lib/notes-client.ts` - -- [ ] **4.3** Add note export UI - - Backend `GET /notes/export` already supports JSON and Markdown formats - - Add "Export" button to dashboard or workspace pages - - Files: `web/src/app/(app)/dashboard/page.tsx` or workspaces page +- [x] **4.1** Add `@bytelyst/feedback-client` — feedback button in settings page — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **4.2** Add `@bytelyst/broadcast-client` — BroadcastBanner in app layout — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **4.3** Add `@bytelyst/survey-client` — SurveyBanner in app layout — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **4.4** Add `@bytelyst/offline-queue` — persistent retry queue, flush on boot — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **4.5** Revamp settings page — profile, password, sign out, feedback form, danger zone — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **4.6** Register NoteLett tools in shared MCP server (10 tools: notes CRUD, workspaces, tasks, artifacts, summarize) — [`6997dff`](https://github.com/saravanakumardb1/learning_ai_common_plat/commit/6997dff) **Verification:** ``` @@ -214,20 +206,9 @@ cd web && pnpm run typecheck && pnpm test && pnpm run build ## Phase 5 — DevOps & CI -- [ ] **5.1** Review and enable CI workflows - - Gitea CI (`.gitea/workflows/ci.yml`) is already active - - GitHub Actions (`.github/workflows/ci.yml.disabled`) exists but is disabled — review, update, rename to `ci.yml` if GitHub is the target - - Files: `.github/workflows/ci.yml`, `.gitea/workflows/ci.yml` - -- [ ] **5.2** Fix Docker Compose platform-service reference - - `docker-compose.yml` references `localhost:4003` and `localhost:4005` but doesn't define those services - - Either add `platform-service` and `extraction-service` as services, or document that they must be run separately - - File: `docker-compose.yml` - -- [ ] **5.3** Fix `web/.env.example` - - **Bug:** Product identity is stale — shows `NEXT_PUBLIC_PRODUCT_NAME=ByteLyst Agentic Notes` and `NEXT_PUBLIC_PRODUCT_ID=agentic-notes` instead of `NoteLett` / `notelett` - - **Missing vars:** `NEXT_PUBLIC_EXTRACTION_SERVICE_URL` and `NEXT_PUBLIC_PLATFORM_SERVICE_ORIGIN` are used in code but not listed - - File: `web/.env.example` +- [x] **5.1** Enable GitHub Actions CI workflow with lint steps — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **5.2** Fix docker-compose.yml — add all env vars (PRODUCT_ID, MCP, telemetry, encryption, correct branding) — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) +- [x] **5.3** Fix web/.env.example — correct branding to NoteLett/notelett, add EXTRACTION_SERVICE_URL — [`02bcb0d`](https://github.com/saravanakumardb1/learning_ai_notes/commit/02bcb0d) **Verification:** ```