Commit Graph

122 Commits

Author SHA1 Message Date
root
d840168d5c revert(docker): revert to docker-prep.sh approach due to workspace complexity
The base image approach is too complex for the current pnpm workspace structure.
Products cannot easily use the base image's workspace because pnpm expects all
workspace packages to be present during install. Reverting to the proven
docker-prep.sh tarball approach for now.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-09 23:35:41 +00:00
root
5253aaf174 fix(docker): install all dependencies in builder stage for build tools
The base image only includes production dependencies, so we need to install
all dependencies (including devDependencies) in the builder stage to have
TypeScript and Next.js available for building.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-09 23:23:37 +00:00
root
cb51cbe671 refactor(docker): use shared base images for @bytelyst/* packages
Update Dockerfiles to use bytelyst-common-base-backend and bytelyst-common-base-web
images instead of installing @bytelyst/* packages via tarballs.

Benefits:
- Smaller final images (~50MB vs ~250MB)
- Faster builds (base image cached)
- Consistent package versions across products
- No need for docker-prep.sh tarball packing

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-09 23:22:59 +00:00
root
ce7e04a158 feat(ux): add UX testing setup guide and common platform integration
- Add UX_TESTING_SETUP_GUIDE.md for ChronoMind
- Create .pnpmfile.cjs for local package resolution
- Update .npmrc to remove repo-level Gitea auth
- Create Primitives.tsx product adapter with ChronoMind-specific status types
- Add ui directory for shared component imports

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-09 22:10:55 +00:00
OpenAI Codex
bfc4670fc3 feat(web): use shared accessibility helpers 2026-05-05 01:21:31 -07:00
OpenAI Codex
d38b9745a4 feat(web): wire settings feedback submission 2026-05-05 00:54:03 -07:00
saravanakumardb1
5dd0a18221 fix(web): add Agent Inbox + Day Planner links to Dashboard navbar with feature flag gates 2026-04-19 00:56:12 -07:00
saravanakumardb1
a9361b44bb fix(web): add feature flag gate to webhooks page for consistency with inbox/planner 2026-04-19 00:54:59 -07:00
saravanakumardb1
38a15c0595 refactor(web): extract shared apiFetch helper, remove secret from webhook client type 2026-04-19 00:54:53 -07:00
saravanakumardb1
333f0e5316 feat(web): Phase D.3 tempo mode engine + 11 tests 2026-04-18 18:13:45 -07:00
saravanakumardb1
2e0ddcfe43 feat(web): Phase C.4 webhook management UI + client 2026-04-18 18:10:58 -07:00
saravanakumardb1
9973c548fc feat(web): Phase B.4 Day Planner web UI + planner API client 2026-04-18 18:07:12 -07:00
saravanakumardb1
23c584f4a8 feat(web): Phase B.3 Agent Inbox web UI + backend API client 2026-04-18 18:05:50 -07:00
saravanakumardb1
698fbc19cc feat(web): TODO-003 accessibility focus trap + ARIA roles in modals 2026-04-18 18:00:00 -07:00
saravanakumardb1
0242ca85ff feat(web): TODO-002 feedback form in settings page via @bytelyst/feedback-client 2026-04-18 17:58:06 -07:00
saravanakumardb1
8bddbec43c feat(web): TODO-001 kill switch maintenance banner + disable timer creation 2026-04-18 17:56:37 -07:00
saravanakumardb1
8ca9e27532 test(ai-context): TODO-009 unit tests for LLM context message generators
Adds 18 new tests covering:

Backend (13 tests in ai-context.test.ts):
- keyword fallback — meeting, doctor, flight, case-insensitive
- generic fallback — no match, minute/hour formatting
- LLM path — flag-gated (off = no fetch), extraction-service success,
  Ollama cascade when extraction returns null, error → keyword fallback,
  short Ollama response rejected, non-200 fallthrough
- prompt construction — includes category, urgency, timeOfDay,
  recentTimerLabels

Web (5 new tests in context-messages.test.ts):
- LLM success path
- keyword fallback when backend returns 500
- keyword fallback when backend throws
- generic fallback when backend fails and no keyword matches
- payload shape — POST /api/context-message with all params

Test counts: backend 240 (was ~227), web 399 (was ~394), all green.
2026-04-17 12:40:10 -07:00
saravanakumardb1
2bf172935b fix(web): align billing-client SubscriptionDoc type with platform schema 2026-04-13 22:57:32 -07:00
saravanakumardb1
9e63418837 fix(cleanup): TODO-011 — wire error boundary to telemetry trackEvent 2026-04-13 14:58:59 -07:00
saravanakumardb1
5dafcc2118 fix(cleanup): TODO-006 — centralize backend URL via getBackendBaseURL() from product-config 2026-04-13 14:58:44 -07:00
saravanakumardb1
8152d508d1 fix(docker): .docker-deps COPY + optional secret + .npmrc.docker simplification
- Dockerfiles: COPY .docker-deps/ for tarball resolution, make secret read optional
- .npmrc.docker: remove scoped registry (tarballs handle all @bytelyst/* resolution)
2026-04-13 14:05:54 -07:00
saravanakumardb1
ed3bc15a4a chore(deps): use wildcard (*) for @bytelyst/* internal packages
All @bytelyst/* packages are internal to the ByteLyst ecosystem and
published to the private Gitea registry. Using "*" eliminates version
bump noise — always resolves to latest available.
2026-04-13 01:05:40 -07:00
saravanakumardb1
9897d2cd09 docs(todos): standardize all TODOs with running numbers and delegatable instructions
Replace ad-hoc AGENTIC-N comments with standardized TODO-NNN format across
the entire codebase. Each TODO has:
  - Running number (TODO-001 through TODO-011)
  - Priority level (high/medium/low)
  - Phase reference (0, A.1, A.4, B, cleanup)
  - Clear step-by-step instructions an AI agent can follow

TODO index:
  TODO-001: Kill switch maintenance banner (providers.tsx)
  TODO-002: Feedback button in settings page
  TODO-003: Accessibility focus trap for modals
  TODO-004: Clone routine template instead of mutating in-place
  TODO-005: Wire real LLM enrichment for context messages
  TODO-006: Centralize backend URL configuration
  TODO-007: MCP tool integration tests (common-plat)
  TODO-008: Wire trackEvent() calls into routes + components
  TODO-009: Unit tests for AI context generation
  TODO-010: Import PRODUCT_ID from product-config (5 route files)
  TODO-011: Wire error boundary to telemetry

Added consolidated TODO Index table at top of AGENTIC_AI_ROADMAP.md
for agent scanning. 219 backend tests pass, no code changes.
2026-04-01 01:05:25 -07:00
saravanakumardb1
f94c2d8424 fix(web): add NEXT_PUBLIC_CHRONOMIND_BACKEND_URL to .env.example
The fetchEnrichedMessage() function in context-messages.ts references this
env var but it was missing from .env.example, making it invisible to new
developers setting up the project.
2026-04-01 00:00:11 -07:00
saravanakumardb1
c80c1e4462 feat(ai-context): Phase A.4 — context-aware AI messages with LLM fallback
Add AI-enriched context message generation:

- backend/src/lib/ai-context.ts: LLM-powered context generator with keyword fallback
  - Calls extraction-service timer-context task when EXTRACTION_SERVICE_URL is set
  - Falls back to keyword rules, then generic message
  - Gated behind isFeatureEnabled('ai_context_messages.enabled')
- backend/src/lib/config.ts: Add EXTRACTION_SERVICE_URL env var
- backend/src/server.ts: POST /api/context-message route
- web/src/lib/context-messages.ts: fetchEnrichedMessage() with graceful degradation
- Updated AGENTIC_AI_ROADMAP.md checkboxes for Phase A.1 + A.2

All 219 backend tests + 394 web tests pass. No breaking changes.
2026-03-31 23:46:00 -07:00
saravanakumardb1
f3e14e28dd feat(ecosystem): Phase 0 — kill-switch, feedback, accessibility, feature flags, telemetry events
Phase 0 of the Agentic AI Roadmap: ecosystem gap fixes.

- Add @bytelyst/kill-switch-client integration (web/src/lib/kill-switch.ts)
- Wire kill switch check into providers.tsx on app init
- Add @bytelyst/feedback-client integration (web/src/lib/feedback.ts)
- Add @bytelyst/accessibility to web dependencies
- Add 7 agentic feature flags to backend (all default false)
- Define 16 telemetry event constants (backend + web)
- Add AGENTIC_AI_ROADMAP.md with full Phase 0-E plan + audit findings

All 182 backend tests pass. All 394 web tests pass.
No breaking changes to existing functionality.
2026-03-31 23:26:37 -07:00
saravanakumardb1
ac6edec73f fix(tokens): replace hardcoded personal category hex with CSS token var 2026-03-29 10:29:14 -07:00
saravanakumardb1
d192061df3 fix(web): exclude e2e/ from tsconfig to prevent false typecheck errors 2026-03-29 02:19:06 -07:00
saravanakumardb1
8b18a8e74b fix(deps): switch @bytelyst/ui and design-tokens to file: refs for local resolution 2026-03-29 02:12:45 -07:00
saravanakumardb1
f5dc7332cb fix(tokens): import @bytelyst/design-tokens/css/chronomind — remove hand-written token block 2026-03-29 01:23:57 -07:00
saravanakumardb1
c9448d35e4 fix(e2e): fix escaped backticks in visual-regression template literals 2026-03-29 01:01:14 -07:00
saravanakumardb1
e60efddaab fix(web): remove dead responsive sidebar CSS — ChronoMind uses header layout, no sidebar 2026-03-29 00:06:48 -07:00
saravanakumardb1
72651ceff1 feat(web): add responsive sidebar CSS breakpoints for mobile 2026-03-28 23:30:01 -07:00
saravanakumardb1
947c93d10b feat(web): wire @bytelyst/ui ToastProvider into app providers 2026-03-28 23:25:41 -07:00
saravanakumardb1
075e1850e5 fix(web): add interactive hover/active states for buttons and links 2026-03-28 23:20:44 -07:00
saravanakumardb1
ffe2d28921 test(visual): add Playwright visual regression screenshot tests 2026-03-28 00:55:40 -07:00
saravanakumardb1
1191d9e00d chore(design-system): add responsive sidebar CSS breakpoints (768px collapse) 2026-03-28 00:51:28 -07:00
saravanakumardb1
c2db021568 fix(web): add skip-to-content link for WCAG keyboard accessibility 2026-03-28 00:47:03 -07:00
saravanakumardb1
2d0a47be92 fix(web): add prefers-reduced-motion media query for accessibility 2026-03-28 00:38:48 -07:00
saravanakumardb1
0036e6af10 chore(design-system): add @bytelyst/ui shared component library dependency 2026-03-28 00:36:08 -07:00
saravanakumardb1
bc7430a436 chore(design-system): deploy canonical generated Swift theme tokens from @bytelyst/design-tokens 2026-03-28 00:26:05 -07:00
saravanakumardb1
487464bcaf fix(web): add sr-only utility + prefers-color-scheme light mode to globals.css 2026-03-28 00:25:20 -07:00
saravanakumardb1
7ac57d0ec7 feat(a11y): add axe-core accessibility E2E spec with focus-visible test 2026-03-27 16:42:03 -07:00
saravanakumardb1
3cf08d6cad feat(design-system): add loading.tsx route transition page 2026-03-27 16:34:27 -07:00
saravanakumardb1
e9e96ba18a fix(e2e): upgrade shallow specs with page.route() API mocking and error state tests 2026-03-27 13:32:05 -07:00
saravanakumardb1
5453cb131a chore(web): add Dockerfile, service worker, and e2e test scaffolds 2026-03-27 11:28:33 -07:00
saravanakumardb1
c6e83f991d fix(docker): correct web Dockerfile EXPOSE/PORT to 3030 matching docker-compose 2026-03-24 11:45:29 -07:00
saravanakumardb1
5c67bed5a6 fix(docker): remove hardcoded corporate proxy and jfrog registry from Dockerfiles 2026-03-24 11:12:38 -07:00
saravanakumardb1
bfbca2b820 feat(docker): migrate to Gitea registry-backed Docker pattern
- Convert all @bytelyst/* file: refs to semver ^0.1.0
- Remove sibling common-plat workspace references
- Add .npmrc and .npmrc.docker for local Gitea registry
- Rewrite Dockerfiles: pnpm + BuildKit secret mount
- Verified: pnpm install + backend typecheck pass
2026-03-23 20:57:37 -07:00
saravanakumardb1
1168da3ce2 fix(ci): fix ESLint flat config plugin resolution
- Override react-hooks rules within the same config object that defines the plugin
- Avoids 'Cannot redefine plugin' error in ESLint 9 flat config
2026-03-22 21:20:23 -07:00