Skip to main content

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 SqlSessionFactory by 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 with coco.mybatis-plus.datasource.enabled=true.
  • Startup logging collapses to a single ready record carrying java and pid, 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:generate goal and the coco.codegen.* parameters were removed.
  • The CocoFeature.CODEGEN feature flag and the coco-feature-codegen module were removed.
  • A leftover codegen in coco.features.* or @CocoFeatures now produces a "retired feature" message.
  • Code generation is handled by the CLI of the separate coco-generate project; 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​

  1. Confirm 3.0.0 is published to Maven Central, then update coco-parent or the BOM version to 3.0.0.
  2. Run mvn dependency:tree and confirm you no longer depend directly on the migrated coco-feature-* coordinates; during the compatibility window you may keep the facades temporarily, but do not declare both old and new coordinates.
  3. Remove coco:generate build configuration and coco.codegen.* parameters, and use coco-generate to generate and commit source instead.
  4. Delete coco.logging.node-renderer.* configuration and any parsing of multi-line startup logs, then verify the single ready record.
  5. For multiple data sources, enable coco.mybatis-plus.datasource.enabled and configure coco.mybatis-plus.datasource.sources; the default transaction policy is reject, so confirm transaction boundaries before switching across databases.
  6. Build and run the application's integration tests; CRUD, transaction boundaries and business permissions remain the application's responsibility.