saravanakumardb1
c4c84ddf16
docs(broadcasts,surveys): Mark iOS/Android integration complete
2026-03-03 08:21:06 -08:00
saravanakumardb1
3b9eb5bd19
docs(diagnostics): mark Phase 1.5 complete, update roadmap status
...
Phase 1.5 items completed:
- 1.5.1: Wired into server.ts (routes + subscribers)
- 1.5.2: Event bus subscribers for 8 events + email templates
- 1.5.3: Audit logging for all session lifecycle events
- 1.5.4: Rate limiting keys configured
Phase 1 now COMPLETE with 17 diagnostics tests passing
Next: Phase 2 Client SDKs (TS/Swift/Kotlin)
2026-03-03 08:21:01 -08:00
saravanakumardb1
b472f73c94
feat(platform-sdk): Phase 4.2/4.3 - iOS and Android native UI components
...
- BLInAppMessageUI.swift: Banner + Modal SwiftUI components
- BLSurveyUI.swift: Survey modal with all 9 question types for iOS
- BroadcastUI.kt: Banner + Modal Jetpack Compose components
- SurveyUI.kt: Survey modal with all 9 question types for Android
2026-03-03 08:20:01 -08:00
saravanakumardb1
30583a1768
feat(diagnostics): implement Phase 1.5 — event bus, audit, rate limiting
...
1.5.2 Event Bus: Add warn to noopLog, update comments
1.5.3 Audit: Already implemented in all handlers
1.5.4 Rate Limiting: Add diagnostics keys (10/hr, 12/min, 100/min)
Delivery Templates: Add 4 diagnostics email templates (ready for wiring)
Tests: Update count to 12 templates (was 8)
All 839 tests passing
2026-03-03 08:19:41 -08:00
saravanakumardb1
5245e4b53b
docs(broadcasts,surveys): Mark Phase 4 complete, MVP achieved
2026-03-03 08:07:13 -08:00
saravanakumardb1
4bf18f4d4f
feat(platform-service): Phase 4.4 - Push notification wiring (FCM/APNS)
...
- push-notifications.ts: FCM and APNS delivery services
- Device token registration/management
- sendPushNotification() for bulk delivery
- Automatic token deactivation on APNS 410 responses
2026-03-03 08:05:21 -08:00
saravanakumardb1
6c29df4207
docs(broadcasts,surveys): Mark Phase 3.4 complete - all SDKs done
2026-03-03 07:45:02 -08:00
saravanakumardb1
6027d618b7
feat(kotlin-sdk): Phase 3.4 - Broadcast and Survey clients
...
- BLBroadcastClient.kt: In-app message fetch, read/dismiss, click tracking, polling
- BLSurveyClient.kt: Survey fetch, start/submit/complete, offline cache, polling
- Full coroutine support with Result<T> return types
2026-03-03 07:44:39 -08:00
saravanakumardb1
b96503dc2d
feat(swift-sdk): Phase 3.3 - Broadcast and Survey clients
...
- BLBroadcastClient.swift: In-app message fetch, read/dismiss, click tracking, polling
- BLSurveyClient.swift: Survey fetch, start/submit/complete, offline cache, polling
2026-03-03 07:40:56 -08:00
saravanakumardb1
4def08d74e
docs(broadcasts,surveys): Update roadmap - Phase 3 complete, add Phase 4
2026-03-03 07:37:22 -08:00
saravanakumardb1
307b84c2a2
feat(packages): Phase 3.2 - Create @bytelyst/survey-client package
...
- package.json: ESM module config
- src/index.ts: Survey client factory with types, validation, offline cache
- tsconfig.json: TypeScript configuration
Includes offline response caching for resilience
2026-03-03 07:36:12 -08:00
saravanakumardb1
c720f1c8de
feat(packages): Phase 3.1 - Create @bytelyst/broadcast-client package
...
- package.json: ESM module config
- src/index.ts: Broadcast client factory with types, hooks
- tsconfig.json: TypeScript configuration
2026-03-03 07:34:39 -08:00
saravanakumardb1
1832ef48a3
docs(broadcasts,surveys): Mark Phase 2 as COMPLETED in roadmap
2026-03-03 07:31:06 -08:00
saravanakumardb1
bd8c6fde43
feat(admin): Phase 2.3 - Survey builder UI
...
- surveys/[id]/page.tsx: Full survey builder with 9 question types
- Questions tab: Add/edit/remove questions with drag handles
- 9 question types: single/multiple choice, rating, NPS, text, dropdown, scale, ranking
- Dynamic options management for choice-based questions
- Settings tab: Display trigger selection, incentive configuration
- Targeting tab: Platform and segment targeting
2026-03-03 07:30:10 -08:00
saravanakumardb1
dbc9ffd328
feat(admin): Phase 2.2 - Broadcast create/edit wizard
2026-03-03 07:28:56 -08:00
saravanakumardb1
ee3b23711f
feat(admin): Phase 2.1 - Broadcast and Survey list pages
...
- broadcasts/page.tsx: List, filter, delete, send, pause, clone actions
- surveys/page.tsx: List, filter, delete, pause, duplicate, analytics, CSV export
- api.ts: Add all broadcast and survey API functions with types
- sidebar-nav.tsx: Add navigation items with Megaphone and ClipboardList icons
2026-03-03 07:21:37 -08:00
saravanakumardb1
cc9129bc60
docs(feedback): mark all TODOs as completed in roadmap
2026-03-03 07:20:56 -08:00
saravanakumardb1
88fda8cf39
test(feedback): implement TODO-5 and TODO-7 - GDPR test and Azure lifecycle docs
...
- Add gdpr.test.ts with GDPR deletion compliance tests
- Add Azure lifecycle policy configuration section to roadmap
- Include Azure Portal, CLI, and Terraform examples
- Document 90-day TTL for GDPR compliance
2026-03-03 07:20:23 -08:00
saravanakumardb1
85d9356a19
feat(platform-sdk): implement TODO-2 and TODO-3 - Swift and Kotlin feedback clients
...
- Add BLFeedbackClient.swift with submitFeedback(), captureAndSubmit(), captureScreen()
- Add BLFeedbackClient.kt with FeedbackParams, DeviceContext, screenshot capture
- Include implementation instructions and error handling
- Mirror API structure between Swift and Kotlin SDKs
2026-03-03 07:18:45 -08:00
saravanakumardb1
698e114b65
docs(feedback): update roadmap with TODO completions
2026-03-03 07:12:04 -08:00
saravanakumardb1
bd19d444f1
test(feedback-client): implement TODO-4 - integration tests for screenshot flow
...
- Add integration tests for full SAS flow (generate SAS → upload → submit)
- Add test for feedback without screenshot
- Add upload progress tracking test
- Add unit tests for content type validation and size limits
- Skip integration tests if blob storage not configured
2026-03-03 07:11:40 -08:00
saravanakumardb1
921f21164d
feat(feedback-client): implement TODO-1 - web screenshot capture
...
- Add ScreenshotOptions and CaptureResult interfaces
- Implement captureScreenshot() with getDisplayMedia for screen capture
- Implement captureElement() placeholder for DOM element capture
- Implement captureAndSubmit() flow
- Fix getDisplayMedia constraints (remove cursor property)
2026-03-03 07:11:07 -08:00
saravanakumardb1
76569417f1
docs(feedback): update roadmap with second review bug fixes
2026-03-03 07:04:32 -08:00
saravanakumardb1
8614e3f0f1
fix(feedback): address 6 bugs/gaps from systematic review
...
- Fix search icon positioning (add relative container)
- Fix toast variant from 'destructive' to 'error'
- Remove non-existent screenshotUrl fields from delete endpoint
- Fix misleading blob path comment (blob stays at initial location)
- Add download screenshot function and button
- Add pointer-events-none to search icon
2026-03-03 07:03:27 -08:00
saravanakumardb1
439610cbe5
feat(admin-dashboard): add User Feedback link to sidebar navigation
2026-03-03 07:01:03 -08:00
saravanakumardb1
4839ac2799
docs(feedback): update roadmap with Phase 2.1 and Phase 3 completion status
2026-03-03 07:00:18 -08:00
saravanakumardb1
d2c8931ad0
feat(admin-dashboard): Phase 3.1-3.3 - add feedback management UI with screenshot support
...
- Add feedback list page with search, type/status/screenshot filters
- Add thumbnail indicator for feedback with screenshots
- Add detail dialog with device context panel
- Add screenshot lightbox viewer
- Add delete screenshot button for GDPR compliance
2026-03-03 06:59:27 -08:00
saravanakumardb1
b261cda1cd
feat(feedback-client): Phase 2.1 - create @bytelyst/feedback-client TypeScript SDK
2026-03-03 00:03:03 -08:00
saravanakumardb1
3ded5ad751
fix(diagnostics,test): fix flaky test and test configuration
...
- Add DB_PROVIDER=memory to vitest config for diagnostics tests
- Fix flaky timestamp comparison in 'should update a session' test
- Add 10ms delay between create and update
- Use toBeGreaterThanOrEqual instead of strict inequality
- All 17 diagnostics tests now pass
2026-03-03 00:01:20 -08:00
saravanakumardb1
fdaffdb13c
docs(feedback): fix 8 bugs/gaps identified in systematic review
...
- Fix inconsistent screenshotUrl fields (removed, SAS generated on-demand)
- Fix blob path pattern to match feedbackScreenshots container
- Clarify flow: direct upload to final container (no temp/move)
- Add rate limiting specs to endpoint table
- Clarify access control: users submit but cannot view (security)
- Remove sas.ts from appendix (not created)
- Align size limits to 5MB consistently
- Add missing screenshotContentType and screenshotSizeBytes
2026-03-03 00:00:14 -08:00
saravanakumardb1
0996534fb4
docs(feedback): update roadmap with Phase 1 completion and commit links
2026-03-02 23:57:48 -08:00
saravanakumardb1
6f9b799cc4
fix(jobs): add missing 'warn' method to logger type in runner.ts
...
The JobContext type requires log.warn but runner.ts loggers only
defined info/error. This caused TypeScript errors when passing log
to job handlers.
- Add warn: (...a: unknown[]) => void to startRunner log param
- Add warn: (...a: unknown[]) => void to tick log param
- Add warn: (...a: unknown[]) => void to executeJob log param
2026-03-02 23:57:21 -08:00
saravanakumardb1
e712968d3d
test(feedback): Phase 1.5 - add screenshot and deviceContext schema tests
2026-03-02 23:56:59 -08:00
saravanakumardb1
ecb9f67c99
fix(broadcasts): Fix percentage rollout bucketing logic
...
- Use userId only as seed instead of userId + percentage
- Prevents users from being re-bucketed when rollout % increases
- Ensures deterministic assignment for phased rollouts
2026-03-02 23:56:42 -08:00
saravanakumardb1
e4681fbbb2
fix(broadcasts): Fix metrics increment bug in updateBroadcastMetrics
...
- Change from merge pattern to explicit increment pattern
- Each metric field is properly incremented instead of overwritten
- Prevents race condition data loss
2026-03-02 23:56:09 -08:00
saravanakumardb1
cfbaa92539
feat(feedback): Phase 1.3 - add SAS endpoint and screenshot view/delete routes
2026-03-02 23:55:47 -08:00
saravanakumardb1
b5fb2b683b
fix(surveys): Create missing surveys module
...
- types.ts: Survey, Question, SurveyResponse, conditional logic, validation
- repository.ts: CRUD + analytics + CSV export with proper type casting
- routes.ts: Admin CRUD + public endpoints (13 routes)
Fixes missing module from Phase 1 implementation
2026-03-02 23:54:59 -08:00
saravanakumardb1
d876bb0626
feat(blob): add feedbackScreenshots container for user feedback attachments
2026-03-02 23:54:38 -08:00
saravanakumardb1
8d2ba9c1cc
feat(feedback): Phase 1.2 - extend repository with screenshot support and blob path generation
2026-03-02 23:52:57 -08:00
saravanakumardb1
acfbd7c9d7
feat(feedback): Phase 1.1 - add screenshot fields and deviceContext to FeedbackDoc
2026-03-02 23:52:18 -08:00
saravanakumardb1
9fff880d26
docs(broadcasts,surveys): Update roadmap with Phase 1 completion status
...
- Mark Phase 1 as COMPLETED with commit link 1b11db3
- Update task status table with checkmarks
2026-03-02 23:51:37 -08:00
saravanakumardb1
1b11db3f6f
feat(broadcasts,surveys): Phase 1 complete - backend modules
...
- broadcasts/types.ts: Broadcast, BroadcastTarget, BroadcastMetrics, InAppMessage
- broadcasts/repository.ts: CRUD + delivery tracking + read receipts
- broadcasts/targeting.ts: evaluateTarget(), semver, FNV-1a hash
- broadcasts/routes.ts: Admin CRUD + public endpoints (14 routes)
- surveys/types.ts: Survey, Question, SurveyResponse, conditional logic
- surveys/repository.ts: CRUD + analytics + CSV export
- surveys/routes.ts: Admin CRUD + public endpoints (13 routes)
- cosmos-init.ts: 7 new containers with TTL policies
- server.ts: Register broadcastRoutes + surveyRoutes
Implements Phase 1 of platform_BROADCAST_SURVEY_ROADMAP.md
2026-03-02 23:51:23 -08:00
saravanakumardb1
6a23a02cd4
fix(diagnostics): BUG-4, BUG-5, BUG-7, BUG-8 - race condition, transactions, test isolation, auth validation
...
- BUG-4: Add optimistic concurrency control with retry to updateSessionStats
- BUG-5: Document transaction limitations in batch operations
- BUG-7: Fix test isolation with unique productIds per test run
- BUG-8: Add session ownership validation to ingest endpoints
2026-03-02 23:47:14 -08:00
saravanakumardb1
4ffb28d8d2
fix(diagnostics): BUG-3 - add authentication check to /diagnostics/config endpoint
2026-03-02 23:45:36 -08:00
saravanakumardb1
4cb8b499af
fix(diagnostics): BUG-1, BUG-2 - DRY violation - centralize generateId and buildPk in types.ts
2026-03-02 23:43:11 -08:00
saravanakumardb1
890a558c31
docs(diagnostics): update roadmap with Phase 1 completion status and commit links
2026-03-02 23:40:02 -08:00
saravanakumardb1
fb71981e53
test(diagnostics): add diagnostics.test.ts with 14+ tests for Phase 1
2026-03-02 23:38:21 -08:00
saravanakumardb1
d444a8dfea
feat(diagnostics): wire routes into server.ts
2026-03-02 23:37:34 -08:00
saravanakumardb1
a66a689d7d
feat(diagnostics): Phase 1 complete - types, repository, routes
...
- types.ts: Session, Trace, Log, Screenshot schemas with Zod validation
- repository.ts: CRUD operations with composite partition keys
- routes.ts: REST endpoints for session management and data ingest
TODOs for Phase 2:
- TODO-1: Event bus integration
- TODO-2: PII redaction implementation
- TODO-6: PII redaction in log ingest
- TODO-7: Fatal log alerting
- TODO-8: Blob SAS token generation
2026-03-02 23:36:59 -08:00
saravanakumardb1
f272a44bbe
feat(diagnostics): add repository.ts with session, trace, log, screenshot CRUD
2026-03-02 23:34:35 -08:00