Skip to content

Releases: roshansingh/programmableinbox

Release list

v0.1.2

Choose a tag to compare

@github-actions github-actions released this 30 Aug 03:05
f0f85fb

What's Changed

  • Backend by @roshansingh in #1
  • Add Claude Code GitHub Workflow by @roshansingh in #3
  • Add Claude Code GitHub Workflow by @roshansingh in #4
  • Email automations editor, API, and deployment workflow by @roshansingh in #2
  • feat: async webhook processing with BullMQ queue and worker by @roshansingh in #12
  • feat: API key authentication for email inbox and message endpoints by @roshansingh in #14
  • feat: add production-ready Pino logger with structured logging by @roshansingh in #15
  • Phase 1: Commercial layer infrastructure and UI improvements by @roshansingh in #16
  • Remove sms by @roshansingh in #17
  • Llm integration by @roshansingh in #18
  • Cursor pagination for inbox messages (hard switch) by @roshansingh in #64
  • fix: schema review CRITICAL + HIGH findings (F1, F4–F8, F25) by @roshansingh in #65
  • fix: schema review MEDIUM findings — indexes, timestamps, type standardization by @roshansingh in #69
  • fix: concurrency findings F17, F19, F28 by @roshansingh in #70
  • feat: migrate all generated IDs to UUIDv7 in native uuid columns by @roshansingh in #76
  • fix: pin Postgres session timezone to UTC by @roshansingh in #75
  • test: comprehensive API integration test suite (real Postgres) + 4 bug fixes by @roshansingh in #77
  • fix(security): sandbox untrusted email HTML to stop stored XSS (#36) by @roshansingh in #78
  • fix(security): fail closed when JWT_SECRET is unset (#38) by @roshansingh in #79
  • fix(security): default automation replay to dry-run and rate limit it (#40) by @roshansingh in #80
  • fix(security): normalize inbox addresses to close case-variant cross-tenant email interception (#37) by @roshansingh in #81
  • fix(security): clamp pagination params and bound the grouped message query (#43) by @roshansingh in #82
  • fix(security): run the app as a least-privileged Postgres role (#41) by @roshansingh in #83
  • fix(security): block SSRF and response-body exfiltration in send_webhook (#39) by @roshansingh in #84
  • feat: serve Resend ingest at /api/webhooks/email (API split PR 0) by @roshansingh in #88
  • chore: remove /api/v1/webhooks/email compatibility alias (API split PR 0b) by @roshansingh in #90
  • feat: auth foundation for the internal/external API split (Phase 1) by @roshansingh in #91
  • feat: service layer and serializers for the API split (Phase 2) by @roshansingh in #92
  • feat: split emailInbox into read-only /api/v1 and dashboard /api/app (Tasks 24+25) by @roshansingh in #93
  • feat: move remaining dashboard routes to /api/app, guards at full scope (Tasks 26-30) by @roshansingh in #94
  • feat: gate owner-only UI actions, delete the superseded auth layer, update docs (Tasks 31-34) by @roshansingh in #96
  • feat(config): centralized zod-validated config manager by @roshansingh in #99
  • Restrict inbox creation to configured domains + impersonation blocklist (#98) by @roshansingh in #100
  • fix(security): rate limit login and registration (#42) by @roshansingh in #85
  • feat: cap inbox local part at 50 and display name at 100 characters by @roshansingh in #101
  • feat: email verification at signup behind ENABLE_EMAIL_VERIFICATION by @roshansingh in #103
  • docs: rename InboxUI to ProgrammableInbox in prose by @roshansingh in #105
  • feat: password reset by signed JWT by @roshansingh in #107
  • fix: make the password-reset pages reachable, and the limiter usable on its first request by @roshansingh in #110
  • chore(security): gitleaks config, CI secret scan, and pre-commit hook by @roshansingh in #109
  • feat: full-text search on email messages (#106) by @roshansingh in #108
  • fix(test): load .env.test automatically, make integration secrets harness-owned by @roshansingh in #111
  • feat(mcp): expose the read-only email surface over MCP at POST /api/mcp by @roshansingh in #112
  • Namespace API key scopes for SMS, add granular email_inboxes create/update/delete scopes, and expose inbox writes on /api/v1 + MCP by @roshansingh in #114
  • fix: 400 a malformed PATCH address, and correct the v1 inbox error docs by @roshansingh in #115
  • Split email_inboxes:write into create/update/delete, and add DELETE /api/v1/emailInbox/{id} by @roshansingh in #116
  • feat(commercial): USE_COMMERCIAL plan engine with count caps (#117, PR 1/2) by @roshansingh in #118
  • feat(commercial): per-period meters, outbound gating and usage UI (#117, PR 2/2) by @roshansingh in #119
  • docs: OSS license placeholders, README rewrite, split architecture docs by @roshansingh in #121
  • feat(billing): Stripe Checkout, portal and subscription webhooks for the pro plan (#120) by @roshansingh in #122
  • Apply Iris color palette to light/dark theme tokens by @roshansingh in #123
  • Generate client SDKs (Python, Go, TypeScript, Java, C#) from the v1 OpenAPI spec by @roshansingh in #127
  • Add message search to inbox top bar; move Inbox/N messages next to email by @roshansingh in #126
  • Hide Webhooks from left nav by @roshansingh in #128
  • fix: run LLM enrichment in the sync webhook path by @roshansingh in #129
  • Add EE observability: log search + OpenTelemetry tracing by @roshansingh in #131
  • fix(email): preserve compose state and received timestamps by @marutilai in #132
  • Ship EE logs via a Docker-stdout-scraping otel-collector by @roshansingh in #133
  • otel-collector: fix deploy sync, log-loss bug, and force-recreate docs by @roshansingh in #134
  • Fix OTP enrichment on HTML-only mail; rework the OTP API and v1 org scoping by @roshansingh in #135
  • Log finish_reason/refusal when OpenAI-compat enrichment result may be empty by @roshansingh in #136
  • Simplify automation UI and fix Dry Run's stale-config gap by @roshansingh in #137
  • Add unread/read status for email messages by @roshansingh in #149
  • Regenerate SDKs for isRead field by @roshansingh in #150
  • Add a dashboard billing page with a Free/Pro plan picker by @roshansingh in #151
  • Instrument PostHog for product analytics by @roshansingh in #153
  • Add tag-triggered release pipeline: CE tarball, CE docker image, SDK publishing by @roshansingh in #155

New Contributors

Full Changelog: https://github.com/roshansingh/programmableinbox/commits/v0.1.2

Community Edition

  • docker: ghcr.io/roshansingh/programmableinbox-ce:v0.1.2 (linux/amd64, linux/arm64)

SDKs

  • csharp 0.1.2: published
  • go 0.1.2: published
  • java 0.1.2: published
  • python 0.1.2: published
  • **typescript...
Read more