2025-09-09 0.14.0a0
    * Added "infohash" column
    * Fixed some display issues with zero-width and double-width characters in torrent name


2025-03-07 0.13.0a0
    * Added support for labels (Many thanks to @rsekman)


2025-01-11 0.12.12a0
    * Prevent infinite loop in `interactive` command (Many thanks to @rsekman)


2024-09-01 0.12.11a0
    * Improve file list performance (Many thanks to @rsekman)


2024-06-08 0.12.10a0
  Fixed:
    * Ignore GridFlowWarning: Size is smaller than cell width


2024-05-23 0.12.9a0
  Fixed:
    * Catch UnicodeDecodeError when decoding JSON from server response
  * Use urwid-native scrolling widgets
  (As always, many thanks to @rsekman for doing my work!)


2023-12-21 0.12.8a0
  Fixed:
    * Catch ZeroDivisionError when estimating peer download rate


2023-11-02 0.12.7a0
  Fixed:
    * Catch RuntimeError from urwid


2023-09-23 0.12.6a0
  Fixed bugs:
    * Remove urwid patch that became incompatible with urwid ~2.1.0
      (Fixes AttributeError: module 'urwid' has no attribute 'decoration')


2023-06-30 0.12.5a0
  Fixed bugs:
    * Further improvements for upcoming urwid release, making the TUI more
      responsive (All thanks to @rsekman!)


2023-06-02 0.12.4a0
  Fixed bugs:
    * Improve compatibility with upcoming urwid release


2022-04-13 0.12.3a0
  Fixed bugs:
    * Fix AttributeError: module 'stig.objects' has no attribute 'aioloop'
      when removing 10 or more torrents via the CLI


2021-08-10 0.12.2a0
  Other changes:
    * "unbind --all t" now unbinds "t" in all keybinding contexts.

  Fixed bugs:
    * Removed tilde expansion from completion candidates for the :move command


2021-02-09 0.12.1a0
  Fixed bugs:
    * Fix "Unclosed client session" error when not using the TUI


2021-02-07 0.12.0a0
  Other changes:
    * New "connect.proxy" setting that specifies a SOCKS tunnel for RPC
      communication.
    * Move cursor to the end of command when moving through history in the
      builtin CLI.

  Fixed bugs:
    * Re-add "paused" alias for "stopped" filter to make the keybinding <f> <p>
      working again.
    * Fix "RuntimeError: Event loop stopped before Future completed." when
      exiting the TUI.


2020-07-04 0.11.2a0
  Fixed bugs:
    * Include user and password in "connect.url" setting.  This fixes a bug where the
      password is not stored properly when dumping settings.


2020-06-20 0.11.1a0
  Fixed bugs:
    * Fix help for remote settings, e.g. "help srv.path.incomplete".
    * Possibly fixed a race condition that resulted in new torrent lists being empty until
      the next poll iteration.


