Integrates spamAuditLogger into SMSClassifierService.classify() and
CallAnalysisService.analyzeCall(). Each decision logs:
- Classification type (sms/call), phone hash, decision, confidence
- Feature flags active at time of classification
- Decision rationale (feature list for SMS, reason codes for calls)
Audit entries are queryable via spamAuditLogger.getEntries() with
filters for type, decision, date range, and limit. Summary stats
available via getSummary().
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Add promise-based lazy initialization via ensureInitialized() to deduplicate
concurrent initialize() calls. Concurrent callers now await the same
initialization promise instead of each triggering a separate load.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Create voiceprint.feature-flags.ts to re-export checkFlag
- Update voiceprint.config.ts to use checkFlag for all flags
- Update voiceprint.service.ts to import checkFlag
- Ensure voiceprint services respect feature flags
- packages/jobs/: BullMQ-based async job queue for audio analysis
with concurrency control and retry logic
- services/voiceprint-ml/: FastAPI microservice for ECAPA-TDNN
inference with mock model, preprocessing, embedding extraction,
and synthetic voice detection endpoints
- Includes Dockerfile and requirements.txt for ML service
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Created shared-notifications package with multi-channel support
- Implemented EmailService with Resend integration
- Implemented PushService with FCM/APNs support
- Implemented SMSService with Twilio integration
- Added NotificationService to orchestrate all channels
- Created notification types, configuration, and routes
- Added rate limiting and delivery tracking support
- Configured notification preferences management
Files:
- packages/shared-notifications/src/{types,config,services}/*.ts
- packages/shared-notifications/package.json
- apps/api/src/routes/notifications.routes.ts
- apps/api/package.json (updated dependencies)
- Add Fastify-based API server entry point
- Implement tier-based rate limiting middleware (basic/plus/premium)
- Add authentication middleware (JWT + API key support)
- Create error handling middleware with standardized responses
- Add request/response logging with request IDs
- Configure CORS and security headers
- Implement API route structure with health check and service discovery
- Set up API versioning configuration
Files: apps/api/src/{index.ts,middleware/*.ts,routes/index.ts}
H1: Add verifyScriptAccess/verifyRevisionAccess to all 14 revisions endpoints
H2: Add verifyProjectAccess to listScripts and searchScripts
M2: Add cascade delete for projectMembers on project deletion
M4: Replace plain Error throws with TRPCError for consistent error handling
M5: Use crypto.randomUUID for team ID generation (was Date.now + Math.random)
L1: Add 100KB content size limit on revision content
L2: Add unique constraint to script slug column
L3: Update hasProjectAccess middleware to check project membership
- clerk-provider.tsx: typed Clerk event listener with type guards
(isClerkUserEvent, isClerkSignOutEvent) instead of (event as any)
- service.ts: fixed signal propagation timing in updateProject,
addCollaborator, removeCollaborator — capture updated project inside
setProjects callback instead of reading stale signal after mutation
- TeamManagement.tsx: added useAuth import and getAuthToken helper to
replace raw localStorage reads; auth context now available in components
- ProjectForm.tsx: added explicit null check on auth().user before
accessing .id, replacing unsafe non-null assertion
- Reviewed src-tauri/ and confirmed all native features implemented
- Menus, tray, file system, dialogs all working
- Build environment needs platform-specific dependencies
- Created ./plans/FRE-589-status.md with full status report
- Ready for Security Reviewer
- Verified wake context indicates FRE-589 is active (high priority)
- Confirmed Tauri framework exists from FRE-606
- No recent FRE-589 commits - packaging work pending
- Created ./plans/FRE-589-review.md for tracking
Next: Await clarification on FRE-589 work status or begin packaging
- Wake context indicates FRE-589 is active (high priority)
- Tauri framework setup exists from FRE-606
- Packaging for macOS, Windows, Linux pending
- Native menu bars, system tray, and file integration pending
Next: Verify if FRE-589 work is in progress or needs to be started
- Updated router.ts middleware for Clerk authentication
- Modified test contexts to use clerkUserId
- Added team tables to test schema
- Updated WaitlistForm and waitlist page
- Created src/server/trpc/ parallel structure
All 258 tests pass. Ready for Security Reviewer.
- Register service worker for offline caching (app shell + API responses)
- Link manifest.json in index.html with updated theme colors
- Update manifest start_url to /app/dashboard for PWA experience
- Add comprehensive team management CSS with responsive breakpoints
- Add alert, loading, and danger button styles
- Mobile-first responsive layout for team list and detail views
- Replace mock data with tRPC API calls for team CRUD operations
- Add TeamList view with fetch, create, and delete teams
- Add TeamDetail view with member management (list, invite, update role, remove, leave)
- Use solid-js <For> for proper keyed list rendering
- Add loading/error states and confirmation dialogs
- Use @tanstack/react-query for data fetching and cache invalidation
Create analytics-router.ts with ~30 tRPC endpoints for KPI management, alert
rules, scheduled reports, cohort analysis, and NPS survey integration.
Register router in index.ts under 'analytics' namespace. Fix pre-existing
bugs in service files: snake_case to camelCase conversion, missing non-null
assertions, and incorrect DB access patterns.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Completed review of CTO silent run detection.
Finding: False positive - CTO process (PID 1017156) is healthy and running.
- Run 22d252ed silent for ~1h but CTO has no active assignments
- Silence is expected for idle/awaiting-work state
- Different from CMO pattern (CMO was quietly working on 4+ issues)
Action: Marked FRE-4455 as done, no intervention needed.
Co-Authored-By: Paperclip <noreply@paperclip.ing>