 ~~ Licensed to the Apache Software Foundation (ASF) under one or more
 ~~ contributor license agreements.  See the NOTICE file distributed with
 ~~ this work for additional information regarding copyright ownership.
 ~~ The ASF licenses this file to You under the Apache License, Version 2.0
 ~~ (the "License"); you may not use this file except in compliance with
 ~~ the License.  You may obtain a copy of the License at
 ~~
 ~~      http://www.apache.org/licenses/LICENSE-2.0
 ~~
 ~~ Unless required by applicable law or agreed to in writing, software
 ~~ distributed under the License is distributed on an "AS IS" BASIS,
 ~~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 ~~ See the License for the specific language governing permissions and
 ~~ limitations under the License.
 
 ------
 Apache Tobago
 ------

Apache Tobago

  The goal of Apache Tobago\u2122 is to provide the community with a well designed set of user
  interface components based on JSF and run on MyFaces.

  Tobago is more than just a tag library. The following statements characterize
  Tobago and make it different from other frameworks:

  * The focus of Tobago is to create business applications without the need of coding
    HTML, CSS and JavaScript. The development of Tobago pages follows more the development of
    conventional user interfaces than the creation of web pages.

  * The UI components are abstracted from HTML and any layout information that does
    not belong to the general page structure. The final output format is determined
    by the client/user-agent.

  * A theming mechanism makes it easy to change the look and feel and to provide
    special implementations for certain browsers. A fallback solution ensures that
    as much code is reused for new themes as possible.

  * A layout manager is used to arrange the components automatically. This means, no
    manual laying out with HTML tables or other constructs is needed.

  []

  The development of Tobago started in 2002.


News

* February 16, 2020 MyFaces Tobago 2.4.2 Released

      The MyFaces Tobago component library in version 2.4.2 has been released.

      Release notes can be found in Jira
      ({{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12345177}2.4.2}}).

      \ {}
      ~~ hack for a bit space

* March 14, 2019 MyFaces Tobago 2.4.1 Released

      The MyFaces Tobago component library in version 2.4.1 has been released.

      Release notes can be found in Jira
      ({{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12345177}2.4.1}}).

      \ {}
      ~~ hack for a bit space

* November 5, 2018 - MyFaces Tobago 4.3.1 Released

      The MyFaces Tobago component library in version 4.3.1 has been released.

      Release notes can be found in Jira
      ({{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12343951}4.3.1}}).

      \ {}
      ~~ hack for a bit space

* November 2, 2018 - MyFaces Tobago 2.3.0 Released

      The MyFaces Tobago component library in version 2.3.0 has been released.

      Release notes can be found in Jira
      ({{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12343979}2.3.0}}).

      \ {}
      ~~ hack for a bit space

* September 26, 2018 - MyFaces Tobago 2.2.0, 3.1.0 and 4.3.0 Released

      The MyFaces Tobago component library in version 2.2.0, 3.1.0 and 4.3.0 has been released.

      Release notes can be found in Jira
      ({{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12342740}2.2.0}},
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12342388}3.1.0}} or
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12342850}4.3.0}}).

      \ {}
      ~~ hack for a bit space

* May 9, 2018 - MyFaces Tobago 4.2.1 Released

      The MyFaces Tobago component library in version 4.2.1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12342849}Jira}}.

      \ {}
      ~~ hack for a bit space

* April 25, 2018 - MyFaces Tobago 4.2.0 Released

      The MyFaces Tobago component library in version 4.2.0 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12342739}Jira}}.

      \ {}
      ~~ hack for a bit space

* February 12, 2018 - MyFaces Tobago 4.1.0 Released

      The MyFaces Tobago component library in version 4.1.0 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12339443}Jira}}.

      \ {}
      ~~ hack for a bit space

* January 29, 2018 - MyFaces Tobago 2.1.1 Released

      The MyFaces Tobago component library in version 2.1.1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12341246}Jira}}.

      \ {}
      ~~ hack for a bit space

* December 7, 2017 - MyFaces Tobago 4.0.0 Released

      The MyFaces Tobago component library in version 4.0.0 has been released.

      A short overview you can find in the
      {{{http://tobago-vm.apache.org/whats-new.xhtml}Tobago Demo 4}}.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12338728}Jira}}.

      \ {}
      ~~ hack for a bit space

* September 19, 2017 - MyFaces Tobago 3.0.6 Released

      The MyFaces Tobago component library in version 3.0.6 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12341574}Jira}}.

      Major changes are:

      * Bug fixes

      \ {}
      ~~ hack for a bit space

