
# 2017-06-20, v0.5.0

 !  Makefile: Fix install w/ dynamic library. Thanks to linsam.

 !  tty: Fix when multiple devices are listed as console. Thanks to linsam.

 !  Fix possible memory corruption. Thanks to John O'M.

 !  start/stop: Fix setting longruns as timed out
    Only oneshots should be marked as timed out, longruns should not have
    their status modified because it would be "take over" the s6 status (at
    least from aa-status) while it shouldn't.

    Most obvious example is when timing out while waiting for readiness:
    surely the status of the services remains "Up", not "Timed out"

 +  status: Report "Up; Getting ready..." as needed
    Longruns that are up (i.e. not (yet) ready) but do support readiness
    will be announced as such, making it obvious they support readiness and
    therefore aren't yet in their "final" state.

+++ enable: Add --alarm-s6
    When adding new servicedirs to an active repodir (i.e. its scandir has a
    running s6-svscan), for new longruns to be properly set/usable we need to
    "alarm" s6-svscan, so it rescans the scandir.

    This had to be done manually via `s6-svscanctl -a $REPODIR/.scandir` but
    can now be done automatically from aa-enable.

 !  start/stop: Fix issues on 32bit systems. Thanks to John O'M.

 !  stage0: Fix stderr not on console upon break

*** stage4: Open a shell if aa-terminate fails

*** stage3: Tweak wait-ing post TERM/KILL
    - After TERM we give processes ~4s to end instead of immediately trying
      to KILL them;
    - After KILL we only wait up to ~2s, then move on (instead of blocking
      should there be a process in uninterruptible sleep)

*** stop: Wait for longruns to be Down & Ready (not just Down)

*** stop: In stop-all, default timeout becomes a maximum
    So any timeout defined in a file timeout in servicedir will be ignored
    if more than the default (or 0 for infinite).

 *  stage3: Set default/max timeout to 20s

 *  Deprecate aa-command

--- Remove deprecated aa-mvlog

*** Bump dependencies to skalibs 2.5.0.0; execline 2.3.0.1 and s6 2.5.0.0

 !  Plus a few (other) fixes; see git log for details


# 2016-01-10, v0.4.0

 !  stop: Fix not creating down file

*** stage1/2: Change how the logging works: instead of logging into
    /run/initramfs/boot.log in stage 1 & 2, and using aa-mvlog to move said file
    to /var/log/boot at the end of stage 2, now stage 1 & 2 (much like stage 3)
    log directly into /var/log/boot/current

    As a special treat however, stage 1 will first check for a file
    /run/initramfs/boot.log and import its content into /var/log/boot/current if
    found.

    That way everything from stage 1 is logged into persistent storage, and the
    whole process is simpler.

    (One can still e.g. have a service at the end of stage 0, after mounting
    /root-fs, that will create an empty file named after the first tainstamp of
    /boot.log and update the /root-fs/var/log/boot/current symlink to point to
    it, to keep one log file per boot.)

 *  Deprecate aa-mvlog

 +  status: Longrun services now have a "Mode" w/ "Automatic restart (want up)"
    or "Once (want down)" when they're up (doesn't make sense when they're not).
    In list mode, only show "Once" next to the PID when needed.

 +  status: Add mention "To be restarted" for down services that s6-supervise
    shall be restarting soon, after finish is done and/or the 1sec delay.
    Useful to see when e.g. a service keeps failing to start/be restarted.

!!! stop: Fix unable to stop service that keeps crashing. That is, when a
    service keeps crashing/stopping, and being restarted by its supervise, it
    would be seen as down and therefore not (be allowed to be) stopped.

    Now consider "to be restarted" to be up when stopping, to solve the issue.
    The command will be sent to supervise (and the down file created), but we
    won't wait for a 'd' event and announce it as "Not up".

*** stop: Change how --all works: Now it only means stopping all up services,
    nothing else. When specified a second time, then mode "stop-all" is enabled,
    which means:

    - for all down services, send 'x' to their s6-supervise
    - send 'dx' instead of 'd' to the s6-supervise of up services
    - ignore dependency error (i.e. always stop everything)

    So same as before, only with stopping s6-supervise of down services, to
    properly bring the entire supervised tree down (assuming s6-svscan is down
    already, ofc).

 *  stop: Tweak --skip with --all: Instead of just ignoring the service
    altogether, in stop-all mode we only send 'x' to s6-supervise, so stopping
    the service next will have its supervisor exit as well.

 !  start/stop: Better pipe handling

 !  start: Fix possible warning "unable to get longrun info"

