Skip to content

Releases: mrossinek/cobib

v4.4.0

15 Dec 11:59
140d402
Compare
Choose a tag to compare

[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 via config.database.cache or even disable
    caching entirely by changing this setting to None. (see also #129 and !108)
  • added the -r/--remove option to the modify 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
  • added the -l/--limit option to the list command (#127)
    • exposed the ListCommand.sort_entries method in the public API
    • added the ListCommand.execute_dull method in the public API
  • the search, export, and modify commands now also support sorting and limiting options to be
    passed onto the list 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

12 Nov 11:33
da8977c
Compare
Choose a tag to compare

[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

12 Nov 11:23
e7f4242
Compare
Choose a tag to compare

[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 the open command
  • the opened_entries attribute of the OpenCommand (which is accessible during the PostOpenCommand hook)
  • the new git command to simplify running git operations on the database (#124)
  • new bindings for Home, End, PageUp, and PageDown 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 the BibtexParser
  • 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 the Entry.stringify method
  • the Entry.formatted method. This replaces the Entry.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 error
    • git: will log an error
    • show: will log a warning

Deprecated

  • The LabelSuffix.CAPTIAL value because it was misspelled. Please use LabelSuffix.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 spelled LabelSuffix.CAPTIAL)

Removed

  • the Entry.escape_special_chars method. Use Entry.formatted instead.

v4.2.0

08 Aug 18:46
4ea556c
Compare
Choose a tag to compare

[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 the open 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 than WARNING
  • 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
  • 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
  • added the --skip-files command line option to the search 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
  • 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 of config.theme.search

Fixed

  • retain scroll position in the TUI's list view

v4.1.0

11 Jun 11:22
9a58966
Compare
Choose a tag to compare

[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 to False
  • added the --no-ignore-case (-I for short) command line options to the
    list and search command (#116)
  • added the --no-preserve-files command line options to the delete, edit
    and modify 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 the add command
    • the new config.commands.import_.skip_download setting
    • the new --force-download option of the import command
  • 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 to lxml
    • 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 via add (#113) or delete (#113) or edit (#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

20 May 14:37
1af081b
Compare
Choose a tag to compare

[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:
    config["database"]["git"] = True
    to
    config.database.git = True
    • the config.commands.list section had to be renamed to config.commands.list_
    • the config.tui section has been entirely removed
  • The cobib.commands.list module was moved to cobib.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 the add command (#99,!58)
  • the --ignore-case argument of the list command (#105)
    • this also comes with the new config.commands.list_.ignore_case setting
  • 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 now True 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 and cobib.importers module has been improved (!64)
    • this should not have any end-user facing effects
  • the cobib.commands.list module was moved to cobib.commands.list_

Deprecated

  • the --update argument of the add command is deprecated in favor of --disambiguation update
  • the --skip-existing argument of the add 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 the add 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

14 Jan 08:00
842f6ce
Compare
Choose a tag to compare

[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

Removed

  • the INI-style configuration got fully removed (as deprecated in [3.0.0] - 2021-04-10)

v3.4.0

01 Dec 21:47
e384016
Compare
Choose a tag to compare

[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
  • 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