* September 8, 2017 - Sourcecode moved to Gitbox

      The Sourcecode of MyFaces Tobago moved from Subversion to Git. Please use either
      {{{https://gitbox.apache.org/repos/asf/myfaces-tobago.git}Gitbox}} or the
      {{{https://github.com/apache/myfaces-tobago}Github Mirror}}.

* August 15, 2017 - MyFaces Tobago 3.0.5 Released

      The MyFaces Tobago component library in version 3.0.5 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12340325}Jira}}.

      Major changes are:

      * Bug fixes

      \ {}
      ~~ hack for a bit space

* June 20, 2017 - MyFaces Tobago 2.1.0 Released

      The MyFaces Tobago component library in version 2.1.0 has been released.

      Release notes can be found in
      {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&version=12338208}Jira}}.

      Major changes are:

      * File Upload: Drag and Drop support and AJAX support
      * Bug fixes

      \ {}
      ~~ hack for a bit space

* June 7, 2017 - Set trunk to version 4.0.0-SNAPSHOT

      The version of trunk of Tobago was changed from 3.1.0-SNAPSHOT to 4.0.0-SNAPSHOT.
      Developers which are using this SNAPSHOT version need to update there pom.xml to get
      the next updates.

      \ {}
      ~~ hack for a bit space

* April 9, 2017 - MyFaces Tobago 3.0.4 Released

      The MyFaces Tobago component library in version 3.0.4 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12340258}Jira}}.

      Major changes are:

      * Bug fixes

      \ {}
      ~~ hack for a bit space

* February 6, 2017 - MyFaces Tobago 3.0.3 Released

      The MyFaces Tobago component library in version 3.0.3 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12339442}Jira}}.

      Major changes are:

      * Bug fixes

      \ {}
      ~~ hack for a bit space

* January 23, 2017 - MyFaces Tobago 3.0.2 Released

      The MyFaces Tobago component library in version 3.0.2 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12339171}Jira}}.

      Major changes are:

      * Bug fixes

      \ {}
      ~~ hack for a bit space

* January 17, 2017 - MyFaces Tobago 3.0.1 Released

      The MyFaces Tobago component library in version 3.0.1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12338730}Jira}}.

      Major changes are:

      * Bug fixes

      \ {}
      ~~ hack for a bit space

* December 16, 2016 - MyFaces Tobago 3.0.0 Released

      The MyFaces Tobago component library in version 3.0.0 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12325880}Jira}}.

      Major changes (regarding version 2) are:

      * LayoutManager moved from Server to CSS (or JS in limited cases)

      * Themes using CSS lib Bootstrap 4 http://getbootstrap.com/

      * Responsiveness

      * Simplify many things by using current technologies

      * Easier to integrate Tobago in other projects

      * Easier to integrate Libraries in Tobago

      * In general: do less magic, but more standard

      []

      Also see section: {{{http://tobago-vm.apache.org/whats-new.html} What's new in Tobago 3.0?}}

      \ {}
      ~~ hack for a bit space

* December 7, 2016 - MyFaces Tobago 3.0.0-beta-1 Released

      The MyFaces Tobago component library in version 3.0.0-beta-1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12333888}Jira}}.

      Major changes are:

      * Theme building appropriate with Bootstrap

      * Drop ResourceManager

      * New tag <<<\<tc:event\>>>> for non ajax client behavior

      * Update Bootstrap 4 alpha 5

      * Standard mechanism to load XML Properties

      * Move client data to TobagoContext

      * End of theme-dependent renderer selection

      * Reduce jQuery UI lib

      * Rename <<<\<tc:commands\>>>> (aka. <<<\<tc:commandGroup\>>>>) to <<<\<tc:links\>>>>

      * Actions are not visible, when roles are not allowed

      * HTML lang attribute for hyphenation support

      * Several fixes

      []

      \ {}
      ~~ hack for a bit space

