root
853dd72f60
chore: remove leftover tarball deps, gitignore docker-deps dirs
...
CI — ChronoMind / Backend — typecheck + test (push) Failing after 0s
CI — ChronoMind / Web — typecheck + lint + test + build (push) Failing after 0s
CI — ChronoMind / E2E — Playwright (push) Failing after 0s
Generated with [Devin](https://cli.devin.ai/docs )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 01:52:33 +00:00
root
85c6cef033
fix(docker): use shared docker-prep.sh and update Dockerfile for tarball approach
...
CI — ChronoMind / Backend — typecheck + test (push) Waiting to run
CI — ChronoMind / Web — typecheck + lint + test + build (push) Waiting to run
CI — ChronoMind / E2E — Playwright (push) Waiting to run
Generated with [Devin](https://cli.devin.ai/docs )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 01:50:55 +00:00
root
f92b688098
perf(docker): optimize docker-prep.sh with caching and shared cache
...
CI — ChronoMind / Backend — typecheck + test (push) Waiting to run
CI — ChronoMind / Web — typecheck + lint + test + build (push) Waiting to run
CI — ChronoMind / E2E — Playwright (push) Waiting to run
Implemented 7 optimizations to significantly improve docker-prep.sh performance:
1. Git-based incremental builds (only rebuild changed packages)
2. Hash-based caching (content-addressable cache)
3. Persistent tarball cache (survives git clean)
4. Smart manifest tracking (track what's been built)
5. Cache-first build strategy (check cache before building)
6. Shared global cache (all products use same cache at ~/.cache/bytelyst-packages)
7. Custom cache location via BYTELYST_CACHE_DIR env var
Performance improvements:
- First build: 2-3 minutes (same as before)
- Subsequent builds: 5-10 seconds (cache hit)
- Multi-product deployment: 60% faster (6-9 min → 2.5-3.5 min)
- Disk usage: Reduced from 5.1MB to 1.7MB (shared cache)
Generated with [Devin](https://cli.devin.ai/docs )
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-05-10 00:10:31 +00:00
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
28807d4889
fix(docker): update sed syntax for Linux compatibility
...
- Change sed -i '' to sed -i for Linux compatibility
- Fix BSD sed syntax that was causing docker-prep.sh to fail
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:25:49 +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
f88d9e5953
docs(roadmap): record accessibility item status
2026-05-05 01:21:51 -07:00
OpenAI Codex
bfc4670fc3
feat(web): use shared accessibility helpers
2026-05-05 01:21:31 -07:00
OpenAI Codex
8d8cf04835
docs(roadmap): record feedback item status
2026-05-05 00:54:34 -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
fe2ab6010e
fix(backend): remove stale TODO-008 comment, add telemetry to suggestions route
2026-04-19 00:53:05 -07:00
saravanakumardb1
fd4269949f
fix(planner): remove unused import, fix urgency/cascade type casts, fix overflow invalid dates
2026-04-19 00:52:26 -07:00
saravanakumardb1
333f0e5316
feat(web): Phase D.3 tempo mode engine + 11 tests
2026-04-18 18:13:45 -07:00
saravanakumardb1
3cda171b68
feat(backend): Phase D.1 smart routine suggestions engine + routes + 6 tests
2026-04-18 18:12:47 -07:00
saravanakumardb1
2e0ddcfe43
feat(web): Phase C.4 webhook management UI + client
2026-04-18 18:10:58 -07:00
saravanakumardb1
573483c20e
feat(backend): Phase C.3 Zapier-compatible polling endpoint + event-types discovery
2026-04-18 18:09:56 -07:00
saravanakumardb1
79ac0bb1d6
feat(backend): Phase C.1-C.2 wire domain events from timer + routine repositories to webhook dispatch
2026-04-18 18:09:04 -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
e021e96c80
feat(backend): Phase B.1 day planner engine + routes + 11 tests
2026-04-18 18:03:55 -07:00
saravanakumardb1
0240d3c807
feat(backend): TODO-008 wire telemetry trackEvent() into agent-actions + context-message routes
2026-04-18 18:01:19 -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
6064d7d227
docs(agents): add .npmrc canonical template rule to AGENTS.md
...
Never edit .npmrc directly in product repos — managed by
canonical template in learning_ai_common_plat/scripts/npmrc.template.
Use sync-npmrc.sh to propagate. Prevents gitea.bytelyst.com hardcoding.
2026-04-14 11:57:23 -07:00
saravanakumardb1
2bf172935b
fix(web): align billing-client SubscriptionDoc type with platform schema
2026-04-13 22:57:32 -07:00
saravanakumardb1
a0c5f14bbf
docs: mark TODO-004 and TODO-005 as completed in agentic roadmap
2026-04-13 17:00:55 -07:00
saravanakumardb1
229ce4f00f
feat(backend): wire Ollama LLM for context messages (TODO-005)
...
Dual-path LLM enrichment for AI context prep messages:
1. extraction-service (if EXTRACTION_SERVICE_URL set)
2. Ollama direct (if OLLAMA_URL set) — non-streaming /api/generate
3. Keyword rules fallback
4. Generic fallback
New env vars: OLLAMA_URL, OLLAMA_MODEL (default: gemma3:4b)
Both LLM paths use 5s timeout and null-return-on-error pattern.
Feature-gated behind ai_context_messages.enabled flag.
2026-04-13 17:00:24 -07:00
saravanakumardb1
0e7c1aeb15
feat(backend): state-change event detection + clone template on start
...
- PUT /timers/🆔 detect state→fired and state→completed transitions,
emit timer.fired / timer.completed domain events
- PUT /routines/🆔 detect status→completed transition,
emit routine.completed domain event
- POST /routines/:id/start (TODO-004): when isTemplate=true, clone the
template into a new RoutineDoc instead of mutating in-place. Original
template stays reusable. Non-templates still update in place.
All 6 ChronoMind event types are now fully wired end-to-end.
2026-04-13 17:00:05 -07:00
saravanakumardb1
0129f5623c
fix(backend): emit routine.started and household.created domain events
...
Event bus defines 6 event types but only timer.created was wired.
Wire the two straightforward create/start events:
- routine.started: emitted from POST /routines/:id/start
- household.created: emitted from POST /households
2026-04-13 15:52:49 -07:00
saravanakumardb1
9b398bbd68
fix(backend): convert ecosystem-phase2 test to Vitest, fix .ts extension + hardcoded productId
...
- ecosystem-phase2.test.ts used node:test — Vitest discovered it but ran 0 tests
- Converted to Vitest describe/it/expect — now 2 tests actually execute
- Added coverage for missing plan-created-event graceful fallback
- Fixed .ts import extension to .js (ESM convention, tsc build compat)
- Replaced 6 hardcoded 'chronomind' literals with PRODUCT_ID import
2026-04-13 15:51:58 -07:00
saravanakumardb1
fcd2ee3ad2
fix(docker): standardize pnpm filter glob to match ecosystem convention
2026-04-13 15:50:43 -07:00
saravanakumardb1
24b1dd05fc
docs: mark TODO-006, TODO-010, TODO-011 as completed in agentic roadmap
2026-04-13 14:59:47 -07:00
saravanakumardb1
9ece4306a2
feat(docker): add docker-prep.sh for tarball-based Docker builds
2026-04-13 14:59:21 -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
d74c80a711
fix(cleanup): TODO-010 — replace hardcoded PRODUCT_ID with import from product-config
2026-04-13 14:56:57 -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
c1972ef0d0
feat(backend): emit timer.created event from POST /timers route
...
Wire getEventBus().emit() into the timer creation handler so webhook
subscribers and future listeners receive typed domain events.
2026-04-13 11:50:39 -07:00
saravanakumardb1
82428d7bf9
fix(backend): fix sync throw isolation in event bus + add 6 tests
...
Promise.allSettled only catches rejected promises, not synchronous throws.
Wrap handler calls in Promise.resolve().then() to isolate sync errors.
Add 6 unit tests covering delivery, unsubscribe, error isolation,
singleton, reset, and removeAll.
2026-04-13 11:42:14 -07:00
saravanakumardb1
fbac905e9c
feat(backend): add domain event bus + webhook dispatch
...
Add typed event bus (6 events: timer.created/fired/completed,
routine.started/completed, household.created) with Promise.allSettled
isolation. Wire webhook subscriber bridge using @bytelyst/webhook-dispatch
for HMAC-signed delivery with retry.
All 219 tests pass.
2026-04-13 11:28:38 -07:00
saravanakumardb1
427080a2a3
chore: standardize .npmrc + workspace for corp network resilience
...
- .npmrc: use ${GITEA_NPM_HOST:-localhost}:3300 instead of hardcoded
gitea.bytelyst.com (corp TLS proxy breaks external URL).
- pnpm-workspace.yaml: add ../learning_ai_common_plat/packages/* so
@bytelyst/* resolve locally without registry access.
- .npmrc: enable link-workspace-packages + prefer-workspace-packages.
2026-04-13 10:34:50 -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
root
c8bab1d617
chore: update registry URL to gitea.bytelyst.com + lockfile refresh
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 06:08:43 +00:00