2020-06-05 0.11.0a
  Breaking changes:
    * The 'scrollbar' palette in themes was removed and the following palettes were added:
           torrentlist.scrollbar
           filelist.scrollbar
           peerlist.scrollbar
           trackerlist.scrollbar
           settinglist.scrollbar
           log.scrollbar
           helptext.scrollbar
     * Some redundant torrent filters were removed:
       - "incomplete" is the same as "!complete"
       - "public" is the same as "!private"
     * The "summary" command was renamed to "details".
     * When renaming files, the "rename" command now attempts to rename files in all
       matching torrents.  When renaming torrents or if the new --unique option is given,
       the torrent filter expression must match exactly one torrent or nothing is renamed.
       This also works when renaming the focused file or directory in file lists in the
       TUI.
     * Renaming a torrent to an existing file/directory is now possible.
     * GeoIP support was dropped[1] and the peer list filter, column and sorter "country"
       as well as the settings "geoip" and "geoip.dir" were removed. If you use a custom
       theme, you also need to remove the "country" parts from it.
     * Some default keybindings for sorting lists have changed.

  Other changes:
    * Press <tab> in the built-in CLI to complete commands and arguments.
    * Move tabs with <H> and <L>.
    * Display free space in the bottom bar.
    * The command 'dump' collects settings, keybindings and open tabs, translates them
      into commands and writes them to a file or stdout.  It is bound to <alt-S> by
      default.
    * Filters can use regular expressions with the new '=~' operator.
    * The command 'magnet' creates magnet URIs for torrents.
    * The help structure was changed so that lists of commands/filters/settings and
      manuals explaining the concepts are separate.
    * Added "hash" filter to find torrents by info hash.
    * Peer download rate estimates are now always calculated, not just when a peer list is
      focused.
    * New 'connect.url' setting allows you to set host, port, etc with a single command.
    * The 'sort' command's --delete argument removes sort orders from the current list.

  Fixed bugs:
    * File filters caused a crash when applied to single-file torrents.
    * Fixed crash with "Filter can't end with operator".
    * Download priority in TUI file lists is now updated correctly.
    * Parameters for any command's --sort option didn't accept aliases.
    * Setting filters are now documented (`help filters`).
    * When 'remove.max-hits' triggered, the displayed list of torrents didn't handle
      spaces correctly.

  [1] https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases


2018-09-25 0.10.1a
  Fixed bugs:
    * For torrents with exactly one directory that contains exactly one file,
      listing its files in the TUI resulted in a crash: KeyError: 'is-wanted'


2018-09-07 0.10.0a
  Breaking changes:
    * The 'tui.cli.history-file' setting was removed (see 'tui.cli.history-dir'
      below)
    * Filter values with a space at the start or end must now be enclosed by
      single or double quotes (see `help filter`).
    * The short option '-ca' for the 'tab' command was renamed to '-C'.
    * In peer lists, the 'ip' column, filter and sorter was renamed to 'host'.

  Other changes:
    * The TUI command 'interactive' lets the user edit a predefined command
      interactively before executing it.
    * The TUI command 'setcommand' opens and pre-fills the command line with any
      string.
    * The TUI command 'limit' applies a second filter to any list.
    * The TUI command 'find' highlights and jumps to a search phrase (currently
      only help texts are supported).
    * The command 'rename' allows renaming torrents and files or directories
      within a torrent.
    * Keybindings can now have descriptions which are displayed in the output of
      `help keymap` and when completing key chains.
    * New default torrentlist/filelist/etc keybinding </> quickly reduces long
      lists.
    * New default helptext keybindings </>, <n> and <N> add support for
      'less'-style(-ish) highlighting and searching in help texts.
    * New default keybindings <t n> in torrent lists and <f n> in file lists
      rename torrents, files and directories interactively.
    * New default keybinding <t m> asks you where to move a torrent.
    * New 'remove' option --force removes an unlimited number of torrents
      without confirmation.
    * New setting 'remove.max-hits' can be set to a negative number to never ask
      for confirmation when removing torrents.
    * New setting 'tui.cli.history-dir' specifies a directory instead of a file,
      which allows having a history for each interactive command (i.e. when
      pressing </> you can recall previous inputs with <ctrl-p> and <ctrl-n>
      like in 'less').
      The old history file is automatically moved to its new location
      <tui.cli.history-dir>/commands.
    * All time-based filters now accept relative time deltas (e.g. "1h30m") and
      absolute time stamps (e.g. "2018-07-05").  Their behaviour has also
      changed slightly (see `help filters`).
    * The completed time of a torrent now defaults to the time it was added if
      it was never downloaded (e.g. if you're the original uploader).
    * The default filter in peer lists is now 'host'.
    * 'comment' was added as a torrent filter.
    * 'ratelimit' command displays current limits if no new limit is given.

  Fixed bugs:
    * No longer crash with a KeyError when listing peers with an unknown country
      code.
    * In yes/no prompts, default to 'no' in non-interactive mode (when stdout is
      not a TTY).
    * Using a boolean filter as a comparative filter (e.g. 'downloading = asdf')
      now results in an error.
    * Fix rare crash in peer lists: "TypeError: __str__ returned non-string
      (type NoneType)"


2018-05-07 0.9.0a
  Changed dependencies:
    * The legacy GeoIP module has been replaced by maxminddb
      https://pypi.org/project/maxminddb/

  Breaking changes:
    * The names and aliases of columns, filters and sorters have been changed
      again (sorry) to make them more consistent and easier to guess (e.g. the
      column 'rate-limit-up' is now called 'limit-rate-up' like the setting
      'srv.limit.rate.up' and '%dn' is now a filter, sorter and column in all
      lists (if applicable))
    * The setting 'srv.url' was replaced by the new settings 'connect.host',
      'connect.port', 'connect.path', 'connect.user', 'connect.password' and
      'connect.tls' (Thanks to David Blajda for adding 'connect.path')
    * The setting 'srv.autostart-torrents' was renamed to 'srv.autostart'
    * The history for the built-in command line is now stored in
      ~/.local/share/stig/history by default (Thanks to Paulo Marcel Coelho
      Aragão)

  Other changes:
    * The 'set' command now shows a list of settings when called without
      arguments
    * The value of a setting can now come from shell command,
      e.g. `set connect.password:eval pass transmission`
    * Setting any list with a limited number of options to "*" sets it to all
      options (e.g. `set columns.torrents '*'`).  This also works for --columns
      and --sort arguments options (e.g. `lsp -c '*'`).
    * New setting 'geoip' enables/disables country code lookups for peer lists
    * New setting 'geoip.dir' specifies where the geolocation database is cached
    * In peer lists, peers' host names are displayed instead of their IPs (may
      be slow; disable with 'set reverse-dns false')
    * Process name in tmux sessions is set to 'stig' if setproctitle module is
      installed (Thanks to Kutsan Kaplan and Nicholas Marriott)
    * 'ratelimit' command now prints the new limit by default for global and
      per-torrent rates unless the --quiet option is given
    * Added torrent list column: 'id'
    * When listing files in the CLI, the 'name' column now contains the absolute
      path to each file if stdout is not a TTY
    * Filter operators ("&" and "|") are now escapable with "\"

  Fixed bugs:
    * Mitigate high CPU load for urwid 2.x and later
    * Invalid tracker URLs (e.g. with port -1) don't cause crash anymore
    * Catch SIGINT (<ctrl-c>) in CLI mode
    * The values of the settings 'connect.port' and 'srv.port' are now properly
      displayed in 'help' output