* November 1, 2016 - MyFaces Tobago 3.0.0-alpha-7 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-7 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12338278}Jira}}.

      Major changes are:

      * New component tc:figure

      * Rename action facet to load facet

      * Improve column resizing in sheet

      * Label layout support for tc:selectBooleanCheckbox

      * Some bug fixes

      []

      \ {}
      ~~ hack for a bit space

* September 20, 2016 - MyFaces Tobago 3.0.0-alpha-6 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-6 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12338231}Jira}}.

      Major changes are:

      * HTML of tc:button and tc:link changed

      * Removing old tags tc:menu*

      * Update Bootstrap alpha 4

      * some bug fixes

      []

      \ {}
      ~~ hack for a bit space

* September 8, 2016 - MyFaces Tobago 2.0.10 Released

      The MyFaces Tobago component library in version 2.0.10 has been released.

      Release notes can be found in
      {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&version=12334742}Jira}}.

      Major changes are:

      * Multifile-Upload Component

      * New SplitLayout Component in tobago-core

      \ {}
      ~~ hack for a bit space


* August 28, 2016 - MyFaces Tobago 3.0.0-alpha-5 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-5 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12338164}Jira}}.

      Major changes are:

      * new input-groups

      * update Bootstrap to alpha 3

      * better suggest component

      * better upload component

      * better AJAX handling

      * fix converter for type java.lang.String

      * some other fixes

      []

      \ {}
      ~~ hack for a bit space

* July 17, 2016 - MyFaces Tobago 3.0.0-alpha-4 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-4 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12337842}Jira}}.

      Major changes are:

      * buttons-, nav-, bar-tags

      * collapsible (also for popups)

      * security annotations

      * new date/time-picker

      []

      \ {}
      ~~ hack for a bit space

* June 1, 2016 - Changes in the trunk

      There are some refactorings in the trunk, if using the trunk please follow these steps:

      * Rename <<<\<tc:nav\>>>> to <<<\<tc:bar\>>>>

      * Rename <<<\<tc:commandGroup\>>>> to <<<\<tc:commands\>>>>

      * <<<\<tc:nav\>>>> attributes label and image was removed: use <<<\<f:facet name="brand"\>>>> with a <<<\<tc:link\>>>> inside

      * The attribute <<<execute>>> of <<<\<f:ajax\>>>> is now implemented.

* April 26, 2016 - Switching Subversion trunk to Tobago 3.0.x

      Today the Subversion <<<trunk>>> has been moved to <<<branches/tobago-2.0.x>>> and
      the <<<branches/tobago-3.0.x>>> has been moved to trunk.

      To migrate an already checked out project, please check at first your current location like:

+----------------------------------------
svn info | grep "Repository Root"
+----------------------------------------

      The result shows you whether you are using <<<http>>> or <<<https>>>

      To switch from the old trunk to the 2.0.x branch use:

+----------------------------------------
svn switch https://svn.apache.org/repos/asf/myfaces/tobago/branches/tobago-2.0.x/
+----------------------------------------

      To switch from the old 3.0.x branch to the new trunk use:

+----------------------------------------
svn switch https://svn.apache.org/repos/asf/myfaces/tobago/trunk/
+----------------------------------------

      \ {}
      ~~ hack for a bit space

* April 20, 2016 - MyFaces Tobago 3.0.0-alpha-3 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-3 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12334363}Jira}}.

      Major changes are

      * integration of <<<\<f:ajax\>>>>,

      * upgrading from Bootstrap 3 to Bootstrap 4 (alpha) and

      * using Servlet 3.0 API for uploading files (instead of commons-fileupload).

      []

      \ {}
      ~~ hack for a bit space

* February 1, 2016 - MyFaces Tobago 2.0.9 Released

      The MyFaces Tobago component library in version 2.0.9 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12332146}Jira}}.

      \ {}
      ~~ hack for a bit space


* December 21, 2015 - MyFaces Tobago 3.0.0-alpha-2 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-2 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12333887}Jira}}.

      Major change since alpha 1 is replacing "Glyphicons" with "Font Awesome".
      This may be the last version using Bootstrap 3.
      The next alpha of Tobago will properly using Bootstrap 4, where the second alpha was released a few days ago.

      \ {}
      ~~ hack for a bit space

* November 11, 2015 - MyFaces Tobago 3.0.0-alpha-1 Released

      The MyFaces Tobago component library in version 3.0.0-alpha-1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12325880}Jira}}.

      \ {}
      ~~ hack for a bit space

