- Extracting data from iOS's Apple Books plists is now supported. Currently, this will require the user to retrieve and manually pipe in the directory containing the data. See the documentation for more information.
- CLI options are now grouped for better readability.
- The short option name for
--force
is now-F
. - The short option name for
--overwrite-existing
is now-O
. - The short option name for
--template-directory
is now-t
in therender
command. - The short option name for
--directory-template
is now-t
in theexport
andbackup
command.
- Filenames are no longer truncated if they contain a period
.
.
-
Added the
--filter <[?*=]FIELD:QUERY>
option allowing books and annotations to be filtered down for theexport
andrender
commands. See the documentation on Filtering for more information. -
Added the
--auto-confirm-filter
option to auto-confirm the filtered results prompt. -
All slugified strings in the
book
andannotation
contexts have been moved to under theslugs
namespace. For example:book.slugs book.slugs.title book.slugs.author book.slugs.metadata.last_opened
-
The
book.slugs.metadata.last_opened
value has been added to thebook
context. -
A custom directory template can now be passed to the
export
andbackup
commands. See the documentation for theexport
andbackup
commands for more information. For example:readstor export --directory-template "{{ book.author }} - {{ book.title }}"
-
The
--overwrite-existing
command has been added to theexport
command to toggle whether or not to overwrite existing files. This used to be true all the time and is now customizable.
- The short option name for
--quiet
is now-q
. - Removed the
data
andresources
directories from theexport
command.
-
Slugified strings no longer appear in output data when using the
export
command. -
The
--trim-blocks
option now only leaves a single trailing line-break.
Books::tags
now returns a unique list of#tags
.- Passing a nonexistent template-group to
--template-group
now returns an error instead of silently failing.
- Added the
--text-wrap <WIDTH>
option to enable text-wrapping.
- Implemented a more robust pre- and post-processor.
- The configuration key
name-templates
is nownames
. - A template's
names.annotations
value is now a list of dictionaries. This dictionary contains a field for the rendered filename as well as fields for some of its respective annotation's metadata. The primary reason for this change is to allow the user to optionally sortnames.annotations
by these metadata fields. See the documentation for Context Reference - Names for more information. - The short option name for
--trim-blocks
is now-t
.
- Overhauled templates workflow.
- A template's config is now set within the header of the file inside an
HTML-comment. As a result, the filename of a template no longer matters.
The only exception is when naming a template partial, these must begin with
an underscore (
_
). - Nested rendered template outputs are now optional via the
structure
key in the template's config and can be customized via thename-templates.directory
key. - Template output filenames are now customizable via the
name-templates.book
andname-templates.annotation
keys in the template's config. - All Tera features are now supported!
- Added
--trim-blocks
to naively remove extra line-breaks from the final rendered template. This is only a temporary solution until Tera implements this internally. - Added
--template-group
option to render only subset of templates found in the templates directory.
- A template's config is now set within the header of the file inside an
HTML-comment. As a result, the filename of a template no longer matters.
The only exception is when naming a template partial, these must begin with
an underscore (
- Added pre-processing options to
render
andexport
.--extract-tags
to extract#tags
from notes.--normalize-whitespace
to reduce 3+ line-breaks to 2.--ascii-only
to convert all Unicode characters to ASCII.--ascii-symbols
to convert only a subset of "smart" Unicode symbols to ASCII.
- Added
--quiet
flag to silence terminal output. - Added
--databases-directory
option to use a custom databases path. - Added
Book::tags
, a compiled list of all the tags within a book's annotations. - Releases will now have binaries for Apple Silicon and Intel.
- Added CI, build, docs and publish actions.
- Moved
--templates-directory
option underrender
command. - Renamed
--templates
to--templates-directory
. - Renamed
--output
to--output-directory
. - Removed logging verbosity option from cli.
- Removed nested directory from output file structure i.e.
data
,renders
,backups
. - Databases backup directories now have a
-
between the date and version:[YYYY-MM-DD-HHMMSS]-[VERSION]
- Output message now includes the export location.
- Reworked CLI commands.
- Updated license to MIT/Apache-2.0.
- Renamed 'assets' directory to 'resources'.
- Renamed 'items' directory to 'data'.
- Documented how to implement custom templates.
- Fixed #3 Wrong default template location.
- A
.gitkeep
file is now added inside eachassets
folder. - Verified version support for Apple Books 4.1 on macOS Monterey 12.x.
--backup
now copies only theAEAnnotation
andBKLibrary
directories.
- Fixed minor issues with the
Cargo.toml
file to work better with crates.io.
- This initial release contains the core functionality: (1) save all annotations and notes as JSON (2) export them via a custom (or the default) template using the Tera syntax or (3) backup the current Apple Books databases.