---
rel_ver: 0.5.0
layout: release-notes
---

<!--
 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.
-->

<section id="new">
    <h2 class="section-title">🙌 New</h2>
    <ul>
        <li>
            Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-13">Issue #13</a>.
            <p>
                Finished migration to ASF infrastructure.
            </p>
        </li>
    </ul>
</section>
<section id="enhancements">
    <h2 class="section-title">🤖 Enhancements</h2>
    <ul>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-29">Issue #29</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-27">Issue #27</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-28">Issue #28</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-25">Issue #25</a>.</li>
    </ul>
</section>
<section id="fixes">
    <h2 class="section-title">🧐 Fixes</h2>
    <ul>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-2">Issue #2</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-4">Issue #4</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-16">Issue #16</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-18">Issue #18</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-19">Issue #19</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-21">Issue #21</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-22">Issue #22</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-25">Issue #24</a>.</li>
        <li>Fixed <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues/NLPCRAFT-26">Issue #26</a>.</li>
    </ul>
</section>

