3.0.0 release notes
October 21, 2026 · Published to Maven Central
GitHub Release · Full comparison
This release completes the Feature module coordinate normalization and removes the code generation and Node log renderer capabilities that have moved out. Review every compatibility note below before upgrading.
Framework capabilities
- MyBatis-Plus dynamic multi-datasource: routes to multiple
physical data sources under a single
SqlSessionFactoryby annotation or context, keeping one pagination, tenant, data permission and SQL guard interceptor chain; it also provides read/write load balancing and five replaceable SPIs. Disabled by default; enable it withcoco.mybatis-plus.datasource.enabled=true. - Startup logging collapses to a single
readyrecord carryingjavaandpid, which log collection and container orchestration can identify more easily. - Compatibility facades: the former
coco-feature-*coordinates remain as source-less facades that depend on the corresponding canonical modules, so applications can migrate at their own pace.
Breaking changes
Maven coordinates
coco-audit, coco-openapi, coco-tenant, coco-data-permission, coco-security and
coco-web are now the implementation modules. The former coco-feature-* coordinates remain
resolvable as compatibility facades but no longer contain the implementation; the
coco-config and coco-feature-runtime facades moved to coco-build/coco-compatibility.
Projects that depend on the old coordinates directly should inspect their dependency tree and
move to the canonical coordinates step by step.
Startup logging
CocoSpringApplicationRunListener#started no longer emits lifecycle records; scripts that
match or parse multi-line startup logs need adjustment. The application still emits one
ready line containing java and pid.
Code generation
- The Maven plugin's
coco:generategoal and thecoco.codegen.*parameters were removed. - The
CocoFeature.CODEGENfeature flag and thecoco-feature-codegenmodule were removed. - A leftover
codegenincoco.features.*or@CocoFeaturesnow produces a "retired feature" message. - Code generation is handled by the CLI of the separate
coco-generateproject; generated output is committed as source and owned by the application project.
Node log renderer
CocoNodeLogRendererBootstrap, coco.logging.node-renderer.*, CocoLifecycleLogger#started
/ #startedMessage / #startedMessages and the coco-log-renderer tool were removed.
Running java -jar no longer requires node.
Website and documentation
The website moved to cocoframework.dev; the old domain cocoframwork.dev redirects with a
301. CHANGELOG.md targets framework developers, this page targets application users, and the
two link to each other.
Upgrade checklist
- Confirm 3.0.0 is published to Maven Central, then update
coco-parentor the BOM version to3.0.0. - Run
mvn dependency:treeand confirm you no longer depend directly on the migratedcoco-feature-*coordinates; during the compatibility window you may keep the facades temporarily, but do not declare both old and new coordinates. - Remove
coco:generatebuild configuration andcoco.codegen.*parameters, and usecoco-generateto generate and commit source instead. - Delete
coco.logging.node-renderer.*configuration and any parsing of multi-line startup logs, then verify the singlereadyrecord. - For multiple data sources, enable
coco.mybatis-plus.datasource.enabledand configurecoco.mybatis-plus.datasource.sources; the default transaction policy isreject, so confirm transaction boundaries before switching across databases. - Build and run the application's integration tests; CRUD, transaction boundaries and business permissions remain the application's responsibility.