* July 16, 2015 - MyFaces Tobago 1.0.42 Released

      The MyFaces Tobago component library in version 1.0.42 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12326705}Jira}}.

      \ {}
      ~~ hack for a bit space


* June 9, 2015 - MyFaces Tobago 2.0.8 Released

      The MyFaces Tobago component library in version 2.0.8 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12329723}Jira}}.

      \ {}
      ~~ hack for a bit space


* March 22, 2015 - MyFaces Tobago 2.0.7 Released

      The MyFaces Tobago component library in version 2.0.7 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12329376}Jira}}.

      \ {}
      ~~ hack for a bit space


* February 24, 2015 - MyFaces Tobago 2.0.6 Released

      The MyFaces Tobago component library in version 2.0.6 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12329161}Jira}}.

      \ {}
      ~~ hack for a bit space


* December 20, 2014 - MyFaces Tobago 2.0.5 Released

      The MyFaces Tobago component library in version 2.0.5 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12329025}Jira}}.

      \ {}
      ~~ hack for a bit space


* November 22, 2014 - MyFaces Tobago 2.0.4 Released

      The MyFaces Tobago component library in version 2.0.4 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12328041}Jira}}.

      \ {}
      ~~ hack for a bit space

* Oktober 12, 2014 - MyFaces Tobago 2.0.3 Released

      The MyFaces Tobago component library in version 2.0.3 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12328040}Jira}}.

      \ {}
      ~~ hack for a bit space

* August 26, 2014 - MyFaces Tobago 2.0.2 Released

      The MyFaces Tobago component library in version 2.0.2 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12327500}Jira}}.

      \ {}
      ~~ hack for a bit space

* August 6, 2014 - MyFaces Tobago 2.0.1 Released

      The MyFaces Tobago component library in version 2.0.1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12327455}Jira}}.

      \ {}
      ~~ hack for a bit space

* July 21, 2014 - MyFaces Tobago 2.0.0 Released

      The MyFaces Tobago component library in version 2.0.0 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12321253}Jira}}.

      See section: {{{http://tobago-vm.apache.org/whats-new.html} What's new in Tobago 2.0?}}

      \ {}
      ~~ hack for a bit space

* June 2, 2014 - MyFaces Tobago 2.0.0-beta-4 Released

      The MyFaces Tobago component library in version 2.0.0-beta-4 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12326809}Jira}}.

      Highlights:

        * Sanitize content against XSS.

        * Examples to integrate {{{http://ckeditor.com/}CKEditor???}} and {{{http://www.tinymce.com/}TinyMCE}}.

        * Bugfixes

      \ {}
      ~~ hack for a bit space

* May 5, 2014 - MyFaces Tobago 2.0.0-beta-3 Released

      The MyFaces Tobago component library in version 2.0.0-beta-3 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12326693}Jira}}.

      Highlights:

        * Icons and toolbar buttons in tabs.

        * Bugfixes

      \ {}
      ~~ hack for a bit space

* March 31, 2014 - MyFaces Tobago 2.0.0-beta-2 Released

      The MyFaces Tobago component library in version 2.0.0-beta-2 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12326662}Jira}}.

      \ {}
      ~~ hack for a bit space

* March 25, 2014 - MyFaces Tobago 2.0.0-beta-1 Released

      The MyFaces Tobago component library in version 2.0.0-beta-1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12325856}Jira}}.

      \ {}
      ~~ hack for a bit space

* March 25, 2014 - MyFaces Tobago 1.5.13 Released

      The MyFaces Tobago component library in version 1.5.13 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12325858}Jira}}.

      \ {}
      ~~ hack for a bit space

* March 25, 2014 - MyFaces Tobago 1.0.41 Released

      The MyFaces Tobago component library in version 1.0.41 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12324116}Jira}}.

      \ {}
      ~~ hack for a bit space

* January 13, 2014 - New Branch for Tobago 3.0 Created

      There was a new branch in the Subversion to start development on the next major version:
      {{{https://svn.apache.org/repos/asf/myfaces/tobago/branches/tobago-3.0.x}Tobago 3.0}}.

      \ {}
      ~~ hack for a bit space

* January 11, 2014 - MyFaces Tobago 1.5.12 Released

      The MyFaces Tobago component library in version 1.5.12 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12325597}Jira}}.

      \ {}
      ~~ hack for a bit space