2018-02-25 0.8.3a
  Fixed bugs:
    * Remove hardcoded 60 second interval so updates heed the 'tui.poll' setting
    * Fix ugly error message on exit if command fails


2018-02-23 0.8.2a
  Fixed bugs:
    * Compatibility with aiohttp 3.0


2017-11-27 0.8.1a
  Fixed bugs:
    * stig crashed with "'TransmissionURL' object has no attribute 'username'"
      when trying to connect to daemon with user and password
    * Documentation in default.theme file was confused about double negatives


2017-11-25 0.8.0a
  Breaking changes:
    * Some filters, sorters and columns have been renamed for consistency
    * The file priority 'shun' is now called 'off'
    * The 'details' command has been renamed to 'summary' ('details' still works
      as an alias)
    * The default keybindings to start/stop torrents have changed from <t+p> and
      <t+P> to <t+s> and <t+S> (so we can open the peer list with <t+p>)
    * For boolean settings, the values 'enable'/'disable' have been replaced by
      'enabled'/'disabled'
    * The 'clearlog' command has been removed (see new 'log' command)
    * The setting 'tui.cli.history' has been renamed to 'tui.cli.history-file'
    * The 'rate' command now accepts the same values for its LIMIT argument as
      the settings 'srv.limit.rate.up/down'

  Other changes:
    * New commands: 'trackerlist', 'tracker add|remove'
    * New contexts for keybindings: trackerlist, tracker
    * New command 'log' can clear the log, scroll up/down and append info/error
      messages to it
    * New server settings: srv.utp, srv.dht, srv.pex, srv.lpd, srv.port,
      srv.port-forwarding, srv.limit.peers.global, srv.limit.peers.torrent,
      srv.autostart-torrents, srv.part-files, srv.encryption
    * New setting: tui.cli.history-size
    * New setting: remove.max-hits sets the maximum number of torrents that are
      deleted without extra user confirmation
    * Filters, sorters and columns now have shorthand aliases
    * New default keybinding: <t+p> opens a torrent's peer list
    * New default keybinding: <t+t> opens a torrent's tracker list
    * <ctrl-l> now hides/shows the log and <alt-l> clears it
    * <backspace> reverts a partially entered keychain by one character
    * <ctrl-c> is now bindable and no longer raises KeyboardInterrupt
    * Newlines in rc files can now be escaped with "\" to break up long lines
    * The 'rc' command is now available on the CLI
    * The 'rc' command no longer fails if it encounters a command that is not
      supported by the active interface
    * Foreground colors in the tab bar are now all bright in the default theme
    * Time deltas now show seconds if less than two minutes away
    * Use pyxdg module instead of appdirs (if you installed with pip, run
      `pip3 uninstall --yes xdg`)

  Fixed bugs:
    * Long torrent lists in narrow terminals no longer take ages to print
    * In torrent details, the 'Completed' date was displayed as the unix epoch
      (1970-01-01 ...) if unknown, and the 'Ratio' was displayed as negative
      values if unknown/not applicable
    * Don't throw 'Unclosed client session' errors when opening multiple
      torrent lists at once while not being connected to the daemon
    * Don't crash with 'KeyError' exception when opening many torrent lists at
      once while being connected to the daemon
    * Some columns in torrent, peer and file lists were unnecessarily wide
    * Don't crash with BrokenPipeError when piping output to tools like 'head'


