
# 2016-02-04, v4.0.2

- Fix stupid typo, leading to empty notifications since 4.0.1
Thanks to adam777.


# 2016-02-03, v4.0.1

- Fix segfault when no config file exists

Templates weren't properly initialized if no config file was found/read.
Thanks to Adrien Jacquet.


# 2016-02-01, v4.0.0

- Major version bump for compatibility with API changes of pacman 5.0

- Fix possible double-free memory when parsing config

When processing "Include" directives from pacman.conf with multiple
matches there was a risk of double-free memory attempt.

- updater: Show download progress for deltas; Support multiple downloads
(deltas) for one package

It is possible that the download size for a package upgrade isn't that
of one file, but multiple - in case of deltas.

Make sure the progress bar reflect the actual size of the current
download, and only toggle the color once all downloads are done.

- Add AutoShowLog tweak for kalu's updater

- Fix nb of sync dbs in tooltip

- Watched AUR: Fix segfault when no description (Thanks to 0strodamus)

- watched: Add support for repo/package

This allows to have kalu watch for a given package in a specific repo, instead
of using the usual "first repo where package is found" logic.

This could be useful when e.g. one has a repo like testing enabled, but wants
to watch packages from core.

Note that the package name (i.e. $PKG) will be kept as "repo/package" to
indicate the "restriction" that was in effect.

- Rework how templates are saved/shown in preferences

Couple things happened here. First off, the way things worked wasn't
how things were happening in the preferences window:

  * in kalu.conf, no option meant default, or fallback if there's none; an
  option w/out value meant fallback; and an option w/ a value to use
  said custom value.

  * However, in Prefs. it was only a custom value, or fallback. Any default
  being saved as custom value instead.

This was fixed, making the Prefs. window actually reflect how things actually
work in the conf file.

Also, we now introduce for each field a new "source" option (e.g. TitleSce) that
can be DEFAULT or CUSTOM for titles, because titles do not have fallbacks
anymore (it never really made sense anyways) and always have a default (for that
same reason).

For other fields (Package & Sep) it can be DEFAULT, FALLBACK, CUSTOM or
NONE. (Noting that they all have a default and/or a fallback, i.e. not always
both.)

Setting Package to NONE will mean the notification is only a title.

- Handle SIGINT/SIGTERM to cleanly exit

Gives us a chance to e.g. remove FIFO

Thanks to 0strodamus for the report.

- Some other fixes (see git log for details)


# 2014-12-20, v3.0.0

With contributions from EmanueL Czirai.

- Major version bump for compatibility with API changes of pacman 4.2

- kalu-updater: Add $PACFILES to cmdlines

When using kalu's updater, you can define one or more processes to be ran after
a system upgrade was completed. In addition to $PACKAGES you can now also use
variable $PACFILES, which will be replaced by the list of all .pacnew and
.pacorig files created during the sysupgrade.

This can be used to e.g. perform 3-way merge of .pacnew files. See man page for
more, as well as [1] for an example of use.

- simulation: Add button to download packages only

- kalu-updater: Add ability to abort a transaction (e.g. downloading packages)

- Keep temporary databases around to speed things up/save bandwidth

Instead of removing the tmp dbs after the checks/simulation, they're now kept
around. That way, for the next checks/simulation they can be re-used and might
already be up-to-date (even though the system's ones aren't).

If the DB path changed or the folder is gone they're just re-created, and of
course it is cleaned up when exiting kalu.

- Add KDE's StatusNotifierItem support

With Plasma Next KDE doesn't support the good old xembed systray, and so
GtkStatusIcon are "useless."

Adding a new configure option --enable-status-notifier to enable support of
KDE's interface via our small library, statusnotifier.

- Use $XDG_CONFIG_HOME instead of $HOME/.config

Likely to not change what's actually used, since it'll default to the same value
should $XDG_CONFIG_HOME not be set, but it's better/proper/allows user
customization.

- Add config tweaks to define colors used in updater
Useful in case (default) colors do not work well with the theme.

- Add repo name in a column on kalu updater, as well as available via $REPO in
package template for updates & watched packages.

- simulation: Show ALPM log messages (e.g. warnings, etc)

- Preferences: Unchecking a template field wasn't always remembered

When unchecking a template field (to have it use its fallback value) it wouldn't
be remembered when said field has a hard-coded default value in kalu, which
would then be restored. (E.g. the Title field for packages not found in the AUR)