* January 7, 2014 - MyFaces Tobago 2.0.0-alpha-3 Released

      The MyFaces Tobago component library in version 2.0.0-alpha-3 has been released.

      Release notes can be found in
      {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&version=12325247}Jira}}.

      \ {}
      ~~ hack for a bit space

* November 11, 2013 - MyFaces Tobago 1.5.11 Released

      The MyFaces Tobago component library in version 1.5.11 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12324453}Jira}}.

      \ {}
      ~~ hack for a bit space

* October 14, 2013 - MyFaces Tobago 2.0.0-alpha-2 Released

      The MyFaces Tobago component library in version 2.0.0-alpha-2 has been released.

      Release notes can be found in
      {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&version=12324818}Jira}}.

  \ {}
  ~~ hack for a bit space

* August 7, 2013 - MyFaces Tobago 2.0.0-alpha-1 Released

      The MyFaces Tobago component library in version 2.0.0-alpha-1 has been released.

      Release notes can be found in
      {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&version=12321874}Jira}}.

  \ {}
  ~~ hack for a bit space

* Mai 27, 2013 - MyFaces Tobago 1.5.10 Released

      The MyFaces Tobago component library in version 1.5.10 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12324008}Jira}}.

  \ {}
  ~~ hack for a bit space

* April 9, 2013 - MyFaces Tobago trunk version is now 2.0.x

      Because of the extensive upgrade of this version, the major version number was increased.

      Version 1.6.x will be replaced with 2.0.x.

  \ {}
  ~~ hack for a bit space

* March 4, 2013 - MyFaces Tobago 1.5.9 Released

      The MyFaces Tobago component library in version 1.5.9 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12323506}Jira}}.

  \ {}
  ~~ hack for a bit space

* March 4, 2013 - MyFaces Tobago 1.0.40 Released

     The MyFaces Tobago component library in version 1.0.40 has been released.

     Release notes can be found in
     {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319866}Jira}}.


  \ {}
  ~~ hack for a bit space

* October 25, 2012 - MyFaces Tobago 1.5.8 Released

      The MyFaces Tobago component library in version 1.5.8 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12322450}Jira}}.


  \ {}
  ~~ hack for a bit space

* July 11, 2012 - MyFaces Tobago 1.5.7 Released

      The MyFaces Tobago component library in version 1.5.7 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12321444}Jira}}.

  \ {}
  ~~ hack for a bit space

* June 27, 2012 - MyFaces Tobago 1.6.0-beta-2 Released

      The MyFaces Tobago component library in version 1.6.0-beta-2 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12321701}Jira}}.

  \ {}
  ~~ hack for a bit space

* June 6, 2012 - MyFaces Tobago 1.6.0-beta-1 Released

      The MyFaces Tobago component library in version 1.6.0-beta-1 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12321691}Jira}}.


  \ {}
  ~~ hack for a bit space

* Mai 22, 2012 - New branch created

      The 1.5.x branch has been created. The trunk is now 1.6.x.

      The new trunk contains API changes with respect to the tree.

  \ {}
  ~~ hack for a bit space

* Mai 21, 2012 - MyFaces Tobago 1.5.6 Released

      The MyFaces Tobago component library in version 1.5.6 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12321251}Jira}}.


  \ {}
  ~~ hack for a bit space

* Mai 11, 2012 - MyFaces Tobago 1.5.5 Released

      The MyFaces Tobago component library in version 1.5.5 has been released.

      Release notes can be found in
      {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319865}Jira}}.



  \ {}
  ~~ hack for a bit space

* March 5, 2012 - MyFaces Tobago 1.5.4 Released

     The MyFaces Tobago component library in version 1.5.4 has been released.

     Release notes can be found in
     {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319864}Jira}}.

  \ {}
  ~~ hack for a bit space

* February 19, 2012 - MyFaces Tobago 1.0.39 Released

     The MyFaces Tobago component library in version 1.0.39 has been released.

     Release notes can be found in
     {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319455}Jira}}.


  \ {}
  ~~ hack for a bit space