2017-06-13 0.7.3a
  Fixed bugs:
    * Do what the previous release said (Come on brain, you used to be cool!)


2017-06-12 0.7.2a
  Fixed bugs:
    * 'peerlist' command crashed with a NameError if no title was specified


2017-06-09 0.7.1a
  Fixed bugs:
    * Pressing <page up> or <page down> with a modifier (namely <alt>) resulted
      in a crash


2017-06-08 0.7.0a
  Breaking changes:
    * File lists are now opened with <alt-enter> instead of <enter>

  Other changes:
    * Scrollbars to indicate scroll position
    * Scroll one page up/down with <space>/<b>
    * New commands
      - 'details' displays detailed information about a single torrent (bound to
        <enter> by default)
      - 'sort' changes the sort order of existing torrent and peer lists (bound
        to <s> by default)
      - 'rate' limits the download and upload rates of individual torrents or
        globally
    * New torrent list columns 'rate-limit-up' and 'rate-limit-down' that show a
      torrent's individual rate limits
    * New 'tab' command option --close-all closes all tabs
    * New 'unbind' command option --all removes all keybindings
    * New 'add' command option --path downloads to a custom path
    * New log messages are now automatically hidden after showing them for 10
      seconds. (You can always toggle with <alt-shift-l>.)
    * New contexts for keybindings: 'torrentlist', 'filelist', 'peerlist'
    * <?> is now an alias for <F1>
    * Quick help in top bar now reacts to changed keybindings even after the
      initial start
    * Sort orders are deduplicated

  Fixed bugs:
    * The settings 'tui.log.height' and 'tui.log.autohide' didn't do anything
    * 'tui' command can hide/show/toggle multiple elements, as documented
    * Keybinding context 'file' was not documented in help for 'bind' command


