Conversation
…or beta and production
…OMPANY_NAME config
…OMPANY_NAME config
… proper font fallbacks
… proper font fallbacks
…les and dynamic branding - Add AIConfig environment variable bindings (OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_LLM_MODEL, OPENAI_EMBEDDING_MODEL, etc.) - Auto-bootstrap and sync LLM and Embedding models to database on startup - Support dynamic COMPANY_NAME and COMPANY_LOGO_URL in legal document page and support center header - Add unit tests for AI config initialization and env parsing Co-authored-by: Cursor <cursoragent@cursor.com>
….example Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… path lookup Co-authored-by: Cursor <cursoragent@cursor.com>
…n permissions to existing roles Co-authored-by: Cursor <cursoragent@cursor.com>
…x global font inheritance Co-authored-by: Cursor <cursoragent@cursor.com>
…, and translate AI Agent config workbench Co-authored-by: Cursor <cursoragent@cursor.com>
…roper Inter font-family Co-authored-by: Cursor <cursoragent@cursor.com>
… AI agent loop tests Co-authored-by: Cursor <cursoragent@cursor.com>
…Me organization webhook specs with i18n Co-authored-by: Cursor <cursoragent@cursor.com>
…nd replace all remaining Chinese strings with i18n - Change Promise.all to Promise.allSettled in AI Agent workbench so MCP errors do not block loading AI configs and teams - Gracefully handle MCP server connection errors in ToolCatalogService - Auto-select first available AI config when creating a new AI Agent - Localize all hardcoded Chinese toasts, node graphs, and UI warnings across AI Agents and AI Workflows - Update vi-VN and en-US localization keys for complete multilingual support
…d pipeline - Add .github/workflows/sync-upstream.yml with cron schedule and manual trigger - Auto-detect new releases from upstream huabeitech/agent-desk and merge into dev - Create synced GitHub release and tags on repository - Build & push Docker images for :beta, :<version>, and :latest - Keep production deployment isolated while generating deployable release artifacts
… tag in sync workflow
…ntegration - Support inbound email webhook ingestion (/api/third/email/webhook) for Brevo and generic JSON - Support outbound reply dispatching via Brevo API and standard SMTP with automatic retry - Map email senders into customer identity (help@crove.com) and trigger AI agent conversation loop - Add Email Channel configuration UI in Dashboard with full bilingual localization
…rt with threading - Support multiple outbound email delivery providers: SMTP, Brevo, SendGrid, Resend, Postmark, Mailgun - Support multiple inbound email ingestion formats: Cloudflare Email Routing / Generic Webhook, Brevo, Postmark, SendGrid Inbound Parse, Mailgun - Add email conversation threading resolution via Subject ticket ID (#123) and In-Reply-To / References message headers - Add full EmailConfig to server config and bind environment variable aliases - Enhance Dashboard Channel configuration UI with email delivery providers and bilingual translations
…and yaml configurations
… in inbound parser
…percase build failures
JOY
marked this pull request as draft
September 1, 2026 15:54
- Define Crove OS & Crove Desk as a commercial multi-tenant B2B SaaS platform - Specify tenant isolation and dynamic inbound/outbound routing patterns - Add mandatory implementation checklist for SaaS multi-tenancy
…g>.crove.io and UI copy helper - Add intelligent tenant slug resolution in GetEnabledEmailChannelByAddress for <slug>.crove.io, <slug>.on.crove.email, and plus addressing - Add forwardingAddress field to EmailChannelConfig - Add copyable dedicated forwarding address preview in channel edit UI - Add comprehensive multi-tenant email channel unit tests across EN, VI, ZH locales
…e and distinct styling - Add IMSenderTypeNote and IMMessageTypeNote enums - Add mode switcher in SharedMessageEditor for Public Reply vs Internal Note - Style internal notes with amber tint and 🔒 Internal Note badge - Prevent internal notes from counting against customer unread count and external channels - Add full i18n support across EN, VI, and ZH locales
…SQL compatibility
…email inbound worker
…t exceeds max steps failures
- Upgrade github.com/cloudwego/eino to v0.9.19 with latest eino-ext components - Upgrade TypeScript to v7.0.2 across web, cloudflare-email-worker, and flowgram-editor - Upgrade @types/node to v22 and update Go dependencies (golang.org/x/crypto, net, tools)
…o mjs and update lockfiles
…, and email-worker
JOY
added a commit
to DOS/Crove-Desk
that referenced
this pull request
Sep 10, 2026
- Mark the 18 resolved IDs Done and the 3 unreproducible ones Retracted directly in the register, so the table itself carries current status instead of relying on the round callouts - Downgrade SEC-05 from Critical to High. The mechanism is real but the old wording claimed an unauthenticated stranger could exploit it. The guest id is guest_<uuid> from crypto.randomUUID(), 122 bits of entropy held in the desk origin's localStorage, so it cannot be guessed. The real defect is that the identifier doubles as the credential, and it is disclosed in four verified places: the dashboard shows externalId to any staff member, t_customer_identity stores it in plaintext, a host-supplied externalId travels in the iframe URL query string, and the backend never enforces entropy on what an integrator picks - Record the owner decisions: keep the widget contract and close the first three disclosure paths; merge dev into main and tag a release once the i18n batch and SEC-05 land - Add the upstream defect the SEC-01 tests exposed: mime.ExtensionsByType reads the Windows registry, so text/html resolved to .ehtml and storage keys were platform dependent - Add the CI gap: ci.yml only triggers on pull_request, so a push to dev ships a beta image without running a single test - Note that PR huabeitech#32 is still open - Bump the document to version 4 and extend the verification log
JOY
marked this pull request as ready for review
September 22, 2026 03:52
…support Resolve against upstream main through huabeitech#49: - union the per-channel additions (email + discord) in dto/enums/outbox/ channel/message services, routes, and the channel edit dialog - keep upstream's ServerConfig security fields (trustedProxies, trustedPlatform, rateLimit) alongside this branch's PublicURL/favicon and Email config; email defaults and env aliases appended - go.mod/go.sum taken from upstream and tidied - renumber this branch's permission-sync migration 10 -> 11 (upstream took 10 meanwhile) - keep the branch's ai/env alias expectations out of the dotenv test (upstream never bound those aliases) - net.JoinHostPort for the SMTP dial address (IPv6-safe, satisfies vet) - add the six discord channel keys to vi-VN so the locale satisfies the shared message type
The merge left the lockfile's overrides snapshot inconsistent with package.json under pnpm 10 (ERR_PNPM_LOCKFILE_CONFIG_MISMATCH in CI's frozen install). Regenerate with the same pnpm 10.30.2 CI uses.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds native Email Channel support to AgentDesk, enabling customer support teams to receive and reply to customer emails directly within the omnichannel inbox and AI Agent workflow.
Key Capabilities
Multi-Provider Outbound Delivery:
Multi-Format Inbound Ingestion:
Conversation Threading & Ticket Lifecycle:
Dashboard Configuration & Localization:
Verification & Tests