Releases: framework-one/fw1
Release 4.0.0 Alpha 1
The focus of the 4.0 release is on improving REST support. Improvements include:
- JSON-encoded POST body support.
- Controllers have easy access to HTTP headers.
- Builder syntax for
renderData()
result elements. - Support for user-supplied rendering functions.
- Integrated support for HTTP
OPTIONS
verb. - Per-resource error handling.
- Setting status text (in addition to status code) in HTTP responses.
- Wildcard HTTP method support.
In addition, DI/1 has had a number of enhancements, including the addition of a builder syntax for programmatically declaring beans.
For more detail, see the Change Log for FW/1 4.0.
Release 3.5.0
The major new features in FW/1 3.5.0 are:
- Subsystems 2.0. A new, more streamlined way to add subsystems to an existing FW/1 application has been added. Thank you to Steven Neiland for the inspiration and guiding principles! Read about Subsystems 2.0 and how they differ from the older approach (which is still supported). The examples have been reworked to use Subsystems 2.0 so you can see how it works in practice.
- An Alternative Application Structure is now supported that allows you to create FW/1 applications that do not require
Application.cfc
extends the FW/1 component. Read about the Alternative Application Structure. Some of the examples have been updated to use this approach so you can see how it works in practice. - Clojure integration. If you have Leiningen installed (Clojure's build tool) then it is very easy to write services and/or controllers in Clojure and have FW/1 automatically integrate those into your CFML application. Read about mixing CFML & Clojure for more details. An example of Clojure integration is provided in the repository (you'll need Leiningen installed for that example to run).
- ForgeBox / CommandBox support. FW/1 now has a
box.json
file and is hosted on ForgeBox so it can be easily installed via CommandBox.
In addition to the major features, the following enhancements have been added:
redirect()
allowsqueryString
to be a struct, likebuildURL()
.isFrameworkReloadRequest()
is now public in case an application needs to take action when the framework is reloaded.getSubsystemSectionAndItem()
added to supplementgetFullyQualifiedAction()
(the latter omits the subsystem if it is empty).- The WireBox adapter now supports custom binders.
- The conventions used for various folder names can now be overridden in the framework configuration.
And the following bugs have been fixed:
- 377 - AOP/1 now allows a single interceptor to be applied to multiple objects.
- 361 -
renderData()
could kill sessions (this was backported to 3.1.1). - 336 - account for
expandPath()
returning the wrong directory on ACF11 when the path has a trailing/
.
Finally, FW/1 includes experimental support for Lucee Language, so if you are running a prerelease build of Lucee Server that has Lucee Language support enabled, you can write controllers and views etc in .lc
or .lucee
files and FW/1 will use them.
You can read the full list of changes since 3.1 on GitHub, along with
accepted pull requests since 3.1.
Release 3.5.0 RC 2
Changes since RC 1:
- Fix layout display issue when using non-default subsystem delimiter #376 @dfair98
- Fix subsystem model management behavior (regression from 3.1) #378
- Fix subsystem delimiter edge case (regression from 3.1) #379
- Expose Clojure integration example conditionally (as app and as subsystem) #380
- Add internal trace type #381 @ryanguill
- Fix AOP/1 issue with multiple interceptors #382 ( #377 ) @dbudde
Release 3.5.0 RC 1
Changes since Beta 2:
- Fixed concurrent modification exception in edge case DI/1 setter analysis #375
- Improved debugging of DI/1 metadata failures (by adding more information to exceptions) #374
- Fixed
view()
(and layout) handling with Subsystems 2.0 #373 isFrameworkReloadRequest()
is now public #372- Clojure integration should ignore editor temporary files #371
- Subsystem bean factory handling more consistent #370
- Updated examples that use Alternative Application Structure
Release 3.5.0 Beta 2
Changes since Beta 1:
Bug fixes:
- Examples of Alternative Application Structure should work in more installations / configurations (
6helloclojure
,userManager
) - Dotted CFC path deduction tweaked to fix an edge case bug
DI/1:
- Add
liberal
plurals option (solibraries
is treated as the plural oflibrary
, for example)
Subsystems:
setView()
/setLayout()
did not respect (new) subsystems #368- Ignore absolute / root-relative
diLocations
for subsystems
Clojure integration:
- Add
server
scope caching option - More flexible namespace-to-bean name mapping #366
- Improved null handling in conversion functions
Release 3.5.0 Beta 1
Changes since Alpha 2:
- Resolved per-application mapping issue with Alternative Application Structure in FW/1
- Resolved edge case dotted path detection in DI/1
- Figured out
box.json
ignore patterns
Release 3.5.0 Alpha 2
Changes since Alpha 1:
- Improves CFML / Clojure interop when
project.clj
depends oncfml-interop
library. - Improves backward compatibility of legacy subsystem auto-detection.
Release 3.1.2
Identical to 3.1.1 with addition of box.json
for ForgeBox / CommandBox usage.
Release 3.5.0 Alpha 1
The first "feature complete" prerelease build of FW/1 3.5.0 focuses on integration and includes:
- Support for controllers and services to be written in CFML, Clojure, or Lucee
- Support for views and layouts to be written in CFML or Lucee
- Configurable folder names to set your own conventions (for controllers, layouts, subsystems, and views)
- Support for Application.cfc to use FW/1 without extending
framework.one
- A new, cleaner, more consistent set of conventions for adding subsystems to an existing application
For a full list of changes, see https://github.com/framework-one/fw1/issues?q=is%3Aissue+milestone%3A3.5+is%3Aclosed
Release 3.1.1
Reverts #342 to fix #361 -- renderData()
no longer flushes content or headers generated by the application.
This should solve any problems with cross-origin headers or some session-based bugs when using REST APIs powered by renderData()
.
The downside is that if you output any debugging code, it will be part of the response (as it was in 3.0) and potentially break your REST call.