Fri Sep 18 2026 Todd Allen <todd.allen@etallen.com>
	* Released 2.2.

Fri Sep 18 2026 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Force loading of filelists along with otherdata
	  during "Setting up Repos".

Tue Sep 15 2026 Todd Allen <todd.allen@etallen.com>
	* Support for building with Qt6, if that is available, including new
	  methods for determining screen geometry, QRegExp->QRegularExpression,
	  QMessageBox statics.

Wed Sep  2 2026 Todd Allen <todd.allen@etallen.com>
	* Support RHEL10 & similar:
	* Makefile, mimeviewer, changelog2rpm, nuu.proto.spec: fgrep -> grep -F,
	  egrep -> grep -E.
	* Makefile: Recognize /etc/redhat-release for Rocky Linux.
	* Makefile: Add check for python 3.12.
	* Makefile: Workaround `uname -i` returning "unknown".
	* Makefile: Changed perms for nuu.desktop: 755 -> 644.
	* Makefile: avoid -L/usr/lib64 and -Wl,-rpath,/usr/lib64 to placate
	  rpmbuild.
	* Makefile: Corrected to use new pam config file on rhel10.
	* nuu.proto.spec: Widen supported dnf version up to dnf-4.20.
	* nuu.proto.spec: Add expectation for python 3.12.
	* nuu.proto.spec: Added missing BuildRequires: for lib{SM,ICE}-devel &
	  {freetype,fontconfig}-devel.
	* nuu.proto.spec: Skip inkscape dependency on rhel10, which removed it.
	* icons/Makefile, pixmaps/Makefile: Use inkscape flatpak or AppImage on
	  rhel10.

Wed May 31 2023 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.8.

Wed May 31 2023 Todd Allen <todd.allen@etallen.com>
	* nuu.proto.spec: Add expectation for python 3.9, and changed Requires:
	  to xdg-utils (for /usr/bin/xdg-open) instead of GConf2 (for
	  /usr/bin/gconftool-2).  The former usually is installed already.
	  They are used by the mimeviewer & webbrowser scripts.
	* Added more BuildRequires for commonly missing devel packages.

Tue May 30 2023 Todd Allen <todd.allen@etallen.com>
	* Various changes to build cleanly with Qt 5.15, and with no deprecation
	  warnings.  Common issues were determining screen geometries &
	  heuristics using font widths.
	* GeneralTip.c: disable warnings for isVirtualDesktop() & screenNumber(),
	  just like QToolTip itself does!
	* Python.c: PyEval_InitThreads() is deprecated & unnecessary
	  (python >= 3.7)
	* Python.c: PyEval_CallObject -> PyObject_CallObject (python >= 3.9)
	* YumIO.c: PyUnicode_GetSize -> PyUnicode_GET_LENGTH (python >= 3.3)
	* nuu.proto.spec: Allow dnf to be upgraded to 4.14, after confirming no
	  incompatibilities exist with NUU.

Tue Oct  5 2021 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.7.

Tue Oct  5 2021 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: In verifyLocalPkg, capture ValueError exceptions and report
	  the offending package name.
	* Package.h: Added STATE_IMAGE macro for use in debug code in YumIO.c.
	* YumIO.c: In collectSet, do not use the Package::Entry*& to walk the
	  list of chained packages.  Because it's a reference, that modifies
	  the chain!  Instead, use a Package::Entry* copy of the variable.  This
	  was a regression appearing in 2.1.5, affecting packages that had two
	  copies installed (e.g. kernel, kernel-core, etc.) and an available
	  update.

Mon Sep 27 2021 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.6.

Mon Sep 27 2021 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Disable loading of 'other' metadata (i.e. changelogs)
	  for rhel-.*-for-.*-baseos-rpms repos.  They have been observed to have
	  absurdly large 'other' metadata, e.g. 2.3GB, and this causes a
	  SIGSEGV in libsolv.so.  Hopefully this is just temporary.

Fri Sep 17 2021 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.5.

Thu Sep 16 2021 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch]: Added findUpdateablePackage, which looks up both the given
	  architecture, but also "noarch", which now is considered a compatible
	  upgrade for any architecture (not just the canonical architecture).
	  This is called from collectSet, listTransaction, and rpmtransProgress.
	* YumIO.c: Added further sanity checks for failed hash[] lookups which
	  resulted in NULL results.  These should be unnecessary, but has the
	  potential to prevent a SIGSEGV on an internal error.
	* python/YumIO.py: Workaround a bug in dnf.Base.package_upgrade that
	  prevents upgrades to 'noarch' packages from architecture-specific
	  installed packages: use dnf.Base.upgrade instead.

Wed Aug 18 2021 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.4.

Tue Aug 17 2021 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: In pyLongDec, eliminate DeprecationWarning in python3.9 from
	  attempts to call pyLong_AsLong() on a python float object, such as a
	  payload object's download_size.
	* nuu.proto.spec: Allow dnf to be upgraded to 4.8, after confirming no
	  incompatibilities exist with NUU.
	* Repo.h, RepoEditorConfig.[ch], RepoBrowser.c, RepoAuthDialog.[ch],
	  RepoAuthChecker.c, PackageTableDescribeInstanceRepoDialog.c,
	  YumConfIO.c: Separated metalink into its own fields like url &
	  mirrorListUrl, so that it no longer is just a random option.
	* YumIO.c: Protect pyTime & pyTimeDec from NULL arguments.
	* YumIO.c: In simpleString, handle NULL return values better by also
	  calling PyErr_Clear() to provide cascade errors.  In particular, this
	  happened for the now-omitted buildhost in the package describe dialog.
	* YumIO.c: In getInstallTime(), sanity check the value for time 0, and
	  declined to report the nonsense time.
	* PackageTableDescribeInstanceArea.c: Add Install Time for non-primary
	  entries (i.e. the already installed packages for updatable packages).

Mon Aug 16 2021 Todd Allen <todd.allen@etallen.com>
	* icons/Makefile, pixmapsMakefile: Support building with inkscape-1.1.
	* RepoEditorConfig.c: Change yum => dnf.
	* YumConfIO.[ch]: Change yum => dnf.
	* nuu.man: Change yum => dnf.
	* YumConfIO.c: Change /etc/yum.conf => /etc/dnf/dnf.conf.
	* YumConfIO.c: Fixed physicalLine[0] reference in potentially empty line.

Fri Aug 13 2021 Todd Allen <todd.allen@etallen.com>
	* nuu.proto.spec: For upper bound version requirements, append .999
	  instead of .9.  This is so versions like python3-3.6.9 or higher are
	  considered valid when the expected pyver is 3.6.
	* Makefile: Support building with python3.9.
	* Makefile: Change DISTRO space checking hack, which no longer works
	  on Fedora 34.  Just use grep instead.

Thu Mar 12 2020 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.3.

Fri Mar  6 2020 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.ph: Add a YumIOHandler and use it in place of the standard
	  dnf stdout/stderr handlers.  This allows capturing logging information
	  that otherwise was hidden from NUU.
	* python/YumIO.ph: Elevate DEBUG output saying "Cannot download" to
	  the ERROR severity, because that information is crucial in figuring out
	  problems.
	* YumIO.[ch]: Also stash output into ts.descr from the log() function so
	  that queries like the GPG key installation are captured with the new
	  YumIOHandler.
	* YumIO.[ch]: Add a new ts.during flag to avoid stashing ts.descr
	  descriptions when not performing a transaction.
	* YumIO.[ch], YumIOC.c: Add a warnlog() function to record warnings with
	  kind WARNING.
	* LogWindow.[ch]: Create a new DetailSpinBox with descriptions for each
	  of the detail levels, and restrict it to the actual 0-6 level range.
	* RepoBuffet.c: Add a second syntax for buffet user/password detection,
	  which reflects the new rhel/User=name/Password=secret/pathname syntax
	  required with dnf-4.2.
	* Password{Text,Line}Edit.c: Because the RepoBuffet regexp's now have
	  alternatives, walk all the captures when hiding passwords.
	* PasswordTextEdit.c: added WrapAnywhere to prevent word wrapping on
	  host names with dashes.

Fri Oct 25 2019 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.2.
	* YumIO.[ch]: In tsDownloadProgress, detect unexpected MDPayload progress
	  indications, and ignore them.  Also, detect any other progress
	  indication other than RPMPayload and issue warnings about it.  Finally,
	  detect any payload in excess of the number of expected payloads, issue
	  an error about it, and survive it.

