Home | Back
1.1:
======
- Features:
  * Added a new QApt::Config class. It features a KConfig-like API to the APT system
    configuration, as well as provides config writing support without dumping the
    entire APT configuration settings to a file like APT does. It currently supports
    reading and writing int, bool and string settings. QApt::Backend has a
    QApt::Config instance that can be accessed by its config() method after
    initialization.
  * Added a new QApt::Hisotry class. It provides an interface to the APT history
    log(s). It provides a list of all entries in the logs, with each entry providing
    a start date, a list of packages acted upon as well as any errors that may have
    occurred during the transaction.
  * Added pretty includes in the form of <LibQApt/Include> (e.g. <LibQApt/Backend>)
  * Added a packageDownloadProgress() signal for per-package download progress reporting.
    This enables client applications to give more detailed information about
    currently-downloading packages, including parallel package downloads.
  * Added a markPackagesForAutoRemove() method that acts like apt-get autoremove,
    marking packages for removal that APT deems obsolete.
  * Added a new setUndoRedoCacheSize() function to QApt::Backend. This allows
    applications to customize the undo/redo stack size, allowing them to increase
    it if RAM usage is less of an issue, or decrease/eliminate the cache if RAM is tight.
  * Added Add a saveInstalledPackagesList() function to QApt::Backend that exports a
    list of all installed packages to the given path. This list can be ready by
    Backend::readSelections() and is fully compatible with the Synaptic Package Manager.
  * Add some new functions: recommendsList(), suggestsList(), enhancesList() and enhancedByList()
    to return QStringLists of the names of packages that have the aforementioned relational statuses
    with the Package.
  * Added an areChangesMarked() function to provide an easier/more efficient way to check if there are
    pending changes without checking the emptiness of the QApt::PackageList that
    Backend::MarkedPackages() constructs and returns.
  * API documentation updates, including making note of which functions are asynchronous
    and have signals to report events/data.
  * LibQApt now compiles with QT_NO_CAST_TO_ASCII and QT_NO_CAST_FROM_ASCII.

- Optimizations:
  * APT system initialization in Backend::init() is no longer blocking, so that you
    can paint your UI sooner to give a perception of increased speed.
  * General optimizations have been made throughout to significantly speed up
    Backend::init()
  * Speed up Package::isSupported() by making a cache of package index files to
    prevent doing a binary search for the index file from the sources list each time
    isSupported() is called.
  * Speed Package::isInstalled() up by checking for installation without calling state().
  * Added an installedCount() function that is faster than using the packageCount()
    overload function that takes a package state flag.
  * Add more efficient toInstallCount() and toRemoveCount() functions to Backend.
    These both just grab int's already cached in memory by APT, meaning that we
    don't have to iterate through every Package and get a full state reading to
    determine whether it is being installed/removed.
  * Add a more efficient latin1Section() function. to QApt::Package Since
    QLatin1String returns an empty string when it encounters null char pointers, we
    can use latin1Section() in section() to have equivalent, simpler code that still
    retains safety.
  * Improve the speed of Backend::loadSelections() by parsing selection files with
    QByteArray, as well as some other miscellaneous optimizations.
  * Change the Backend's origin/human readable name mapping to use a QHash, giving some
    minor optimizations to the originLabel() and origin() functions.
  * Add a Backend::package() overload that takes a QLatin1String. If you can use this overload,
    it is more efficient since you don't have to go QString -> ascii -> latin1 -> const char.
  * Make the regular Backend::package() implementation use the QL1S overload. This is slightly
    more efficient since we can convert directly from QString -> latin1 without converting to
    ascii in between (since APT package names will always be latin1)
  * Use the new Backend::package(QL1S) overload inside Backend::search(). the QL1S overload is
    faster in the first place, plus since Xapian gives us an std::string it is also faster to go
    to QL1S than to QString.
  * Since package names are always latin1-compliant, prevent the unnecessary conversion of const char *
    -> std::string -> QString::fromAscii -> QString::fromLatin1 by using QLatin1String to wrap around
    the const char *, making the conversion process look more like const char * -> QL1S -> QString::fromLatin1.

- Bugfixes:
  * Added a NotFound error for the QApt Batch Installer to use when it encounters
    a non-existant package. Before it was not catching this error at all and went
    straight to completion as if nothing was wrong.
  * QAptBatch: Don't say we were successful if there were errors. That looks a bit
    silly, especially when we have error dialogs to contradict ourselves.
  * Fixed a bug where installing a package locally did not make the
    xapianIndexNeedsUpdate() return true;
  * Fixed a bug where the worker would never respond to DBus requests when heavy
    load was present on the system. (BKO: #249929)
  * Fixed a bug where calling originLabel() with an origin that did not have a
    label would insert the origin into the origin map, wasting memory.
  * Fixed a blank line being snuck in to the end of lists returned by the
    Package::installedFilesList() function
  * Fix a potential problem with homepage URLs with UTF8 characters not displaying correctly.
  * Fix a small memory leak in PackagePrivate. We had a pointer that we allocate to in the
    Package constructor which we weren't deleting in the PackagePrivate destructor
  * Compile with -fvisibility=hidden by default so that libqapt doesn't expose
    symbols from libraries it links against, making life easier for packagers
    everywhere.

- Other
  * Documentation for the detail QVariantMaps of ErrorCodes, WarningCodes and
    WorkerQuestions is now provided, whereas they were completely undocumented
    in previous releases.

1.0.4:
======
- Bugfixes:
  * Respect preference files in the /etc/apt/preferences.d/ dir, and not just the
    /etc/apt/preferences file itself
  * Catch and report initialization errors in places we were missing for
  * Report that package state has changed when loading selection files

1.0.3:
======
- Bugfixes:
  * Implementing proper locking, fixing the "Doesn't respect APT system locks" bug

1.0.2:
======
- Bugfixes:
  * QAptBatch: Set the focus to the appropriate button for each mode

1.0.0:
====
* Initial release