* February 15, 2012 - MyFaces Tobago 1.5.3 Released

     The MyFaces Tobago component library in version 1.5.3 has been released.

     Release notes can be found in
     {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319499}Jira}}.


  \ {}
  ~~ hack for a bit space

* January 24, 2012 - MyFaces Tobago 1.5.2 Released

    The MyFaces Tobago component library in version 1.5.2 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319248}Jira}}.


  \ {}
  ~~ hack for a bit space

* December 12, 2011 - MyFaces Tobago 1.5.1 Released

    The MyFaces Tobago component library in version 1.5.1 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12319154}Jira}}.


  \ {}
  ~~ hack for a bit space

* November 30, 2011 - MyFaces Tobago 1.5.0 Released

    The MyFaces Tobago component library in version 1.5.0 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312205}Jira}}.


  \ {}
  ~~ hack for a bit space

* November 9, 2011 - MyFaces Tobago 1.5.0-beta-2 Released

    The MyFaces Tobago component library in version 1.5.0-beta-2 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12317052}Jira}}.


  \ {}
  ~~ hack for a bit space

* October 23, 2011 - MyFaces Tobago 1.0.38 Released

    The MyFaces Tobago component library in version 1.0.38 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12317350}Jira}}.


  \ {}
  ~~ hack for a bit space

* July 14, 2011 - MyFaces Tobago 1.5.0-beta-1 Released

    The MyFaces Tobago component library in version 1.5.0-beta-1 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12316222}Jira}}.


  \ {}
  ~~ hack for a bit space

* July 14, 2011 - MyFaces Tobago 1.0.37 Released

    The MyFaces Tobago component library in version 1.0.37 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12316458}Jira}}.

  \ {}
  ~~ hack for a bit space

* Mai 13, 2011 - MyFaces Tobago 1.0.36 Released

    The MyFaces Tobago component library in version 1.0.36 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12316297}Jira}}.

  \ {}
  ~~ hack for a bit space

* March 13, 2011 - MyFaces Tobago 1.0.35 Released

    The MyFaces Tobago component library in version 1.0.35 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12316183}Jira}}.

  \ {}
  ~~ hack for a bit space

* February 23, 2011 - MyFaces Tobago 1.5.0-alpha-2 Released

    The MyFaces Tobago component library in version 1.5.0-alpha-2 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12314340}Jira}}.


  \ {}
  ~~ hack for a bit space

* February 23, 2011 - MyFaces Tobago 1.0.34 Released

    The MyFaces Tobago component library in version 1.0.34 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12316162}Jira}}.


  \ {}
  ~~ hack for a bit space

* February 8, 2011 - MyFaces Tobago 1.0.33 Released

    The MyFaces Tobago component library in version 1.0.33 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315586}Jira}}.

  \ {}
  ~~ hack for a bit space

* November 30, 2010 - MyFaces Tobago 1.0.32 Released

    The MyFaces Tobago component library in version 1.0.32 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315489}Jira}}.

  \ {}
  ~~ hack for a bit space

* November 4, 2010 - MyFaces Tobago 1.0.31 Released

    The MyFaces Tobago component library in version 1.0.31 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315383}Jira}}.

  \ {}
  ~~ hack for a bit space

* October 6, 2010 - MyFaces Tobago 1.0.30 Released

    The MyFaces Tobago component library in version 1.0.30 has been released.

    Release notes can be found in
    {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315336}Jira}}.

  \ {}
  ~~ hack for a bit space

* September 23, 2010 - MyFaces Tobago 1.0.29 Released

   The MyFaces Tobago component library in version 1.0.29 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315262}Jira}}.

  \ {}
  ~~ hack for a bit space

* August 18, 2010 - MyFaces Tobago 1.0.28 Released

   The MyFaces Tobago component library in version 1.0.28 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315109}Jira}}.

  \ {}
  ~~ hack for a bit space

* June 7, 2010 - MyFaces Tobago 1.0.27 Released

   The MyFaces Tobago component library in version 1.0.27 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12315099}Jira}}.

  \ {}
  ~~ hack for a bit space

* June 4, 2010 - MyFaces Tobago 1.0.26 Released

   The MyFaces Tobago component library in version 1.0.26 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12314961}Jira}}.

  \ {}
  ~~ hack for a bit space