Wed Oct 23 2019 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.1.
	* Makefile: Removed version from DOCDIR to conform to RHEL/CentOS 8.
	* mimeviewer: Use xdg-open if it's available.
	* mimeviewer: Added evince as preferred fallback pdf viewer.
	* webbrowser: Use xdg-open if it's available.
	* webbrowser: Added firefox fallback preferred over mozilla.
	* nuu.c: Wrote XdgRuntimeDirEnsurer to create directory and set
	  XDG_RUNTIME_DIR to its pathname, so that Qt libraries wouldn't
	  complain about its absence.

Fri Oct 18 2019 Todd Allen <todd.allen@etallen.com>
	* Released 2.1.

Mon Oct  7 2019 Todd Allen <todd.allen@etallen.com>
	* Progress.c: Added logic to track REVERSE progress situations.  They do
	  happen, but they reflect the metadata download information coming
	  (very) indirectly out of libcurl.

Tue Oct  1 2019 Todd Allen <todd.allen@etallen.com>
	* Released 2.0.2.beta.

Mon Sep 30 2019 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Adding initOrReset call to exception case in apply.

Fri Sep 27 2019 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Adding initOrReset call to reset() after Cache->Clean.
	  initOrReset() is a new function with the calls common to both the
	  __init__ and reset functions.

Fri Sep 27 2019 Todd Allen <todd.allen@etallen.com>
	* Released 2.0.1.beta.
	* Added missing features: groups, presto/deltarpm, Cache->Clean
	* Rewrote code which interprets package installs/upgrades/etc.
	* Rewrote code which interprets rpm payload downloads.
	* Fixed bug: incorrect progress information when rpm files are cached.
	* Fixed bug: missing Describe window fields.

Thu Sep  5 2019 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch], PackageTableDescribeInstanceArea.c: Corrected missing
	  package fields, and added new weak dependencies.

Thu Aug 29 2019 Todd Allen <todd.allen@etallen.com>
	* Released 2.0.0.alpha.
	* This version is missing features, including: groups, presto/deltarpm,
	  Cache->Clean; and has known bugs, including: incorrect progress
	  information when rpm files are cached, and some missing Describe window
	  fields.
	* Major rework based on dnf.  This version drops support for yum
	  entirely.  (NUU 1.x will remain a legacy branch for yum-based systems.)

Tue Mar  5 2019 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.8.
	* ScrollableConfirmDialog.[ch], YumIODialogs.[ch],
	  YumIODialogsMinion.[ch]: Added generalized confirm queries.
	* YumIO.[ch], YumIOC.c, python/YumIO.py: Expect confirmation requests
	  for installation of GPG keys, and convey them to the user correctly.
	* LICENSE: Change company name to Concurrent Real-Time
	* MainWindow.c: Change ccur.com to concurrent-rt.com
	* nuu.proto.spec: Change ccur.com to concurrent-rt.com & change company
	  name to Concurrent Real-Time
	* YUM: Change ccur.com to concurrent-rt.com

Fri Jun 30 2017 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.7.

Fri Jun 23 2017 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: For oddball architectures, make getBiArch() return
	  the input string, instead of throwing an exception.
	* YumIO.c: Make pyString() handle a NULL.  This avoids a cascade SIGSEGV
	  if an earlier unhandled exception produced a NULL for the input
	  object.

Tue Oct 25 2016 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.6.
	* YumIO.[ch]: Renamed findPackageAction to findPackage and changed its
	  2nd argument into a query member function pointer.  Added two queries:
	  hasNotStartedUpdate and hasNotStartedRemove.  They check not only the
	  action, but also find a version of the package that still has entries
	  not yet marked with apply.started.  This solves a bug that arose with
	  the reimplemtation of UNINST handling for multiple VERREL removals in
	  1.11.5, where it would malfunction when updating or removing multiple
	  copies of the same package which differed in their architecture.

Wed Sep 21 2016 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.5.

Tue Sep 20 2016 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Corrected code in noteTransactionPkgs to mark only the
	  individual packages based on the verrel information in the txmbr.

Mon Sep 19 2016 Todd Allen <todd.allen@etallen.com>
	* Progress.c: Fixed problems in Progress rate-limit code that
	  didn't just prevent too-frequent updates of the GUI, but also prevented
	  the math to calculate the progress.  This particularly broke parallel
	  download progress.
	* YumIO.c: for yum versions without hasTransTest(), add a missing
	  endItemActs() call to terminate the PG_R_GRAB_RPMS.
	* YumIO.c: clear ts.act count in userconfirm to reset it between
	  Depsolve (PG_D_*) and Run Transaction (PG_R_*) progress meters.
	* YumIO.c: properly attribute PG_R_TEST_TRANS_ESTIMATE progress with
	  newer yum versions which have no specific callback for that.
	* Progress.c: Changed debug dumps.

Thu Sep 15 2016 Todd Allen <todd.allen@etallen.com>
	* YumIO.h: Remove dsTsLog, which was neither defined nor called.
	* YumIO.c, Package.h: Handle multiple VERREL's of the same package
	  installed simultaneously for both UPDATE and REMOVE actions.
	* PackageTableModel.c: For VERREL tooltips, report on multiple versions
	  even if the package is not OUT_OF_DATE.
	* PackageTableModel.c: Remove trailing newline from VERREL tooltip.

Mon May  2 2016 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.4.
	* YumIOCapturersMinion.[ch]: Changed solution for readStdout/ReadStderr
	  race condition to use invokeMethod instead of singleShot so that it
	  doesn't violate singleShot thread rules.  Also, change QMutex to
	  QSemaphore so it doesn't produce bogus "Deadlock detected" warnings.

Wed Apr 27 2016 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch], YumIOC.c, python/YumIO.py: Add YumIOApplyGrabMeter.failure
	  method and supporting functions.  YumIO::applyGrabMeterFailure handles
	  it as a retry just like what happens for failures during collect.

Wed Apr 27 2016 Todd Allen <todd.allen@etallen.com>
	* YumIOCapturersMinion.[ch]: Resolve a race condition where readStdout()
	  or readStderr() could be called simultaneously by the main thread
	  (either because of normal I/O or because ~YumIOCapturers called
	  minion->deleteLater), and by a work thread via deactivate().
	  deactivate() now uses a single shot timer to cause the main thread to
	  perform the actions and uses a QMutex to wait for that to complete.
	  This restores the original intent that readStdout() and readStderr()
	  would only ever be called by the main thread.  It fixes an occasional
	  SIGSEGV caused by double-free of the YumIO::wr.stdoutBuffer or
	  YumIO::wr.stderrBuffer.
	* YumIOCapturersMinion.[ch]: Eliminate the unused deactivated member, and
	  used initialized instead.

Wed Mar 23 2016 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.3.
	* Makefile: Add LIB test for aarch64.
	* python/YumIO.py: In apply() after doTransaction, call history.close(),
	  if it exists.  This is to release any sqlite lock.  This should
	  correct many false "a repository's sqlite database was locked
	  unexpectedly" errors during second transactions in versions of yum
	  3.2.25 or later, assuming neither yum nor PackageKit really is
	  responsible for them.

Mon Jul  6 2015 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.2.
	* python/YumIO.py: Fix a bug that prevented cache files from being
	  updated automatically with yum 3.4.3, by changing command from 'info'
	  to 'makecache fast'.  When in read-only mode, the cache file update
	  mechanisms were disabled.

Wed Jun 17 2015 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.1.
	* YumIO.[ch]: Added handler for NoMoreMirrorsRepoError, so it isn't
	  reported as an internal error.
	* YumIO.c: Added YumIOCapturersUser objects to collectFileListsReal and
	  collectOtherDataReal too, so that walkbacks generated for unexpected
	  exceptions will be captured in the Log window.  Also to the parts of
	  collectReal that call python collectUpdates and collectAll.
	* Python.c: Fixed pyExceptValue and pyExceptValuef to retain the
	  exception information.  This is so YumIO::commExceptRaised can check
	  the value and possibly call exceptionError().
	* YumIO.c, python/YumIO.py: Added and called applyFailCleanup if an
	  apply call fails for any reason.  One possible reason is a user
	  pressing Ctrl-C to send SIGINT to NUU.  If that happened, during a
	  later transaction, rpmdb would remember it and call exit(1).  To
	  prevent that, applyFailCleanup calls closeRpmDB, which indirectly
	  makes rpmdb forget about the previously caught signals.

Tue Jun 16 2015 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Add exception handler for AssertionError.
	* ProgressMinion.c: In setupTip, place a cap on the number of Done
	  items so we don't end up with tooltips much larger than the height of
	  the screen during multi-hundred package transactions.