Now such fields are saved to the .conf file without a value (e.g. "Title=") to
preserve their disabled/falling-back state.

- Force icon size on notifications

Since GTK+3.14 the icon size might not be the requested one, so force it if
necessary.

- Add a 16x16 logo for use in menus/buttons

Because GTK+3.14 won't resize the 48x48 one anymore, and gives us extra large
icons on menus/buttons instead.

- Some other fixes (see git log for details)


[1] http://jjacky.com/2014-07-23-better-pacnew-handling-with-the-next-kalu/


# 2014-05-05, v2.4.1

- Fix possible endless loop when showing news


# 2014-03-02, v2.4.0

- Add FIFO to send commands to kalu

On start a FIFO named kalu_fifo_XXXX (where XXXX is kalu's process id) will be
created under `$XDG_RUNTIME_DIR`. One can write to this FIFO to send commands to
kalu, to e.g. run checks, start a sysupgrade, etc

This allows to use kalu without the need to click its systray icon/menu, even
from keyboard shortcuts.

- Watched (AUR) packages: Include packages not found in results

They have "package not found" as description, and "-" as new version.

- Add a new notification for packages not found in AUR

When checking the AUR, any and all packages not found will now be listed in an
additionnal notification. This allows to catch e.g. when a package might have
been renamed/removed.

Note that such packages should be put on the ignore list, to avoid useless
querying of the AUR.

- Promote "sysupgrade simulation" a bit

Make it possible to start a sysupgrade simulation from menu, clicks on the
systray icon and via FIFO command

- kalu updater: Add download/install/net sizes to kalu's log

- Fix possibly trying to start a sysupgrade while busy

- Update French translation

- Remove config tweak ForceImages (Images are now always shown)

- Add option (NotificationIconSize) to define the size of icons used on
notifications

- Some other fixes (see git log for details)


# 2013-10-18, v2.3.0

With contributions from Mickael FALCK.

- Add "simulation" for when there are conflicts

In case of conflict, kalu can't compile the list of packages. Instead of having
to either just upgrade blindly, or figure things out manually, one can now run a
"simulation" to revolve the conflict, and see all the resulting pending
upgrades.

It uses kalu's updater GUI, but obviously there's no upgrade and it's all done
in temporary databases.

- Add mnemonic for `Upgrading system...` button (in kalu's updater)

- Fix not setting GPGDir in ALPM; Fixes #7

- Add support for '\e' in template variables

Mostly useful for CLI use, to use e.g. bold/colors in templates.

- Update French translation

- Fix compilation w/ DISABLE_UPDATER

- Add tweak ForceImages (see man page)


# 2013-06-30, v2.2.0

- Set user-agent via environment variable HTTP_USER_AGENT; fix issue with some
server/repo where lack of one resulted in a download error (HTTP 406).

- Change how icons are loaded, allowing easy override. All 4 icons used are now
loaded from the theme - "kalu", "kalu-paused", "kalu-gray" & "kalu-gray-paused"
- so that users can easily override any (and all) of them, simply putting files
correctly named in ~/.local/share/icons

- Add polkit rule so members of group "kalu" don't need auth to run a sysupgrade
This obviously only affects sysupgrade ran through kalu's updater. The group
name can be set on configure. It's also possible to just copy the file to
/etc/polkit-1/rules.d to overwrite it at "runtime".

- Update French translation

- Can specify --debug multiple times


# 2013-05-12, v2.1.0

- Add new option on single/double-click to exit kalu

- Add support of middle-click on the systray icon

- kalu-updater: Change the way expander (Log) behaves: It wasn't very nice
whenever the paned position was changed, with regards to resizing the toplevel
window. Now it won't resize it, and should remember the last used positions
(expanded & collapsed).
Still not perfect, but better.

- Preferences: Reset timeout for next auto-checks after a save

- Add config tweak NotifButtons to remove buttons from all notifications
(So notify-osd doesn't turn notifications into non-expiring windows.)

- Remove option SaneSortOrder; It's useless, since GTK3 actually has an option
of its own for that (gtk-alternative-sort-arrows).

- kalu-dbus: ALPM_QUESTION_LOCAL_NEWER was removed from ALPM in libalpm 8.0.1
(pacman 4.1.1)

- Update French translation to 2.0.1


# 2013-04-06, v2.0.1

- Fix unable to start a sysupgrade (kalu-dbus would fail to start, due to a
wrongly removed init call)

- Couple other (minor) fixes


# 2013-04-05, v2.0.0

- Major version bump for compatibility with API changes of pacman 4.1

- Add menu "Show unread news" to help marking them read
Not so much to avoid running all checks (just re-show notifs) but for people who
do not have buttons shown on notifications.

- Escape a few more characters for notifications (Fix #3)

- Watched (AUR) window: add scrollbar to the list of watched packages

- Parse UseDelta value in locale-independent way

- Timeouts for checks are now calculated using real time (and not monotonic
time) to handled suspended system.


# 2013-01-22, v1.4.0

- Add feature pause: when paused kalu will not perform its automatic checks

The "skip period" (or "paused period") defined in Preferences now simply
switches kalu's paused state. This means there is now a visual feedback, and
one can "overwrite" this period on demand (e.g. resume during the skip period
and it's back on.)

Upon start, kalu checks whether we're during the skip period or not, and simply
either auto-pauses or auto-resumes (i.e. triggers auto-checks).

- A new action "toggle pause" is available on (double-)click

- A new set of actions for (double-)click when paused is available, including
an extra "Same as non-paused".

- Preferences: Fix double click action empty on re-show last notifications

When action show last notifs was used on dbl-click, showing preferences would
not select it in the list, and could therefore have it lost upon saving.

- Add config tweak to not show notifications on auto-checks

Adding "AutoNotifs = 0" to kalu.conf will disable showing notifications during
automatic checks. They can be shown using "re-show last notifications" as
usual. (Notifications will still be shown for manual checks.)

- Add support for internationalization; and thanks to kolibry kalu can now speak
French

- AUR: Fix package names not being urlencoded

Package names were used as-is in the URLs for the AUR, which could lead to
unexpected results (likely segfault) when said names contained "special"
characters, e.g. the plus sign.

- AUR: Avoid segfault in case of unexpected results

If a package returned by the AUR wasn't on the list asked for (which could
happen when names weren't urlencoded, and both foo and foo+ were packages
existing in the AUR) kalu would segfault.

We now ensure the package was found, and if not trigger an error.

- AUR: Fix possible memory leak on invalid JSON

- kalu-updater: Fix question to skip package not being asked

Question to skip upgrading a package when dependencies cannot be resolved was
not asked, leading to kalu (and kalu-dbus) hanging, needing to be killed.

- Fix empty notifications when '&' was used in text

Seems that because it uses a subset of HTML, the text in notifications should
not use '&' directly, but encode it as &amp; (else, the text of notification
is just empty, at least with notification-daemon and xfce4-notifyd)

So, when creating new notifications, we make sure to "convert" those '&' since
there can be some in e.g. a package description, which could be used as part
of the template (text is untouched on CLI output).

- Fix hanging on error parsing config

When error occured parsing configuration, since 13c4ffb4 GTK init wasn't yet
done, error messages couldn't be shown and kalu would just hang.

- Fix Makefile.am to handle spaces (in {dist,install-data}-hook)

- Help: Add info about conf files structure, and a section about config tweaks

Describe the format of the different conf files used by kalu, as well as the
name and supported values of each settings.

- kalu will now use the installed kalu.png file as its logo. It'll be used
about everywhere (systray, windows, menus...)


# 2012-10-27, v1.3.0

- Add $DESC to all templates (but news) for package description

- Update polkit policy: use auth_admin for all, add message & icon

- kalu's updater: Add tooltip to columns name & all sizes

- Fix segfault on invalid JSON from the AUR

- Fix invalid state when marking read while checking is still running

Notifications appear as soon as possible, and allow user to mark things
read/start upgrades. When this was done while the checking was still running,
it wouldn't be taken into account for kalu's icon/tooltip.

- Fix re-show notifications which would ignore conflicting files error.

When the list of packages to upgrade couldn't be compiled due to file conflict,
a "special" notif is shown, with an error message but also the "Upgrade system"
button.
This notification wasn't registered in the last_notifs list, and re-show would
ignore it (e.g. say "no notifications to show")

- Fix download sizes possibly incorrect (when file already in cache)

Cachedirs weren't set with ALPM during the checks, but they are actually used
when determining the download sizes, in case files are already
downloaded/available in the cache.

- Fix marking watched (AUR) packages could get garbage in memory

Marking watched (AUR) packages as seen could sometimes lead to garbage used as
new version number in memory (data on disk was valid).

- Set icon & tooltip properly when conflict makes upgrades number unknown

- If downloads (news, AUR...) are slow/timeout it might be linked to IPv6, in
which case adding "UseIP=4" in ~/.config/kalu/kalu.conf (under [options])
might help.


# 2012-10-21, v1.2.1

- Fix error checking news (due to switch to https)

Downloading the news used URL on http and didn't follow redirection, so the
switch to https-only caused an error checking the news.


# 2012-09-15, v1.2.0

- Instead of hard-coded use of xdg-open, one can now define the command line to
be used when a link is clicked (in news). Variable $URL will be replaced by the
URL to be opened.

Additionally an error message will now be shown in case of failure.

- On the command line to be executed on AUR upgrades, a variable $PACKAGES can
now be used. It will be replaced by the list (space separated) of all AUR packages
for which an upgrade is available.

- It is now possible to have kalu re-show all notifications from the last ran
checks. New option is available in the menu, and as action on single/double click.

All notifications from the last ran checks will be shown as they were originally
(including action buttons), including any error notifications.

Notifications are removed/altered as needed. For instance, when marking watched
(AUR) packages/news, the corresponding last notification will be removed (if
nothing remains unread/unmarked), or altered to inform that running checks again
is required (also, the button is gone).

It should be noted that the tooltip doesn't display status from the last ran check,
but last known info. Meaning if the last checks failed (e.g. Internet connection
was down), the tooltip will still show data from the (successful) check before,
while re-show will only show the error notification(s).

- Fixed a bug in marking watched (AUR) packages, where garbage could end up as new
version number.

- News parser now handles "all" kinds of new lines (<br>, <br />, etc)

- kalu's updater: error messages of 1024+ characters are no longer being truncated

- kalu's source code moved from a mercurial repo (https://bitbucket.org/jjacky/kalu)
to a git one (https://github.com/jjk-jacky/kalu)

- Added option --enable-git-version to configure. When enabled, the version used
in kalu (and man page) will come from `git describe` ran at compile/make time.


# 2012-08-10, v1.1.0

- Added options --manual-checks (-m) and --auto-checks (-a) to run manual/auto
checks from command line. No GUI used at all, everything gets printed on
stderr/stdout (using the same templates as for notifications). 

This can be done without the need for a DISPLAY (no GTK init performed), thus
works from a tty or through SSH. This can also be useful to use kalu from scripts.

- A configure option --disable-gui is also available, to make kalu a small
CLI-only binary (i.e. no dependency to GTK nor libnotify), which could be useful
on GUIless box (e.g. servers), where kalu can then still be used to check for
upgrades, watched packages, etc

Running this CLI kalu without arguments will do the same as using --manual-checks

- News parser: a few fixes: LF inside <code> blocks are preserved, correct
processing of &minus;, &lsquo;, &rsquo;, &amp;, &lt; and &gt;

- News parser: links are now supported: showed blue & underlined, URL as tooltip,
click to open in default browser (via xdg-open)


# 2012-05-10, v1.0.0

- Preferences: kalu's updater: added option to disable confirmation before
starting PostSysUpgrade processes.

- PostSysUpgrade: now you can use variable $PACKAGES in the command line, to be
replaced by the list of upgraded packages.

Note that the list actually is of all packages involved in the sysupgrade, i.e.
also those removed or added (e.g. when a package is replaced by another one).

- When buttons for Upgrades & AUR were both used/clicked at the same time,
kalu would run a check after each, fixed

- Parsing config file was broken for lines with more than 255 characters, fixed

- News parser: added support for lists and &quot;

- Other minor fixes.

- Bumped to 1.0.0 to follow semantic versioning


# 2012-04-19, v0.1.5.1

- Preferences: option SyncDbsInTooltip could not be changed, fixed

- Preferences, Upgrades: added Check for pacman/kalu conflict. When enabled,
kalu will check if there's an upgrade of pacman likely to prevent the system
upgrade due to kalu's dependency to the current version of pacman (i.e. due to
API changes in libalpm).

If so, a button will be featured on the notification, to show a little message
about the reason for such a conflict, and how to perform the system upgrade.


# 2012-04-14, v0.1.5

- Now using automake & autoconf. (Hopefully) this shouldn't really change
much for most people, but if you don't care for kalu's updater and only want
to use kalu as update notifier, you can use option --disable-updater to configure.
You'll get a smaller binary, no second binary (kalu-dbus) nor dependency to
DBus/PolicyKit.

- When starting an external process to perform sysupgrade (or AUR upgrade), kalu
now waits for the process to end (being "busy" meanwhile), and runs another check
right after, to refresh its state. Closes #5.

- kalu always shipped with a man page, and recently a (this) changelog. Both can
both easily be read using menus Help & Change log.

- Added new option to customize icon used on notification: none, kalu's default,
or specifying a file to load the icon from. The icon will be shown full size, so
e.g. using /usr/share/pixmaps/kalu.png will uses kalu's icon at 48x48 (if
loading icon fails, silently falls back to kalu's default icon). Closes #6.

- kalu's updater always used /etc/pacman.conf (instead of whatever is set in
Preferences), fixed

- Parsing kalu.conf would report & stop on first error, now it ignores the line,
continues parsing, and report all errors (at once)

- kalu's updater: log messages longer than 1023 characters would be truncated, fixed

- Other minor fixes


# 2012-03-26, v0.1.4

- added section "Misc" under Preferences, with options to define action on
single- & double-click on systray icon: nothing, check for upgrades, system
upgrade, hide/show opened windows

- kalu updater: one can now click on columns to sort packages

- Preferences/Misc: option to disable sane sort indicator

- tooltip: now indicates if/how many dbs can be synchronized (regardless of
upgrades avability). Can be disabled via option under "Misc" in Preferences

- fixed possible memory leak if showing news failed on parsing

- showing Preferences without "Upgrade system" button enabled didn't have
PostSysUpgrade list disabled, fixed


# 2012-03-20, v0.1.3

- when saving Preferences, \n in templates wasn't resolved to newline (for
current run), fixed


# 2012-03-18, v0.1.2

- saving preferences if the folder (~/.config/kalu) did not already exist would
fail, fixed


# 2012-03-11, v0.1.1

- kalu-updater: environment variables were unset, which could cause issues on
some post_{install,upgrade} scripts, fixed

The sysupgrade is ran from kalu-dbus, which is automatically started through DBus.
When starting something, DBus does clear all environment variables, which could
cause problems is some scripts (e.g. mkinitcpio with autodetect hook, and the
lack of a PATH defined).
This is fixed by using a bash script to source /etc/profile (and therefore
restore a proper environment) before launching kalu-dbus
(See https://bbs.archlinux.org/viewtopic.php?id=136784)


# 2012-03-06, v0.1.0

- first stable release

- The menu "System upgrade" was always present and running kalu's system updater.
It now relies on the preferences for Upgrade notifications: only visible if
enabled, and starts either kalu's updater or the specified command line.
IOW those two (notifications' button & menu item) are 2 GUI elements of the same
feature.


# 2012-03-03, v0.0.6

- When performing a sysupgrade through kalu's updater, when (new) optionnal
dependencies were to be listed, kalu would crash. Note that "only" kalu (aka the
GUI) would crash, the updater part would still run fine and complete the upgrade,
as the log (pacman.log) would show. Still pretty bad, and fixed.

- When starting a sysupgrade, the message in the log (pacman.log) is now
"starting sysupgrade" to be more consistent with the message upon completion
("sysupgrade completed")


# 2012-02-23, v0.0.5

- added man page

- Preferences: added notification expiration delay


# 2012-02-21, v0.0.4.1

- kalu did not perform automatic checks (forgot to remove debugging comment), fixed


# 2012-02-21, v0.0.4

- added window Preferences to configure things

- checking the news did not report error on failure, fixed

- news were always checked regardless of settings, fixed

- templates were overly complicated, rewrote the whole thing


# 2012-02-17, v0.0.3

- when creating local copy of dbs, it would fail if there were folders (in sync/);
fixed (only copy files now)

- added basic command-line parser, and option -d/--debug to enable debug mode


# 2012-02-15, v0.0.2

- saving data (marking (AUR) watched packages, read news, managing (AUR) watched
packages) would silently failed if the folder did not exists (yet kalu acted as
if it had worked), which was pretty much always the case on a new installation, fixed

- template Title was missing $INS (total install size), fixed


# 2012-02-14, v0.0.1

- first release, still in development phase