+++ Bump dependency to s6 2.2.4.3 for ftrigrd fix

 !  Plus a few (other) fixes; see git log for details


# 2015-11-14, v0.3.0

 +  start/stop: Don't need root rights for --dry-list

 !  tty: Fix possibly printing garbage; Thanks to John O'Meara

+++ Add helper command, to easily get clean environment & logged output

+++ enable: Create "supervise" folders w/ perms 0711 - This allows to read the
    s6 status file even as a user, the file itself being world-readble. Allows
    e.g. proper/full use of aa-status as a user.
    One can use --no-supervise to disable it.

 +  shutdown: Check argv[0] for use via symlinks, so one can use symlinks
    "halt", "reboot" and "poweroff" to use this.
    Can help make things easier, and more "compatible" with sysvinit.

 !  Fix not always reporting an error when loading a service
    This could manifest e.g. when aa-status couldn't read the s6 status file
    (permission denied), and would just silently ignore the error/service.

+++ status: Add --sort (also --name & --reverse); Services are now sorted by
    time by default.

!!! enable: Fix deleting "log" with --upgrade; When clearing the servicedir
    during an upgrade, the folder "log" (i.e. the logger) was removed; It is now
    properly treated.

+++ Add (better) support of loggers. Now */log servicedirs are processed as
    regular servicedirs, supporting dependencies and such. Additionally, any
    longrun with a logger will have a dependency ("needs") on said logger
    auto-added.

    Before, they were autostarted by s6-svscan (no down file was set) and
    expected to always be up. They're now processed as usual, so starting foobar
    will first need to start foobar/log as expected.

    aa-status has more filters to deal with loggers properly.

 *  enable: Count loggers as well

*** enable: Print enabled services; Add --quiet not to

 +  start/stop: Add --verbose

 !  start: Fix handling already up but not ready services
    If a service that supports readiness was already up but not yet ready, it
    would be "ignored" (as "Already up"). We now properly include it in the
    "transaction" and wait for it to become ready; "Already up" only applying
    when ready.

+++ Bump build requirement to skalibs 2.3.8.0

 !  Plus a few (other) fixes; see git log for details


# 2015-08-10, v0.2.0

 +  Add aa-tty, small tool to print the device name of the active tty

 +  Add aa-ctty, small execline helper to set controlling terminal

 +  stage{0,2,3}: Set controlling terminal (to use ^C)
    That way one can use Ctrl+C on aa-st{art,op} to manually timeout a pending
    service.

!!! Use /etc/anopa/listdirs/onboot instead of /etc/anopa/onboot

 !  status: Rename -l to -L for --list
    (Because we'll want to use -l for --listdir, for consistency.)

 +  stop/status/enable: Add --listdir

 +  --listdir supports auto-prefix; That is, unless it starts with a slash or
    dot, it gets auto-prefixed with "/etc/anopa/listdirs/"

+++ status: Add --filter

 !  start/enable: Rename -n/-w to -N/-W

+++ start/stop/status/enable: Add --dry-list (-n)

+++ stop: Process "needs" in reverse order. We used to only stop whatever was
    specified, processing dependencies ("needs") only as ordering directives
    (i.e.  as "after"), which obviously isn't right.

    Now they're correctly processed "in reverse," i.e. if A needs B then we'll
    set it as B needs A, i.e. to stop B we also need to stop A (and the
    matching "after" will be there to order stopping A before B).

+++ start/stop/enable/status/reset: Support reading from stdin
    Use "-" as service name on the command line to read them (one per line)
    from stdin.
    Useful to read them from a file, or pipe a --dry-list output.

 +  enable: Add --upgrade to upgrade servicedirs

 +  Support --double-output about everywhere

+++ Make compatible/require s6 v2.2.0.0
    Event for "unready" in aa-setready is now 'N' (was 'D'), as is the short
    option for --unready

 !  Plus a few fixes; see git log for details


# 2015-04-10, v0.1.0

 *  first alpha release
