saravanakumardb1
b8849885f8
chore: .npmrc use ${GITEA_NPM_HOST}:3300 instead of hardcoded localhost
...
Enables NETWORK-aware Gitea registry resolution:
- NETWORK=corp → localhost (local Gitea)
- NETWORK=home → Azure VM host (from ~/.gitea_vm_host)
switch-network.sh in common-plat sets GITEA_NPM_HOST accordingly.
Matches existing .npmrc.docker pattern used during Docker builds.
2026-03-24 15:46:34 -07:00
saravanakumardb1
aa0f720b6e
fix(docker): correct web Dockerfile EXPOSE/PORT to 3045 matching docker-compose
2026-03-24 11:45:27 -07:00
saravanakumardb1
e9dc45d9bc
fix(docker): remove hardcoded corporate proxy and jfrog registry from Dockerfiles
2026-03-24 11:10:33 -07:00
saravanakumardb1
e9f4aedb7a
chore: remove docker-prep.sh — replaced by Gitea registry-backed Dockerfiles
2026-03-24 06:20:47 -07:00
saravanakumardb1
41477323df
fix(ci): remove stale common-plat build step — packages from Gitea registry now
2026-03-24 05:54:50 -07:00
saravanakumardb1
33f9379f4a
feat(docker): migrate NoteLett to Gitea registry-backed Docker pattern
...
- Convert all @bytelyst/* file: refs to semver ^0.1.0 (backend, web, mobile)
- Remove sibling common-plat workspace references from pnpm-workspace.yaml
- Add .npmrc and .npmrc.docker for local Gitea registry
- Rewrite backend/web Dockerfiles: pnpm + BuildKit secret mount + corp proxy
- Fix backend tsconfig.json: remove explicit lib to resolve fetch Response types
- Verified: host-side pnpm install, backend tests (86 pass), backend+web Docker builds
2026-03-23 20:11:12 -07:00
saravanakumardb1
1da2dcc7d9
fix(ci): skip common-plat install + add HUSKY=0
...
- Remove pnpm install from common-plat build step (deps already local)
- Add HUSKY=0 to prevent husky install failure in CI
2026-03-22 21:12:03 -07:00
saravanakumardb1
cbbd9ddce9
fix(docker): upgrade Dockerfiles to node:22-slim + add NODE_TLS + fix next.config.ts
...
- backend/Dockerfile: alpine→slim, add NODE_TLS_REJECT_UNAUTHORIZED=0, 3-stage pattern
- web/Dockerfile: alpine→slim, add NODE_TLS_REJECT_UNAUTHORIZED=0, remove non-existent public/ COPY
- web/next.config.ts: add transpilePackages + webpack symlinks for pnpm @bytelyst/* resolution
Docker smoke tests: backend + web builds pass
2026-03-22 21:06:07 -07:00
saravanakumardb1
008554cd8d
fix(ci): build only @bytelyst/* packages in common-plat
...
- Use pnpm -r --filter './packages/**' build to avoid dashboard/service builds
- Fixes .next/lock conflict from parallel jobs building common-plat
2026-03-22 20:33:52 -07:00
saravanakumardb1
d80dc4d553
fix(ci): use local paths for host-mode Gitea runner
...
- Replace actions/checkout with git pull + local working-directory
- Fixes corp proxy blocking GitHub action downloads
2026-03-22 20:23:03 -07:00
saravanakumardb1
ad50e604c6
chore(ci): migrate to Gitea local CI, disable GitHub Actions
...
- Add .gitea/workflows/ci.yml for self-hosted Gitea runner
- Disable .github/workflows/ci.yml (GitHub billing blocked)
2026-03-22 20:13:18 -07:00
saravanakumardb1
90dd2d3bd5
feat(repo): migrate notelett workspace to pnpm
2026-03-22 15:50:54 -07:00
saravanakumardb1
b40097633f
fix(docker): rewrite backend Dockerfile with explicit COPY + .tarballs/ for file: deps
2026-03-22 00:23:13 -07:00
saravanakumardb1
8fdc7b57d0
fix(web): add --nl-* CSS token aliases — previous rename broke all styling since vars had no definitions
2026-03-21 20:48:35 -07:00
saravanakumardb1
304d2ae865
feat: wire feature flag checks into web Sidebar and upgrade mobile flag client
2026-03-21 20:34:16 -07:00
saravanakumardb1
5842ff1b22
fix: align Fastify to 5.7.4 + normalize product.json
2026-03-21 20:32:17 -07:00
saravanakumardb1
a3f7ba82a2
fix: normalize product.json + replace --ml-* with --nl-* CSS namespace
2026-03-21 20:20:40 -07:00
saravanakumardb1
85968e7b2a
fix(web): replace --ml-* (MindLyst) with --nl-* (NoteLett) CSS namespace across 18 files
2026-03-21 20:18:44 -07:00
saravanakumardb1
f95ba73c31
feat(web): upgrade feature-flag-client to SSE streaming + getValue()
2026-03-21 17:41:58 -07:00
saravanakumardb1
f0a75a9dc2
fix(backend): fix server.test.ts mock missing PRODUCT_ID and field-encrypt
2026-03-21 16:22:11 -07:00
saravanakumardb1
20cc3e4e49
feat(backend): admin-panel encryption toggle via initEncryption()
...
- FIELD_ENCRYPT_ENABLED env var (default: true, fallback only)
- initEncryption(productId) polls encryption_enabled from platform-service
- Admin panel toggle takes precedence, 3s timeout graceful fallback
2026-03-21 15:25:41 -07:00
saravanakumardb1
e85cfeb0f1
feat(notelett): encrypt note body with @bytelyst/field-encrypt
...
- Add field-encrypt dependency + config env vars (FIELD_ENCRYPT_*)
- Create backend/src/lib/field-encrypt.ts encryptor singleton
- Update notes repository: encrypt body on create/update, decrypt on read
- Backward-compatible: isEncryptedField guard handles plaintext during migration
- All 86 tests passing
2026-03-21 09:29:44 -07:00
saravanakumardb1
d12c5bfa02
docs: add cross-repo automation playbook reference
2026-03-21 09:12:19 -07:00
saravanakumardb1
dbe3988284
chore: Remove unused deps — auth-client from web, platform-client + react-native-platform-sdk from mobile
2026-03-21 00:08:17 -07:00
saravanakumardb1
0b5c224075
fix(mobile): Fix diagnostics-client API — use DiagnosticsClient.getInstance()
...
@bytelyst/diagnostics-client exports DiagnosticsClient class with
singleton getInstance(config), not a createDiagnosticsClient factory.
Fixed import and initialization with correct config shape.
2026-03-20 23:13:44 -07:00
saravanakumardb1
c2d641433f
refactor(mobile): Phase 9B — Add @bytelyst/diagnostics-client
...
- Add diagnostics-client dependency to mobile/package.json
- Wire diagnosticsClient in mobile/src/lib/platform.ts
Part of Mobile DRY Refactoring Roadmap Phase 9B.
2026-03-20 22:50:09 -07:00
saravanakumardb1
8a1234a460
feat(backend): add GET /api/bootstrap route + test
...
- Returns productId, displayName, backendPort for client bootstrapping
- Integration test validates response shape and types
2026-03-20 21:15:41 -07:00
saravanakumardb1
ff73d60e07
feat(backend): add GET /health test to diagnostics suite
...
- Validates standard health response shape: status, service, version, timestamp
- Ensures consistent health endpoint contract across ecosystem
2026-03-20 21:06:57 -07:00
saravanakumardb1
4baed0b10c
feat(backend): add GET /api/diagnostics/config route + test
...
- Returns sanitized config: productId, serviceName, port, nodeEnv, dbProvider, telemetryEnabled, featureFlagsEnabled
- Integration test validates response shape
2026-03-20 19:36:04 -07:00
saravanakumardb1
1c7ea650cd
test(backend): add diagnostics route integration tests
...
- 3 tests: GET /diagnostics/flags, GET /diagnostics/telemetry, POST /diagnostics/telemetry/flush
- All tests pass
2026-03-20 19:28:09 -07:00
saravanakumardb1
90b4bface4
feat(backend): add /diagnostics/flags + /diagnostics/telemetry routes
...
- GET /api/diagnostics/flags — returns all feature flags
- GET /api/diagnostics/telemetry — returns buffered telemetry events
- POST /api/diagnostics/telemetry/flush — flush telemetry buffer
- Fix server.test.ts mock to include get/post + feature-flags/telemetry mocks
- 80/80 tests pass
2026-03-20 19:12:38 -07:00
saravanakumardb1
4a5a782333
refactor(web): migrate telemetry + diagnostics to createWebTelemetry/createWebDiagnostics
...
- telemetry.ts: 35 → 13 lines via createWebTelemetry()
- diagnostics.ts: 43 → 16 lines via createWebDiagnostics()
- 14/14 web tests pass, typecheck clean
2026-03-20 18:54:07 -07:00
saravanakumardb1
21ad6ed978
feat(backend): add @bytelyst/backend-flags + backend-telemetry, fix config defaults
...
- Add @bytelyst/backend-flags and @bytelyst/backend-telemetry packages
- Create feature-flags.ts and telemetry.ts wrappers using shared packages
- Add TELEMETRY_ENABLED, FEATURE_FLAGS_ENABLED, DB_PROVIDER=memory, JWT_SECRET dev default
- 80/80 tests pass (integration tests now work without env vars)
2026-03-20 17:31:53 -07:00
saravanakumardb1
fa1377892c
fix(ci): add common-plat checkout for backend, upgrade Node to 22, add concurrency
...
- Backend: common-plat checkout + pnpm build so @bytelyst/* file: deps resolve
- All jobs: Node 20→22, concurrency group for PR dedup
2026-03-20 15:20:18 -07:00
saravanakumardb1
2f9cfbef6a
fix(docker): remove deprecated version key from docker-compose.yml
2026-03-20 15:12:34 -07:00
saravanakumardb1
cc91e3dac7
fix(backend): use config.DB_PROVIDER instead of process.env.DB_PROVIDER in datastore.ts
...
- Reads validated DB_PROVIDER from Zod config instead of raw env
- Removes stale isTest fallback logic (now handled by config defaults)
2026-03-20 08:29:36 -07:00
saravanakumardb1
b04189df3f
refactor(backend): migrate config.ts to @bytelyst/backend-config base schema
...
- Extends baseBackendConfigSchema with product-specific overrides
- DB_PROVIDER now declared in all repos (was missing in 3)
2026-03-20 07:56:29 -07:00
saravanakumardb1
942d00cc25
refactor(backend): migrate auth.ts + request-context.ts to @bytelyst/fastify-auth
...
- auth.ts: 80→18 lines, delegates to createAuthMiddleware()
- request-context.ts: delegates to createRequestContext()
- Re-exports JwtPayload, AuthPayload from shared package
2026-03-20 07:45:59 -07:00
saravanakumardb1
2a32a54ae7
refactor(backend): remove errors.ts re-export, import @bytelyst/errors directly
2026-03-20 07:19:29 -07:00
saravanakumardb1
6babe05560
docs: update IMPLEMENTATION_TRACKER, AGENTS, GAP_ANALYSIS to reflect completed implementation [E1]
...
- IMPLEMENTATION_TRACKER: all 8 phases marked complete with commit SHAs
- IMPLEMENTATION_TRACKER: progress log updated with all 8 commits
- IMPLEMENTATION_TRACKER: test target summary updated with actual final numbers (117 tests)
- AGENTS.md: test counts updated (80 backend, 14 web, 23 mobile)
- AGENTS.md: repo layout updated (CreateNoteModal, LinkNoteModal, Dockerfiles, CI, stores)
- AGENTS.md: 6 new API endpoints documented (archive, restore, summarize, export, search)
- GAP_ANALYSIS.md: current state summary updated with final counts
- GAP_ANALYSIS.md: totals table updated with actual results
2026-03-19 09:05:39 -07:00
saravanakumardb1
e5535252c7
feat(backend+web): note summarization + export endpoints [B3, B6]
...
- backend: POST /notes/:id/summarize — calls extraction-service, stores summary artifact
- backend: GET /notes/export — JSON + Markdown format support
- backend: extraction-client.ts for extraction-service integration
- backend: 4 new integration tests (summarize, export JSON, export MD, invalid format)
- web: summarizeNote + exportNotes client functions
- web: Summarize button on note detail page
- web: Export Notes button on workspaces page
- web: exclude e2e/ from vitest config
- Total: 80 backend, 14 web, 23 mobile = 117 tests
2026-03-19 08:59:26 -07:00
saravanakumardb1
dd62d3bf5c
test(web+mobile): Playwright E2E scaffold + 23 mobile store tests [C4, B7]
...
- web: playwright.config.ts + e2e/navigation.spec.ts (7 navigation tests, scaffolded)
- web: exclude e2e/ from tsconfig (playwright not yet installed as dep)
- mobile: notes-store.test.ts (7 tests: hydrate, openNote, saveDraft, updateNote)
- mobile: workspace-store.test.ts (5 tests: hydrate, preserve/reset active, set/clear)
- mobile: inbox-store.test.ts (5 tests: hydrate, approve, reject, unknown id guards)
- mobile: auth-store.test.ts (6 tests: bootstrap, signIn, signOut, failure paths)
- Total: 76 backend, 14 web, 23 mobile = 113 tests
2026-03-19 08:51:36 -07:00
saravanakumardb1
a71747e3fb
chore(devops): add Dockerfiles, docker-compose, CI workflow, docker-prep script [C1-C5]
...
- backend/Dockerfile: multi-stage Node.js build (install → build → runtime)
- web/Dockerfile: multi-stage Next.js standalone build
- docker-compose.yml: backend (4016) + web (3000) with health check
- scripts/docker-prep.sh: pack @bytelyst/* tarballs + rewrite file: refs (--restore to undo)
- .github/workflows/ci.yml: backend (typecheck+test+build), web (typecheck+test+build), mobile (typecheck)
2026-03-19 08:47:04 -07:00
saravanakumardb1
a3267e4b1b
feat(web+backend): add create note, archive/restore, link note flows [B1, B2, B8]
...
- backend: add POST /notes/:id/restore endpoint (mirrors archive pattern)
- web: CreateNoteModal component (workspace picker, title, body, tags)
- web: LinkNoteModal component (search, select, relationship type picker)
- web: Dashboard 'New Note' button + CreateNoteModal integration
- web: Note detail Archive/Restore buttons + LinkNote button
- web: 4 CreateNoteModal tests + 4 LinkNoteModal tests
- backend: 1 restore integration test
- Total: 76 backend tests, 14 web tests
2026-03-19 08:44:39 -07:00
saravanakumardb1
bf2785bcf9
test(backend): add integration tests for all 7 route modules [A5]
...
- Add test-helpers.ts with buildTestApp() + resetMemoryDatastore()
- notes: 11 tests (CRUD, archive, filter, search, validation)
- workspaces: 7 tests (CRUD, summaries with noteCount, validation)
- note-tasks: 6 tests (CRUD, filter by workspaceId, validation)
- note-artifacts: 7 tests (CRUD, filter by noteId, validation)
- note-relationships: 4 tests (create, list, validation)
- note-agent-actions: 8 tests (CRUD, pending, batch-review, validation)
- saved-views: 8 tests (CRUD, filter by scope, delete, validation)
- Fix listPendingActions to avoid unsupported $in operator in memory provider
- Total: 75 backend tests (was 24)
2026-03-19 08:38:21 -07:00
saravanakumardb1
ee586065dd
refactor(web+backend): consolidate types, optimize N+1 queries [D1, A3, A4, D2]
...
- types.ts: consolidate NoteDoc, WorkspaceDoc, NoteAgentActionDoc etc. from client files
- notes-client.ts: import from types.ts, optimize getNoteDetail with direct GET /notes/:id
- review-client.ts: import from types.ts, use /note-agent-actions/pending (eliminates N+1)
- notes-client.ts: use /workspaces/summaries (eliminates fetch-all-notes for counts)
- backend: add GET /workspaces/summaries with noteCount per workspace
- backend: add GET /note-agent-actions/pending (cross-workspace)
- backend: add countNotesByWorkspaces + listPendingActions repository functions
- Add createNote, archiveNote, restoreNote, createNoteRelationship client functions
- Fix existing tests for new route counts and mock order
2026-03-19 07:32:54 -07:00
saravanakumardb1
dbb1a84dba
fix(web): lazy-init extraction + blob clients, add use-client to notes-client
...
- extraction-client.ts: lazy singleton (SSR crash fix) [A1]
- blob-client.ts: lazy singleton + remove dead re-export [A1]
- notes-client.ts: add "use client" directive [A6]
- next.config.ts: add output: "standalone" [A2]
- Delete mock-data.ts and review-data.ts (dead code) [D3, D4]
2026-03-19 07:20:28 -07:00
saravanakumardb1
e50df779da
docs: fix 7 inaccuracies in implementation tracker after systematic review
...
Corrections:
- Remove duplicate task 7.3 (Gap A4 already in Phase 2 task 2.3), renumber
- Fix task 3.5: remove false DELETE claim (note-relationships has GET+POST only)
- Fix task 1.2: add note about removing dead 'export { blobClient }' re-export
- Fix 'How to Use' parallelization: Phase 5 needs Phase 1 only, not Phase 3
- Add phase-level [ ] checkboxes to all 8 phase headers
- Align Phase 3 test target: '60+' → '~60-75' (matches summary table)
- Fix Phase 7 effort estimate (4-5h → 3-4h after removing duplicate task)
- Fix test target summary to use ranges instead of single estimates
2026-03-19 07:15:26 -07:00
saravanakumardb1
1d068e748c
docs: add detailed implementation tracker with 8 phases and 35 checkbox tasks
...
Derived from GAP_ANALYSIS.md (25 gaps across 5 categories).
Structured as 8 sequential phases with:
- Per-task checkboxes with gap IDs for traceability
- Specific file paths and code patterns for each fix
- Verification commands per phase
- Commit message conventions
- Test target summary (30→132 tests across all surfaces)
- Progress log table for tracking commits
- Deferred items (B4 webhooks, B5 sharing, E2 WINDSURF_CONTEXT)
Phases: 1-Bug Fixes, 2-Code Quality, 3-Backend Tests,
4-Web Features, 5-DevOps, 6-E2E+Mobile Tests,
7-AI Enrichment, 8-Docs Alignment
2026-03-19 07:09:47 -07:00
saravanakumardb1
ee033f4eab
docs: fix 8 inaccuracies in gap analysis after systematic self-review
...
Corrections:
- Remove D5 (factually wrong — backend tsconfig already excludes test files)
- Fix web component count 12→10, lib file count 11→18
- Fix B1 title: 'No note delete' → 'No note restore' (PRD says archive/restore)
- Add A6: notes-client.ts missing 'use client' (fragile SSR import chain)
- Expand A1 to include blob-client.ts module-scope instantiation
- Note telemetry/flags/kill-switch are lower risk (client-only imports)
- Strengthen D3/D4: confirmed zero-import dead code, not just 'unclear'
- A5: note that auth.test.ts and MCP tests do have real behavior tests
- Update bug count 5→6, total gaps 29→25
2026-03-19 07:06:05 -07:00