# Corresponding Sources for Thaluna's Copyleft Components

These source archives accompany the Windows Full and Demo builds in
`_internal/third_party/copyleft/`. The exact versions and SHA-256 hashes are
listed in `manifest.json`. The original archives retain their license texts,
copyright notices and build files. Thaluna has not modified these libraries.

Qt 6.9.2 modules actually retained in the release are supplied by qtbase,
qtimageformats, qtmultimedia and qtsvg. The single Qt for Python 6.9.2 source
archive covers PySide6, PySide6_Essentials, PySide6_Addons and shiboken6.
The qtmultimedia archive does not replace the separate FFmpeg source bundle in
`../ffmpeg/`.

The Python sources cover chardet 5.2.0 (LGPL-2.1-or-later), certifi 2025.8.3
(MPL-2.0) and tqdm 4.67.1 (MPL-2.0 and MIT notices). They are included because
their code is actually present in the frozen distribution. PyInstaller collects
chardet as external `.py` files under `_internal/chardet/`, not inside the EXE's
PYZ archive, so a compatible modified copy can be installed in its place.

Shapely 2.1.2 includes GEOS 3.13.1 and its C API as separate DLLs in
`_internal/Shapely.libs/`. GEOS is LGPL-2.1-or-later. The original GEOS
3.13.1 source archive, including its build scripts and license, is here as
`archives/geos-3.13.1.tar.bz2`. To use a modified GEOS, build ABI-compatible
Windows `geos` and `geos_c` DLLs from that archive, replace the two GEOS DLLs
in `_internal/Shapely.libs/` while Thaluna is closed, and restart. Shapely's
binary modules import those DLLs dynamically. No signature check prevents
replacement. The two DLL filenames must remain unchanged for the bundled
Shapely binary modules to locate them.

NumPy 2.1.2 and SciPy 1.16.2 each distribute an OpenBLAS DLL with parts of
the GCC libgfortran runtime statically linked. Their wheel license texts
are retained in `../openblas/`. The OpenBLAS Windows builds use GCC 10.3.0,
as recorded by SciPy's build configuration and the upstream build workflow.
The GCC 10.3.0 archive here supplies relevant runtime source, GPL-3.0 and
GCC Runtime Library Exception 3.1 texts. This is separate from Paddle's
GCC 6.2.0 DLLs and source archive.

The lxml 6.1.0 Windows extensions statically include GNU libiconv 1.17
(LGPL-2.1-or-later). The original lxml source distribution includes generated
C extension sources and build scripts. This bundle provides both the lxml
6.1.0 and libiconv 1.17 archives. To replace libiconv with a modified version,
build it for Windows, rebuild lxml 6.1.0 from these sources against the
modified library and ABI-compatible libxml2/libxslt, then replace the lxml
`.pyd` modules in `_internal/lxml/` while Thaluna is closed. No signature
check prevents replacement. Two optional lxml Schematron extraction XSL
files, `RNG2Schtrn.xsl` and `XSD2Schtrn.xsl`, are omitted from runtime files
because Thaluna does not use them and upstream marks them unlicensed. They
remain part of the unmodified original lxml source archive.

PaddlePaddle GPU 3.0.0 supplies three additional MinGW DLLs in
`_internal/paddle/libs/`: GCC 6.2.0 `libgcc_s_seh-1.dll` and
`libgfortran-3.dll` (GPL-3.0-or-later with Runtime Library Exception 3.1),
and `libquadmath-0.dll` (GNU Library GPL v2-or-later). The GCC 6.2.0 archive
contains their source, `COPYING3`, `COPYING.RUNTIME`, and
`libquadmath/COPYING.LIB`. The MinGW-w64 v5 source archive covers the Windows
runtime portions. The DLLs are separate and may be replaced by compatible
modified versions; Thaluna imposes no runtime signature check on them.
The three Paddle DLLs were compared byte-for-byte with the official
`x86_64-6.2.0-release-win32-seh-rt_v5-rev1.7z` MinGW-w64 toolchain at
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/6.2.0/threads-win32/seh/ .
That archive's SHA-256 is
`5dc4b62038f5062f7239c99ab7b7d51a40cb6e482944fdaaf4e16d235492f9f4`.
The GCC source archive's SHA-512 also matched the GCC project's release sum.

## Using a modified Qt/PySide6 library

The Windows release uses separate DLL and `.pyd` libraries in
`_internal/PySide6/` and `_internal/shiboken6/`. The LGPL permits replacing
these with compatible modified builds. Build the relevant upstream Qt module
from these sources using the included CMake build files and a compatible
Windows C++ toolchain, then build the matching PySide6/Shiboken bindings using
the source archive's build instructions. Shut down Thaluna, back up the
original DLL/`.pyd` files, install your ABI-compatible replacements in the
same locations, and restart the program. No signature or license key blocks
replacement. The EULA expressly permits reverse engineering of Thaluna to
debug changes to the LGPL libraries.

For build options and toolchain requirements, see the upstream `README` and
build instructions within each source archive. Thaluna does not provide or
require a proprietary Qt toolchain. FFmpeg replacement and provenance are
documented separately in `../ffmpeg/README.md`.

These are source materials for the libraries, not Thaluna application source.
If you need a replacement copy of the exact source archives, contact
thaluna.dev@gmail.com. Thaluna.Dev will provide them electronically at no
charge for at least three years after the distribution of this release.
