######################
HOOPS Publish 2024.7.0
######################

API Changes
===========

.. _rn_api_202470_license:

Deprecation: Removal of ``HOOPS_LICENSE``
-----------------------------------------

As of this release, the automatic inclusion of the *hoops_license.h* header file from HOOPS Publish headers is deprecated.
**This change will take effect in the upcoming release, HOOPS Publish 2024.8.0.**

The *hoops_license.h* file contains the macro definition ``HOOPS_LICENSE`` used to pass the license key when initializing HOOPS Publish via the function :cpp:func:`A3DLicPutUnifiedLicense`.
This change removes the automatic definition of ``HOOPS_LICENSE`` when including HOOPS Publish header files.

As a reminder, license initialization is currently handled as follows:

.. code-block:: c

   A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE);

While no code changes are required until the 2024.8.0 release, it is possible to prepare for this change by migrating now.
The following migration guide is valid starting with the 2024.7.0 release.

To initialize HOOPS Publish correctly, you now have **three** options:

.. rubric:: 1. Explicitly Include *hoops_license.h*

You can still explicitly include *hoops_license.h* in your source code:

.. code-block:: c

   #include <hoops_license.h>

   // ...

   A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE);

.. rubric:: 2. Manually Define ``HOOPS_LICENSE``

Alternatively, you can manually define the ``HOOPS_LICENSE`` macro in your source code before calling :cpp:func:`A3DLicPutUnifiedLicense`:

.. code-block:: c

   #define HOOPS_LICENSE "Enter the license key"

   // ...

   A3DStatus result = A3DLicPutUnifiedLicense(HOOPS_LICENSE);

This approach eliminates the need to include *hoops_license.h* entirely.

.. rubric:: 3. Pass the License Key Directly

Finally, you can pass the license key directly as a string when calling :cpp:func:`A3DLicPutUnifiedLicense`:

.. code-block:: c

   A3DStatus result = A3DLicPutUnifiedLicense("Enter the license key");

This method eliminates the need for both the macro definition and the inclusion of *hoops_license.h*.

For more information, please refer to our :doc:`/guide/basic_operations/initialize-hoops-exchange` guide and our :doc:`/tutorials/environment-setup` tutorial.

Documentation Update
====================

HOOPSY
------

We are excited to introduce **HOOPSY** our new Documentation AI assistant, now available for HOOPS Exchange and Publish users. This tool leverages advanced AI capabilities to help you find relevant information quickly and efficiently, providing on-demand, multilingual support for your documentation needs.

.. rubric:: Key Features

- **Natural Language Processing (NLP):**  
  The assistant understands your queries in everyday language, delivering precise and contextually relevant answers.

- **Comprehensive Documentation Search:**  
  Searches across the HOOPS Exchange and Publish documentation to retrieve the most relevant pages, ensuring you get accurate information for your queries.

- **Reference Links:**  
  Offers direct links to the original documentation, enabling deeper exploration and providing full context to enhance understanding.

- **Conversation Sharing:**  
  Easily share your AI assistant conversations with others for collaborative troubleshooting and knowledge sharing.

- **Multilingual Support:**  
  Supports multiple languages to cater to a global user base, allowing you to interact with the assistant in your preferred language.

- **Continuous Learning:**  
  The AI assistant continuously improves its responses based on user interactions, ensuring it becomes more helpful over time.

API Deprecation
===============

As a reminder these functions and structures are deprecated and will be removed in future versions of HOOPS Publish, at the latest in HOOPS Publish 2025:

- :cpp:func:`A3DPDF3DArtworkCreate`
- :cpp:func:`A3DPDFAnimMotionCreate`
- :cpp:func:`A3DPDFDefineSlideTable2`
- :cpp:func:`A3DPDFDefineSlideTable`
- :cpp:func:`A3DPDFDefineViewCarousel`
- :cpp:func:`A3DPDFDocumentAddImageAsIcon`
- :cpp:func:`A3DPDFDocumentAppendNewPage`
- :cpp:func:`A3DPDFDocumentAppendPageFromPDFFile`
- :cpp:func:`A3DPDFDocumentCreateUniquePage2`
- :cpp:func:`A3DPDFDocumentCreateUniquePage`
- :cpp:func:`A3DPDFDocumentGetUniquePage`
- :cpp:func:`A3DPDFDocumentSave`
- :cpp:func:`A3DPDFDocumentSetDocumentPermissions`
- :cpp:func:`A3DPDFDocumentSetPassword`
- :cpp:func:`A3DPDFImageCreate`
- :cpp:func:`A3DPDFInitializePDFLib`
- :cpp:func:`A3DPDFPageInsertImage`
- :cpp:func:`A3DPDFSlideTableLinkTo3DNodes`
- :cpp:struct:`A3DPDF3DArtworkData`
- :cpp:struct:`A3DPDFAnimMotionData`
- :cpp:struct:`A3DPDFImageData`
- :cpp:struct:`A3DPDFPageData`

Fixed Bugs
==========

.. csv-table::
   :header: "Issue", "Description"

   "SDHP-2857", "Fixed issue while converting PDF with attachment to monolithic HTML"
   "SDHP-2780", "Updated Zlib dependency to 1.3.1"