2017-04-24 0.6.0a
  Breaking changes:
    * Column 'peers-seeding' is now called 'seeds'
    * Column 'peers-connected' is now called 'connections'
    * Peer sort order 'name' is now called 'torrent'

  Other changes:
    * Custom tab titles with `tab -t 'My Title'
    * New columns: 'available', '%available'
    * New peer filter: 'country'
    * With no default rc file present, create several tabs with different lists
      instead of just one with all torrents
    * Negative tab focus positions (e.g. `tab --close -1` deletes the rightmost tab)
    * Default torrent list columns have changed (see `stig help columns.torrents`)
    * Allow missing leading zero for float numbers < 1 (e.g. ".14" -> 0.14)
    * Smaller space between tab titles

  Fixed bugs:
    * Tab titles are now broken up into multiple lines if necessary
    * File filter 'size' refused to parse numbers like '100MB'


2017-04-05 0.5.0a
  Breaking changes:
    * In color themes, 'torrentlist.name.initializing...' is now called
      'torrentlist.name.discovering...'

  Other changes:
    * New torrent list columns: 'status', 'created', 'added', 'started',
      'activity', 'completed', 'error'
    * New sort orders: 'created', 'added', 'started', 'activity', 'completed'
    * New file filter: 'path'
    * Listing isolated torrents with <f> <i> now lists only 'name', 'tracker'
      and 'error' columns
    * Torrent paths and torrent file paths are now normalized so that
      'foo/bar/baz' is equal to 'foo/bar/baz/' and even 'foo/./bar/../bar/baz//'

  Fixed bugs:
    * Listing files crashed if file list was empty (e.g. when torrent was added
      by magnet link and metadata wasn't downloaded yet)


2017-03-22 0.4.1a
  Fixed bugs:
    * Marking files resulted in a crash


2017-03-16 0.4.0a
  Breaking changes:
    * In color themes, 'torrentlist.tpath' is now called 'torrentlist.path'
    * The following settings have been renamed:
      - tlist.columns -> columns.torrents
      - plist.columns -> columns.peers
      - flist.columns -> columns.files
      - tlist.sort -> sort.torrents
      - plist.sort -> sort.peers

  Other changes:
    * New commands 'mark' and 'unmark' select multiple torrents/files for an
      action
    * New command 'unbind' to remove any keybinding
    * Display the number of items in peer/file list tab titles
    * New column 'tracker' in torrent lists

  Fixed bugs:
    * Key combination <alt-space> did not work
    * 'version' command now produces proper return code


2017-02-23 0.3.0a
  Breaking changes:
    * Instead of '|', the commands 'list' and 'filelist' use horizontal tab
      characters ('\t') as column delimiters in machine-readable output

  Other changes:
    * New command: 'peerlist'
    * New theme option 'bright_is_bold'
    * Paused torrents are blue instead of dark gray, which seems to have
      better contrast in most color schemes
    * Tab command has new '--background' option to open tabs without focusing
      them

  Fixed bugs:
    * Pressing any F* key crashed the application
    * With no torrent lists open, stig would become unresponsive due to an
      endless loop
    * Setting 'srv.limit.rate.up/down' to boolean values displayed an error
      about 'off' not being a number


2017-02-01 0.2.0a
  Changes:
    * Proper chaining of commands with '&', '|' and ';' (see 'help commands')
    * Display number of torrents in tab titles
    * <D> moves to left tab after closing focused tab
    * 'tab' command no longer accepts -/+ for left/right tab
    * default.theme file now documents how to make your own theme

  Fixed bugs:
    * 'set tui.theme path/to/theme' crashed the TUI
    * Empty file list when opened and closed rapidly
    * Long, wrapped log messages were not displayed
    * <+> was wrongly interpreted as a key chain with two empty keys


2017-01-16 0.1.0a
  IMPORTANT: Keybindings have changed; run 'stig help keys' for a list.

  New features:
    * Chained keybindings (like in Emacs)
    * Add 'move' command to change torrents' download path
    * Add 'announce' command to re-announce torrents manually to tracker(s)
    * More accurate torrent ETA ("1h28m" instead of just "1h")

  Fixed bugs:
    * Page up/down keys are working again in torrent lists


2017-01-02 0.0.3a
    * Fix bug in setup.py when README.org was missing