Mon Jun 15 2015 Todd Allen <todd.allen@etallen.com>
	* MainWindow.c: Made the fixed size of the Unlisted Actions warning
	  frame be based on its initial sizeHint instead of its initial size
	  (which appears to be just the arbitrary value 100).
	* Python.c: Added a comment to the internal python exception error
	  saying to get the walkback from the Log window.  (Because it
	  usually is impossible to figure them out without the walkback.)
	* YumIO.c: in commExceptRaised, improve error message for IOError to
	  include information from errno/strerror, instead of just assuming a
	  broken pipe.  Also, provide a walkback.
	* YumIO.c: in commExceptRaised, improve error message for
	  KeyboardInterrupt to indicate that it actually was KeyboardInterrupt,
	  but with a caveat about urlgrabber's crazy usages.  Also, provide a
	  walkback.
	* YumIO.c: Added sigchld{Disable,Restore} functions and use them around
	  the call to apply().  This disables the Qt SIGCHLD signal handler
	  while doing the apply().  That handler was problematic during apply
	  because an exit of applydeltarpm at an inopportune moment could cause
	  urlgrabber's call to epoll_wait to return early with EINTR.  And
	  urlgrabber copes with that very poorly by raising KeyboardInterrupt.
	  The handler must be restored before any chance of a QThread exiting.

Thu Apr  2 2015 Todd Allen <todd.allen@etallen.com>
	* Released 1.11.

Wed Apr  1 2015 Todd Allen <todd.allen@etallen.com>
	* HFrameLabel.[ch], Colors.[ch], RepoEditoConfig.[ch],
	  RepoEditorConfigDialog.[ch], RepoEditorDialog.[ch]: Change ok,
	  warning, and error labels to use black text on a colored background
	  within a frame.  The frame is visible only if there is text to be
	  displayed.  This should make these labels stand out better.

Wed Apr  1 2015 Todd Allen <todd.allen@etallen.com>
	* MainWindow.[ch], PackageTableSortFilterProxyModel.[ch],
	  PackageTableModel.[ch]: Changed "Set Update of All Out-of-Date" button
	  to "Set Update of Listed".  If the Mode, Filter, Search, State,
	  Duplicates, and Group settings are default, then this works exactly
	  the same as before.  But if they are set to anything more restrictive,
	  the button only will set Update on packages actually listed given the
	  current settings.  This was because of overwhelming user request for
	  this behavior instead of the previous behavior.
	* MainWindow.[ch]: Added warning label when unlisted actions are
	  present.  That is, when actions have been specified for some
	  packages, but because of changes to any of the filter settings, they
	  no longer are listed.

Tue Mar 31 2015 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Added sqlite3.OperationalError handler to several functions.
	  This catches when some other tool locks a repo's sqlite database while
	  NUU is running.  (PackageKit has a tendency to do this.)
	* YumIO.c: Added addition yum.Errors.RepoError handlers for different
	  ways that sqlite database locking can be reported.
	* YumIO.c: Moved common exception handlers for many yum calls into
	  commExceptSetup() and commExceptRaised(), to cut down on code
	  replication.  To accomodate this, lookup all the exceptions that might
	  use either of these two in initialize().  This is because one must not
	  do a pyLookup() inside commExceptRaised().

Mon Mar 30 2015 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Added exception handlers for KeyboardInterrupt, which can be
	  raised in yum's output.py and grabber.py.  Although NUU goes to some
	  effort to disable the python SIGINT handler in its own threads, this
	  doesn't happen in the Python threads created by subscription-manager.
	  And grabber.py can manually generate a KeyboardInterrupt if a system
	  call was aborted (IOError) with e.errno = EINTR.

Wed Mar 25 2015 Todd Allen <todd.allen@etallen.com>
	* Released 1.10.1.
	* RepoEditorDialog.c: in setVisible(), call currentChanged(-1, -1) to
	  disable all the buttons that require a valid current row.  On the
	  first show() of the dialog, currentChanged automatically is called
	  and set to a valid row, so this is overridden immediately.  But on all
	  other calls of show(), the current index is left in an invalid state,
	  and the buttons must reflect that.  (At least, this is the behavior of
	  Qt 4.8.5; older versions of Qt didn't always behave this way.)
	* RepoEditorDialog.c: Do sanity checks on the value of currentRow(), and
	  bail out if it's -1.  This is done in: browse(), edit(), copy(), and
	  reset().

Wed Mar 25 2015 Todd Allen <todd.allen@etallen.com>
	* Deal with subscription-manager's use of true threading:
	* YumIO.c: Hold PyGILState during YumIO::initialize().
	* Python.[ch], YumIO.c: In Python::initialize(), no longer call
	  PyEval_ReleaseLock.  Instead, in YumIO::execWorkThread, use the
	  PyThreadStateWrapper to temporarily release the GIL to work threads
	  using PyEval_SaveThread/PyEval_RestoreThread.
	* These approaches do not work with python2.2, so they're ifdef'ed.

Mon Dec 15 2014 Todd Allen <todd.allen@etallen.com>
	* Released 1.10.
	* nuu.proto.spec: Claim support for rpm-python 4.11.
	* Makefile: Clean up distro name to eliminate sub-minor numbers
	  (e.g. 7.0.1406 -> 7.0).  Clean up distro name for rhel7 to exclude
	  minor numbers (rhel7.0 -> rhel7).
	* Makefile: Override brp-python-bytecompile by specifying __python
	  as /bin/true.  (The build scheme already builds YumIO.pyc.)
	* nuu.proto.spec: Claim support for python 2.7 and yum 3.4.
	* PackageTableSortFilterProxyModel.[ch]: Changed clear() into
	  clearCache(), for use when connected to modelAboutToBeReset(), and
	  made clear() also call HSortFilterProxyModel::clear().  This fixes a
	  regression in 1.9.5 where changing the non-text filter widgets didn't
	  update the package list immediately.

Fri Dec 12 2014 Todd Allen <todd.allen@etallen.com>
	* Progress.[ch], ProgressMinion.[ch], YumIO.c: Reorganize the types into
	  a new Progress namespace to clean the code up.
	* ProgressMinion.h: Remove explicit keyword from ThreadsState copy
	  constructor to mollify gcc-3.4.4.

Thu Dec 11 2014 Todd Allen <todd.allen@etallen.com>
	* Fonts.c: Fixed problems with strange font choices in Qt 4.8 on CentOS
	  7.0.  To get a monospaced font, it's necessary to know the name of
	  a monospace font.  "Courier" doesn't exist on CentOS 7.0.  So, now
	  try a list of known monospaced fonts until one actually is found.
	  As a final fallback, use "Monospace".
	* YumIO.c: Fixed uninitialized ts.parallel.begun (affects older versions
	  of yum).

Wed Dec 10 2014 Todd Allen <todd.allen@etallen.com>
	* HProgressBar.c: Fixed build problems with Qt 4.1 by disabling the
	  tooltip support.  But it shouldn't be needed on anything that old.

Tue Dec  9 2014 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Fixed progress back-up in collectFailure.
	* Progress.[ch], ProgressMinion.[ch]: For "parallel" activities that
	  have only one thread, change the activity name to the single activity
	  once it's known.

Fri Dec  5 2014 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch]: Avoid cascade exceptions caused by corrupted metadata in
	  getFiles() and getChangeLog().

Thu Dec  4 2014 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Handle exceptions caused by corrupted metadata in
	  setupRepos, apply, collectFileLists and collectOther.

Tue Dec  2 2014 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch], Progress.[ch], ProgressMinion.[ch], python/YumIO.py: Added
	  support for parallel download failures and retries.

Mon Dec  1 2014 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch], YumIOC.c, Progress.[ch], ProgressMinion.[ch],
	  python/YumIO.py HProgressBar.[ch], GeneralTip.[ch]: Added support for
	  showing progress with parallel downloads during the collect and
	  apply/run phases.  Some information about the individual downloads is
	  provided in a tooltip.  (Sadly, not their progress, because yum fails
	  to pass that information in the callbacks.)

