saravanakumardb1
7aed0ebec3
feat(platform): marketplace routes — 30 Fastify endpoints (catalog, consumer, author, admin)
2026-03-01 08:04:39 -08:00
saravanakumardb1
761a0c17f4
feat(platform): marketplace module — types, repository, 52 tests passing
2026-03-01 08:01:45 -08:00
saravanakumardb1
383a8dad32
feat(peak-sessions): add clientId for idempotent sync, findByClientId repo method, explicit 204 returns
2026-03-01 07:55:02 -08:00
saravanakumardb1
137266a284
fix(docs): review pass on mobile SDK best practices — correct 6 bugs found via codebase verification
2026-03-01 07:45:39 -08:00
saravanakumardb1
d10b898ba5
feat(peak-routes): add PeakPulse track point storage module — types, repository, routes, 10 tests
2026-03-01 07:40:19 -08:00
saravanakumardb1
b20e1c6165
feat(peak-sessions): add PeakPulse session sync module — types, repository, routes, 20 tests
2026-03-01 07:12:28 -08:00
saravanakumardb1
dcabe46de2
feat(jarvis): add jarvis-agents, jarvis-sessions, jarvis-memory modules (63 tests)
2026-03-01 07:09:12 -08:00
saravanakumardb1
a0157211f5
feat(design-tokens): add JarvisJr product color palette to bytelyst.tokens.json
2026-03-01 06:49:47 -08:00
saravanakumardb1
8b36cd9e4d
fix(marketplace): review pass — add ReportDoc type, fix table formatting, renumber sections, add cost estimates
2026-03-01 06:25:57 -08:00
saravanakumardb1
983e84e6de
feat(marketplace): generic marketplace module design document
2026-03-01 06:05:59 -08:00
saravanakumardb1
ae55616444
fix(swift-sdk): match date decoding strategy in BLAuditLogger
...
saveEvents used .iso8601 encoding but loadEvents used the default
decoder (.deferredToDate). ISO8601 date strings could not be decoded
back, causing loadEvents() to return [] after the first log — breaking
event rotation and losing all previous audit entries.
2026-02-28 22:55:00 -08:00
saravanakumardb1
b4be39888b
fix(swift-sdk): remove productId prefix from BLAuthClient keychain keys
...
BLAuthClient stored tokens as '{productId}_access_token' but all app
wrappers use KeychainHelper.read(key: "access_token") — the bare key.
This caused a critical mismatch: after login, BlobService/LicenseService
could not find the token, and token migration from UserDefaults was invisible
to BLAuthClient.isAuthenticated.
The Keychain service name (bundleId) already namespaces per product,
making the productId prefix redundant. Now uses bare 'access_token' and
'refresh_token' keys matching existing app conventions.
2026-02-28 22:54:01 -08:00
saravanakumardb1
77d6ff328f
fix(swift-sdk): URL-encode license key + add request tracing to kill switch
...
BLLicenseClient.checkStatus: percent-encode key before inserting into URL
path to prevent malformed URLs with special characters.
BLKillSwitchClient: add X-Product-Id and X-Request-Id headers for
consistency with BLPlatformClient request tracing pattern.
2026-02-28 22:52:00 -08:00
saravanakumardb1
b068e4bc1a
fix(swift-sdk): guard BLBiometricAuth and BLCrashReporter for watchOS compatibility
...
BLBiometricAuth imports LocalAuthentication (unavailable on watchOS).
BLCrashReporter imports MetricKit (unavailable on watchOS).
Package.swift declares watchOS 10+ as a platform target.
Fix: wrap both files in #if canImport() guards.
BLCrashReport model struct stays outside the guard (data-only, all platforms).
2026-02-28 22:51:26 -08:00
saravanakumardb1
23d14f33ea
feat(swift-sdk): add 6 new components — BLBlobClient, BLKillSwitchClient, BLLicenseClient, BLBiometricAuth, BLCrashReporter, BLAuditLogger
...
New SDK components extracted from product apps:
- BLBlobClient — Azure Blob Storage upload via SAS tokens (from LysnrAI BlobService)
- BLKillSwitchClient — Kill switch check from platform-service (from LysnrAI KillSwitchService)
- BLLicenseClient — License key activation + status (from LysnrAI LicenseService)
- BLBiometricAuth — Face ID / Touch ID wrapper (from LysnrAI BiometricAuth)
- BLCrashReporter — MetricKit crash reporting (from ChronoMind CrashReporter)
- BLAuditLogger — Local rotating JSON audit log (from LysnrAI AuditLogger)
SDK now has 13 source files. Updated README with full component table
and migration status (3 apps fully migrated, 18 wrappers total).
2026-02-28 22:38:43 -08:00
saravanakumardb1
78000cdf6a
feat(swift-sdk): add ByteLystPlatformSDK — shared Swift package for all iOS/watchOS/macOS apps
...
Extracts duplicated platform integration code from ChronoMind + LysnrAI into a
single Swift Package. Eliminates ~1,100+ lines of copied code per product app.
Components:
- BLPlatformConfig — product-specific configuration (productId, baseURL, bundleId)
- BLPlatformClient — generic HTTP client with auth injection, x-request-id, timeout
- BLKeychain — Keychain CRUD for secure token storage
- BLTelemetryClient — telemetry queue + batch flush (matches @bytelyst/telemetry-client)
- BLAuthClient — full auth operations (matches @bytelyst/auth-client)
- BLFeatureFlagClient — feature flag polling from platform-service /flags/poll
- BLSyncEngine — generic offline-first sync with delta pull + batch push
Platforms: iOS 17+, watchOS 10+, macOS 14+
2026-02-28 22:12:20 -08:00
saravanakumardb1
d15f19441f
docs: add platform acceleration implementation roadmap with phased task lists
2026-02-28 21:37:19 -08:00
saravanakumardb1
2b7e4819e8
docs: add platform acceleration ideas for sub-day MVP onboarding
2026-02-28 21:01:32 -08:00
saravanakumardb1
ce71c61079
docs: rename BEST_PRACTICES/README.md to PLATFORM_PLAYBOOK.md
2026-02-28 20:57:03 -08:00
saravanakumardb1
8f737adc75
docs: add best practices and new product playbook
2026-02-28 20:50:12 -08:00
saravanakumardb1
022720bf6e
feat(admin-dashboard): add edge middleware for API route auth gating
2026-02-28 20:25:42 -08:00
saravanakumardb1
5663ef568a
docs: add agent prompts sync guide and workspace anti-patterns
2026-02-28 20:24:24 -08:00
saravanakumardb1
c3885059cf
feat(dashboards): add error and not-found pages for admin and tracker dashboards
2026-02-28 20:24:15 -08:00
saravanakumardb1
33160a5daa
feat(platform-service): add brains, daily-briefs, reflections, streaks modules
2026-02-28 20:24:06 -08:00
saravanakumardb1
4863b62055
feat(fastify-core): deny CORS by default when origin unset, add graceful shutdown handlers
2026-02-28 20:23:58 -08:00
saravanakumardb1
04f4a5f81e
feat(api-client): add timeout, retry with exponential backoff for idempotent requests
2026-02-28 20:23:49 -08:00
saravanakumardb1
a97b730a89
feat(flags): seed default feature flags for all products on startup
2026-02-28 19:33:22 -08:00
saravanakumardb1
711621e3d9
fix(telemetry): add 'native' to ChannelEnum for mobile app clients
2026-02-28 19:26:52 -08:00
saravanakumardb1
1b2a5d5483
fix(platform-service): register 13 missing MindLyst Cosmos containers
...
Add containers used by MindLyst web API routes to platform-service
cosmos-init so the shared database has a single authoritative registry:
share_cards, notification_log, analytics_events, brain_packs,
chat_sessions, ab_experiments, waitlist_entries, email_captures,
engagement_campaigns, context_triggers, monitoring_reports,
nudge_state, triage_retries
Note: 'referrals' is intentionally skipped — the growth module already
registers it with /id partition key, but MindLyst uses /userId. This
partition key mismatch requires a separate data migration to reconcile.
All 1141 platform-service tests pass.
2026-02-28 19:23:04 -08:00
saravanakumardb1
ac106ed917
feat(tracker): add product switcher — filter items by any product
...
- product-config.ts: add getRequestProductId(req) + KNOWN_PRODUCTS
- product-context.tsx: client-side product selection context
- product-switcher.tsx: native select dropdown component
- tracker-client.ts: inject x-product-id header on all API calls
- proxy route: forward x-product-id header to platform-service
- providers.tsx: wrap with ProductProvider
- dashboard/layout.tsx: render ProductSwitcher in top nav
2026-02-28 14:15:18 -08:00
saravanakumardb1
ed7fa3f9a4
feat(admin): add product switcher — filter all data by any product
...
- product-config.ts: add getRequestProductId(req) helper + KNOWN_PRODUCTS list
- product-context.tsx: new React context storing selected productId in localStorage
- product-switcher.tsx: dropdown component with icons for all 4 products
- api.ts: pass x-product-id header from localStorage on all API calls
- providers.tsx: wrap with ProductProvider
- sidebar-nav.tsx: render ProductSwitcher between logo and nav
- repositories/users.ts + tokens.ts: accept optional productId parameter
- 8 API routes updated: users, auth/login, auth/forgot-password, seed,
settings/plans, themes/active, analytics/retention, analytics/revenue
2026-02-28 14:12:15 -08:00
saravanakumardb1
ba2641c552
feat(platform-service): add push notification triggers module (6 endpoints, 22 tests)
...
- 7 trigger types: streak_risk, fast_milestone, stage_transition, social_invite, weekly_digest, achievement_unlocked, refeeding_reminder
- Built-in templates with variable interpolation
- CRUD + batch create + pending trigger query + status updates + stats
- push_triggers container (TTL 30d)
- 1,112 total platform-service tests passing
2026-02-28 14:10:11 -08:00
saravanakumardb1
20e0ef2201
feat(platform-service): add P2 Product Intelligence modules (5 modules, 61 tests)
...
- experiments: A/B testing with FNV-1a deterministic variant assignment (7 endpoints, 15 tests)
- analytics: metric ingest + daily/weekly/monthly rollup queries (3 endpoints, 14 tests)
- feedback: in-app bug/feature/praise submission + admin triage (6 endpoints, 14 tests)
- impersonation: admin user impersonation with audit trail (4 endpoints, 6 tests)
- changelog: public product changelog with admin CRUD (6 endpoints, 12 tests)
- 6 new Cosmos containers added to cosmos-init.ts
- All 5 route modules registered in server.ts
- 1,090 total platform-service tests passing
2026-02-28 14:04:07 -08:00
saravanakumardb1
c7c36e74b6
docs: add portable Docker/CI build instructions (prep-consumer.sh)
2026-02-28 13:17:03 -08:00
saravanakumardb1
44f36b0f1d
chore: add learning_ai_clock + learning_ai_fastgap to all repo workflows (backup, push, sync)
2026-02-28 12:54:56 -08:00
saravanakumardb1
7d5ed86724
feat: add universal prep-consumer.sh for portable Docker/CI builds + fix tsc errors
2026-02-28 12:32:11 -08:00
saravanakumardb1
7210464019
fix(tracker-web): replace broken webpack alias with transpilePackages — build now succeeds
...
fix(config): mock Azure SDK in keyvault tests — eliminates timeouts, 26/26 pass in <1s
2026-02-28 12:11:37 -08:00
saravanakumardb1
062d87a93a
test(react-auth): add tests for updateUser, onInit, and onInit-null-fallback
2026-02-28 11:48:48 -08:00
saravanakumardb1
1925370604
fix(react-auth): add updateUser to AuthContextValue + provider for local user state mutation
2026-02-28 11:38:27 -08:00
saravanakumardb1
da165a589a
refactor(dashboards): wire @bytelyst/telemetry-client into admin-web + tracker-web, add onInit + baseUrl to react-auth
2026-02-28 11:27:57 -08:00
saravanakumardb1
b400c76c0a
feat(packages): add @bytelyst/auth-client + telemetry-client, extend react-auth lifecycle
...
- @bytelyst/auth-client: browser/RN-safe auth API wrapper (17 tests)
- @bytelyst/telemetry-client: shared telemetry with configurable transport (11 tests)
- @bytelyst/react-auth: add register, forgotPw, changePw, deleteAccount, token refresh (10 tests)
- eslint.config: add missing browser globals
2026-02-28 04:49:46 -08:00
saravanakumardb1
4e94ecd721
feat(auth): add forgot-password/change-password API routes to admin dashboard + wire email delivery
...
Admin dashboard:
- platform-client.ts: Added forgotPasswordViaService, changePasswordViaService, deleteAccountViaService
- app/api/auth/forgot-password/route.ts: New API route proxying to platform-service
- app/api/auth/change-password/route.ts: New API route for authenticated password change
Platform-service (from prior session):
- auth/routes.ts: Added /auth/change-password and DELETE /auth/account endpoints, wired email verification on register
- auth/types.ts: Added ChangePasswordSchema and DeleteAccountSchema
- delivery/subscribers.ts: Updated password reset subscriber, added email verification subscriber
- delivery/channels/email.ts: Added ByteLyst email API provider (sendViaBytelyst)
- delivery/types.ts: Added 'bytelyst' provider
- events/types.ts: Added resetToken/displayName to user.password_reset, added user.email_verification_requested event
2026-02-28 04:17:04 -08:00
saravanakumardb1
e3e332cee6
docs: update documentation
2026-02-28 03:28:48 -08:00
saravanakumardb1
e6eee35544
docs: fix stale references to consolidated services and migrated dashboards
2026-02-28 03:06:44 -08:00
saravanakumardb1
27f271d983
feat(platform): add P1 operational maturity modules — sessions, maintenance, exports, IP rules
...
- modules/sessions: device session tracking, revoke one/all, admin force-revoke (9 tests)
- modules/maintenance: 4 modes (off/read_only/maintenance/emergency), bypass roles/IPs, scheduled windows (14 tests)
- modules/exports: GDPR data export jobs for users/audit/telemetry/usage/subscriptions/licenses (10 tests)
- modules/ip-rules: IP allow/deny with CIDR matching, temporary blocks with expiry (10 tests)
- cosmos-init: 4 new containers (sessions, ip_rules, export_jobs, maintenance_windows)
- 1029 platform-service tests passing across 74 test files
2026-02-28 02:47:22 -08:00
saravanakumardb1
069d1ffda9
docs: add 19 reusable AI coding agent skills + sessions module scaffold
2026-02-28 02:41:22 -08:00
saravanakumardb1
662d417267
feat(platform): add email delivery module, wire event bus into auth, update roadmap
...
- modules/delivery: 8 email templates, renderer, SendGrid/Postmark/console adapters, dispatcher, delivery log, 21 tests
- modules/delivery/subscribers: event bus listeners for user.created, password_reset, email_verified
- auth/routes: emit bus events on register, forgot-password, verify-email (fire-and-forget)
- cosmos-init: delivery_log container (pk /pk, 90d TTL)
- roadmap: updated inventory (30 modules, 14 packages, 988 tests), marked P0 items complete
- 988 platform-service + 14 events = 1002 total tests passing
2026-02-28 02:36:58 -08:00
saravanakumardb1
772f428967
feat(platform): add P0 foundational modules — event bus, scheduled jobs, password reset, email verification, status page
2026-02-28 02:29:08 -08:00
saravanakumardb1
0e468f74ea
docs: update AGENTS.md — add dashboards/ to monorepo layout
2026-02-28 02:19:50 -08:00
saravanakumardb1
2d54795c30
feat(dashboards): migrate admin + tracker dashboards to common-plat as product-agnostic
...
- Copy admin-dashboard-web → dashboards/admin-web
- Copy tracker-dashboard-web → dashboards/tracker-web
- Update pnpm-workspace.yaml to include dashboards/*
- Replace file: refs with workspace:* for @bytelyst/* packages
- Replace all hardcoded LysnrAI/lysnn.com branding with generic platform refs
- Make telemetry use NEXT_PUBLIC_PRODUCT_ID / PRODUCT_ID env vars
- Update mock credentials, seed data, invitation codes, placeholders
- Update READMEs, e2e tests, unit tests for product-agnostic content
- Both dashboards pass tsc --noEmit clean
2026-02-28 02:17:35 -08:00