Releases: achetronic/magec
v0.19.0
🐛 Bug fixes
- Conversations not split after session reset — Using the
!resetor/resetcommands did not split the conversation in the Admin UI because the session ID remained unchanged. The backend now correctly closes the historical session and creates a fresh conversation record for subsequent messages, preserving the old history accurately. - Deleted secrets remained active in memory — Deleting a secret from the Admin UI did not unset its environment variable, allowing agents to continue using the old credentials until the server restarted. The system now explicitly unsets the environment variable and re-expands the runtime memory, invalidating old credentials instantly.
- Telegram replies misplaced in groups with topics — In Telegram supergroups with topics enabled, the bot was reading from the correct thread but sending its replies to the General topic. The bot now correctly targets the originating thread for all messages, reactions, and typing indicators.
- Voice UI image uploads failing without text — Uploading an image without an accompanying text message caused the LLM to reject the request because it lacked context. A blank text part is now automatically injected as a fallback when sending files without a message.
✨ Features
- Multimodal file and image support in Voice UI — Users can now attach images, PDFs, and text documents directly in the Voice UI chat. These files are processed inline by the LLM, enabling vision and document analysis capabilities from the web interface.
🔧 Improvements
- Increased file upload limits in Voice UI — The previous 5MB file upload limit was too restrictive for modern smartphone photos. The limit has been increased to 20MB to improve the user experience when uploading high-resolution images.
- Multi-line text input in Voice UI — The chat input field has been upgraded to a text area, allowing users to insert line breaks using
Shift+Enterfor better message formatting. - Core server refactoring and documentation — A massive codebase audit was performed. Complex initialization routines were broken down into single-responsibility functions, and extensive GoDoc comments were added across all server subsystems to improve long-term maintainability.
v0.18.0
✨ Features
• Gemini TTS and STT support — Agents can now use Google Gemini backends for text-to-speech and speech-to-text, in addition to OpenAI-compatible services. Configure a Gemini backend, pick a model and voice, and it works. Gemini-specific options (language, temperature, style prompt) appear automatically in the agent form when a Gemini backend is selected.
• Voice provider registry — TTS and STT are now handled by a pluggable provider system. Each backend type (OpenAI, Gemini) has its own provider that knows how to talk to its API. Adding support for new providers in the future requires no changes to the proxy or the admin UI — just a new provider package.
• Dynamic voice configuration in the Admin UI — The agent form now shows different TTS/STT options depending on the backend type. OpenAI backends show a speed control. Gemini backends show language, temperature, and style prompt (under an Advanced toggle). Help icons link to Google's voice and language documentation.
🔧 Improvements
• Speed moved to provider config — The speed field is no longer a top-level TTS setting. It now lives under the OpenAI provider config (config.openai.speed), consistent with how other provider-specific fields work. Existing configurations are migrated automatically on first load.
• Gemini backends no longer require a URL — Gemini backends without a URL default to generativelanguage.googleapis.com. Previously, an empty URL would cause TTS/STT to fail with a "backend not found" error.
v0.17.0
✨ Features
• REST ADK API now accepts snake_case field names The /run and /run_sse endpoints now accept both camelCase and snake_case in request bodies.
For example, app_name works just as well as appName . The conversion happens automatically at every nesting level, so fields like inline_data and mime_type in multimodal requests are also covered. If both forms appear in the same request, the camelCase value wins.
At this moment, this is only applied to these endpoints because this change covers the entire ADK REST API. I will study to apply this to all the endpoints to make it easier for people that comes from other use cases, etc.
v0.16.0
✨ Features
-
Skill cards — Skills now show as proper cards with name, description, license, and compatibility badges when the instructions follow the Agent Skills Specification frontmatter format. Otherwise they fall back to the name and description you set manually.
-
Skill package upload — You can now upload a
.zipor.tar.gzfile containing aSKILL.mdand any supporting files (scripts, schemas, templates). Magec extracts everything, keeps the folder structure, and wires it up automatically. There's a Manual/Package toggle in the skill dialog to switch between writing by hand or uploading a package. -
SegmentedControl component — The pill-style toggle used across the UI (auto-refresh, perspective, view mode, etc.) is now a single reusable component instead of copy-pasted markup in every view.
-
Safe curly braces in prompts — Curly braces like
{something}in your system prompts, skills, JSON examples, or scripts are no longer mistaken for variable substitution. Magec now uses its own syntax{{agent.output:variable}}for passing data between agents in flows, and leaves everything else untouched.
💥 Breaking changes
- Flow output key syntax — If you use flows where agents reference each other's output, the syntax changed from
{variable_name}to{{agent.output:variable_name}}. Update your agent prompts accordingly. Regular{text}is now just text.
v0.15.1
🐛 Bug fixes
-
Discord: thread messages ignored when
allowedChannelsis set — Messages inside a thread were silently dropped even when the thread was created from an allowed channel. Discord threads have their own ID, different from the parent channel, so they were failing the permission check. The bot now also checks the parent channel ID when deciding whether to allow a message. -
Discord/Slack:
threadHistoryLimitcould not be updated from the Admin UI — When saving a client from the edit form, the value was sent as a string instead of a number. The backend rejected the request with a deserialization error. The form now correctly sends integer and number fields as numbers.
v0.15.0
✨ Improvements
• Flow editor: unified drag placeholder — Dragging a new block from the sidebar now shows a ghost preview of the actual item at the insertion point, exactly like reordering existing blocks. The surrounding items shift smoothly to make room.
• Flow editor: stable drop positioning — The placeholder no longer jitters when the cursor hovers near its edges. A dead zone and smarter leave detection keep things calm.
• Flow editor: code cleanup — Deduplicated the step-update logic, removed dead CSS classes, and reorganized the component into clearer sections. Same behavior, less code.
v0.14.2
✨ Improvements
• Context compaction simplified — The ContextGuard registry now resolves LLM context window sizes from an embedded
database (catwalk) instead of fetching them from a remote API in the background. No goroutines, no periodic refresh — it
just works out of the box.
📦 Dependencies
• adk-utils-go bumped from v0.8.2 to v0.9.1 — ships the new TokenThreshold compactor and the embedded context window
database.
v0.14.1
🐛 Bug fixes
-
Flow editor: items dropping in the wrong place — When dragging an agent or
block into a flow, it sometimes landed at the end of the list instead of where
the indicator was pointing. This is now fixed. -
Flow editor: indicator jumping around — The drop indicator (the gold bar
that shows where your item will land) used to shift other blocks sideways or
downward when it appeared, which threw off the position calculation. It now
floats above the layout without pushing anything. -
Flow editor: slow indicator response — The indicator now appears
immediately when you drag into a container, instead of waiting for the first
mouse move.
✨ Improvements
-
Flow editor: cleaner drop indicator — The indicator is now a slim gold bar
that floats between blocks without touching them. -
Client dialog: collapsible sections — The Options and Permissions sections
in the client settings now open and close the same way as in the agent dialog
(chevron on the right, smooth toggle). -
Flow editor: code cleanup — Removed unused code left over from earlier
experiments. No visible change, just a cleaner codebase.
🖼️ Other
- Added a social preview image for the GitHub repository.
v0.14.0
⭐ New Features
- Default Agent per client — Discord, Slack and Telegram now support a configurable default agent. If no agent has been selected in a conversation, the bot falls back to it automatically. In the UI, it can be set directly from the agent chip with a small square toggle.
- Thread History Limit — Discord and Slack expose a configurable limit for how many messages are loaded as context when replying in a thread (Discord: max 100, Slack: max 1000). Defaults to 50.
✨ Improvements
- Active agent persisted to store — All three bots now save the selected agent per channel/thread to the store. State is restored automatically after a server restart.
- Client dialog reorganized — The new/edit client form now has two collapsible sections: Options (Response Mode, Thread History Limit) and Permissions (Allowed Users, Allowed Channels, Allowed Chats). The form stays clean by default and only shows the essentials.
🐛 Bug Fixes
- Discord — cross-channel refs in threads — Message references to other channels are no longer generated when the bot is replying inside a thread, where they don't make sense.
- Discord — thread context in forum channels — Fixed history fetching when the message lives inside a forum thread
📦 Dependencies
- adk-utils-go bumped to v0.8.2 (fix for Anthropic tools).
v0.13.0
⭐ New Features
- ContextGuard externalized to adk-utils-go — The context window management plugin now lives in the reusable
adk-utils-golibrary (v0.8.0) with a new builder API, compaction improvements, and 48 unit tests. Internal packagesserver/plugin/andserver/contextwindow/have been removed.
✨ Improvements
- Conversation source filters fixed — Discord, Slack, webhook, and cron are now available as source filters in the admin UI conversations list. Removed the invalid
executoroption that didn't correspond to any real source. - Discord & Slack visual identity — Added proper icons, badge colors, and labels for Discord (violet) and Slack (emerald) in the conversations list.
- Docs updated —
.agents/files reflect the new architecture, externalized ContextGuard pattern, and updated dependency versions.
📦 Dependencies
- adk-utils-go bumped from v0.6.0 to v0.8.0. Removed local
replacedirective.