Mon Oct 27 2014 Todd Allen <todd.allen@etallen.com>
	* Makefile: Added distro_error_2 rule to check for DISTRO variables
	  with spaces, which implies the sed rules need an update.
	* Makefile: Updated DISTRO sed rules with CentOS 7.0 wording.
	* Makefile: Allow python 2.7.
	* PackageTableModel.c: Reorder #include's to ensure that <Python.h>
	  ultimately is parsed first.  Arguably, this rule is insane (see
	  http://bugs.python.org/issue1045893), but nonetheless it must be
	  dealt with.
	* RepoEditorConfigDialog.c: In the constructor, initialize entry with
	  NULL instead of a reference to itself.
	* RepoEditorDialog.c: #ifdef the definition and setting of "found"
	  in cases where it never is used.  Done to appease gcc 4.8.2.

Thu Jun 19 2014 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.6.
	* nuu/RepoEditorDialog.c: Fixed remove() to do the removals by reverse
	  order by the base model's row numbers.

Thu Jun 12 2014 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.5.
	* changelog2rpm: New script to convert ChangeLog into a format
	  acceptable to rpm's %changelog section.
	* Makefile: Convert and add the ChangeLog to the rpms' %changelog
	  sections.

Thu Jun 12 2014 Todd Allen <todd.allen@etallen.com>
	* PackageTableActionContextMenu.c: Deal with missing
	  QItemSelectionModel::hasSelection() before Qt 4.2.
	* PackageTableModel.c: Add missing dataChanged() signal to setAction().
	  It matters more with Qt 4.1.
	* PackageTableSortFilterProxyModel.[ch], PackageTable.h,
	  MainWindow.c: Deal with missing
	  QAbstractItemModel::modelAboutToBeReset() before Qt 4.2 by calling
	  clear() on the packageTableSortedModel manually all over the place.

Wed Jun 11 2014 Todd Allen <todd.allen@etallen.com>
	* RepoEditorView.[ch], RepoEditorDialog.c: Made sortedModel visible to
	  the RepoEditor::Dialog, instead of hiding it within the View.
	* RepoEditorSortFilterProxyModel.[ch], RepoEditorDialog.c: Implement
	  cleverer sorting for repos with version numbers, so that
	  "Repo 2.10" > "Repo 2.9".

Wed Jun 11 2014 Todd Allen <todd.allen@etallen.com>
	* PackageTableView.c: Set Apply button enabled state correctly in
	  response to action column context menu.
	* MainWindow.c: disable Apply button after applying previous transaction.

Tue Jun 10 2014 Todd Allen <todd.allen@etallen.com>
	* PackageTableActionContextMenu.[ch], PackageTableView.c: Make context
	  menu action-related changes apply to a whole selection, if one exists.

Tue Jun 10 2014 Todd Allen <todd.allen@etallen.com>
	* PackageTableView.[ch], MainWindow.[ch]: Made
	  PackageTable::SortFilterProxyModel visible to the MainWindow, instead
	  of hiding it within the View.  Removed passthrough interfaces from the
	  View.
	* PackageTableSortFilterProxyModel.c: add clear() slot, and connected
	  modelReset() to it.  Made it clear the in[] array.

Mon Jun  9 2014 Todd Allen <todd.allen@etallen.com>
	* Makefile: Treat CentOS as identical to RHEL.

Tue Apr  9 2013 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.4.
	* python/YumIO.[ch]: Fixed dsTsFindPkg() to parse
	  [epoch:]name-version-release.arch instead of
	  name-[epoch:]version-release.arch.  Change the version in which this
	  became necessary from 2.9.2 to 3.2.9.

Fri Nov 16 2012 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.3.
	* python/YumIO.py: Reenable addObsoletes for yum 3.2.21 - 3.2.28.  The
	  built-in functionality in yum isn't fully formed until 3.2.29, so it
	  still is needed until then.  (Fixes regression in 1.8.3 for yum 
	  versions 3.2.21 - 3.2.28.)
	* python/YumIO.py: Use distutils.version.StrictVersion for yumVersion so
	  that a version like '3.2.8' will cause a test like
	  yumVersion() < '3.2.21' to yield True.  (Fixes regression in 1.8.3
	  for yum versions 3.2.3 - 3.2.9.)
	* Makefile: Rearranged test & debug sudo commands to set NUUSHARE=. 
	  environment variable even if the sudo configuration resets the 
	  environment.

Thu Nov  1 2012 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.2.
	* yumIO.[ch]: While in the middle of a clearEntries* operation, make the
	  access functions return values as if the YumIO contained no packages.
	  This avoids a race condition where count() returned non-zero, but
	  moments later operator[] returned garbage.

Mon Aug 20 2012 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.1.
	* Makefile: Remove -L option to the location of libpython.a so that
	  libpython.so will be used instead.  This avoids problems when python
	  is later upgraded and some interfaces become built-in (e.g. os.urandom
	  on RHEL5).  The -L option is retained for python 2.2 builds, because
	  it has only the static library.

Tue Jul 24 2012 Todd Allen <todd.allen@etallen.com>
	* Released 1.9.
	* python/YumIO.py: Override urlgrabber.grabber to make it convert
	  unicode strings into ascii strings before they get passed into
	  pycurl's setopt, which may refuse them.
	* python/YumIO.py: Clean up logging.handlers.SysLogHandler to remove
	  redundant copying of methods from the superclass.
	* python/YumIO.py: Clean up YumCliRpmCallback overridings of _maktfmt
	  and scriptout which are redundant for all versions of yum, and wrong
	  for newer versions of yum.

Mon Jul 23 2012 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch]: Added support for operations on non-default architecture
	  packages when multiple architectures are present (e.g. i386 packages
	  on x86_64 systems).  They appear side-by-side and can be operated on
	  independently.  Transaction numbers are computed as best as possible
	  within the limitations of information available from yum.
	* Package.h, YumIO.[ch], MainWindow.[ch], PackageTableView.[ch],
	  PackageTableSortFilterProxyModel.[ch], nuu.c: Added support for
	  detecting and filtering duplicate packages (e.g. name.i386 and
	  name.x86_64).  If there are two or more such packages, the best one is
	  determined based on rpm's architecture scores.  Any others are
	  considered duplicates and can be filtered out with a checkbox.

Mon Jul 23 2012 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Turn on DEBUG in the verbose_logger so that TSINFO
	  lines come through into YumIO::log and YumIO::dsTsInfo.
	* YumIO.c: Deal with full nevra information in dsTsNewPkg for yum 2.9.2
	  and later.

Thu Jul 19 2012 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Workaround bug in some versions of rsyslog where they
	  misinterpret all UTF-8 encoded messages as high priority emergency
	  messages.  Do this by overriding logging.handlers.SysLogHandler to
	  format all messages as simple ASCII.

Wed Jun 13 2012 Todd Allen <todd.allen@etallen.com>
	* Released 1.8.4.
	* PasswdTextEdit.c: Fixed SIGSEGV caused by PasswdTextEdit::textChanged
	  replacing the real QTextEdit's cursor.  That was a problem if the
	  textChanged was triggered by a Backspace KeyPress event, because
	  QTextEdit's handling for that event tried to use the old
	  (deleted) cursor after it sent the textChanged signal.

Wed Feb  1 2012 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Improved handling of python exception data for error
	  reporting by making pyStringX deal with more built-in data types, and
	  by making pythonExceptionV use pyStringXDec.

Fri Nov 18 2011 Todd Allen <todd.allen@etallen.com>
	* Released 1.8.3.
	* python/YumIO.py: yum 3.2.21 and later are handling Obsoletes: at least
	  well enough to make addObsoletes unnecessary any more.  Further, it is
	  incompatible with addObsoleted circa 3.2.29 or so.  Disable it for
	  those versions >= 3.2.21.

Thu Nov 17 2011 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch]: The QThreads need to block until the eventLoop.exec's are
	  started so that they don't exit the eventLoop before it's even execed.
	  Use the blocker consistently in all *Real routines, and move the
	  blocker.release into a singleShot action so that it happens after the
	  eventLoop is execed.  (It's weird that this failure hasn't been seen
	  before.)

Mon Oct 31 2011 Todd Allen <todd.allen@etallen.com>
	* Released 1.8.2.

Tue Oct 18 2011 Todd Allen <todd.allen@etallen.com>
	* nuu.man: Added  --mode, --regexp, --state, and --groups options
	  (and shorter forms).

Wed Oct 12 2011 Todd Allen <todd.allen@etallen.com>
	* nuu.c, MainWindow.[ch]: Added --mode, --regexp, --state, and --groups
	  options (and shorter forms).

Wed Jun  1 2011 Todd Allen <todd.allen@etallen.com>
	* Released 1.8.1.
	* Makefile: Shortened rhel5.x and rhel6.x release names to just rhel5
	  and rhel6, since the minor numbers for them don't seem to affect
	  compatibility.
	* python/YumIO.py: Workaround bug in yum 2.2.2 where closeRpmDB doesn't
	  clear the localdbimported flag, causing any new rpmdb not to be
	  populated correctly.  collectDone and unlock each clear this flag
	  manually after calling closeRpmDB.

