Blog

ColdBox Platform v3.7.0 Released!

Luis Majano July 10, 2013

Spread the word

Luis Majano

July 10, 2013

Spread the word


Share your thoughts

logoWe are proud to announce ColdBox Platform release version 3.7.0 and ColdBox DevBox 2.4. This is an important release that addresses many important issues, but also introduces some great enhancements. There are no compatibility updates needed and here are our "What's New" guideline:

This update includes updates to all of our major internal libraries as well (blog posts coming as well):

The most considerable new features in this release are done in the areas of the HTML helper and generation, RESTFul services, rendering data, ORM relationship compositions via population, i18n enhancements and integration testing enhancements.

Bugs Squashed

  • [COLDBOX-130] - Error in MethodValidator.cfc when it recives a null from an orm relationship.
  • [COLDBOX-135] - Usage of parent factories overrides local adapter in the ColdBox IOC bridge
  • [COLDBOX-143] - InterceptorService in compatible with ACF 8
  • [COLDBOX-163] - "Unique" missing from validValidators list in ValidationManager
  • [COLDBOX-170] - The location argument in the event.renderData() method was not being passed dynamically but as a string.
  • [COLDBOX-180] - Bug when inflating relationships with population, getRelationalMetadata should not bring back non-relational columns

Improvements

  • [COLDBOX-133] - Allow struct arguments to all HTML elements so it can do KEY-XXX elements for you within the tag
  • [COLDBOX-138] - Ability to choose your own rendering template for the core MessageBox
  • [COLDBOX-141] - Allow {placeHolder} replacements for custom messages
  • [COLDBOX-144] - Update all application templates to new versions and standards
  • [COLDBOX-149] - Allow message placeholder replacements with getResource()
  • [COLDBOX-153] - Validation "required" doesn't work for complex objects.
  • [COLDBOX-157] - BugReport.cfm assumes form values are all simple
  • [COLDBOX-161] - ORM Relationship compositions and null support in object populators
  • [COLDBOX-167] - Make non-inhertance approach the default for application templates
  • [COLDBOX-172] - Lite Sample app doesn't escape HTML in error message.
  • [COLDBOX-173] - BaseTestCase new method: getMockController() that returns a mocked controller object

New Features

  • [COLDBOX-26] - allow the definition of security rules as a JSON file
  • [COLDBOX-146] - Ability to override messagebox template via renderMessage() and renderit() methods, 'template' arg
  • [COLDBOX-148] - New HTML 5 Field shortcuts: urlfield, emailfield
  • [COLDBOX-150] - Add group and label wrappers to HTMLHelper to allow for wrapping of controls as such is done with Bootstrap
  • [COLDBOX-151] - All module configuration objects now are decorated in the variables scope with "wirebox,logbox,cachebox"
  • [COLDBOX-164] - Ability to route responses inline via addRoute() with new parameters: response, statusCode and statusText
  • [COLDBOX-165] - addRoute() enhance to support a new argument 'condition' which can be a closure or UDF that MUSt return boolean as a secondary check on pattern checks. So pattern must match and condition must execute and validate
  • [COLDBOX-166] - Update query sim to do queryToArrayOfStructures thanks to Winston Yee!
  • [COLDBOX-168] - Ability to generate ANY tag via HTML helper as onMissingMethod calls: h2("hi"), p("hello"), div("what up")
  • [COLDBOX-169] - Create new script only template
  • [COLDBOX-171] - All interceptors now receive a third "buffer" argument which is a reference to a request buffer that can produce elegant output if needed.
  • [COLDBOX-174] - New "formats" and "formatsView" argument to renderdata so it can automatically marshall and setup a request for rendering with the passed in formats
  • [COLDBOX-178] - New Testing Decorator: ORMTransactionRollback that will automatically transaction and rollback your test methods using ColdBox ORM Services
  • [COLDBOX-179] - Integration testing execute() method now can render the results of the request by passing *renderResults=true* as an argument. This will create a cbox_rendered_content variable in the RC for you to assert the renderings

Thanks for always supporting us!

Resources:

Add Your Comment

Recent Entries

BoxLang 3.4 Blog Series Part 2: Revamped Human in The Loop HITL

BoxLang 3.4 Blog Series Part 2: Revamped Human in The Loop HITL

HumanInTheLoopMiddleware used to do everything itself: decide which tool calls needed approval, present the request, and wait for a decision. In 3.4.0, that logic has been pulled apart into a real subsystem, and the piece developers will feel the most is that a human's "always allow this" now actually means always.

Luis Majano
Luis Majano
September 05, 2026
BoxLang 3.4 Blog Series Part I: Gateways, One Interface, Any Platform

BoxLang 3.4 Blog Series Part I: Gateways, One Interface, Any Platform

Every AI agent that touches something real eventually needs a human in the loop. Someone has to approve the delete, confirm the wire transfer, or just say "go ahead" before a tool call runs. The question BoxLang AI 3.4.0 answers is: approve it how? A terminal prompt? A webhook? A Slack button?

Luis Majano
Luis Majano
September 04, 2026