---
rel_ver: 0.8.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="overview">
    <h2 class="section-title">Overview <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
    <p>
        <a href="/download.html">NLPCraft 0.8.0</a> brings about several important bug fixes, improvements and enhancements.
    </p>
</section>
<section id="new">
    <h2 class="section-title">🙌 New <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
    <ul>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-109'>NLPCRAFT-109</a> - <code>prepare.{sh|cmd}</code> and <code>start_server.{cmd|sh}</code> don't work when invoked from other directories.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-129'>NLPCRAFT-129</a> - Improve logging of intent and variant weights.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-271'>NLPCRAFT-271</a> - Tests should be called for all supported databases (DB schema changed).</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-319'>NLPCRAFT-319</a> - REST properties parameters.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-320'>NLPCRAFT-320</a> - All methods which convert JSON should throw <code>NCException</code>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-323'>NLPCRAFT-323</a> - Account for metadata in <code>NCResult</code> in REST API and SQL, if necessary.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-328'>NLPCRAFT-328</a> - 'Release' branch should be added or doc should be updated.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-329'>NLPCRAFT-329</a> - Add min Java/Scala version to download and README.</li>
    </ul>
</section>
<section id="enhancements">
    <h2 class="section-title">🤖 Enhancements <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
    <ul>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-36'>NLPCRAFT-36</a> - Support 2 different test folders (scala and java).</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-184'>NLPCRAFT-184</a> - Java client JAR names should be prefixed like JARs in main NLPCraft project.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-245'>NLPCRAFT-245</a> - Java client external resource manager should have link to some "frozen" tag, but not master.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-303'>NLPCRAFT-303</a> - Connection established too long time.</li>
    </ul>
</section>
<section id="fixes">
    <h2 class="section-title">🧐 Fixes <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
    <ul>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-76'>NLPCRAFT-76</a> - Test failure on Windows.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-321'>NLPCRAFT-321</a> - Dialog flow item is missing intent result.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-322'>NLPCRAFT-322</a> - <code>NCResult</code> must extend <code>NCMedata</code>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-327'>NLPCRAFT-327</a> - NLPCraft build fails as sometimes the <code>.nlpcraft</code> directory is not auto-created</li>
    </ul>
</section>


