Skip to content

Tags: suminhthanh/owly

Tags

v0.2.2

Toggle v0.2.2's commit message
docs: update README and CHANGELOG for v0.2.2

- Update badges: v0.2.2, 274 tests
- Update tech stack test count
- Add CHANGELOG entry for enterprise features and 15 bug fixes

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

v0.2.1

Toggle v0.2.1's commit message
feat: cross-channel conversation continuity, Helm chart, enterprise i…

…nfrastructure

Cross-channel identity resolution:
- Add customerId FK on Conversation model linking to Customer
- Customer resolver auto-creates/matches customers across WhatsApp, Email, Phone
- Phone number normalization (strip @c.us, non-digits)
- All 3 channel handlers resolve customer before conversation creation
- AI get_customer_history tool supports cross-channel lookup via customerId
- New /api/customers/[id]/conversations endpoint for unified timeline
- Conversation detail API includes linked customer data

Enterprise infrastructure:
- Request ID (X-Request-Id) on every response via middleware
- Standardized error response format: { error: { code, message, requestId } }
- Rate limit headers on all API responses (X-RateLimit-Limit/Remaining/Reset)
- CORS support with CORS_ORIGIN env var
- API version header (X-API-Version: 2026-04-07)
- Graceful shutdown handler (SIGTERM/SIGINT, connection cleanup)
- AppError class with factory methods (notFound, badRequest, etc.)

Kubernetes Helm chart (helm/owly/):
- Production-grade deployment with init container for DB migrations
- Startup/liveness/readiness probes via /api/health
- HPA, Ingress with TLS, PVC for WhatsApp sessions
- Non-root security context, existingSecret support
- Configurable resources, autoscaling, node scheduling

API maturity:
- OpenAPI 3.0 spec served at /api/openapi.json
- Pagination on all 14 list endpoints (max 100 per page)
- Export endpoint with limits (max 50K), date filters, customer/knowledge types
- Chat endpoint hardened with error handling and input validation

Production hardening:
- Multi-stage Docker build with non-root user and HEALTHCHECK
- Docker Compose with resource limits and app health check
- Webhook delivery system with retry logic and HMAC signatures
- Database indexes for query performance
- Remove unused socket.io dependency

228 tests passing, 0 lint errors, 0 type errors.

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

v0.2.0

Toggle v0.2.0's commit message
feat: production readiness — pagination, webhook delivery, Docker har…

…dening

Pagination:
- Add pagination helper (src/lib/pagination.ts) with limit cap at 100
- Add pagination to all 14 list API endpoints (conversations, tickets,
  knowledge, team, automation, SLA, canned responses, webhooks, admin)
- Standardize response format: { data: [...], pagination: { page, limit, total, totalPages } }

Export:
- Add limit parameter (default 10000, max 50000) to prevent OOM
- Add date range filters (from, to)
- Add customers and knowledge export types
- Add error handling

Webhook reliability:
- Add WebhookDelivery model with delivery tracking
- Implement retry logic with exponential backoff (3 attempts: 5s, 30s, 5min)
- Add HMAC-SHA256 payload signatures (X-Owly-Signature header)
- Add delivery history API (GET/POST /api/webhooks/[id]/deliveries)
- Dead letter tracking for permanently failed deliveries

Email templates:
- Load business name from Settings for branded headers
- Professional HTML email layout with header, body, footer
- Responsive design (mobile-friendly tables)

Health check:
- Check OpenAI API reachability
- Report memory usage (RSS, heap)
- Report environment and service statuses
- Dynamic version from package.json

Docker:
- Multi-stage build (builder + runner) for smaller images
- Non-root user (nextjs:nodejs)
- HEALTHCHECK instruction
- OCI labels
- Resource limits in docker-compose.yml

Database:
- Add compound indexes: Conversation(channel, status), Message(conversationId, createdAt)
- Add indexes: Conversation.createdAt, Customer.lastContact
- Add WebhookDelivery indexes: (webhookId), (status, nextRetryAt)

Other:
- Remove unused socket.io and socket.io-client dependencies
- Harden chat endpoint with validation and error handling
- Update .env.example with complete configuration
- Add CI, version, and test count badges to README
- Fix Next.js version badge (14 → 16)

Tests: 208 passed (31 new tests for pagination, webhook signatures,
chat endpoint, export endpoint)

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

v0.1.1

Toggle v0.1.1's commit message
refactor: add structured logger, harden CI and production config

- Add centralized logger (src/lib/logger.ts) with structured JSON output,
  log levels (debug/info/warn/error), and timestamps
- Replace all 79 console.log/console.error calls across 37 files with
  logger.info/logger.error for production-grade observability
- Add test step to CI workflow (GitHub Actions)
- Harden next.config.ts: disable X-Powered-By header, enable React
  strict mode, externalize whatsapp-web.js/puppeteer packages

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>

v0.1.0

Toggle v0.1.0's commit message
chore: add CI workflow, issue templates, contributing guide, and funding

- GitHub Actions CI with PostgreSQL, type check, lint, and build
- Bug report and feature request issue templates
- Root CONTRIBUTING.md with setup instructions and code style
- GitHub Sponsors funding configuration

Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>