Comprehensive review of the v3.0 cross-repo UX roadmap. The diff grows
the doc from 370 to 591 lines (+60%); core structure preserved.
──────────────────────────────────────────────────────────────────
Bug fixes & corrections (no regressions)
──────────────────────────────────────────────────────────────────
- Product-web inventory: 11 → 15+ (was missing mindlyst-native/web,
talk2obsidian/web, productivity-web, sidecar-dashboard-web,
mac-tooling/dashboard, devops-tools/dashboard/web,
agent-monitoring-fx, local-llms/dashboard, efforise/client,
admin-web, tracker-web). New total: **20 web apps**.
- Net-new package count: 16 → 26 (the brand-* row was 3 packages,
not 1; plus Wave 13 adds 8 more)
- §4 heading: "five waves" → "six waves" (Wave 13 added)
- §10 metrics targets refreshed to reflect 20-app scope
- §11 hygiene bumped to v3.1 with full changelog
──────────────────────────────────────────────────────────────────
Major content amendments — "futurism layer"
──────────────────────────────────────────────────────────────────
NEW §3.4 On-device & privacy-first AI (8 surfaces)
• WebLLM / transformers.js for client-side LLM inference
• Privacy-mode toggle + GPC header honouring
• Explainable refusal, cost transparency, confidence transparency
• Provenance trails, telemetry opt-out, "Why did the AI say this?"
debug overlay
NEW §3.5 Real-time CRDT collaboration (6 patterns)
• Yjs canonical + Automerge adapter
• Liveblocks-grade presence (PresenceAvatars, TypingIndicator,
LiveCursor)
• Co-edit indicators, conflict-free sync, selective sharing,
comment threads anchored to selections
NEW §3.6 Spatial / visionOS-inspired surfaces (8 primitives)
• SurfaceFloat (multi-stop shadow + backdrop-blur)
• Parallax (scroll-driven), Spotlight (cursor-follow),
Magnetic buttons, TiltGallery, glass-with-depth modals,
MeshBackground (OKLCH ambient gradients)
NEW §3.7 Performance & sustainability budgets
• LCP ≤ 2.5s p75 · INP ≤ 200ms p75 · CLS ≤ 0.1 p75
• First-page JS ≤ 100 KB gzip · CO₂ ≤ 0.5g/view
• content-visibility, RSC for static surfaces, Suspense islands,
route prefetch, AVIF/WebP negotiation
NEW §3.8 Anti-patterns we will NEVER ship (10 entries)
• Dark patterns, auto-playing media, prefers-reduced-motion
ignored, <div onClick>, hard-coded colours, layout-shifting
skeletons, polling instead of streaming, notification spam,
modal stack > 2, generic 'Something went wrong'.
NEW Wave 13 — Futurism layer (~9 pw, 7 packages):
13.1 @bytelyst/on-device-ai (WebLLM + transformers.js)
13.2 @bytelyst/collab (Yjs CRDT + Automerge adapter)
13.3 ai-ui@0.5 trust surfaces (CostMeter, ConfidenceTag,
RefusalCard, ProvenanceDrawer,
DebugOverlay, PrivacyBadge)
13.4 motion@0.2 spatial (Parallax, Spotlight, Magnetic,
MeshBackground, TiltGallery)
13.5 @bytelyst/generative-theme ("describe your brand" → tokens)
13.6 @bytelyst/customizable-workspace
13.7 @bytelyst/media-ui (ImageGenStream, AudioWaveform,
PdfPreview, VideoPlayer)
NEW §6.1 RSC vs client guidance — per-package table for
React Server Component safety (design-tokens, ui-stateless,
legal-ui, settings-ui rail are RSC-safe; everything else is
client-only or hybrid)
NEW §6.2 Web Components interop — Lit-wrapped <bl-button>,
<bl-card> etc. for non-React consumers (efforise/Vite,
talk2obsidian/Obsidian plugin, local-llms dashboard)
NEW §6.3 Adjacent token packages — email-tokens (MJML),
audio-tokens (notification sounds), motion-tokens
(Lottie/Rive interpolation curves)
NEW §9.1 Demo-first showcase list — 8 customer-magnet prototypes
to lead with: MeshBackground+Spotlight landing, on-device-AI
chat, CostMeter+ConfidenceTag dashboard, CRDT multi-user
notes, ThemeStudio, customizable workspace, ImageGenStream+
AudioWaveform, Shift-click DebugOverlay.
──────────────────────────────────────────────────────────────────
Risks + metrics expanded
──────────────────────────────────────────────────────────────────
- 6 new risk-matrix rows (WebGPU fragmentation, CRDT memory
bloat, generative-theme palette accessibility, media-ui
bundle weight, workspace layout collisions, WebLLM
model-download UX)
- §10 success metrics: added Core Web Vital p75 targets per
product, INP/LCP/CLS gates, privacy-mode + CRDT + on-device
AI + CostMeter adoption KPIs, dark-pattern audit, Web
Components export, create-app scaffolding
──────────────────────────────────────────────────────────────────
Coverage now complete
──────────────────────────────────────────────────────────────────
Per-product matrix expanded from 11 to 20 web apps and gains a
"Wave 13 futurism hook" column. Pilots:
• notes/web + tracker-web → CRDT multi-user editing
• localmemgpt/web + local-llms dashboard → on-device AI
• mindlyst/web → ImageGenStream + CRDT memory canvas
• flowmonk + peakpulse + mac-tooling → customizable workspace
• jarvisjr + trails + sidecar + devops-tools + agent-monitoring
→ CostMeter + ConfidenceTag + ProvenanceDrawer
• clock/web → MeshBackground + Spotlight landing hero
Mirror in copilot/learning_ai_uxui_web follows in a paired commit.
|
||
|---|---|---|
| __LOCAL_LLMs | ||
| .changeset | ||
| .gitea/workflows | ||
| .github | ||
| .husky | ||
| .windsurf/workflows | ||
| AI.dev | ||
| dashboards | ||
| docs | ||
| e2e | ||
| packages | ||
| products | ||
| reports | ||
| scripts | ||
| services | ||
| .aider.conf.yml | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.ecosystem.example | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| .npmrc | ||
| .nvmrc | ||
| .prettierrc | ||
| .size-limit.cjs | ||
| AGENTS.md | ||
| docker-compose.ecosystem.yml | ||
| docker-compose.yml | ||
| eslint.config.js | ||
| MANUAL_CI.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| quick-check.sh | ||
| README.md | ||
| REPO_CONTEXT.md | ||
| tsconfig.base.json | ||
| vitest.config.ts | ||
ByteLyst Common Platform
Shared packages and microservices for ByteLyst ecosystem products.
⚠️ GitHub Actions Temporarily Disabled
CI/CD is currently disabled due to billing issues. Please run manual quality checks before merging:
- See MANUAL_CI.md for instructions
- Use
.windsurf/workflows/production-readiness.mdfor comprehensive checks
Quick Start
# Install dependencies
pnpm install
# Build all packages + services
pnpm build
# Quick quality check (5 min) - run before pushing!
./quick-check.sh
# Run all tests
pnpm test
# Type-check all packages
pnpm typecheck
# Run a specific service in dev mode
pnpm --filter @lysnrai/platform-service dev
Prototype Deployment
For a single-host prototype, use Docker Compose with the repo root docker-compose.yml.
cp .env.example .env
./scripts/prototype-up.sh
pnpm prototype:self-test
pnpm docker:clean
See docs/PROTOTYPE_DEPLOYMENT.md for the required environment variables and day-to-day commands.
The prototype stack now includes a local Cosmos DB Emulator container, so the default .env.example values are wired for single-VM Docker use.
Blob uploads are backed by local Azurite, prototype email delivery is backed by Mailpit, and the platform exposes prototype diagnostics at /api/health/dependencies, /api/self-test, and /api/self-test.json.
Current Capability Surface
- Shared packages — 36
@bytelyst/*packages covering auth, config, API clients, storage, sync, telemetry, diagnostics, design tokens, SDK support, and testing. - Services —
platform-service,extraction-service,mcp-server, andmonitoring. - Dashboards —
admin-web,tracker-web, andux-lab. - MCP/A2A —
services/mcp-server/exposes tool routing, platform operator tools, extraction helpers, dev tools, product namespaces, and A2A orchestration pipelines.
Ecosystem Docs
Cross-product strategy and shared-contract documentation now lives under docs/ecosystem/.
Repository Structure
learning_ai_common_plat/
├── packages/ # 36 shared libraries (@bytelyst/*)
│ ├── api-client/
│ ├── auth/
│ ├── auth-client/
│ ├── blob/ + blob-client/
│ ├── broadcast-client/ + survey-client/
│ ├── config/ + cosmos/
│ ├── dashboard-components/
│ ├── design-tokens/
│ ├── diagnostics-client/ + swift-diagnostics/
│ ├── events/ + fastify-core/
│ ├── extraction/ + llm/ + speech/
│ ├── feature-flag-client/ + feedback-client/ + kill-switch-client/
│ ├── kotlin-platform-sdk/ + swift-platform-sdk/ + react-native-platform-sdk/
│ ├── logger/ + monitoring/ + testing/
│ ├── offline-queue/ + platform-client/ + sync/ + telemetry-client/
│ └── datastore/ + storage/ + push/
├── dashboards/ # Product-agnostic and internal web workspaces
│ ├── admin-web/ # Platform admin console (port 3001)
│ ├── tracker-web/ # Issue tracker + public roadmap (port 3003)
│ └── ux-lab/ # Internal UX lab / MCP-assisted ops prototypes
├── services/ # Platform services + tooling servers
│ ├── platform-service/ # Product-agnostic platform API (port 4003)
│ ├── extraction-service/ # LangExtract text extraction + Python sidecar (port 4005)
│ ├── mcp-server/ # MCP tool server + A2A orchestration
│ └── monitoring/ # Loki + Grafana config, health-check
└── docs/ # Architecture docs, roadmap, analysis
Package Families
| Family | Representative Packages | Purpose |
|---|---|---|
| Core platform | @bytelyst/config, @bytelyst/cosmos, @bytelyst/errors, @bytelyst/logger, @bytelyst/testing |
Shared infrastructure for all services and dashboards |
| Auth & app clients | @bytelyst/auth, @bytelyst/auth-client, @bytelyst/api-client, @bytelyst/platform-client, @bytelyst/react-auth |
Identity, auth flows, typed service clients |
| Diagnostics & telemetry | @bytelyst/diagnostics-client, @bytelyst/telemetry-client, @bytelyst/swift-diagnostics |
Client diagnostics, event batching, crash/error capture |
| Storage & sync | @bytelyst/blob, @bytelyst/blob-client, @bytelyst/datastore, @bytelyst/storage, @bytelyst/sync, @bytelyst/offline-queue |
Blob, local persistence, sync orchestration |
| Product experience | @bytelyst/feature-flag-client, @bytelyst/feedback-client, @bytelyst/broadcast-client, @bytelyst/survey-client, @bytelyst/kill-switch-client |
Runtime platform features for product apps |
| AI & extraction | @bytelyst/extraction, @bytelyst/llm, @bytelyst/speech |
Extraction tasks, LLM utilities, speech integration |
| UI & design | @bytelyst/design-tokens, @bytelyst/dashboard-components |
Shared tokens and dashboard UI building blocks |
| Native SDKs | @bytelyst/swift-platform-sdk, @bytelyst/kotlin-platform-sdk, @bytelyst/react-native-platform-sdk |
Cross-platform mobile/native platform access |
Services and Dashboards
| Surface | Port | Description |
|---|---|---|
platform-service |
4003 | Product-agnostic Fastify platform API: auth, flags, telemetry, diagnostics, jobs, analytics, A/B testing, changelog, webhooks, marketplace, predictive analytics, and more |
extraction-service |
4005 | LangExtract-based extraction service with task library and Python sidecar |
mcp-server |
configurable | MCP server exposing tool execution, platform tools, dev tools, extraction helpers, and A2A orchestration pipelines |
monitoring |
— | Loki, Grafana, and health-check tooling |
admin-web |
3001 | Platform admin console |
tracker-web |
3003 | Tracker / public roadmap dashboard |
ux-lab |
internal | Internal UX lab and ops prototyping workspace |
Note: billing-service (4002), growth-service (4001), and tracker-service (4004) were consolidated into platform-service (Feb 2026).
All services are product-agnostic — every Cosmos document includes a productId field, so a single deployment serves LysnrAI, MindLyst, or any future product.
Consuming Libraries from Product Repos
During development, use file: references in consumer package.json:
// From a Next.js dashboard at repo root (2 levels up):
"@bytelyst/errors": "file:../../learning_ai_common_plat/packages/errors"
// From MindLyst web (3 levels up — inside mindlyst-native/web/):
"@bytelyst/design-tokens": "file:../../../learning_ai_common_plat/packages/design-tokens"
All repos must be cloned side-by-side under the same parent directory.
Portable Builds (Docker / CI)
file: refs break in Docker and CI because the sibling repo isn't available at the expected relative path. Use the tarball prep workflow to make builds self-contained:
# 1. Build all @bytelyst/* packages
pnpm build
# 2. Pack tarballs + rewrite a consumer's package.json
# (run from the consumer repo)
../learning_ai_common_plat/scripts/prep-consumer.sh <target-dir>
# 3. Build (Docker, EAS, CI — no sibling repo access needed)
docker build <target-dir>
# 4. Restore original package.json
../learning_ai_common_plat/scripts/prep-consumer.sh <target-dir> --restore
Each consumer repo has a convenience wrapper: scripts/docker-prep.sh (or scripts/docker-prep-dashboards.sh in LysnrAI).
| Consumer Repo | Wrapper Script | Targets |
|---|---|---|
learning_voice_ai_agent |
scripts/docker-prep-dashboards.sh |
user-dashboard-web |
learning_ai_clock |
scripts/docker-prep.sh |
web |
learning_ai_fastgap |
scripts/docker-prep.sh |
root package.json |
learning_multimodal_memory_agents |
scripts/docker-prep.sh |
mindlyst-native/web |
Dashboards inside this repo (
dashboards/admin-web,dashboards/tracker-web) useworkspace:*refs and do NOT need this workflow — pnpm resolves them automatically.
Infrastructure Lint
Validates all 25 Dockerfiles across the 11 ByteLyst repos using hadolint, and any Helm charts using helm lint + helm template.
# Prerequisites
brew install hadolint helm
# Lint everything
./scripts/lint-infra.sh
# Dockerfiles only / Helm charts only
./scripts/lint-infra.sh --docker
./scripts/lint-infra.sh --helm
# Explicit paths
./scripts/lint-infra.sh path/to/Dockerfile path/to/chart-dir
Suppressed rules (false positives for this codebase): DL3045, DL3018, DL3008, DL3059, SC2155.
Design Tokens
Generate platform-specific token files from the canonical JSON:
cd packages/design-tokens
pnpm generate
Outputs in packages/design-tokens/generated/:
tokens.css— CSS custom properties (--ml-*)tokens.ts— TypeScript constantsMindLystTokens.kt— Kotlin object for KMPMindLystTheme.swift— Swift structs for SwiftUI
Roadmap
See docs/ROADMAP.md for the full phased extraction plan.