- Extract NotificationItem/NotificationType to Models/Notification.swift
- Create NotificationsServiceProtocol with testable service layer
- Implement markAsRead(id:) and markAllAsRead() with HTTP calls
- Add NotificationError enum with localized descriptions
- Update NotificationsViewModel to use protocol-based service
- Add 18 unit tests (12 ViewModel + 6 Model) with mock service
- Update README with architecture documentation
- Create NotificationsView.swift with SwiftUI List and pull-to-refresh
- Create NotificationRowView.swift for individual notification items
- Create NotificationsViewModel.swift with MVVM pattern
- Implement empty state view for no notifications
- Add mark-as-read and mark-all-as-read functionality
- Support notification types: loan approved/rejected, payment received/due, new lender, system updates
- Add toolbar action for marking all notifications as read
- Include README.md with architecture documentation and integration guide
Next: Connect tRPC notifications router for data fetching
Pushed FRE-4639 build warnings fix to gt/master. All iOS audit stabilization issues now live on main branch.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Daily note for 2026-05-03 with scope definition work
- New Lendair project entity in knowledge graph
- Atomic facts from codebase audit
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Reviewed voiceprint service files from FRE-4510 commit. Identified 8 test coverage areas. Code quality good with clean architecture.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Child issue FRE-4542 created for Pop scope definition → Founding Engineer
- Board interaction created asking about Nessa and Lendair future
- 5 archive projects documented
- Awaiting board input to close out remaining decisions
All scripter code has been migrated to ~/code/scripter. This removes
the overlap items (src/, src-tauri/, server/trpc/, marketing/,
docs/, public/, dist/, index.html) with favor-newer policy applied.
All FrenoCorp-unique files archived to scripter/trpc/legacy/ for
reference. Scripter repo's modular tRPC structure supersedes the
flat-router format.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
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.