---
rel_ver: 0.7.5
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.7.5</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-7'>NLPCRAFT-7</a> - Need to add list of complex <a href="/intent-matching.html">IDL</a> examples to a cheat-sheet.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-69'>NLPCRAFT-69</a> - Create CI builds for different OS/JDK.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-91'>NLPCRAFT-91</a> - Create Kotlin-based example for NLP-enabling Minecraft game.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-195'>NLPCRAFT-195</a> - Produce comparative analysis.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-206'>NLPCRAFT-206</a> - Improve intent and token <a href="/intent-matching.html">IDL</a>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-231'>NLPCRAFT-231</a> - Intent should be able to match on model metadata.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-234'>NLPCRAFT-234</a> - Add metadata to NCUser and NCCompany &amp; update DB.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-236'>NLPCRAFT-236</a> - Add "nestedOnly" flag to model element and "isTopLevel" to <code>NCToken</code> interface.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-251'>NLPCRAFT-251</a> - We need to make macro processor available for the models generated by code.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-252'>NLPCRAFT-252</a> - Update docs for new macro DSL &amp; <a href="/intent-matching.html">IDL</a>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-253'>NLPCRAFT-253</a> - LightSwitch example works very slow - some samples take &gt; 1.5s to be processed.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-254'>NLPCRAFT-254</a> - We need to support *.nc files that would include intent and predicate <a href="/intent-matching.html">IDL</a> declarations.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-255'>NLPCRAFT-255</a> - We need ability to put intents and fragments in a separate file(s) *.nc referenced in the model.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-256'>NLPCRAFT-256</a> - Intent <a href="/intent-matching.html">IDL</a> fragment must be paramerterized with JSON parameters.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-259'>NLPCRAFT-259</a> - NCIntent should be applicable on class level.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-263'>NLPCRAFT-263</a> - Callback method should support multiple intents attached to it.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-265'>NLPCRAFT-265</a> - Check that the same callback is not reused my multiple intents.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-266'>NLPCRAFT-266</a> - NCIntent annotation should be applicable to model class as well.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-270'>NLPCRAFT-270</a> - All project templates should be fixed according to new <a href="/intent-matching.html">IDL</a> syntax.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-272'>NLPCRAFT-272</a> - Test for user and company metadata usage.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-275'>NLPCRAFT-275</a> - Rename DSL to NLPCraft <a href="/intent-matching.html">IDL</a>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-281'>NLPCRAFT-281</a> - Add term-scoped variables to <a href="/intent-matching.html">IDL</a>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-282'>NLPCRAFT-282</a> - NCMetaSpec passes individually, but fails in a suite.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-283'>NLPCRAFT-283</a> - Need to test user-defined term and flow predicate.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-290'>NLPCRAFT-290</a> - Tests hang under Ubuntu on "verify" phase.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-300'>NLPCRAFT-300</a> - Move external configuration to a special tag on github away from master.</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-144'>NLPCRAFT-144</a> - Ping time too long.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-213'>NLPCRAFT-213</a> - SQL example database.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-227'>NLPCRAFT-227</a> - Examples should be moved to special module.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-232'>NLPCRAFT-232</a> - Token <a href="/intent-matching.html">IDL</a> should support user data and user request data.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-238'>NLPCRAFT-238</a> - We have to allow to override some model properties in model elements.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-240'>NLPCRAFT-240</a> - Intents annotations should be scanned not in the model class only, but in the its parent classes too.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-247'>NLPCRAFT-247</a> - Synonyms <a href="/intent-matching.html">IDL</a> improvements.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-248'>NLPCRAFT-248</a> - "Flow" intent parameter logic.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-249'>NLPCRAFT-249</a> - Direct synonyms should have higher priority comparing to artificial.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-250'>NLPCRAFT-250</a> - Support "any word" in <a href="/intent-matching.html">IDL</a>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-257'>NLPCRAFT-257</a> - <code>NCUser</code>, <code>NCCompany</code> and <code>NCConversation</code> should use metadata.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-261'>NLPCRAFT-261</a> - Sentences collapsing performance improvement.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-267'>NLPCRAFT-267</a> - <a href="/intent-matching.html">IDL</a> synonyms processing refactoring.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-274'>NLPCRAFT-274</a> - Log output data format.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-278'>NLPCRAFT-278</a> - NLPCraft <a href="/intent-matching.html">IDL</a> functions.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-279'>NLPCRAFT-279</a> - NLPCraft <a href="/intent-matching.html">IDL</a> tokens functions renaming.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-287'>NLPCRAFT-287</a> - "jiggleFactor" and "permutateSynonyms" default values.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-289'>NLPCRAFT-289</a> - Add new <a href="/intent-matching.html">IDL</a> function any() which always return true.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-302'>NLPCRAFT-302</a> - Processing error when <code>NCIntentRef</code> or0 <code>NCIntentSample</code> used with static methods.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-305'>NLPCRAFT-305</a> - Build procedure fixes.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-307'>NLPCRAFT-307</a> - Add info about minecraft gradle wrapper jars to readme.md.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-308'>NLPCRAFT-308</a> - Fix gradle warnings in module minecraft-mod.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-310'>NLPCRAFT-310</a> - Minecraft example kotlin warnings.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-311'>NLPCRAFT-311</a> - Default probe model started from <a href="/tools/script.html">CLI</a> seems strange.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-312'>NLPCRAFT-312</a> - <a href="/tools/script.html">CLI</a> - server and probe version info should be added.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-313'>NLPCRAFT-313</a> - Generated from <a href="/tools/script.html">CLI</a> project templates updated.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-314'>NLPCRAFT-314</a> - <code>NCMinecraftFilesDump</code> improvements.</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-218'>NLPCRAFT-218</a> - Suggestions tool logic.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-230'>NLPCRAFT-230</a> - Kotlin example failure.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-233'>NLPCRAFT-233</a> - SQL model error.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-235'>NLPCRAFT-235</a> - We need to warn users about "suspicious" synonyms, like "table?" instead of {table|*}.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-237'>NLPCRAFT-237</a> - Intents matching issues.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-246'>NLPCRAFT-246</a> - The probe returns empty variants for some elements configurations.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-258'>NLPCRAFT-258</a> - Invalid part types of complex elements.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-260'>NLPCRAFT-260</a> - Invalid sentence variants detected.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-262'>NLPCRAFT-262</a> - NPE in <a href="/tools/script.html">CLI</a> when no .nlpcraft exists</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-268'>NLPCRAFT-268</a> - Similar sentences (with different &#39;direct&#39; synonyms values property) processed incorrectly.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-269'>NLPCRAFT-269</a> - <a href="/tools/script.html">CLI</a> cannot recognize server state.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-276'>NLPCRAFT-276</a> - NlpCraft <a href="/intent-matching.html">IDL</a> functions processing error.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-277'>NLPCRAFT-277</a> - Redundant tokens variants processed.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-286'>NLPCRAFT-286</a> - "swearWords" configuration property usage.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-291'>NLPCRAFT-291</a> - <code>NCModelView.getMetadata()</code> vs. <code>NCMetadata.getMetadata()</code>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-292'>NLPCRAFT-292</a> - <code>NCLogHolder</code> class still has TODOs that affect the logic.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-293'>NLPCRAFT-293</a> - Remove or rename and refactor <code>NCJiggleSpec</code>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-294'>NLPCRAFT-294</a> - Token property <code>nlpcraft:nlp:sparsity</code> has invalid (int) type. Must be <code>boolean</code>.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-295'>NLPCRAFT-295</a> - Solver processing error</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-301'>NLPCRAFT-301</a> - NLPCraft <a href="/tools/script.html">CLI</a> does not show model ID (only model classes).</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-304'>NLPCRAFT-304</a> - Both server and probe must be to load config a) from URL, b) absolute path, and c) resource or classloader.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-306'>NLPCRAFT-306</a> - When probe and server have diff versions - probe does not shutdown properly (hangs).</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-315'>NLPCRAFT-315</a> - Probe config can be overridden.</li>
        <li><a target="jira" href='https://issues.apache.org/jira/browse/NLPCRAFT-316'>NLPCRAFT-316</a> - Rat plugin errors during release preparing.</li>
    </ul>
</section>


