docs: update roadmap — mark Phase 4 and 5 complete with commit links

Made-with: Cursor
This commit is contained in:
Saravana Achu Mac 2026-03-29 20:58:02 -07:00
parent 02bcb0d122
commit fbd299d386

View File

@ -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:**
```