Tue May 31 2011 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: In exception cases, PyErr_Clear and also pg->reset() if
	  appropriate.  This clears out any innocuous exceptions (e.g.
	  NoMoreMirrorsRepoError) left over from one operation so that they
	  don't pollute subsequent operations.
	* YumIO.c: Remove Py_DECREF in exception cases because the result is
	  NULL.

Fri May 13 2011 Todd Allen <todd.allen@etallen.com>
	* Released 1.8.

Thu May 12 2011 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: In getBinaryRpm, tolerate a missing relativepath, since newer
	  yum versions omit the attribute entirely for installed packages.
	* PackageTableDescribeInstanceRepoDialog.c: hide buffet passwords in
	  URLs and Mirror List URL.
	* nuu.proto.spec, Makefile: Added PYTHON.CHEAT.SHEET
	* Makefile: Reverted install script fix for nuu.pam (from May 10) and
	  then fixed it correctly.  fc=Fedora Core (i.e. old).
	  f=Fedora (i.e. new).  The old version is appropriate for rhel up to
	  version 5, but not version 6.  The new version is appropriate for any
	  of the Fedora Core versions (7-n).  Furthermore, it's appropriate for
	  Fedora Core 5 and 6, so I've made them use it too.

Wed May 11 2011 Todd Allen <todd.allen@etallen.com>
	* YumIO.c, Python.c: overhauled refcounts-related code to reduce memory
	  footprint.
	* PYTHON.CHEAT.SHEET: list of functions and whether they return new or
	  borrowed references.
	* python/YumIO.py: added collectDone to clean up yum & rpmio memory
	  after collecting data (necessary to clear the final refcounts held
	  within yum itself).
	* YumIO.[ch], MainWindow.c, Package.h: move DECREF's for entries into a
	  safe work thread so that it cannot happen from the qt GUI
	  thread (e.g. on exit): clearEntries & clearEntriesReal.  On quit, use
	  clearEntriesBeforeQuit to save time.

Tue May 10 2011 Todd Allen <todd.allen@etallen.com>
	* Released 1.7.3.beta internally.
	* nuu.proto.spec: Added support for rpm-python 4.8.
	* Makefile: Fixed install script to use correct nuu.pam

Sun May  8 2011 Todd Allen <todd.allen@etallen.com>
	* YumConfIO.c: removeUnusedFiles now only deletes ".repo" files, to
	  preserve any mirror lists or other miscellanea in this directory.
	* YumIO.[ch], MainWindow.[ch]: Added "Clean Sqlite" menu item, and also
	  made "Clean All" do this.

Wed May  4 2011 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Only display yumVersions's "not understdood" error once, if
	  it ever fails.  Also display the errno.

Thu Mar 25 2010 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Deal with new parameter to reportDownloadSize that
	  appeared in yum 3.2.27.

Wed Mar 10 2010 Todd Allen <todd.allen@etallen.com>
	* Released 1.7.2.

Mon Mar  8 2010 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch]: Added support for presto RPM rebuild from deltas.
	* YumIO.[ch], python/YumIO.py: Detect yum versions that don't do a 
	  separate transaction test and remove the expectation for that from 
	  the progress code.
	* YumIO.[ch]: Reworked version comparisons to not just do string 
	  comparisons so that things like 3.2.23 < 3.2.3 didn't happen.
	* Progress.c: Added #include <stdio.h> for debug code.
	* python/YumIO.py: Removed some old commented-out debug code.

Fri Mar  5 2010 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Teach pyTime and pyTimeDec about PyLong timestamps, which
	  are showing up in some 64-bit yum versions now.

Mon Dec 18 2009 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Override stdin to respond true to isatty so that the
	  underlying yum code won't refuse to import keys, thinking that the
	  session is unattended.

Mon Aug 10 2009 Todd Allen <todd.allen@etallen.com>
	* Released 1.7.1.
	* RepoAuthDialog.[ch]: while the repo auth dialog is up, restore the
	  cursor to its normal state instead of leaving it in the busy state.

Fri Aug  7 2009 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: workaround yum 3.2.14 bug with 
	  returnPkgLists(['all']), which it misinterpreted as meaning "match
	  no packages at all".  This bug resulted in NUU believing that no
	  packages were installed when working with this version of yum.

Thu Aug  6 2009 Todd Allen <todd.allen@etallen.com>
	* RepoEditorDialog.c: in remove, don't clear the currentIndex until
	  after collecting the set of selected rows, because in recent versions
	  of qt, clearing the current index also clears the selection.
	* YumIO.c: in applyReal, add a check for an internal error if an update
	  is attempted, but the package list has no knowledge of the installed
	  package.

Tue Aug  4 2009 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py, YumIO.c, MainWindow.c: in YumIO.__init__, deal with 
	  a sys.exit that happens if the configuration file has seriously bogus 
	  information.  Further deal with it in YumIO::initialize and 
	  MainWindow::initialize.
	* Python.c: in pyVMethodCall, check for a NULL self and issue an error
	  instead of getting a SIGSEGV

Mon Aug  3 2009 Todd Allen <todd.allen@etallen.com>
	* YumConfIO.[ch], RepoEditorConfig.C: Add support for
	  /etc/yum/yum.conf, /etc/yum/repos.d, and the reposdir option with
	  multiple directories.

Thu Jul 30 2009 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Added handler to collectGroupInfo for the non-fatal 
	  exception yum.Errors.GroupsError.

Tue Jul 21 2009 Todd Allen <todd.allen@etallen.com>
	* Released 1.7.
	* nuu.proto.spec: Added support for Python 2.6.  Taught it about
	  qt development package names on Fedora 10 and Fedora 11.  Allowed
	  rpm-python up to 4.7.

Mon Jul 20 2009 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Changed the expectation for repomd.xml grabs to move from
	  being in an early pass to being in the main pass to yum version 
	  3.1.7, when those grabs were made lazy.
	* python/YumIO.py: fixed the YumIOSqlitePackageSack code for yum
	  2.4.x and yum 2.6.x to put it on the repos.pkgSack instead of each
	  individual repo's _sack or sack.
	* python/YumIO.py: only use the sendToLog logic if the sys.stdout
	  supports those fields (change to support debugging during development 
	  when sys.stdout may be the original python implementation).

Fri Jul 17 2009 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: In collectGrabMeterStart, deal with size values of None
	  for metadata from ftp servers (where sizes aren't available in 
	  advance).
	* YumIO.c: added RepoError exception handling to useRepos.
	* YumIO.c, Python.[ch]: Added support to pyExcept* interfaces for
	  a stack of expected exception lists so that recursive C->python
	  calls (C->python->C->python) will be supported.

Thu Jul 16 2009 Todd Allen <todd.allen@etallen.com>
	* YumIO.[ch], YumIOC.c, python/YumIO.py: reorganized progress bar
	  tracking of grabs (i.e. downloads) to better reflect what actually
	  is begin downloaded.
	* python/YumIO.py: Added YumIOSqlitePackageSack derived from
	  YumSqlitePackageSack, but whose addDict actually calls the callbac
	  function to provide feedback about processing for a repository.

Tue Jul 14 2009 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Made the setup code check for BdbQuit and just bail out.
	* python/YumIO.py: Added YumIOSqlitePackageSack derived from
	  YumSqlitePackageSack, but whose addDict actually calls the callback
	  function to provide feedback about processing for a repository.

Thu Jul  8 2009 Todd Allen <todd.allen@etallen.com>
	* HSortFilterProxyModel.[ch], HAbstractTableModel.[ch], 
	  PackageTableModel.[ch], RepoEditorModel.[ch]: workaround sorting
	  bug in Qt 4.5.x relating to losing track of the sort column any
	  time after the filter shows an empty table.
	* MainWindow.c: in quit(), don't delete the yumIO object until after 
	  the close() operation, because the close() could ask a few parting
	  questions about the content of the package table, which would
	  require the yumIO object to exist.

Thu Jun 25 2009 Todd Allen <todd.allen@etallen.com>
	* YumIO.py: remove bogus output=1 parameter from
	  YumCliRPMCallBack.__init__ and replace it with ayum parameter as
	  appears in or around yum 3.2.23.

