===================
- Highlights: Much improved searching and reporting.
- A brief overview of what's documented in greater detail below:
- Add grouping (by Activity, Category, Tags, and/or start date).
- For instance, group by Activity, Category, and Day to see
how much time was spent on each Activity\Category each day.
- Add multi-column sorting.
- For instance, group by Activity, Category, and Day, and sort
by day and usage to see results ordered by which tasks had the
most time spent on them recently.
- Add search on Fact description.
- For instance, find all Facts whose description contains one
or more search terms.
- Add Tag frequency distributions.
- For instance, to see the number of times each Tag was used in
each result group.
- Add JSON output format.
- For instance, to prepare data to transmit elsewhere, such as
<third-party timesheet server>.
- Support human-friendly relative dates (like '1 day ago').
- E.g., ``dob find --since yesterday``.
- Wire since/until options to Activity, Category, and Tag searches
(via ``list`` and ``usage`` commands).
- E.g., ``dob list activities --since 'last week'``.
- New 'Journal' search results format, exemplified by the new
``dob report`` command.
- Includes sparklines and Tag frequencies, e.g.::
$ dob report
Fri Jun 12 8.3 hours ████▌ DevelopmentTally Bark dob(5)
2.5 hours █▍ Cooking & EatingPersonal salad
- Details: Add more powerful search and report options.
- Rename a few existing options and a handful of single-character
options, and add a number of new options for the search commands
(for the existing ``search``, ``list``, ``usage``, and ``export``
commands, and for the new ``report`` command).
- Bring parity to the ``list``, ``usage``, ``search`` and ``export``
commands, such that they all support as many of the same options as
reasonable.
- Add new report grouping options:
- New ``-A/--group-activity``, to group results by Activity.
- New ``-C/--group-category``, to group results by Category.
- New ``-T/--group-tags``, to group results by Tag names.
- New ``-Y/--group-days``, to group by Fact start date (YYYYMMDD).
- Allow multiple columns to be specified with ``-S/--sort/--order``.
- Remove ``-D/--desc`` and ``-A/--asc`` options and rely instead on
``-D/--direction/--dir`` option, which can now be specified multiple
times, to support specifying a separate sort order for each of the
now-multiple-allowed ``-S/--sort/--order`` options.
- Rename report option ``-g/--category`` to ``-c/--category`` (which
restricts results to matching Category), so that the option name
pneumonic is obvious.
- Add new ``-t/--tag`` search match option, to complement existing
``-a/--activity`` and ``-c/--category`` search match options.
- Add search term support, for matching against Fact description.
- E.g., ``dob find foo`` will find all Facts with 'foo' in their
description.
- Add single-character options for ``--since`` and ``--until`` options:
``-s`` and ``-u``.
- Disable deprecated report options, ``--hidden`` and ``--deleted``.
- Rename option ``-u/--usage`` to ``-U/--show-usage``.
- Rename option ``-s/--span/--no-span`` to ``-N/--hide-duration``.
- New option, ``-P/--hide-description``, to omit the Fact description.
- New option, ``-l/--column``, allows user to specify exactly what
details to include in the report (otherwise a reasonable set of
default columns is reported).
- E.g., the command,
``dob list facts --group-tags -l 'tag' -l 'group_count'``
will show two columns, 'Tag' and 'Uses', that indicate
each Tag name used on the grouped Facts, as well as how
many Facts it's used on, and excludes all other columns.
- Add a new sparkline output value, to visually represent the 'duration'.
- And add options to control the new sparkline output value:
``--spark-width``, ``--spark-total``, and ``--spark-secs``.
- Rename option ``-r/--rule`` to ``-R/--factoid-rule``, for readability.
- Replace poorly implemented ``-t/--truncate`` option with ``-W/--width``
option, to restrict report table or Factoid line to specific width.
- Also change Factoid report to default to compact view (no blank
lines) when width is used.
- E.g., ``dob find --since 'last week' --factoid --width 110``.
- Rename poorly-named ``-w/--doc`` output format option to ``--factoid``
(or use ``-f factoid``).
- Add JSON output format option (specify with ``-f json``, ``--json``,
or ``-J``).
- Split table and markup formats from ``--format`` to a new option,
``--table-type/--type``.
- Now the ``-f/--format`` option only includes the higher-level
formats, which are also each mapped to their own option names,
e.g., ``--journal`` is equivalent to ``--format journal``.
This list of higher-level formats is:
``--journal``, ``--factoid``, ``--ical``, ``--csv``, ``--json``,
``--tsv``, ``--xml``, and ``--table``.
- The new ``--table-type/--type`` option is used to specify a table
or markup output format, and includes: html, mediawiki, rst, etc.
- E.g., ``dob find --since 'last week' --table --type rst``.
- Modify ``--table`` option to use the ``texttable`` package and disable
``tabulate`` and ``humanfriendly`` usage, because neither of those
packages wraps cell values, so their tables are not guaranteed to be
readable in one's terminal.
- This is mapped to the default ``--table-type normal`` option.
- Add new ``--broad-match/--broad`` option, for applying report command
search terms to matching meta fields, too.
- E.g., ``dob find --broad foo`` will find all Facts with 'foo' in
their description, in their Activity name, in their Category name,
or in one of their Tag names, including parts of any name. For
instance, it would match an Activity named 'afoobar'.
Whereas, e.g., ``dob find -a foo`` would only find Facts with an
Activity named exactly 'foo'.
- Allow multiple Activity, Category, and/or Tag filters.
- Rather than only accepting one attribute name to filter search
results, allow many (and OR the filters).
- E.g., ``dob find -a foo -a bar`` will find all Facts with
an Activity named with 'foo' or 'bar'.
- Add new config value, ``term.row_limit``, to replace hardcoded terminal
output row limit, but ignore if output is being redirected.
- This avoids overwhelming the terminal with too much output, unless
the user explicitly asks for it.
- Align columns better in the table output format.
- E.g., align 'duration' column on decimal places, and right-align
other number columns.
- New options to show or hide cumulative result totals in aggregate search.
- Feature: New ``dob report`` command shows time spent recently on each
Activity\Category, grouped by start date, and formatted using 'Journal'.
- The ``report`` command is essentially an alias for the otherwise
lengthy ``find`` command::
dob find \
--since 'last week' \
--group-days \
--group-activity \
--group-category \
--sort day \
--dir asc \
--sort time \
--dir desc \
--journal
- Extend all commands that output a table to support the other formats, too.
- In addition to table format, now also support CSV, TSV, XML, etc.
- This affects the ``list`` and ``usage`` commands, as well as the
``config show``, ``styles show``, ``rules show``, and ``ignore show``
commands.
- E.g., ``dob config dump --json``.
- Improve: Tweak other option names.
- Rename ``-C/--color/--no-color`` to ``-X/--color/--no-color``, and
rename ``-c/--config`` to ``-C/--config``, so that now all single-
character global options, save for ``-v/--version``, are capitalized.
- Rename import command option ``-X/--leave-backup`` to ``-b/--leave-backup``.
- Bugfix: Activity without Category crashes ``list activities``.
- That is, for any Activity that has NULL for the Category.
- Bugfix: ``dob usage tags`` crashes.
- Bugfix: ``dob list`` sort option broken.
- Alias: New ``dob find`` command is alias to ``dob search`` command.
- Improve: Add abbreviated ``list`` and ``usage`` command type names.
- E.g., ``dob list act`` is an alias for ``dob list activities``.
- Add ``--show-duration`` option to ``list`` command.
- Because of the complementary nature of the ``list`` and ``usage``
commands, add ``--show-duration`` to complement ``--hide-duration``,
to be used with ``list`` commands to achieve ``usage``-like output.
- Improve: Make ``dob export`` only generate Factoid report.
- Because that's the only format than can be imported.
- Also, require than an output file be specified for the ``export``
command, to better differentiate it from the ``search`` command
(because ``search`` could otherwise be used instead of ``export``).
- Improve: In reports, distinguish between Category with no name, and NULL.
- Specifically, if an Activity has no Category assigned, show '<NULL>'
rather than the empty string, which itself is a valid Activity name.
- Improve: Tweak ``details`` command output so colons align.
- Simplify: Hide ``migrate`` command (which is currently not needed).
- Bugfix: Catch overflow error when day delta too large.
[|dob-viewer|_]
- For instance, if the user enters a jump command but with a date,
e.g.,``20200615J``, when they meant to instead use the ``f`` command,
not the ``J`` command, i.e., ``20200615f``, catch and recover
gracefully from the ``timedelta`` overflow error.
- Improve: Make mash-quit on unsaved changes prompt opt-in.
[|dob-viewer|_]
- As a convenience to developers, mashing Ctrl-q would skip the
save confirmation on exit; this feature is now opt in via the
new config setting, ``dev.allow_mash_quit``.
- Improve: Show hidden config options when requested directly.
[|dob-bright|_]
- E.g., ``dob config dump foo bar`` would previously not show
the config setting if ``foo.bar`` was marked ``hidden``.
- Improve: Add max-width option to ``Fact.friendly_str``.
[|nark|_]
- It previously applied to just the description, but now can be applied
to the complete friendly string.
- Also make ANSI-aware, so that strings with colors or ornamentation
are not truncated prematurely.
- Improve: Use 'at ...' syntax for Factoid with no end, not ' to <now>'.
[|nark|_]
- So that the active Fact writ as a Factoid is parsable on import.
- Restrict: Raise error on search if SQLite is not the engine.
[|nark|_]
- This conflicts with the goal (set by hamster-lib, and loftily sought
by nark) to support any DBMS, but the necessary SQL aggregate functions
are DBMS-specific, and SQLite is all that's been plumbed in this release
(to support the enhanced search and report features).
- Bugfix: Aggregate results for Facts with two or more Tags is incorrect.
[|nark|_]
- Usage and duration were being over-counted.
- Bugfix: Both ``antecedent`` and ``subsequent`` mishandle momentaneous Facts.
[|nark|_]