OpenDaimon 1.1.0 Release Notes
Draft prepared from master after merging fsm (1b0934b, fsm (#19)).
Highlights
- Added the new FSM-based agent runtime as the main architectural change of this release.
- Added the ReAct agent cycle: think, call tools, observe results, iterate, and produce a final answer.
- Added Telegram agent-mode streaming with separate progress/status rendering and final-answer delivery.
- Added per-user Telegram
/modeand/thinkingcontrols. - Added
opendaimon-spring-boot-starteras the recommended integration path for external Spring Boot applications. - Added Telegram group/supergroup chat settings, trusted group access, and chat-scoped command menu reconciliation.
- Added an admin Web UI and REST admin APIs for users, conversations, messages, and attachments.
- Changed the project license to Apache License 2.0.
- Added ArchUnit guardrails, expanded integration/manual test coverage, and module behavior documentation.
User-Facing Changes
Telegram
- Agent mode can now be controlled per user with
/mode. - Reasoning visibility can now be controlled per user with
/thinking:SHOW_ALLkeeps reasoning in the final status transcript.HIDE_REASONINGshows transient reasoning while tools run, then keeps only tool/observation blocks.SILENTsuppresses thinking-related rendering entirely.
- Telegram agent responses use a two-message flow: an editable status/progress message and a dedicated final-answer message.
- Final answers are chunked by Telegram HTML payload size instead of raw markdown length.
- Group and supergroup chats can be represented as shared chat owners, so language, model, role, agent mode, thinking mode, and recent-model settings can be scoped to the group.
/modelnow groups large model lists into categories:RecentLocal / OllamaVisionFreeAll
/modelnow includes a recent-model category backed by persistentuser_recent_modelrows.- Dialog-style Telegram menus now have localized cancel/close buttons, including language, role, bugreport, threads, mode, and thinking menus.
- Telegram command availability is covered by centralized feature-toggle constants.
REST and Web UI
- Added admin endpoints under
/api/v1/admin/**:/api/v1/admin/me/api/v1/admin/users/api/v1/admin/conversations/api/v1/admin/conversations/{id}/api/v1/admin/conversations/{id}/messages/api/v1/admin/messages/{id}/api/v1/admin/messages/{messageId}/attachment
- Added an
/adminpage backed by the new admin APIs. - Admin access is protected by session-based admin authentication.
- Existing session chat endpoints remain under
/api/v1/session.
Agent Runtime
- FSM is now the central shape of the agent execution path. The agent loop has explicit states and events instead of a single opaque model call.
- ReAct is the primary added agent cycle:
- build the prompt and agent context;
- stream model thinking/status events;
- parse tool calls;
- execute tools;
- classify observations;
- repeat until a final answer, cancellation, failure, or max-iteration fallback.
- Added the common agent contracts in
opendaimon-common:AgentRequest,AgentResult,AgentExecutor,AgentStrategy- stream events, loop state, tool results, and FSM state/action contracts
- persisted agent execution and step entities
- Added Spring AI agent execution in
opendaimon-spring-ai:ReActAgentExecutorSimpleChainExecutorPlanAndExecuteAgentExecutorStrategyDelegatingAgentExecutorAgentPromptBuilderAgentTextSanitizer- raw tool-call parsing and tool observation classification
- Added bounded streaming behavior with timeout and non-streaming fallback.
- Added final-answer cleanup so reasoning/tool-call tags are stripped before user-visible delivery and chat-memory persistence.
- Added URL liveness checking and dead-link stripping for final agent answers.
- Added defensive
fetch_urlandweb_searchbehavior for unreadable pages, empty tool arguments, and structured failure reasons. - Added image-attachment propagation through the agent path so vision-capable models keep image context across tool calls.
Packaging and Integration
- Added
opendaimon-spring-boot-starterwith Spring Boot auto-configuration imports and low-priority OpenDaimon defaults. External consumers can use it to get OpenDaimon defaults without importing module configuration manually. - Added
opendaimon-starter-consumer-exampleto verify external consumer classpaths and starter behavior. - Release preparation now targets
1.1.0through the Mavenrevisionproperty. - The release workflow deploys with
-Drevision=<version>and no longer rewrites POM versions during the workflow. - Added Maven flatten support for CI-friendly versions.
- Docker logging is configured with rotation.
- Changed the project license to Apache License 2.0 and added the supporting
NOTICEandTRADEMARKS.mdfiles.
Database Migrations
New core migrations:
V10__Create_agent_execution_tables.sqlV11__Improve_agent_execution_tables.sqlV12__Add_agent_mode_to_user.sqlV13__Add_thinking_preserve_enabled_to_user.sqlV14__Replace_thinking_preserve_with_thinking_mode.sqlV15__Add_user_recent_model_table.sql
New Telegram migrations:
V2__Add_menu_version_hash_to_telegram_user.sqlV3__Create_telegram_group_table.sql
Migration notes:
User.thinkingPreserveEnabledis replaced byUser.thinkingMode.- Existing
thinking_preserve_enabled = trueusers migrate toSHOW_ALL. - Existing
thinking_preserve_enabled = falseorNULLusers migrate toHIDE_REASONING. - No existing user is migrated to
SILENT; it is opt-in through/thinking.
Public API and Compatibility Notes
This release includes public module and package-surface changes. Downstream applications that import OpenDaimon internals should review these before upgrading.
opendaimon-restmoved:io.github.ngirchev.opendaimon.rest.handler.RestChatCommand
toio.github.ngirchev.opendaimon.rest.command.RestChatCommandio.github.ngirchev.opendaimon.rest.handler.RestChatCommandType
toio.github.ngirchev.opendaimon.rest.command.RestChatCommandType
opendaimon-telegrammoved:io.github.ngirchev.opendaimon.telegram.command.handler.TelegramSupportedCommandProvider
toio.github.ngirchev.opendaimon.telegram.command.TelegramSupportedCommandProvider
Usernow exposesagentModeEnabledandthinkingMode.- New public model/repository surface includes
ThinkingMode,UserRecentModel,UserRecentModelRepository,TelegramGroup, andTelegramGroupRepository. - External consumers can now prefer
opendaimon-spring-boot-starterfor default Spring Boot wiring, while still adding optional delivery modules such asopendaimon-restexplicitly.
Configuration Notes
- New module toggle:
open-daimon.agent.enabled. - New agent settings include:
open-daimon.agent.max-iterationsopen-daimon.agent.stream-timeout-secondsopen-daimon.agent.tools.http-api.enabled
- New Telegram command toggles include:
open-daimon.telegram.commands.mode-enabledopen-daimon.telegram.commands.thinking-enabled
- New Telegram cache toggle:
open-daimon.telegram.cache.redis-enabled
- New Spring AI URL-check settings include:
open-daimon.ai.spring-ai.url-check.enabledopen-daimon.ai.spring-ai.url-check.timeout-msopen-daimon.ai.spring-ai.url-check.max-urls-per-answeropen-daimon.ai.spring-ai.url-check.cache-ttl-minutes
Verification Before Tagging
Recommended release gate:
./mvnw clean verifyRecommended targeted checks if the full gate fails and needs narrowing:
./mvnw clean compile
./mvnw -pl opendaimon-common test
./mvnw -pl opendaimon-spring-ai test
./mvnw -pl opendaimon-telegram test
./mvnw -pl opendaimon-rest test
./mvnw -pl opendaimon-app failsafe:integration-test failsafe:verify
./mvnw -pl opendaimon-spring-boot-starter,opendaimon-rest -am install -DskipTests -DskipITs -DskipIT
mvn -f opendaimon-starter-consumer-example/pom.xml testRelease deploy command:
./mvnw -B -Drevision=1.1.0 clean deploy -P release,central -DskipTests