---
layout: post
title: "[ANN] Apache Isis version 1.12.0 Released"
date: '2016-03-29T18:03:03+00:00'
permalink: ann_apache_isis_version_15
---
<div>The Apache Isis team is pleased to announce the release of Apache Isis v1.12.0.</div> 
  <div><br /></div> 
  <div>New features in this release include:</div> 
  <div><br /></div> 
  <div> 
    <ul> 
      <li>much enhanced support for custom layouts, using an optional separate XML layout file <font face="courier new, courier, monospace">Xxx.layout.xml</font>. &nbsp;This is similar in concept to the earlier support we have had for custom layouts through a <font face="courier new, courier, monospace">.layout.json</font> file, but introduces the ability to position object members anywhere using (<a href="getbootstrap.com">bootstrap3</a>) columns and rows. &nbsp;It also brings in support for tab groups, and allows object members to be included in the page more than once (eg a table view and also a calendar view).</li> 
      <li>a change to the editing of objects: rather than an 'edit' button which toggles the entire page into edit mode, instead each property is edited individually.</li> 
      <li>various new domain services. &nbsp;Some of these are in supoprt of the dynamic layouts functionality, others including new access into Apache Isis' metamodel. &nbsp;In addition, the <font face="courier new, courier, monospace">DomainObjectContainer</font> service has been deprecated, replaced by a number of fine-grained services such as <font face="courier new, courier, monospace">RepositoryService</font>&nbsp;and <font face="courier new, courier, monospace">MessageService</font>.</li> 
      <li>a number of new mixins, to automatically surface in the UI an entity's id, version (if any) as properties, and actions to download the layout XML and other metadata actions. &nbsp;(These can always be hidden using either security or by writing a subscriber; see the <a href="http://isis.apache.org/migration-notes.html#_migration-notes_1.11.0-to-1.12.0">migration notes</a>).</li> 
      <li>JAXB view models are now automatically editable by default.</li> 
    </ul> 
  </div> 
  <div><br /></div> 
  <div><a href="http://isis.apache.org/release-notes.html#r1.12.0">Full release notes</a> are available on the Apache Isis website.</div> 
  <div><br /></div> 
  <div>You can access this release directly from the <a href="http://search.maven.org">Maven central repo</a>, or <a href="http://isis.apache.org/downloads.html">download the release</a> and build it from source.</div> 
  <div><br /></div> 
  <div>Enjoy!</div> 
  <div><br /></div> 
  <div>--The Apache Isis team</div> 
  <div><br /></div> 
  <div><br /></div>