* May 1, 2010 - MyFaces Tobago 1.0.25 Released

   The MyFaces Tobago component library in version 1.0.25 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12314527}Jira}}.

  \ {}
  ~~ hack for a bit space

* January 22, 2010 - MyFaces Tobago 1.0.24 Released

   The MyFaces Tobago component library in version 1.0.24 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12314193}Jira}}.

  \ {}
  ~~ hack for a bit space

* September 6, 2009 - MyFaces Tobago 1.0.23 Released

   The MyFaces Tobago component library in version 1.0.23 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12314159}Jira}}.

  \ {}
  ~~ hack for a bit space

* August 16, 2009 - MyFaces Tobago 1.0.22 Released

   The MyFaces Tobago component library in version 1.0.22 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12314027}Jira}}.

  \ {}
  ~~ hack for a bit space

* June 12, 2009 - MyFaces Tobago 1.0.21 Released

   The MyFaces Tobago component library in version 1.0.21 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12313470}Jira}}.

  \ {}
  ~~ hack for a bit space

* October 26, 2008 - MyFaces Tobago 1.0.20 Released

   The MyFaces Tobago component library in version 1.0.20 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12313447}Jira}}.

  \ {}
  ~~ hack for a bit space

* October 6, 2008 - MyFaces Tobago 1.0.19 Released

   The MyFaces Tobago component library in version 1.0.19 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12313372}Jira}}.

  \ {}
  ~~ hack for a bit space

* August 26, 2008 - MyFaces Tobago 1.0.18 Released

   The MyFaces Tobago component library in version 1.0.18 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12313150}Jira}}.

  \ {}
  ~~ hack for a bit space

* May 20, 2008 - MyFaces Tobago 1.0.17 Released

   The MyFaces Tobago component library in version 1.0.17 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12313084}Jira}}.

  \ {}
  ~~ hack for a bit space

* April 16, 2008 - MyFaces Tobago 1.0.16 Released

   The MyFaces Tobago component library in version 1.0.16 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312966}Jira}}.

  \ {}
  ~~ hack for a bit space

* February 18, 2008 - MyFaces Tobago 1.0.15 Released

   The MyFaces Tobago component library in version 1.0.15 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312929}Jira}}.

  \ {}
  ~~ hack for a bit space

* January 26, 2008 - MyFaces Tobago 1.0.14 Released

   The MyFaces Tobago component library in version 1.0.14 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312878}Jira}}.

  \ {}
  ~~ hack for a bit space

* January 11, 2008 -  1.0.x branch has been created

   Trunk is now 1.1.0-SNAPSHOT

  \ {}
  ~~ hack for a bit space

* December 18, 2007 - MyFaces Tobago 1.0.13 Released

   The MyFaces Tobago component library in version 1.0.13 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312766}Jira}}.

  \ {}
  ~~ hack for a bit space

* October 19, 2007 - MyFaces Tobago 1.0.12 Released

   The MyFaces Tobago component library in version 1.0.12 has been released.

   Release notes can be found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312498}Jira}}.

  \ {}
  ~~ hack for a bit space

* June 3, 2007 - MyFaces Tobago 1.0.11 Released

   MyFaces Tobago 1.0.11 has been released. It is available from the
   {{{./download.html}download}} page, and in the central Maven repository under
   Group ID "org.apache.myfaces.tobago".

   More information on this release, including a list of resolved issues, can be
   found in
   {{{http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&styleName=Html&version=12312376}Jira}}.

  \ {}
  ~~ hack for a bit space

* March 12, 2007 - MyFaces Tobago 1.0.10 Released

   MyFaces Tobago 1.0.10 has been released.

  \ {}
  ~~ hack for a bit space

* December 23, 2006 - MyFaces Tobago 1.0.9 Released

   MyFaces Tobago 1.0.9 has been released.

  \ {}
  ~~ hack for a bit space

* September 20, 2006 - MyFaces Tobago 1.0.8 Released

   MyFaces Tobago 1.0.8 has been released.

  \ {}
  ~~ hack for a bit space

* March 23, 2006 - Tobago Has Left Incubation

  The goal of Tobago is to provide the community with a well designed set of user
  interface components based on JSF and run on MyFaces.  Tobago is more than just a tag library,
  it contains some powerful tools for layouts and themes.  For more information, please visit
  the Tobago {{{http://myfaces.apache.org/tobago}site}}.