Tue Jun 23 2009 Todd Allen <todd.allen@etallen.com>
	* HTableView.[ch]: remove order flipping kludge for Qt 4.5.x and later.
	* HTableView.[ch], PackageTableView.c: add 2-argument sortByColumn 
	  override that avoids calling the 1-argument version.  (And implement 
	  it altogether for Qt 4.1.x which didn't have it at all.)  Use it
	  when initializing the package list to avoid uncertainty in the flip
	  state dependingon Qt version.
	* Makefile: add a simple flag to use a development version of Qt.
	* Makefile, qtver.c: add a dump of the Qt version in the details output.

Thu Jun 18 2009 Todd Allen <todd.allen@etallen.com>
	* Execute.c: added missing #include that gcc 4.4 pointed out.
	* Makefile: Added check for 2.6 python version.

Wed Jun 17 2009 Todd Allen <todd.allen@etallen.com>
	* Makefile: updated filtering to find yum version number for yum 3.2.
	* YumIO.c: Added #include <rpmcli.h> to ensure that RPMCALLBACK 
	  #defines are available.
	* webbrowser: Changed fallback browser to use firefox if available
	  and mozilla otherwise.  (Modern systems don't have mozilla.)

Tue Sep  2 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.6.
	* python/YumIO.py: Fixed cut & paste error in pruneObsoletes that used 
	  updPkg instead of insPkg.

Fri Aug  8 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.5.

Mon Aug  4 2008 Todd Allen <todd.allen@etallen.com>
	* nuu.gnomesu: Added logic to deal with openSUSE 10.3's gnomesu's new 
	  location.

Mon Jul 28 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.4.
	* YumIO.c: turned off DEBUG_DISABLE_CAPTURERS, which I had left on 
	  accidentally in 1.6.3.

Fri Jul 25 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.3.

Thu Jul 24 2008 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Added revertTsInfo with logic to properly revert
	  tsInfo to a pristine state following an attempted transaction using
	  whatever mechanism is appropriate for the underlying version of yum.

Tue Jul 22 2008 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Added strdup() around c_str() calls where the result
	  needed to persist longer than c_str() guaranteed

Fri Jul 18 2008 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Fixed bug in workaround for sqlite multi-thread 
	  checks, by using whatever sqlite is in use in sqlitecachec instead of
	  trying to guess it (and being incorrect on some systems).

Wed Jul 16 2008 Todd Allen <todd.allen@etallen.com>
	* HScrollArea.c, HTableView.h, MainWindow.c, Python.[ch], Share.c,
	  YumIO.[ch]: made changes for const-correctness involving literal 
	  strings.

Tue Jun  3 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.2.

Mon Jun  2 2008 Todd Allen <todd.allen@etallen.com>
	* doc/*: Updated documentation to reflect repository editor changes.

Fri May 30 2008 Todd Allen <todd.allen@etallen.com>
	* RepoEditorModel.[ch], RepoEditorView.c, RepoEditorDialog.[ch]:
	  added an enabled column to the repo editor to allow setting the
	  persistent enabled flag for a repository (but with no support for
	  the Unspecified value to keep things simple).
	* YumReposEnable.h, YumConfIO.[ch], MainWindow.[ch]: implemented 
	  wildcards for --enablerepo and --disablerepo command-line options.
	* RepoAuthChecker.c, RepoAuthDialog.[ch]: added Disable button to
	  allow users to disable temporarily repositories that require 
	  authentication but for which they don't have the keys.

Fri May 23 2008 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: made reportDownloadSize use sizeOf, which has a lot more 
	  logic for handling results from different yum versions.

Thu May  8 2008 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: in pruneObsoletes, ignore any Obsoletes: that
	  reference older versions of the same-named package.
	* python/YumIO.py: For yum 2.9.5 and beyond, replace calls to 
	  returnHeader with the new searchNevra to eliminate the warnings about 
	  returnHeader being obsoleted.

Fri Mar 28 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.1.
	* doc/*: Updated documentation to reflect repository editor changes.

Wed Mar 26 2008 Todd Allen <todd.allen@etallen.com>
	* RepoEditorConfig.[ch], RepoEditorConfigDialog.[ch],
	  RepoEditorContextMenu.[ch], RepoEditorDialog.[ch],
	  RepoEditorView.[ch]: to support smaller displays, split the 
	  repository editor dialog into a dialog for the repository list and 
	  another dialog to edit a particular repository configuration.
	* RepoEditorModel.c: Added the "Sess" header to the session-enabled
	  column to alleviate some confusion.

Fri Mar  7 2008 Todd Allen <todd.allen@etallen.com>
	* YumIO.c, python/YumIO.py: for updates, specify the old package as
	  well as the new package to addUpdate for yum >= 3.1.3.

Sat Mar  1 2008 Todd Allen <todd.allen@etallen.com>
	* Released 1.6.
	* Makefile: added support for Fedora 7 & 8 releases.
	* YumIO.[ch]: added support for Python unicode strings.
	* python/YumIO.py: eliminate YumIOStderr and its uses because
	  rpmmodule.c is insisting that sys.stderr be an actual PyFile.
	  YumIOStderr has been redundant for a while anyway because of the
	  capturers in YumIO.c, so this should be harmless.  YumIOStdout remains
	  because of its special case code to capture output that really should
	  be treated as log output instead of stdout.
	* python/YumIO.py, YumIO.[ch], YumIOC.c: implement new rpm install/erase
	  progress callbacks to deal with yum 3.2.3's use of the new 
	  transaction callback system in rpm.
	* python/YumIO.py: workaround sqlite check for same thread in python
	  2.5.  NUU is careful to ensure that no two threads will access any
	  sqlite data structures at the same time, so this check is
	  unneccessary.
	* nuu.proto.spec: Increased latest supported yum version to include 
	  3.2.x.
	* nuu.pam, nuu.pam-old, Makefile: Updated /etc/pam.d/nuu configuration 
	  file to reflect changes in PAM 0.99 on Fedora 7 & 8.

Tue Feb 19 2008 Todd Allen <todd.allen@etallen.com>
	* RepoEditorDialog.c: instead of calling setCurrentIndex directly, call
	  currentChanged so that in addition to nuu being away that there is
	  no current index, the Qt library also is aware.
	* RepoEditorView.c: check for an invalid index and treat it as row -1.
	* YumConfIO.[ch]: added dump routine.

Fri Sep 21 2007 Todd Allen <todd.allen@etallen.com>
	* Released 1.5.1.
	* MainWindow.c: Added GILState wrapper to setReady for call to 
	  hasPickledCache.
	* YumIO.[ch], Python.h: Added a cache for yumVersion so that no
	  pyValue call will be required when it's called via
	  hasDistribGroups, which can be called from the model's
	  filter/sort code, which would be difficult to protect with a
	  GILState wrapper.

Wed Sep 19 2007 Todd Allen <todd.allen@etallen.com>
	* Released 1.5.
	* nuu.proto.spec: Increased latest supported yum version to include 
	  3.0.x.
	* Makefile: update logic to find Qt installation to check for 
	  /usr/lib64/qt4/lib64 as well as /usr/lib64/qt4/lib on x86_64 
	  architectures.
	* Makefile, nuu.proto.spec: Deal with openSUSE 10.2 renaming qt4-devel 
	  to libqt4-devel.
	* Makefile: Added openSUSE 10.2 support to the install & uninstall 
	  targets and to the DOCDIR location.
	* YumIO.c: Use Py_ssize_t with PyDict_Next to support 64-bit
	  architectures when using python >= 2.5.

Fri Sep 14 2007 Todd Allen <todd.allen@etallen.com>
	* RepoBrowse.c: Added GILState wrapper for variable replacement code.

Wed Sep  5 2007 Todd Allen <todd.allen@etallen.com>
	* Makefile: Added support for recognizing openSUSE release numbers.
	* Makefile: Added support for python 2.5 (which hopefully will just 
	  work).
	* python/YumIO.py: Use positional notation when calling populateSack
	  to avoid warnings about the "with" keyword becoming a reserved word
	  in a subsequent python version.  (Presumably, the definition in yum 
	  will have to change then, because it still uses the keyword "with" in 
	  the definition.)
	* Colors.c: Use hard-coded color for required, because "lemon chiffon"
	  is not defined on openSUSE 10.2.
	* Python.c: Changed pyExceptValuef to locate strings which, as of yum
	  3.1.0, are stash in a value attribute instead of the args attribute.
	  Note that this change also has been backported to yum 3.0.1 on some
	  systems with Python 2.5, too (e.g. openSUSE 10.2).

Thu Aug 30 2007 Todd Allen <todd.allen@etallen.com>
	* python/YumIO.py: Deal with reorganization of repo setup code that 
	  happened in 2.9.6: call repo.setup.
	* Python.[ch]: Added PyEval_InitThreads and PyEval_ReleaseLock.
	* Python.h, YumIO.c: Added PyGILStateWrapper definition and calls to 
	  ensure that the current thread state is defined.
	* python/YumIO.py: Changed call to returnPkgLists to conform to
	  changed parameter profile in 2.9.8 and later.
	* YumIO.c: Deal with YumAvailablePkgs having a straight size
	  attribute with a value instead of a member function.
	* YumIO.c: Deal with calls to collectProgress with None for the name
	* python/YumIO.py: Deal with the new logging model based on python
	  logging instead of the old yum self.log, etc.	 Added a reverse 
	  mapping of the new levels to the old ones so that the user interface 
	  can remain the same.
	* python/YumIO.py: Create a fake signal pseudo-module to disable
	  signal, which cannot be called from a non-main thread.
	* python/YumIO.py, python/callback.py, DESIGN: Create a fake
	  pseudo-module for callback similar to that just created for
	  signal, and eliminate the callback/originalCallback symlink
	  trickery.
	* python/YumIO.py: eliminated obsolete code from YumIO::applyReal
	  which created unused pairs
	* python/YumIO.py: eliminated manual and incorrect reference count
	  decrements which caused the gc collection code to fail when
	  called by the python finalization routine (despite the fact that
	  gc was disabled).
	* YumIO.[ch], MainWindow.c: added checks for whether the version of
	  yum has pickled caches.
	* python/YumIO.py: added YumIOStdout.flush and YumIOStderr.flush.
	* python/YumIO.py: added YumIOStdout.sendToLog flag to intercept
	  install callback output and log it instead of treating it as stdout.
	  It was necessary to deal with explicit newlines (or lack thereof) too.

Wed Mar 28 2007 Todd Allen <todd.allen@etallen.com>
	* YumIO.c: Added a check for an INSTALLED package in YumIO::dsTsNewPkg
	  to check for a pathological case where yum initially decides not to
	  upgrade a package because of an architecture conflict, but later
	  decides to upgrade the package regardless of the conflict to resolve
	  a dependency.
 
Tue Nov 14 2006 Todd Allen <todd.allen@etallen.com>
	* nuu.proto.spec: Added BuildRequires: for rpm-devel and libpng-devel
	  after spotting build problems on systems that lacked those two
	  packages.

Tue Nov 14 2006 Todd Allen <todd.allen@etallen.com>
	* Released 1.4.2.
	* YumIO.c: Fixed a bug that precluded viewing a package's ChangeLog with
	  yum >= 2.3.1.  With 2.3.1 or later, it's necessary to call
	  returnChangelog().  Before 2.3.1, there's no such function, and
	  changelog must be accessed directly.

Wed Nov  1 2006 Todd Allen <todd.allen@etallen.com>
	* Released 1.4.1.
	* PasswdTextEdit.c: Fixed a bug in the recent support for hiding
	  passwords in the repository editor.  When handling a resize event for
	  the PasswdTextEdit, it's necessary not only to change the geometry of
	  its real QTextEdit, but also that geometry of that real QTextEdit's
	  viewport.  The two widgets' viewports' geometries must be the same
	  so that their line wrapping is the same.
	* webbrowser: Fixed a bug that produced over-quoted URLs.
	* webbrowser: Check for the old freedesktop need-terminal setting if
	  its newer needs_terminal replacement is undefined.

Thu Oct 26 2006 Todd Allen <todd.allen@etallen.com>
	* MainWindow.c: Fixed "Apply Actions" typo.
	* YumIO.c: Fixed a bug where QMessageBox::OK should have been
	  QDialog::Accepted.  This became apparent with Qt 4.2.x where their
	  values diverged.
	* HTableView.c: Implemented workaround for Qt 4.2.x bug that causes
	  incorrect word-wrapping.
	* PackageTableView.c, RepoEditorView.c: Kludged icon positions in the
	  two tables to workaround a Qt 4.2.x bug that caused icons in the
	  first column and text in the last column to be draw at the wrong
	  position and therefore to be cropped vertically or totally hidden.

Fri Oct 20 2006 Todd Allen <todd.allen@etallen.com>
	* Released 1.4.
	* Link with Qt 4.1.4 to get the a fix first appearing in Qt 4.1.3 that
	  keeps modal dialogs on top of the main window.
	* doc/manual.pdf, doc/html/*: Updated manual with new button and 
	  new screenshots.
	* PasswdLineEdit.[ch], PasswdTextEdit.[ch], RepoEditorConfig.[ch],
	  RepoEditorDialog.[ch], RepoBuffet.[ch]: Better implementation of
	  hidden passwords that has asterisks in the URLs as well as the
	  password field.  Thanks to Anders Bakken of Trolltech for the
	  diabolically clever solution of a hidden QLineEdit/QTextEdit 
	  operating in tandem to support this.
	* RepoAuthDialog.c: Removed HIDE_PASSWORDS #ifdef's, since the changes
	  now are much less untrusive.

Thu Oct 19 2006 Todd Allen <todd.allen@etallen.com>
	* nuu.proto.spec: When building an rpm, the particular python major
	  and minor versions are determined at link time and no other
	  major/minor version may be used.  If a nuu version for the wrong OS
	  is installed (e.g. the rhel3 version on an rhel4 system), this can
	  result is ugly run-time errors.  Put a dependency on the specific
	  python major & minor versions against which nuu was linked in the
	  rpm.

Wed Oct 18 2006 Todd Allen <todd.allen@etallen.com>
	* RepoAuthDialog.[ch], RepoEditorConfig.[ch], RepoEditorDialog.[ch]:
	  Hide passwords.  Use asterisks when possible, but in the urls in
	  the repo editor, Qt fought back HARD, and so I display nothing.
	* RepoBuffet.[ch]: Added new replaceAuth to make the above slightly
	  easier.
	* HTextEdit.[ch]: Added editingFinished() similar to that in QLineEdit.

Mon Oct 16 2006 Todd Allen <todd.allen@etallen.com>
	* MainWindow.c: Added system name to main window's title.
	* MainWindow.[ch]: When using the -r option, leave the 
	  packageTableConfig hidden while the repo editor dialog is up.  When 
	  it's closed, do the initial collect with only the two progress bars,
	  then make the packageTableConfig visible and resize the window.
	* HTableView.[ch], RepoEditorView.c: Split selectedRows() in two.
	  The general part that reduces the set of indices to one per row is
	  in HTableView.[ch].  The part that maps the indices to model rows
	  based on the internal sorted model remains in RepoEditorView.c.
	  This is to support...
	* PackageTableView.[ch]: Override the selectedRows() with its own
	  code to map the indices to model rows based on its internal 
	  sorted model.  This is to support...
	* MainWindow.[ch], PackageTableModel.[ch]: Implement new "Set 
	  Install/Update on Selected" functionality to allow installing or
	  updating with multiple selecion.
	* HTableView.c: Rewrote selectedRows() much more efficiently.
	* webbrowser, mimeviewer: Added xmessage errors in case the user's
	  web browser or file type viewer configuration is broken and the
	  command cannot be run.

Fri Sep 15 2006 Todd Allen <todd.allen@etallen.com>
	* webbrowser: Fixed second instance of 
	  /desktop/gnome/url-handlers/http/enabled, which should have been
	  /desktop/gnome/url-handlers/unknown/enabled.

Thu Aug 10 2006 Todd Allen <todd.allen@etallen.com>
	* Released 1.3.1.
	* python/YumIO.py: Worked around poor obsoletes indications by yum
	  in YumIOC.addObsoletes.  Mimicked "yum update" auto-removal of
	  obsoleted updates in YumIO.pruneObsoletes.
	* YumIO.c: Corrected a SIGSEGV when attempting a Refresh on systems
	  with newer versions of Python by using PyObject_Call to create the
	  new YumIO class instead of PyInstanceNew.
	* YumIO.c: Corrected ugly walkbacks mentioning flush on systems with
	  newer versions of yum.
	* doc/manual.pdf, doc/html/index.html: Fixed broken hyperlink for
	  Install-only packages.

Wed Aug  9 2006 Todd Allen <todd.allen@etallen.com>
	* Makefile: Add nuu.man.gz to clean target
	* python/Makefile: Fixed touch's to touch the $*.pyc file.

Mon Aug  7 2006 Todd Allen <todd.allen@etallen.com>
	* YUM, INSTALL: Added explanation of yum version requirements.

Tue Aug  1 2006 Todd Allen <todd.allen@etallen.com>
	* nuu.proto.spec: Used %{} macros for external command invocations.

Mon Jul 31 2006 Todd Allen <todd.allen@etallen.com>
	* Makefile: Removed install -o 0 -g 0 options.  For installations
	  from the tarball, the user will have to be root anyway.  And for
	  rpm, the %defattr() attribute in the spec is handling this more
	  cleanly.  Finally, those options are causing some non-root
	  installations to have to be done by the root user, which is
	  undesirable.

Fri Jul 28 2006 Todd Allen <todd.allen@ccur.com>
	* doc/html/override.css: Added a bit of a right margin to nuu's 
	  doc/html/override.css so that the text doesn't butt right up against 
	  the right edge of a web browser.

Tue Jul 25 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.3.
	* Makefile, MainWindow.c: Corrected location of documentation on SUSE 
	  & SLES.
	* webbrowser: Corrected to protect unusual characters (e.g. &) from
	  bash.

Tue Jul 25 2006 Todd Allen <todd.allen@ccur.com>
	* Makefile: Updated rules for new paths in qt4 rpm's from Fedora Extras.
	  Cleaned up some error diagnostics.  Changed *.d dependency rules so
	  that Mocking and Dependency determination doesn't happen earlier
	  than error sanity checking.
	* PackageTableDescribeInstanceRepoDialog.h, RepoBrowse.h,
	  RepoEditorModel.h, RepoeditorDialog.h: Move #include of "YumIO.h" up
	  so that its #include of Python.h is first so that its #include of
	  <Python.h> is first, because Python obnoxiously insists that that must
	  be so.  And the build fails on some platforms if it isn't.
	* RepoEditorView.h: Move #include of "RepoEditorModel.h" up for the same
	  reason as above (with just one more #include in the chain).
	* Execute.c: Added #include of <errno.h>
	* nuu.proto.spec: Fixed typo: callback.py => callback.pyc.

Mon Jul 24 2006 Todd Allen <todd.allen@ccur.com>
	* PackageTableSortFilterProxyModel.[ch], PackageTableView.[ch],
	  MainWindow.c: Reimplement PackageTable::SortFilterProxyModel using
	  regcomp/regexec instead of QRegExp's because the QRegExp's are
	  terribly inefficient (taking 25x as long as regexec).  Also add
	  special case for regex's like ".*this" and "that.*".  The ".*" prefix
	  and suffix are semantically neutral, so remove them.  This gives about
	  a 75x speedup for those cases.
	* Progress.[ch], ProgressMinion.[ch]: Added support for operating
	  just a single progress bar.
	* Progress.[ch]: Added support for updating the GUI whenever progress
	  is indicated for a single-threaded activity.  [Currently unused.]
	* Makefile: Updated to show whether debug libraries are being used.
	* doc/*: Updated with new features.

Fri Jul 21 2006 Todd Allen <todd.allen@ccur.com>
	* Package.h, PackageTable.h, PackageTableModel.c, 
	  PackageTableSortFilterProxyModel.[ch], YumIO.[ch]: Added build time 
	  to main window.
	* Package.h, PackageTable.h, PackageTableModel.c, 
	  PackageTableSortFilterProxyModel.[ch], PackageTableDescribeDialog.c, 
	  PackageTableDescribeInstanceArea.c, YumIO.[ch]: Added and used YumIO 
	  access functions for name, verrel, repo, arch, size, and summary.
	* Execute.[ch], MainWindow.[ch]: Separate execute routine into a 
	  separate namespace.
	* PackageTableDescribeDialog.[ch], MainWindow.c: Added yumIO to
	  PackageTable::Describe::Dialog to allow lookup of yumvars ($buildarch,
	  $arch,$releasever).
	* RepoEditorDialog.[ch], RepoBrowse.[ch]: Added browse button to 
	  execute an external web browser on a repository's URL.
	* RepoAuthChecker.[ch]: Fixed incorrect #ifdef & #define.
	* PackageTableOtherContextMenu.[ch]: Added Browse Repository item
	  when the menu is popped up from the repository column.
	* PackageTableDescribeInstanceRepoDialog.[ch]: Added Browser Repository
	  button.
	* RepEditorContextMenu.[ch], RepoEditorModel.[ch], RepoEditorView.[ch]:
	  Added context menu to repository editor.

Mon Jul 17 2006 Todd Allen <todd.allen@ccur.com>
	* MainWindow.[ch]: Added Help actions to start a web browser of PDF
	  reader to read the manual.
	* webbrowser: Added this script to start Gnome-configured web browser 
	  for documentation.
	* mimeviewer: Added this script to start freedesktop.org-configured
	  viewer for given mime type (used for pdf file for documentation).
	* Makefile, nuu.proto.spec: Added mentions of the new scripts.
	* nuu.proto.spec: Added dependency for gconftool-2
	* nuu.man: Documented --disablerepo= and --enablerepo= options.

Mon Jun 26 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.2.2.
	* PackageTableDescribeDialog.[ch],
	  PackageTableDescribeInstanceArea.[ch]: Disable widgets when either
	  collecting file lists or otherdata (e.g. changelog).

Thu Jun 22 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.2.1.
	* nuu.c, MainWindow.h: Added --enablerepo=r and --disablerepo=r options.

Wed Jun 14 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.2.
	* RepoEditorConfig.c, Fonts.[ch]: Cleaned up font-related code in the
	  repo editor.
	* YumIO.c: Changed estimates for progress for completion of update
	  with respect to update.  Added estimation of uncompressed size for
	  packages to be installed/updated to make them comparable to
	  uncompressed size of packages to be removed.  Fixed minor bugs with
	  progress estimates of small packages.  Cleaned up progress
	  estimates code with new macros.
	* MainWindow.[ch], YumIO.[ch]: Added Cache menu and actions.
	* YumConfIO.[ch]: Store cachedir for use in tooltips.
	* YumConfIO.[ch], MainWindow.[ch]: Added Cache action tooltips.
	* YumConfIO.[ch]: Fixed failure to store default enabled value.
	* HMenu.[ch]: Add tooltips for menu actions.
	* doc/manual.pdf: Documented Cache menu, updated screen shots, 
	  fixed typo.
	* RELEASE.REMINDERS: Added list of things to do for each new release.
	* doc/html/*, Makefile, nuu.proto.spec: Added html version of manual

Wed Jun  7 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.1.
	* YumIO.[ch]: Fixed a race condition that caused the rpm library code
	  to hang.  It was possible for the rpm library code executing in a
	  work thread (e.g. for an apply) to create a child process to
	  execute an rpm scriplet, but for that new process to execute
	  completely, for the nuu gui (main) thread to receive a SIGCHLD and
	  to execute the rpm library's handler, all before the clone() call
	  which created the child had returned a status to the work thread.
	  This left the rpm library thinking that a child that already had
	  been reaped still was around and needing to be reaped, and so it
	  would hang.  Dealt with this by blocking SIGCHLD in the gui (main)
	  thread while the work threads are executing.
	* ScrollableConfirmDialog.c: Made the apply confirmation dialog use
	  a "question" icon instead of a "critical" icon.
	* RepoEditorModel.c: Added a tooltip for the checkbox column
	  to clarify that it affects only the current session.

Fri May 26 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.0.2.
	* nuu.c, nuu.man: fixed repository => repository configuration typo.
	* RepoEditorDialog.c: A repository's reposUsed checkbox should follow 
	  the Enabled parameter only if the Enabled parameter changed (instead
	  of the old condition: if anything in the repo config changed).
	* Makefile: added some missing files to the uninstall target.
	* nuu.gnomesu: Pass command-line options to the real nuu (for SUSE).
	* doc/manual.pdf, Makefile: Added manual.

Thu May 25 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.0.1.
	* MainWindow.c, RepoAuthChecker.[ch]: The initial authentication check 
	  happens after YumIO is initialized and so its changes to the repo 
	  configurations aren't recognized.  Make it call yumIO->clear() if
	  the RepoAuth::Checker changed anything.

Wed May 24 2006 Todd Allen <todd.allen@ccur.com>
	* Released 1.0.

Mon May 22 2006 Todd Allen <todd.allen@ccur.com>
	* Released 0.9.9.8.
	* YumIO.c: Fixed bug with pressing Quit in the Authentication Checker 
	  which resulted from trying to reset python sys.{stdout,stderr} when
	  python hadn't even been initialized yet.
	* nuu.c, MainWindow.[ch], YumIO.[ch], RepoEditorDialog.[ch]: Added
	  --repo-editor and --log options.
	* MainWindow.c: Added "Network Update Utility" name.
	* nuu.c, globals.[ch], YumIO.c: Renamed command => program.
	* nuu.man, Makefile, nuu.proto.spec: Added nuu man page.
	* Makefile: Kludged ARCH to i586 value on SUSE so that "make rpm" 
	  doesn't double-build.

Fri May 19 2006 Todd Allen <todd.allen@ccur.com>
	* Initial public release 0.9.9.7.
