Releases: mrossinek/cobib
v4.4.0
[4.4.0] - 2023-12-15
Pypi: https://pypi.org/project/cobib/4.4.0/
Added
- a primitive caching mechanism to speed up the database loading. This feature
is enabled by default and will store its cache at~/.cache/cobib/databases/
.
You can configure the location viaconfig.database.cache
or even disable
caching entirely by changing this setting toNone
. (see also #129 and !108) - added the
-r/--remove
option to themodify
command (#128)- this can achieve the opposite of
-a/--add
in the sense that it will try to
remove the specified modification from a list or subtract a number from
numeric values - other field types than lists or numbers are not supported by this option
- this can achieve the opposite of
- added the
-l/--limit
option to thelist
command (#127)- exposed the
ListCommand.sort_entries
method in the public API - added the
ListCommand.execute_dull
method in the public API
- exposed the
- the
search
,export
, andmodify
commands now also support sorting and limiting options to be
passed onto thelist
command (along with the already existing filtering options) - the
config.tui.tree_folding
setting which allows you to configure the
default folding state of the tree nodes in the TUI's search result view - the
ENTER
binding in the TUI's search result view to recursively toggle all
folds of the current node
Changed
- when using the TUI you may now use the
:show <label>
command to jump to the
specified label (#126,!116) - the
search
command now reports its progress live (!117)
Fixed
- unblocked the vertical scrollbar of the TUI's list view from the scroll offset
v4.3.1
[4.3.1] - 2023-11-12
Pypi: https://pypi.org/project/cobib/4.3.1/
Breaking Change
Note, that the introduction of the detailed author information parsing in v4.3.0
resulted in possible breaking of a custom config.database.formatlabel_default
setup. This bugfix release is meant to emphasize this breaking change and
updates the documented example in the example configuration file. For the sake
of verbosity, here is the change applied to the example:
- old:
"{unidecode(author.split(' and ')[0].split()[-1])}{year}"
- new:
"{unidecode(author[0].last)}{year}"
v4.3.0
[4.3.0] - 2023-11-12
Pypi: https://pypi.org/project/cobib/4.3.0/
Prelude
Detailed Authors
coBib now has the ability to store more detailed author information (see #92 and
!88). This means, that the author
field of an entry is analyzed in more detail
and coBib will separate out the first and last names as well as name pre- and
suffixes. The new setting config.database.format.author_format
determines,
whether this detailed information is kept directly in the database (the
AuthorFormat.YAML
setting; the new default) or is only constructed at
runtime and the author field is still simply saved in BibLaTeX form
(AuthorFormat.BIBLATEX
).
Note, that the YAML
format also implies, that Unicode characters are allowed
and will not be encoded in LaTeX form. This has an effect on how you may need
to format your searches. See also #130 for some more insights on this.
If you have company names or any author name which you want to have treated
verbatim, you can simply wrap it in curly braces (e.g. {My Company}
).
Refer to the online documentation of cobib.database.Author
and the above
setting for more details.
Wiki
coBib now has a Wiki where we can
gather useful configuration resources and other details which may not make it
into the full documentation.
For example, if you are interested in the tracking more metadata of your
database (as suggested in #123), be sure to check out
this wiki page!
Added
- the
-f
short-hand alias for the--field
argument of theopen
command - the
opened_entries
attribute of theOpenCommand
(which is accessible during thePostOpenCommand
hook) - the new
git
command to simplify running git operations on the database (#124) - new bindings for
Home
,End
,PageUp
, andPageDown
in the TUI - (DEV) added a new
DEPRECATED
logging level which has value 45 - Python 3.12 is now officially tested and supported
- the
config.commands.show.encode_latex
setting - the
encode_latex
attribute to theBibtexParser
- the
config.database.format.verbatim_fields
setting - the
config.database.format.author_format
setting. The new default behavior
is to store detailed author information in YAML form. - the
encode_latex
keyword-argument to theEntry.stringify
method - the
Entry.formatted
method. This replaces theEntry.escape_special_chars
method.
Changed
- an error will be logged when a file is not found during the
open
command - the following commands are now treated specially when run via the
:
prompt of the TUI:init
: will log an errorgit
: will log an errorshow
: will log a warning
Deprecated
- The
LabelSuffix.CAPTIAL
value because it was misspelled. Please useLabelSuffix.CAPITAL
instead.
Fixed
- non-asynchronous commands triggered via the
:
prompt of the TUI will no longer break it (#125) - ensure UTF-8 encoding is used for downloaded data (this fixes many odd encounters w.r.t. special characters)
- the spelling of the
LabelSuffix.CAPITAL
value (it used to be spelledLabelSuffix.CAPTIAL
)
Removed
- the
Entry.escape_special_chars
method. UseEntry.formatted
instead.
v4.2.0
[4.2.0] - 2023-08-08
Pypi: https://pypi.org/project/cobib/4.2.0/
Added
- added the
config.tui.scroll_offset
setting - added the
--field
command line option to theopen
command - (DEV) added a new
HINT
logging level which has value 35 and thus allows to
provide information to the user with a higher priority thanWARNING
- added the new
config.tui.preset_filters
(#114)- preset filters can be selected from the TUI via the
p
key binding - the first 9 filters can be selected directly by pressing the respective number
- pressing
0
resets any applied filter
- preset filters can be selected from the TUI via the
- implemented special tags (#63,!83)
- adds new builtin tags which will trigger special highlights of entries:
new
,high
,medium
,low
- adds the new
config.theme
settings section for configuring these settings - you can also add more special tags via
config.theme.tags.user_tags
- adds new builtin tags which will trigger special highlights of entries:
- added the
--skip-files
command line option to thesearch
command
Changed
- unicode symbols in entry labels will now be replaced with ascii ones (#119,#120)
- this is configured via the
config.database.format.default_label
setting, so if you are using a
custom value for this, be sure to update your config to make use of this feature
- this is configured via the
- some user-visible logging messages around label disambiguation have been added (see also #121)
- a warning has been added when the YAML parser encounters identical labels (which normally should
not occur in the database but if it does, coBib does not really know how to resolve this) - DOI redirect links are now followed recursively (up to 3 times), improving PDF
download link detection in the process (#97)
Deprecated
- the
config.commands.search.highlights
section is deprecated in favor ofconfig.theme.search
Fixed
- retain scroll position in the TUI's list view
v4.1.0
[4.1.0] - 2023-06-11
Pypi: https://pypi.org/project/cobib/4.1.0/
Added
- added the following settings which specify whether or not to preserve
associated files during the respective commands being run:config.commands.delete.preserve_files
config.commands.edit.preserve_files
config.commands.modify.preserve_files
- added a confirmation prompt before deleting an entry (#110)
- this prompt can be disabled by setting
config.commands.delete.confirm
toFalse
- this prompt can be disabled by setting
- added the
--no-ignore-case
(-I
for short) command line options to the
list
andsearch
command (#116) - added the
--no-preserve-files
command line options to thedelete
,edit
andmodify
command (#116) - added the
config.commands.search.context
setting which configures the
default number of context lines to be provided for search query matches - added more options to configure the automatic download behavior:
- the new
config.commands.add.skip_download
setting - the new
--force-download
option of theadd
command - the new
config.commands.import_.skip_download
setting - the new
--force-download
option of theimport
command
- the new
- the user is asked for confirmation when quitting the TUI (!71)
Changed
- refactored the TUI by leveraging textual's
Screen
concept (#111,!71)- this means the TUI will look slightly different but no real functional change has occurred
- the view of an
Entry
can now be scrolled when the output exceeds the available space
- switched from the
BeautifulSoup
HTML parser tolxml
- this is supposed to give more accurate results but adds an extra dependency
Deprecated
- The following shell helpers are no longer used with the zsh completion being
removed. Thus, these methods will be removed in the future:cobib _list_commands
cobib _list_filters
cobib _list_labels
- If you see warnings because of this while you are using the CLI, you
probably still have the (now removed) zsh completion script installed. You
should remove the_cobib
file which will be located in one of the
directories listed in your$FPATH
environment variable.
Fixed
- the proper pre-population of the TUI prompt during the sorting action (#117)
- preserves the value of
config.commands.list_.default_columns
and
properly removes a field if it is no longer sorted by in the TUI (#117) - properly updates the list of entries in the TUI after changing the database contents;
for example viaadd
(#113) ordelete
(#113) oredit
(#118) - an issue where file-accessing operations performed on a newly added entry within
the same TUI session would fail because the path would not be iterated correctly - the live updating of the download progress bar inside the TUI (#112)
Removed
- the crude and very slow zsh completion script
v4.0.0
[4.0.0] - 2023-05-20
Pypi: https://pypi.org/project/cobib/4.0.0/
Breaking Changes
- Configuration settings can no longer be set by item access and instead must
use attribute syntax. For example you need to change:toconfig["database"]["git"] = True
config.database.git = True
- the
config.commands.list
section had to be renamed toconfig.commands.list_
- the
config.tui
section has been entirely removed
- the
- The
cobib.commands.list
module was moved tocobib.commands.list_
. - The function signature of all command- and importer-related events has changed!
For more details please refer to the
online documentation.
Added
- Python 3.11 is now officially tested and supported
- Full rewrite of all commands to use
rich
for a nicer CLI (#78,!51) - Full rewrite of the TUI based on
textual
(#78,!51) - the
--disambiguation
argument of theadd
command (#99,!58) - the
--ignore-case
argument of thelist
command (#105)- this also comes with the new
config.commands.list_.ignore_case
setting
- this also comes with the new
- the
search
command now accepts multiple query strings at once which will be
searched over independently (#106)
Changed
- the new default value of
config.parsers.yaml.use_c_lib_yaml
is nowTrue
as announced in version [3.4.0] - refactored the entire config as a dataclass (!63)
- this implies that settings can only be set via attributes
- but as a benefit the maintainability and documentation have improved significantly
- The function signature of all command-related events has changed! Please refer to the
online documentation
for more details. (!63) - The function signature of all importer-related events has changed! Please refer to the
online documentation
for more details. (!66) - the API of the
cobib.commands
andcobib.importers
module has been improved (!64)- this should not have any end-user facing effects
- the
cobib.commands.list
module was moved tocobib.commands.list_
Deprecated
- the
--update
argument of theadd
command is deprecated in favor of--disambiguation update
- the
--skip-existing
argument of theadd
command is deprecated in favor of--disambiguation keep
Fixed
- the detection whether an entry already exists broke when label disambiguation was added in [3.3.0]
and is now fixed by means of an interactive prompt during theadd
command
Removed
- the warning triggered upon setting
config.database.format.month
which got removed in [3.1.0] - Python 3.7 is no longer supported
v3.5.0
[3.5.0] - 2022-01-13
Pypi: https://pypi.org/project/cobib/3.5.0/
News: coBib v4.0 will come with a new UI!
The plan is to switch to rich and textual instead of the current curses TUI.
This will open up some great possibilities for a much more modern UI.
However, this change will require some major refactoring including breaking changes of the API
and some of the user configuration options. It will also be a rather drastic change in style.
Thus, I will attempt to support v3.5 with bugfix releases until 1.1.2023
It will likely take a few months until v4.0 gets released but I am starting development on it now.
You can follow the progress here: {https://gitlab.com/mrossinek/cobib/-/issues/78}
Added
- the configuration loading can be disabled via the environment variable
COBIB_CONFIG
- values which disable the loading entirely are:
"", 0, f, false, nil, none
- you can also specify a custom path to a configuration file in this variable
- values which disable the loading entirely are:
Removed
- the
INI
-style configuration got fully removed (as deprecated in [3.0.0] - 2021-04-10)
v3.4.0
[3.4.0] - 2021-12-01
Pypi: https://pypi.org/project/cobib/3.4.0/
- coBib now requires the
requests-oauthlib
package- technically this is an optional dependency for now, but it will likely become a requirement soon
Added
- the new
config.parsers.yaml.use_c_lib_yaml
setting which significantly improves loading performance- this setting will change its default value to
True
in version 4.0.0
- this setting will change its default value to
- the
Import
command (#86,!49):- can be used to import libraries from other bibliography managers (see next bullet)
- see
cobib import --help
for more information
- the
cobib.importers
module:- provides importer classes for various other bibliography managers
- these get registered at runtime under the
cobib import
command - this release provides the
--zotero
importer - see
cobib import --zotero -- --help
for more information
- the
config.logging.cache
option, specifying the location of a simple json cache - the
config.commands.open.fields
option, specifying the names of the data fields which are checked for openable URLs (#89)
Changed
- the
PreFileDownload
event now takes an additional argument:headers: Optional[Dict[str, str]]
Fixed
- downloaded file names will not duplicate the
.pdf
suffix