Acbox
ddda00f980
feat(models): add image model type support
...
Add a dedicated image model type so bots can use image API models without overloading chat model capabilities, while keeping existing chat-based image generation selectable.
2026-04-16 16:00:22 +08:00
Chrys
33e18e7e64
feat(skills): add effective skill resolution and actions ( #377 )
...
* feat(skills): add effective skill resolution and actions
* refactor(workspace): normalize skill-related env and prompt
* chore(api): regenerate skills OpenAPI and SDK artifacts
* feat(web): surface effective skill state in console
* test(skills): cover API and runtime effective state
* fix(web): show adopt action for discovered skills
* fix(web): align skill header and show stateful visibility icon
* refactor(web): compact skill metadata on narrow layouts
* fix(web): constrain long skill text in cards
* refactor(skills): narrow default discovery roots
* fix(skills): harden managed skill path validation
* feat: add path in the results of `use_skill`
---------
Co-authored-by: Acbox <acbox0328@gmail.com >
2026-04-16 13:50:39 +08:00
Fodesu
8e1ed3683f
feat(agent): relax provider http timeouts ( #348 )
2026-04-15 00:07:41 +08:00
晨苒
38ac907361
chore(docs): update new memoh logo
2026-04-14 22:41:54 +08:00
Quincy
7cc7b959e2
fix: resolve bot styling issue ( #375 )
2026-04-14 22:31:30 +08:00
Acbox
5382c3cd27
feat(web): add sidebar collapse
2026-04-14 21:58:29 +08:00
Acbox
19d5cd606d
chore: update AGENTS.md
2026-04-14 21:56:42 +08:00
Acbox
2a1c4a2e5f
fix(providers): github copilot icon
2026-04-14 21:30:46 +08:00
Acbox
27d2b99301
feat: add immediate context compaction API, UI button, and /compact slash command
...
- Add POST /bots/:bot_id/sessions/:session_id/compact endpoint for
synchronous context compaction with fallback to chat model when no
dedicated compaction model is configured
- Add "Compact Now" button to session info panel in the web UI
- Add /compact slash command for triggering compaction from chat
- Regenerate OpenAPI spec and TypeScript SDK
2026-04-14 21:30:05 +08:00
Acbox
6328281fc2
fix: enforce speech/LLM isolation in providers and models
...
SQL queries (CountProviders, CountModels, ListModels, ListEnabledModels,
ListModelsByProviderID) now exclude speech types. Added IsLLMClientType
guard to prevent cross-domain queries via /models?client_type and
/providers/:id/import-models. Frontend provider forms no longer offer
edge-speech as a client type option.
Also fixed pre-existing SA5011 staticcheck warnings in proxy_test.go
and executor_test.go.
2026-04-14 21:07:27 +08:00
Acbox
84f1d0612a
refactor: replace context_token_budget with model context_window for context trimming
...
The per-bot context_token_budget column was unused (no frontend UI) and
has been removed. Context trimming now derives the budget from the chat
model's context_window setting, which is already configured per model.
2026-04-14 21:04:42 +08:00
晨苒
cb44408277
fix(ci): avoid direct secrets access in tauri workflows
2026-04-14 06:51:06 +08:00
晨苒
4d5f3f9126
release: v0.7.0-beta.4
v0.7.0-beta.4
2026-04-14 06:44:07 +08:00
晨苒
fa48f59d38
fix(docker): docker-compose.yml typo
2026-04-14 06:43:30 +08:00
lijianlin
0c2527453b
fix(schedule): use anyOf for nullable max_calls
2026-04-14 06:38:49 +08:00
晨苒
a076b232fc
Merge branch 'pr/350'
2026-04-14 06:37:43 +08:00
晨苒
1739a7b671
Merge branch 'main' into pr/350
2026-04-14 06:33:19 +08:00
aki
3509947bc0
Fix dangling tool call history
2026-04-14 06:23:48 +08:00
Fodesu
3945bd913d
test(agent): satisfy lint for generate loop tests
2026-04-14 06:23:01 +08:00
Fodesu
33461d7ac1
fix(agent): stop generate loop aborts correctly
2026-04-14 06:23:01 +08:00
Fodesu
59147b255d
fix(agent): guard tool loop state against concurrent tool execution
2026-04-14 06:23:01 +08:00
晨苒
1a6d12a137
feat(cli): add bots and docker compose commands
2026-04-14 06:22:00 +08:00
晨苒
d50eeea114
reactor(cli): move memoh cli to tui
...
1. Split the oversized `cmd/agent` entrypoint into a multi-file package and update dev/build scripts to use the package path instead of compiling `main.go` directly.
2. Add a new `memoh` terminal UI for local bot chat, with Bubble Tea
2026-04-14 06:22:00 +08:00
晨苒
8c9f222783
fix(ui): add acl template tooltip
2026-04-14 05:51:38 +08:00
BBQ
60517bc2a6
feat(acl): add bot security policy presets
...
Initialize new bots with preset ACL templates and an allow-by-default fallback so common access setups can be selected during bot creation instead of being configured manually afterward.
2026-04-14 05:51:38 +08:00
aki
0e6c8ca451
fix(telegram): dedupe repeated inbound updates
2026-04-14 05:15:45 +08:00
BBQ
447d647aef
fix(sqlc): cast optional scalar settings args ( #370 )
...
Add explicit scalar casts for optional timezone and context token budget fields so sqlc can parse UpsertBotSettings again. Regenerating sqlc also syncs the stale generated bot/query structs that drifted from the schema.
2026-04-14 04:36:44 +08:00
Acbox
6100b966f8
release: v0.7.0-beta.3
v0.7.0-beta.3
2026-04-14 01:16:06 +08:00
Acbox
7255056f28
feat(icons): add github-copilot icon
2026-04-14 01:13:49 +08:00
EYHN
c4114227e5
feat(agent): add background task execution and notifications ( #365 )
2026-04-13 20:28:42 +08:00
LiBr
df8fbd8859
feat(provider): add github copilot device flow provider ( #364 )
2026-04-13 19:38:33 +08:00
KasuganoSora
a40207ab6d
feat: Misskey channel adapter, agent reliability hardening & stream error resilience ( #359 )
2026-04-13 17:10:50 +08:00
Acbox
26b01cc463
fix(media): failed to store the media to /data/media and add image part
2026-04-13 12:58:08 +08:00
Acbox
d46269de89
feat(command): improve slash command UX ( #361 )
...
Make slash commands easier to navigate in chat by splitting help into levels, compacting list output, and surfacing current selections for model, search, memory, and browser settings. Also route /status to the active conversation session and add an access inspector so users can understand their current command and ACL context.
2026-04-13 12:37:12 +08:00
Chrys
c9c221e35d
fix(web): constrain skills editor dialog layout ( #363 )
2026-04-12 23:30:41 +08:00
晨苒
6b9e69b514
chore(ci): add tauri macOS signing
2026-04-11 23:41:54 +08:00
Acbox
3307b27a80
feat(web): add timezone setup for each bot
2026-04-11 19:39:17 +08:00
Acbox
bb6c3c826e
chore(ci): update trigger condition for actions
2026-04-11 19:31:48 +08:00
Acbox Liu
7a21fd5f07
feat: ui message ( #357 )
2026-04-11 13:29:41 +08:00
BBQ
f376a2abe3
fix(channel): add wechatoa webhook delivery and proxy config ( #356 )
...
Unify webhook handling across channel adapters and add the WeChat Official Account channel so inbound routing and replies work without platform-specific handlers. Add adapter-scoped proxy support and stable config field ordering so restricted network environments can deliver WeChat and Telegram messages reliably.
2026-04-10 21:26:11 +08:00
Ming Lin
4d3f2de7e2
feat: Add GPU CDI support for workspace containers ( #332 )
...
* feat: add CDI GPU support for workspace containers
* feat: expose GPU CDI settings in bot container UI
* feat: move GPU settings into advanced container options
* docs: document advanced CDI device configuration
2026-04-10 14:52:17 +08:00
Cocoon-Break
5159405913
fix(test): use proto.Clone to avoid copylocks lint error
2026-04-10 08:54:10 +08:00
Fodesu
19619d73a9
fix(chat): respect override model selection ( #354 )
2026-04-10 02:31:29 +08:00
EYHN
f2fa845e16
fix(bridge): close stdout/stderr pipes on exec timeout to prevent stream hang ( #351 )
2026-04-09 21:43:11 +08:00
BBQ
d3bf6bc90a
fix(channel,attachment): channel quality refactor & attachment pipeline fixes ( #349 )
...
* feat(channel): add DingTalk channel adapter
- Add DingTalk channel adapter (`internal/channel/adapters/dingtalk/`) using dingtalk-stream-sdk-go, supporting inbound message receiving and outbound text/markdown reply
- Register DingTalk adapter in cmd/agent and cmd/memoh
- Add go.mod dependency: github.com/memohai/dingtalk-stream-sdk-go
- Add Dingtalk and Wecom SVG icons and Vue components to @memohai/icon
- Refactor existing icon components to remove redundant inline wrappers
- Add `channelTypeDisplayName` util for consistent channel label resolution
- Add DingTalk/WeCom i18n entries (en/zh) for types and typesShort
- Extend channel-icon, bot-channels, channel-settings-panel to support dingtalk/wecom
- Use channelTypeDisplayName in profile page to replace ad-hoc i18n lookup
* fix(channel,attachment): channel quality refactor & attachment pipeline fixes
Channel module:
- Fix RemoveAdapter not cleaning connectionMeta (stale status leak)
- Fix preparedAttachmentTypeFromMime misclassifying image/gif
- Fix sleepWithContext time.After goroutine/timer leak
- Export IsDataURL/IsHTTPURL/IsDataPath, dedup across packages
- Cache OutboundPolicy in managerOutboundStream to avoid repeated lookups
- Split OutboundAttachmentStore: extract ContainerAttachmentIngester interface
- Add ManagerOption funcs (WithInboundQueueSize, WithInboundWorkers, WithRefreshInterval)
- Add thread-safety docs on OutboundStream / managerOutboundStream
- Add debug logs on successful send/edit paths
- Expand outbound_prepare_test.go with 21 new cases
- Convert no-receiver adapter helpers to package-level funcs; drop unused params
DingTalk adapter:
- Implement AttachmentResolver: download inbound media via /v1.0/robot/messageFiles/download
- Fix pure-image inbound messages failing due to missing resolver
Attachment pipeline:
- Fix images invisible to LLM in pipeline (DCP) path: inject InlineImages into
last user message when cfg.Query is empty
- Fix public_url fallback: skip direct URL-to-LLM when ContentHash is set,
always prefer inlined persisted asset
- Inject path: carry ImageParts through agent.InjectMessage; inline persisted
attachments in resolver inject goroutine so mid-stream images reach the model
- Fix ResolveMime for images: prefer content-sniffed MIME over platform-declared
MIME (fixes Feishu sending image/png header for actual JPEG content → API 400)
2026-04-09 14:36:11 +08:00
kuishou68
8b47382b6a
fix: preserve exec exit code after stream cancellation
2026-04-09 11:55:21 +08:00
Acbox
fffe5ac34f
fix(web): start WS/SSE connections even when bot has no sessions
...
When a new bot had no sessions, initialize() returned early without
starting WebSocket, message events SSE, or local stream SSE. This
caused the first conversation to hang because stream events had no
delivery channel to reach the frontend.
2026-04-08 22:50:07 +08:00
Acbox
a71f2ad529
chore(dev): add minify dev mode
2026-04-08 22:15:48 +08:00
晨苒
48da4e026e
release: v0.7.0-beta.2
v0.7.0-beta.2
2026-04-08 02:52:24 +08:00
Quicy
fb71f5a5f1
fix: clear loading on request failure
2026-04-08 01:35:30 +08:00