Package: cobib
coBibcoBib is a simple, command-line based bibliography management tool.
It is the result of the need for an easy-to-use alternative to full-blown reference managers like Mendeley or Zotero.
As such it follows some basic design goals:plain-text database: which means you get full access and control over the database.git-integration: as a benefit of the above, you can keep track of your database through version control.centralized database, location-independent library: this means, that coBibonlymanages the
database file in a centralized fashion but allows you to spread the actual contents of your
library across the entire file system (this is the major different topapis).command-line and TUI support: all features are available through the command-line as well as atextual-based TUIInstallationFor all common purposes you can install coBib viapip:pip install cobibNote: Usepip3if you still have Python 2 installed.If you would also like to install the man-page, you need to download the source
code and do the following:git clone https://gitlab.com/cobib/cobib
cd cobib
make install_extrasArch LinuxcoBib is packaged in the AUR.cobibcobib-gitWindowscoBibshouldmostly work on Windows as is, but it is not being tested so no guarantees are given.
If you are using Windows 10 or later and are running into issues, you should be able to install and
use coBib's full functionality within the Linux subsystem.Getting startedTo get started, you must initialize the database:cobib initIf you would like to enable the git-integration, you should run:cobib init --gitandenableconfig.database.git(see alsoconfiguration).Be sure to check out myQuickstart blog postfor a more guided introduction compared to the following section!Importing your librarycoBib provides animportcommand through which you can easily import your library
from another bibliography manager. For more details check out:cobib import --helpSo far, coBib knows how to import your library from Zotero by simply running:cobib import --zoteroCheck out the following command, the man page or the online documentation for more details:cobib import --zotero -- --helpUsageAdding new entriesYou can now add new entries to your database (see alsocobib.commands.add[^1]):cobib add --bibtex some_biblatex_file.bib
cobib add --arxiv <some arXiv ID>
cobib add --doi <some DOI>
cobib add --isbn <some ISBN>Note: when adding data from a.bibfile, make sure that it is in the BibLaTex format!Viewing your database and entriesYou can view the contents of your database with (see alsocobib.commands.list_):cobib listYou can show a specific entry with (see alsocobib.commands.show):cobib show <some entry label>You can open an associated file of an entry with (see alsocobib.commands.open):cobib open <some entry label>You can even search through your database with (see alsocobib.commands.search):cobib search "some text"Editing your databaseYou can delete an entry with (see alsocobib.commands.delete):cobib delete <some entry label>You can edit an entry manually with (see alsocobib.commands.edit):cobib edit <some entry label>You can also apply simple modifications to multiple entries at once with (see alsocobib.commands.modify):cobib modify tags:private -- <some entry label> <another entry label> ...Exporting your databaseYou can export your database with (see alsocobib.commands.export):cobib export --bibtex my_bibliography.bib
cobib export --zip my_library.zipIntegrated version controlIf you have enabled the git-integration, you can undo and re-apply changes to your database with
(see alsocobib.commands.undoandcobib.commands.redo):cobib undo
cobib redoGetting helpEach subcommand provides additional help via:cobib <subcommand> --helpand you can find extensive information in the online documentation (linked above) and the man-page:man cobibTUIFinally, you can also use coBib's TUI for a more interactive experience (see alsocobib.ui.tui),
by simply typingcobibHere is an example screenshot of the TUI when listing the entries in your database:And here is an example screenshot for listing search results:ConfigurationYou can overwrite the default configuration by placing aconfig.pyfile in~/.config/cobib/.
The easiest way to get started with this file is by copyingexample.pyor by using:cobib _example_config > ~/.config/cobib/config.pyYou can then modify it to your liking.You may also specify a different config file at runtime by using the-cor--configcommand line argument or by specifying a custom path in theCOBIB_CONFIGenvironment variable.
You can also disable loading ofanyconfiguration file be setting this environment variable to one of the following values:"", 0, "f", "false", "nil", "none".Finally, be sure to take a look at the man page (man cobib) and/or the online documentation for more information.DocumentationcoBib's documentation is hostedhere.If you would like to generate a local version during development, you need to clone the source code, and installpdocin order to generate it:git clone https://gitlab.com/cobib/cobib.git
cd cobib
pip install pdoc
pdoc -d google -e cobib=https://gitlab.com/cobib/cobib/-/blob/master/src/cobib/ -t html -o docs src/cobib testsYou can then browse the documentation fromdocs/cobib.html.HistoryI have started this project when I was looking into alternatives to popular reference managers such as Mendeley,
which has more features than I use on a regular basis and does not allow me to work from the command line which is where I spent most of the time that I spent on the computer.Hence, I have decided to make it my own task of implementing a simple, yet fast, reference manager.
coBib is written in Python and uses a YAML file to store its bibliography in a plain text format.ChangelogYou can find the detailed changes throughout coBib's history inthe Changelog.LicensecoBib is licensed under theMIT License.[^1]: References like this one get interpreted by the documentation generator. If you are reading this as the README page, you may find theonline documentationmore enjoyable.ChangelogAll notable changes to this project will be documented in this file.The format is based onKeep a Changelog,
and this project adheres toSemantic Versioning.Unreleased4.4.0- 2023-12-15Pypi:https://pypi.org/project/cobib/4.4.0/Addeda 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.cacheor even disable
caching entirely by changing this setting toNone. (see also #129 and !108)added the-r/--removeoption to themodifycommand (#128)this can achieve the opposite of-a/--addin the sense that it will try to
remove the specified modification from a list or subtract a number from
numeric valuesother field types than lists or numbers are not supported by this optionadded the-l/--limitoption to thelistcommand (#127)exposed theListCommand.sort_entriesmethod in the public APIadded theListCommand.execute_dullmethod in the public APIthesearch,export, andmodifycommands now also support sorting and limiting options to be
passed onto thelistcommand (along with the already existing filtering options)theconfig.tui.tree_foldingsetting which allows you to configure the
default folding state of the tree nodes in the TUI's search result viewtheENTERbinding in the TUI's search result view to recursively toggle all
folds of the current nodeChangedwhen using the TUI you may now use the:show <label>command to jump to the
specified label (#126,!116)thesearchcommand now reports its progress live (!117)Fixedunblocked the vertical scrollbar of the TUI's list view from the scroll offset4.3.1- 2023-11-12Pypi:https://pypi.org/project/cobib/4.3.1/Breaking ChangeNote, that the introduction of the detailed author information parsing in v4.3.0
resulted in possible breaking of a customconfig.database.formatlabel_defaultsetup. 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}"4.3.0- 2023-11-12Pypi:https://pypi.org/project/cobib/4.3.0/PreludeDetailed AuthorscoBib now has the ability to store more detailed author information (see #92 and
!88). This means, that theauthorfield 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 settingconfig.database.format.author_formatdetermines,
whether this detailed information is kept directly in the database (theAuthorFormat.YAMLsetting; thenew default) or is only constructed at
runtime and the author field is still simply saved in BibLaTeX form
(AuthorFormat.BIBLATEX).Note, that theYAMLformat also implies, that Unicode characters are allowed
and willnotbe 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 ofcobib.database.Authorand the above
setting for more details.WikicoBib now has aWikiwhere 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 outthis wiki page!Addedthe-fshort-hand alias for the--fieldargument of theopencommandtheopened_entriesattribute of theOpenCommand(which is accessible during thePostOpenCommandhook)the newgitcommand to simplify running git operations on the database (#124)new bindings forHome,End,PageUp, andPageDownin the TUI(DEV) added a newDEPRECATEDlogging level which has value 45Python 3.12 is now officially tested and supportedtheconfig.commands.show.encode_latexsettingtheencode_latexattribute to theBibtexParsertheconfig.database.format.verbatim_fieldssettingtheconfig.database.format.author_formatsetting. The new default behavior
is to store detailed author information in YAML form.theencode_latexkeyword-argument to theEntry.stringifymethodtheEntry.formattedmethod. This replaces theEntry.escape_special_charsmethod.Changedan error will be logged when a file is not found during theopencommandthe 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 warningDeprecatedTheLabelSuffix.CAPTIALvalue because it was misspelled. Please useLabelSuffix.CAPITALinstead.Fixednon-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 theLabelSuffix.CAPITALvalue (it used to be spelledLabelSuffix.CAPTIAL)RemovedtheEntry.escape_special_charsmethod. UseEntry.formattedinstead.4.2.0- 2023-08-08Pypi:https://pypi.org/project/cobib/4.2.0/Addedadded theconfig.tui.scroll_offsetsettingadded the--fieldcommand line option to theopencommand(DEV) added a newHINTlogging level which has value 35 and thus allows to
provide information to the user with a higher priority thanWARNINGadded the newconfig.tui.preset_filters(#114)preset filters can be selected from the TUI via thepkey bindingthe first 9 filters can be selected directly by pressing the respective numberpressing0resets any applied filterimplemented special tags (#63,!83)adds new builtin tags which will trigger special highlights of entries:new,high,medium,lowadds the newconfig.themesettings section for configuring these settingsyou can also add more special tags viaconfig.theme.tags.user_tagsadded the--skip-filescommand line option to thesearchcommandChangedunicode symbols in entry labels will now be replaced with ascii ones (#119,#120)this is configured via theconfig.database.format.default_labelsetting, so if you are using a
custom value for this, be sure to update your config to make use of this featuresome 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)Deprecatedtheconfig.commands.search.highlightssection is deprecated in favor ofconfig.theme.searchFixedretain scroll position in the TUI's list view4.1.0- 2023-06-11Pypi:https://pypi.org/project/cobib/4.1.0/Addedadded the following settings which specify whether or not to preserve
associated files during the respective commands being run:config.commands.delete.preserve_filesconfig.commands.edit.preserve_filesconfig.commands.modify.preserve_filesadded a confirmation prompt before deleting an entry (#110)this prompt can be disabled by settingconfig.commands.delete.confirmtoFalseadded the--no-ignore-case(-Ifor short) command line options to thelistandsearchcommand (#116)added the--no-preserve-filescommand line options to thedelete,editandmodifycommand (#116)added theconfig.commands.search.contextsetting which configures the
default number of context lines to be provided for search query matchesadded more options to configure the automatic download behavior:the newconfig.commands.add.skip_downloadsettingthe new--force-downloadoption of theaddcommandthe newconfig.commands.import_.skip_downloadsettingthe new--force-downloadoption of theimportcommandthe user is asked for confirmation when quitting the TUI (!71)Changedrefactored the TUI by leveraging textual'sScreenconcept (#111,!71)this means the TUI will look slightly different but no real functional change has occurredthe view of anEntrycan now be scrolled when the output exceeds the available spaceswitched from theBeautifulSoupHTML parser tolxmlthis is supposed to give more accurate results but adds an extra dependencyDeprecatedThe following shell helpers are no longer used with the zsh completion being
removed. Thus, these methods will be removed in the future:cobib _list_commandscobib _list_filterscobib _list_labelsIf 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_cobibfile which will be located in one of the
directories listed in your$FPATHenvironment variable.Fixedthe proper pre-population of the TUI prompt during the sorting action (#117)preserves the value ofconfig.commands.list_.default_columnsand
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 correctlythe live updating of the download progress bar inside the TUI (#112)Removedthe crude and very slow zsh completion script4.0.0- 2023-05-20Pypi:https://pypi.org/project/cobib/4.0.0/Breaking ChangesConfiguration settings can no longer be set by item access and instead must
use attribute syntax. For example you need to change:config["database"]["git"]=Truetoconfig.database.git=Truetheconfig.commands.listsection had to be renamed toconfig.commands.list_theconfig.tuisection has been entirely removedThecobib.commands.listmodule was moved tocobib.commands.list_.The function signature of all command- and importer-related events has changed!
For more details please refer to theonline documentation.AddedPython 3.11 is now officially tested and supportedFull rewrite of all commands to userichfor a nicer CLI (#78,!51)Full rewrite of the TUI based ontextual(#78,!51)the--disambiguationargument of theaddcommand (#99,!58)the--ignore-caseargument of thelistcommand (#105)this also comes with the newconfig.commands.list_.ignore_casesettingthesearchcommand now accepts multiple query strings at once which will be
searched over independently (#106)Changedthe new default value ofconfig.parsers.yaml.use_c_lib_yamlis nowTrueas announced in version3.4.0refactored the entire config as a dataclass (!63)this implies that settings can only be set via attributesbut as a benefit the maintainability and documentation have improved significantlyThe function signature of all command-related events has changed! Please refer to theonline documentationfor more details. (!63)The function signature of all importer-related events has changed! Please refer to theonline documentationfor more details. (!66)the API of thecobib.commandsandcobib.importersmodule has been improved (!64)this should not have any end-user facing effectsthecobib.commands.listmodule was moved tocobib.commands.list_Deprecatedthe--updateargument of theaddcommand is deprecated in favor of--disambiguation updatethe--skip-existingargument of theaddcommand is deprecated in favor of--disambiguation keepFixedthe detection whether an entry already exists broke when label disambiguation was added in3.3.0and is now fixed by means of an interactive prompt during theaddcommandRemovedthe warning triggered upon settingconfig.database.format.monthwhich got removed in3.1.0Python 3.7 is no longer supported3.5.5- 2023-04-11Pypi:https://pypi.org/project/cobib/3.5.5/Fixedopening of non-list type fields (#100)3.5.4- 2022-12-26Pypi:https://pypi.org/project/cobib/3.5.4/Fixedmissing files encountered during searching will log warnings gracefully instead of harshlyhandle newline characters in the TUI (#98)3.5.3- 2022-11-16Pypi:https://pypi.org/project/cobib/3.5.3/Fixedincorrect author concatenation in ISBN Parserusing the disambiguated label for the names of downloaded files (#96)3.5.2- 2022-05-22Pypi:https://pypi.org/project/cobib/3.5.2/Fixedrun TUI on BSD platforms (!52)3.5.1- 2022-04-25Pypi:https://pypi.org/project/cobib/3.5.1/Fixedsafely check cache existence before attempting to write (#94)3.5.0- 2022-01-13Pypi:https://pypi.org/project/cobib/3.5.0/News:coBib v4.0 will come with a new UI!The plan is to switch torichandtextualinstead of the current curses TUI.
This will open up some great possibilities for a much more modern UI.However, this change will require somemajorrefactoring 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.2023It 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/cobib/cobib/-/issues/78Addedthe configuration loading can be disabled via the environment variableCOBIB_CONFIGvalues which disable the loading entirely are:"", 0, f, false, nil, noneyou can also specify a custom path to a configuration file in this variableRemovedtheINI-style configuration got fully removed (as deprecated in3.0.0- 2021-04-10)3.4.0- 2021-12-01Pypi:https://pypi.org/project/cobib/3.4.0/coBib now requires therequests-oauthlibpackagetechnically this is an optional dependency for now, but it will likely become a requirement soonAddedthe newconfig.parsers.yaml.use_c_lib_yamlsetting which significantly improves loading performancethis setting will change its default value toTruein version 4.0.0theImportcommand (#86,!49):can be used to import libraries from other bibliography managers (see next bullet)seecobib import --helpfor more informationthecobib.importersmodule:provides importer classes for various other bibliography managersthese get registered at runtime under thecobib importcommandthis release provides the--zoteroimporterseecobib import --zotero -- --helpfor more informationtheconfig.logging.cacheoption, specifying the location of a simple json cachetheconfig.commands.open.fieldsoption, specifying the names of the data fields which are checked for openable URLs (#89)ChangedthePreFileDownloadevent now takes an additional argument:headers: Optional[Dict[str, str]]Fixeddownloaded file names will not duplicate the.pdfsuffix3.3.2- 2021-11-17Pypi:https://pypi.org/project/cobib/3.3.2/Fixedre-enable the terminal keypad during resize eventthis ensures proper arrow-key behavior after returning from an external editorclear screen after closing TUI to remove all screen artifactsSecurityremove warning when using the DOI parser because the upstream issue related to #91 got fixed3.3.1- 2021-10-19Pypi:https://pypi.org/project/cobib/3.3.1/Fixederroneous label disambiguation of Entry labels which already conform withconfig.database.format.default_label_format(#87,!47)do not add empty file list when unifying databaseSecuritylog warning when using the DOI parser because of (#91)3.3.0- 2021-10-04Pypi:https://pypi.org/project/cobib/3.3.0/Addedprint Changelog since the last run version (cached inconfig.logging.version) (#82)theAddCommandnow has a new--updateoption (#79,!41)the_lint_databaseutility now takes the--formatargument, which automatically resolves all lint messages (#81,!42)the newURLParser(available viacobib add --url <URL>(#84,!44)it attempts importing from a plain URLsimultaneously the arXiv, DOI, and ISBN parsers now also support URL containing a matching identifier directlythe--dryargument of theModifyCommandto prevent errors during large bulk modificationstheconfig.database.format.label_defaultandconfig.database.format.label_suffixoptions (#85,!45)labels will automatically be formatted according to the default optionif labels conflict with existing ones, the suffix option will be used for disambiguationtheAddCommandhas a new--skip-existingoption which disables automatic label disambiguationusecobib _unify_labels --applyto unify all labels in your databasesubscribable events (#71,!46)allows registering of hooks to be executed in certain situationmore information is provided at theonline documentationChangedwhen an unknown variable is encountered in the modification of themodifycommand it falls back to an empty string rather than the name of the attempted variableRemovedthe-soption of theAddCommandis no longer available. You need to write out--skip-downloadtheIDfilter argument on thelistcommand (deprecated in v3.2.0 in favor of thelabelfilter)3.2.1- 2021-07-15Pypi:https://pypi.org/project/cobib/3.2.1/Fixedwhen adding multiple entries at once, continue adding after encountering a single duplicate (#83)3.2.0- 2021-06-26Pypi:https://pypi.org/project/cobib/3.2.0/Addedbasic auto-downloading of PDF files for arXiv IDs and configured DOIs (#25,!35,!39):the default download location can be configured viaconfig.utils.file_downloader.default_locationon a per addition basis, this default can be overwritten via the--pathkeyword option of theAddCommandif a file already exists in this location of the file system, the download will be skippeddownload for DOI entries must configure URL patterns inconfig.utils.file_downloader.url_mapon a per addition basis, the entire automatic download can be skipped with--skip-downloadautomatic journal abbreviations (#62,!36):users can configure a list of journal abbreviations viaconfig.utils.journal_abbreviationsif present, coBib will store the journal in its elongated forma user can then automatically convert to abbreviated forms during exporting (see the new--abbreviateand--dotlessarguments)Tentative Windows support by disabling the TUIa--preserve-filesargument was added to the following commands. Unless it is given, these will delete/rename associated files of affected entries:DeleteCommandEditCommandModifyCommandChangedthemodificationsof aModifyCommandget interpreted as f-strings (#77,!37):available variables are the entry's label and data fieldsanyListCommandfilter gets interpreted as a regex pattern (#76)DeprecatedtheIDfilter argument was fully replaced bylabel, unifying the CLI API. Support will be dropped in v3.3.0FixedRemoved (most) duplication of log messages3.1.1- 2021-05-25Pypi:https://pypi.org/project/cobib/3.1.1/FixedPypi package metadata3.1.0- 2021-05-24Pypi:https://pypi.org/project/cobib/3.1.0/Addedthe YAML format of the database has been extended to support the following: (#55)numbers can be stored as integerstheIDfield is no longer required and will be properly inferred from the labelthe following fields can be stored as lists:file,tags,urlthree new configuration options were added to complement the above list format options:config.database.stringify.list_separator.fileconfig.database.stringify.list_separator.tagsconfig.database.stringify.list_separator.urlthe_lint_databaseshell utility has been added which can be used to detect possible improvements for the databasethe append-mode of theModifyCommandwas implemented (#60):specifying-a/--addwill add the modification value to the field of the entries rather than overwrite itthis can be used for string or list concatenation and even number addition on numeric fieldsChangeduse file paths relative to user-home (achieved by replacingos.pathwithpathlib) (#69)the shell helper_list_tagshas been renamed to_list_labels(DEV): theloggingandzsh_helpermodules have been relocated to thecobib.utilspackage+symbols will no longer be stripped from tags (this was a left-over artifact from pre-v1.0.0)Deprecatedtheconfig.database.format.monthsetting is deprecated in favor of proper three-letter code encoding to support common citation style macros (!34)Fixedrenaming the label during theeditcommand does not leave the previous label entry behind:a followup also ensured that renaming entries happens in-place (#75)the sorting of thelistcommand3.0.0- 2021-04-10Pypi:https://pypi.org/project/cobib/3.0.0/From now on,coBibis the official way of spelling!AddedcoBib's documentation is now generated bypdocand hosted athttps://cobib.gitlab.io/cobib/cobib.html(DEV): thecobib.database.Database-Singleton has been added to centrally manage the bibliographic runtime data (!28)the new optionconfig.database.format.suppress_latex_warningsthe new optionconfig.commands.edit.editorwhich takes precedence over the$EDITORvariableChangedtheINI-style configuration is replaced with aPython-based configuration (#54,!25)for guidance on how to migrate an existing configuration please readhttps://mrossinek.gitlab.io/programming/cobibs-new-configuration/(DEV):cobib.parser.Entryhas been moved tocobib.database.Entrythecobib.parsersmodule has been extracted (prep for #49, !28)the filenames of the associated files are preserved when exporting to a Zip filewhen trying to add an entry with an existing label, the database is not written to and a warning is raised earlymonth conversion and special character escaping are only done upon saving entries to the databasethe path to the default logfile can now be configured viaconfig.logging.logfileand defaults to~/.cache/cobib/cobib.logDeprecatedtheINI-style configuration is deprecatednew configuration options will not be added to this styleonly bugs which fully break usability will be fixed with regards to this configuration stylelegacy-support will be fully removed on 1.1.2022Fixedthe ZSH helper utilities now respect the-c,-l, and-vcommand line optionstheRedoCommandshould only revert a previouslyUndoCommandoperation (#65)theSearchCommandgot some contexts improvements and correctly splits grep resultsunwrapping does not crash the TUI if the cursor was multiple lines below the new buffer heightline continuation guides are not swallowed by current line highlightingensure the TUI's top line does not become negativethe TUI's handler for resizing eventsJSONDecodeErrors thrown by theISBNParserare caught and handled gracefullyRemovedthe functionsread_database()andwrite_database()are no longer available (!28)2.6.1- 2021-02-05Pypi:https://pypi.org/project/cobib/2.6.1/Note:2.6.1was not released from themaster-branch, which resulted in a non-linear development.Changedinit --gitwill not initialize a repository unless git has configured both,nameandemailFixedTUI no longer crashes when aborting to quit (#64)2.6.0- 2020-12-31Pypi:https://pypi.org/project/cobib/2.6.0/AddedGit integration (#44, !20):will automatically track any changes done to the database file with gitmust be enabled by setting theDATABASE/gitoption toTrueandrunningcobib init --gitNote, that you must have at least set anameandemailin the git config!Undo/Redo commands to operate on git history of the database (#59,!23)for obvious reasons these commands require the Git integration (see above) to be enabledthePromptcommand inside of the TUI:allows executing arbitrary CoBib CLI commandsthe default key binding is:theModifycommand: (#60,!24)allows bulk modification of multiple entries in a<field>:<value>formatfor now, this willalwaysoverwrite the field with the new value!an extension to appending values is planned for a later releasethe set of entries to be modified can be specified just like with theexportcommand throughlist-command filters or manual selection (by setting the--selectionflag)Changedthe viewport history is preserved correctly (#21,!22)this allows performing a search while showing an entry and reverts back to the correct view after quitting the searchthe changes mainly involved refactoring of thecobib/tuimodulethepositionalargument of themodifyandsearchhas been renamed internally fromlist_argtofilterthis should not have any visible effect to an end-user but may be relevant to developersFixedgracefully handle multiple terminal sizing issues with regards to popups (#58)catch messages onstdoutduring deletion from TUIadded missing help strings to the TUI help menuRemovedThe--forceargument to theinitcommand has now been removed (after being deprecated in v2.5.0).2.5.0- 2020-12-08Pypi:https://pypi.org/project/cobib/2.5.0/Addedsupport for multiple associated files (#42,!19)interactive menu when opening an entry with multiple associated files (!19)DeprecatedThe--forceargument to theinitcommand has been deprecated. I don't think there is any
benefit to providing the user the option to nuke their database file from the CLI. Instead,
they can simply edit the file manually.Fixedalways store years as strings to be compatible with bibtexparserhandle invalid arXiv or DOI IDs gracefully (#57)2.4.1- 2020-11-01Pypi:https://pypi.org/project/cobib/2.4.1/FixedISBN parser was missing the ENTRYTYPE and did not use strings for number fieldsthe ISBN parser can now handle empty entries (#53)the TUI will not crash on stdout/stderr messages exceeding the window widththe TUI respects quoted strings in the prompt handler (#52)2.4.0- 2020-10-14Pypi:https://pypi.org/project/cobib/2.4.0/AddedtheFORMAT/default_entry_typeoption used for manual entry additionamanualinsertion mode available throughedit -a new_labelandadd -l new_labela ISBN-based parser for adding new entries (#45)the TUI-basedselectcommand (and corresponding settings) (#8,!18)the--selectionargument for theexportcommand (!18)ChangedTUI color highlighting is now prioritized (!17)Fixedsupport URLs in file field duringopencommand (#47)the TUI no longer crashes when encountering long prompt inputs (#48)theeditcommand can handle labels which start with common substrings (#46)support multiple ANSI colors on a single line (#50)2.3.4- 2020-09-14Pypi:https://pypi.org/project/cobib/2.3.4/Fixedanother AUR package installation error2.3.3- 2020-09-14Pypi:https://pypi.org/project/cobib/2.3.3/FixedAUR package installation error2.3.2- 2020-09-10Pypi:https://pypi.org/project/cobib/2.3.2/Addedoption to default to case-insensitive searching (DATABASE/search_ignore_case)Changedclearing the prompt, aborts the command executionFixedsearch command correctly handles missing arguments in TUI (#43)2.3.1- 2020-09-10Pypi:https://pypi.org/project/cobib/2.3.1/Fixedfaulty Pypi package2.3.0- 2020-09-10Pypi:https://pypi.org/project/cobib/2.3.0/AddedLogging functionality has been added. The verbosity level can be controlled via-v(INFO) and-vv(DEBUG).
As soon as the TUI starts, all logging output is redirected to/tmp/cobib.log.Command line argument-lor--logfilecan be used to specify the output path of the log. This will overwrite the/tmp/cobib.loglocation.theTUI/scroll_offsetsetting was added. It defaults to3and behaves similar to Vim'sscrolloffsetting.Configuration validation has been added. This extends the logging functionality to support more runtime debug information.popup window support: stdout and stderr messages are presented in a popup similarly to the help windowChanged-vcommand line argument now refers to--verboserather than--versionPerformance of theaddcommand has been improved by not refreshing the database when outside of the TUI.Fixedbug when resizing causes the window width to become greater than the buffer width (#39)do not escape special characters in labels (#40)avoid special character encoding in file paths2.2.2- 2020-08-13Pypi:https://pypi.org/project/cobib/2.2.2/Fixedcurrent line highlight if viewport is wider than buffer was not correctly resettheignore_non_standard_typessetting had no effect2.2.1- 2020-08-10Pypi:https://pypi.org/project/cobib/2.2.1/Changedwhen wrapping the TUI lines, indent until after the label column (#26)renameddefault.initoexample.iniin the documentation folderFixedcurrent line highlight after viewport width was not correctly resetcorrectly convert boolean configuration options (#34)fix crash of TUI in wrap command when viewport is empty (#37)default configuration settings are managed centrally and consistently (#35)2.2.0- 2020-07-12Pypi:https://pypi.org/project/cobib/2.2.0/Addedallow configuring the program used toopenassociated filesprompt user before actually quitting CoBib (#33)implements the Search command (#7, !12)Fixedthe default value of theopencommand was not set correctly2.1.0- 2020-06-14Pypi:https://pypi.org/project/cobib/2.1.0/Addedadded half- and full-page scrolling (#22)Changedimporting frombibtexdata defaults tonotignored non-standard entry types (#28)suppress LaTex encoding warnings except when adding entries (#29)SearchandSelectprint warnings to the prompt while not implementedFixedinitcommand ensures directory of database file existsremove window artifacts afterhelpmenu is closed (#20)configuration file detection was missing a user home expansion (#31)2.0.0- 2020-06-06Pypi:https://pypi.org/project/cobib/2.0.0/Fixedrespect sort order reversing and filterXORing from the TUI (#18)editcommand on Mac OS (#19)Changedmadeinitcommand safe against database overwritingTUI: list entries in reverse order by default (config: TUI/reverse_order)2.0.0b4- 2020-05-16Pypi:https://pypi.org/project/cobib/2.0.0b4/Fixedreset viewport position when updating buffer2.0.0b3- 2020-05-16Pypi:https://pypi.org/project/cobib/2.0.0b3/Fixedproperly assert valid current line number2.0.0b2- 2020-05-16Pypi:https://pypi.org/project/cobib/2.0.0b2/Fixedfixed TUI startup2.0.0b1- 2020-05-16Warning: do NOT use! The TUI is broken in this release!Pypi:https://pypi.org/project/cobib/2.0.0b1/FixedTUI does not crash when opening an entry with no associated filecorrectly reset current line positions after filtering and editing2.0.0b0- 2020-04-28Pypi:https://pypi.org/project/cobib/2.0.0b0/Changedinternal: refactored the config into a classcentralized the database handling to improve performance (#12,!9)FixedtheShowcommand does not break after scrolling the viewport (#13)2.0.0a2- 2020-04-27Pypi:https://pypi.org/project/cobib/2.0.0a2/Addeduser configuration options for:TUI colorsTUI key bindingsTUI default list argumentshelp window highlightingChangedsorting and filtering commands remain persistent when updating the list view2.0.0a1- 2020-04-23Pypi:https://pypi.org/project/cobib/2.0.0a1/AddedAdded a basic curses-based TUI (#5,!7)Changedinternal: refactored commands into separate module1.1.0- 2020-03-28Pypi:https://pypi.org/project/cobib/1.1.0/AddedaddFORMAT.monthconfiguration option to configure the default type for
month fields (defaults toint) (#3,!4)escape special LaTeX characters (#2,!5)Fixedlistno longer breaks with aKeyErrorwhen a queried field does not exist
in any bibliography entry (!2)--labelcan now correctly overwrite the ID (#4,!3)Changedset_config()and globalCONFIGexported to separate module1.0.2- 2020-01-12Pypi:https://pypi.org/project/cobib/1.0.2/Note: this removal is not seen as a MINOR version bump because this is
essentially a long out-standing bug fixRemoved/Fixeddoi extraction from pdf files (476efc4f)also removes the ability to add entries directly via pdf files1.0.1- 2020-01-12Pypi:https://pypi.org/project/cobib/1.0.1/Changedmetadata for pypi1.0.0- 2020-01-12First MAJOR release. Also available via Pypi:https://pypi.org/project/cobib/1.0.0/The project was renamed fromCReMatoCoBibAddedallow sorting the list output (2a5a94f1)crude and slow (!!!) zsh completion (9f28f441)support Darwin'sopencommandChangedsuppress list output when exportingadd used tags to columns when listingsort YAML database entries by keys (d2af42d2)Fixedfixed arxiv parser (7ce3726f)0.2- 2019-09-02Note: this release was not marked MAJOR because this is still a WIP and early
alpha release.Addedcomplete rewrite to use a plain-textyamldatabase instead ofsqlite3!1Removedsqlite3database0.1- 2019-04-29Addedinitial version with a basicsqlite3-based database