Menci
be3d769013
feat(channel): redact credentials from IM error messages ( #240 )
2026-03-14 21:27:32 +08:00
BBQ
3feb03aca7
ci: add go lint and race test workflow ( #187 )
2026-03-05 11:25:33 +08:00
Acbox Liu
ea719f7ca7
refactor: memory provider ( #140 )
...
* refactor: memory provider
* fix: migrations
* feat: divide collection from different built-in memory
* feat: add `MEMORY.md` and `PROFILES.md`
* use .env for docker compose. fix #142 (#143 )
* feat(web): add brand icons for search providers (#144 )
Add custom FontAwesome icon definitions for all 9 search providers:
- Yandex: uses existing faYandex from FA free brands
- Tavily, Jina, Exa, Bocha, Serper: custom icons from brand SVGs
- DuckDuckGo, SearXNG, Sogou: custom icons from Simple Icons
Icons are registered with a custom 'fac' prefix and rendered as
monochrome (currentColor) via FontAwesome's standard rendering.
* fix: resolve multiple UI bugs (#147 )
* feat: add email service with multi-adapter support (#146 )
* feat: add email service with multi-adapter support
Implement a full-stack email service with global provider management,
per-bot bindings with granular read/write permissions, outbox audit
storage, and MCP tool integration for direct mailbox access.
Backend:
- Email providers: CRUD with dynamic config schema (generic SMTP/IMAP, Mailgun)
- Generic adapter: go-mail (SMTP) + go-imap/v2 (IMAP IDLE real-time push via
UnilateralDataHandler + UID-based tracking + periodic check fallback)
- Mailgun adapter: mailgun-go/v5 with dual inbound mode (webhook + poll)
- Bot email bindings: per-bot provider binding with independent r/w permissions
- Outbox: outbound email audit log with status tracking
- Trigger: inbound emails push notification to bot_inbox (from/subject only,
LLM reads full content on demand via MCP tools)
- MailboxReader interface: on-demand IMAP queries for listing/reading emails
- MCP tools: email_accounts, email_send, email_list (paginated mailbox),
email_read (by UID) — all with multi-binding and provider_id selection
- Webhook: /email/mailgun/webhook/:config_id (JWT-skipped, signature-verified)
- DB migration: 0019_add_email (email_providers, bot_email_bindings, email_outbox)
Frontend:
- Email Providers page: /email-providers with MasterDetailSidebarLayout
- Dynamic config form rendered from ordered provider meta schema with i18n keys
- Bot detail: Email tab with bindings management + outbox audit table
- Sidebar navigation entry
- Full i18n support (en + zh)
- Auto-generated SDK from Swagger
Closes #17
* feat(email): trigger bot conversation immediately on inbound email
Instead of only storing an inbox item and waiting for the next chat,
the email trigger now proactively invokes the conversation resolver
so the bot processes new emails right away — aligned with the
schedule/heartbeat trigger pattern.
* fix: lint
---------
Co-authored-by: Acbox <acbox0328@gmail.com >
* chore: update AGENTS.md
* feat: files preview
* feat(web): improve MCP details page
* refactor(skills): import skill with pure markdown string
* merge main into refactor/memory
* fix: migration
* refactor: temp delete qdrant and bm25 index
* fix: clean merge code
* fix: update memory handler
---------
Co-authored-by: Leohearts <leohearts@leohearts.com >
Co-authored-by: Menci <mencici@msn.com >
Co-authored-by: Quincy <69751197+dqygit@users.noreply.github.com >
Co-authored-by: BBQ <35603386+HoneyBBQ@users.noreply.github.com >
Co-authored-by: Ran <16112591+chen-ran@users.noreply.github.com >
2026-03-03 15:33:50 +08:00
BBQ
f9f968f13f
feat(models): per-model probe testing with auto-detect UI ( #133 )
...
* feat(models): add per-model probe testing and auto-detect in UI
Move health probes from provider level to model level for precise
testing with real model_id and client_type. Provider test is now a
simple reachability check.
Backend:
- Add POST /models/:id/test endpoint that probes the model's provider
using its actual model_id and client_type
- Add model healthcheck checker for bot health checks (chat/memory/embedding)
- Simplify provider test to reachability-only
Frontend:
- Auto-probe models on mount with status indicator (green/yellow/red dot + latency)
- Auto-probe provider reachability on load and on provider switch
- Fix missing faBolt icon registration
- Manual re-probe via refresh button
Closes #117
* fix(models): increase probe timeout to 15s for slow providers
Some providers (e.g. DashScope) exceed the 5s probe timeout, causing
false-negative "context deadline exceeded" errors. Increase per-probe
timeout to 15s and healthcheck overall timeout to 30s.
* fix(sdk): regenerate exports after merge conflict
Resolve duplicate SDK exports introduced by merge conflict resolution so the web build can compile again while preserving new model probe endpoints.
2026-03-02 14:59:15 +08:00
Acbox Liu
17cd077f34
feat: add thinking support ( #100 )
...
* feat: add thinking support
* feat: improve thinking block render in web and filter thinking content in channels
* fix: migrate
2026-02-23 14:41:27 +08:00
ringotypowriter
50bdbd519c
fix(models,settings,conversation): scope model_id uniqueness per
...
provider and harden model reference resolution
2026-02-21 22:31:32 +08:00
Acbox
d6c47472b2
refactor: move client_type key from provider to model
2026-02-18 18:30:27 +08:00
Ringo.Typowriter
daed9d2d95
fix(models): guard bot memory model type and fallback for memory LLM ( #61 )
2026-02-17 20:14:44 +08:00
BBQ
df7876a30c
feat: add media asset system, channel lifecycle refactor, and chat attachments ( #54 )
2026-02-17 19:06:46 +08:00
Fodesu
6f5ee013e6
fix(models): models id change can not be save ( #49 )
2026-02-14 23:40:47 +08:00
BBQ
85251a2905
refactor(core): codebase quality cleanup
...
- Remove user-level model settings (chat_model_id, memory_model_id,
embedding_model_id, max_context_load_time, language) from users table
- Merge migration 0002 into 0001, remove compatibility migrations
- Delete dead conversation/resolver.go (1177 lines, only flow/resolver.go used)
- Remove type aliases (Chat=Conversation, types_alias.go)
- Fix SQL: remove AND false stub, fix UpdateChatTitle model_id,
reset model IDs in DeleteSettings, add preauth expiry filter,
add ListMessages limit, remove 10 dead queries
- Extract shared handler helpers (RequireChannelIdentityID, AuthorizeBotAccess)
- Rename internal/router to internal/channel/inbound
- Fix identity confusion: remove UserID->ChannelIdentityID fallbacks
- Fix all _ = var patterns with proper error logging
- Fix error propagation: storeMessages, rescheduleJob, botContainerID
- Fix naming: ModelId->ModelID, active->is_active, Duration semantic fix
- Remove dead code: mcpService, ReplyTarget, callMCPServer, sshShellQuote,
buildSessionMetadata, ChatRequest.Language, TriggerPayload.ChatID
- Fix code quality: errors.Is(), remove goto, CreateHuman deprecated
- Remove Enable model endpoint and user-level settings CLI commands
- Regenerate sqlc, swagger, SDK
2026-02-12 23:50:48 +08:00
BBQ
1c15eb2146
refactor(core): restructure conversation/channel/message domains and modernize deployment
...
- Replace chat package with conversation flow architecture
- Add channel identity avatar support (migration 0002)
- Refactor channel adapters, identities, and message routing
- Update frontend: simplify composables, modernize UI components
- Improve Docker builds with cache mounts and version metadata
- Optimize healthchecks and simplify service dependencies
2026-02-12 20:55:03 +08:00
BBQ
ca5c6a1866
refactor(core): restructure conversation, channel and message domains
...
- Rename chat module to conversation with flow-based architecture
- Move channelidentities into channel/identities subpackage
- Add channel/route for routing logic
- Add message service with event hub
- Add MCP providers: container, directory, schedule
- Refactor Feishu/Telegram adapters with directory and stream support
- Add platform management page and channel badges in web UI
- Update database schema for conversations, messages and channel routes
- Add @memoh/shared package for cross-package type definitions
2026-02-12 15:34:40 +08:00
BBQ
d99ba38b7d
merge(github): merge github/main, keep our code and docs/spec
2026-02-12 05:20:18 +08:00
Acbox
1f30e666e0
feat(web): use generate sdk
2026-02-11 15:23:47 +08:00
BBQ
06e8619a37
refactor(core): migrate channel identity and binding across app
...
Align channel identity and bind flow across backend and app-facing layers, including generated swagger artifacts and package lock updates while excluding docs content changes.
2026-02-11 14:51:58 +08:00
BBQ
5a35ef34ac
feat: channel gateway implementation and multi-bot refactor
...
- Refactor channel manager with support for Sender/Receiver interfaces and hot-swappable adapters.
- Implement identity routing and pre-authentication logic for inbound messages.
- Update database schema to support bot pre-auth keys and extended channel session metadata.
- Add Telegram and Feishu channel configuration and adapter enhancements.
- Update Swagger documentation and internal handlers for channel management.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-06 14:41:54 +08:00
Acbox
3f0a0f8499
feat: add get models by provider
2026-02-02 13:48:22 +08:00
Acbox
c731e0ca1d
feat: move default model into user settings
2026-02-02 01:40:54 +08:00
BBQ
46d2968e2c
feat: refactor logging system to slog with DI and component tagging
2026-02-01 15:23:57 +08:00
Ran
bb5482b982
refact: go mcp tool in containerd
2026-01-28 04:48:32 +07:00
Acbox
35a8927a79
feat: allow setting default model enable as chat, memory, embedding
2026-01-26 21:54:46 +08:00
Ran
3ff0e2c4dd
feat: embedding router
2026-01-26 05:11:21 +07:00
Acbox
c332ce7749
feat: models
2026-01-23 18:53:20 +08:00